开关键盘控制流水灯设计

合集下载

4独立按键控制led灯

4独立按键控制led灯
设计要求1)选择一个I/O口控制八只流水灯。
2)设置四个按键K1—K4,按下K1跑马灯,K2流水灯,K3鸳鸯戏水,K4则循环三种控制方式。
3)跑马灯:共8个LED逐次点亮,每隔100ms点亮一个LED,点亮100ms后关闭。
4)流水灯:共8个LED逐次点亮,每隔100ms点亮一个LED,点亮100ms后下一个LED点亮,当所有LED灯全部点亮后,延时100ms,然后全灭;然后继续上次操作。5)鸳鸯溪水灯:共8个LED,第一次1、3、5、7号灯点亮,延时100ms,关闭,延时100ms,2、4、6、8号灯点亮,延时100ms,关闭,延时100ms。然后继续上次操作。
{
P1=yua[i];
delay(100);
}
}
if(j==4)
{
for(i=0;i<9;i++)
{
P1=pao[i];
delay(100);
}
for(i=0;i<9;i++)
{
while(key2==0)
{
}
j = 2;
}
}
if(key3==0)//如果检测到低电平,说明按键按下
{
delay(10);//延时去抖,一般10-20ms
if(key3==0) //再次确认按键是否按下,没有按下则退出
{
while(key3==0)
{
}
j = 3;
}
}
if(key4==0)//如果检测到低电平,说明按键按下
{
delay(10);//延时去抖,一般10-20ms
if(key4==0) //再次确认按键是否按下,没有按下则退出

流水灯控制系统设计

流水灯控制系统设计

目录第1章方案的论述以与与最终方案的确定......................... - 1 -1.1第一种方案的论述. (1)1.2第二种方案的论证 (1)1.3第三种方案的论述 (1)1.4最终方案的确定 (2)第2章硬件设计.................................................. - 3 -2.1总体方案设计分析. (3)2.2系统逻辑框图 (3)2.3主要元器件简介 (3)2.3.1 8086CPU ························································································- 3 -2.3.2 地址锁存器74LS373的内部电路与工作原理························- 6 -2.3.3 可编程外围接口芯片8255A的简介.........................................- 8 -第3章软件设计.................................................- 13 -3.1程序流程设计.. (13)3.1.1 主程序流程·················································································· - 13 -3.1.2 程序流程图·················································································· - 14 -3.1.3 系统硬件连接图········································································· - 15 -3.1.4 源程序设计(附录) ....................................................................... - 15 -3.2设计最终理想结果与原理.. (15)3.2.1 左向移动流水灯········································································· - 15 -3.2.2 右向移动流水灯········································································· - 15 -设计心得·························································- 17 -参考文献·························································- 18 -附录······························································- 19 -第1章方案的论述以与与最终方案的确定1.1 第一种方案的论述第一种方案,使用AT89C51单片机实现流水灯闪烁设计。

[知识]按键控制数码管和流水灯设计报告实验报告

[知识]按键控制数码管和流水灯设计报告实验报告

摘要000单片机自20世纪70年代以来,以其极高的性价比,以及方便小巧受到人们极大的重视和关注。

本设计选用msp430f249芯片作为控制芯片,来实现矩阵键盘对LED数码管显示的控制。

通过单片机的内部控制实现对硬件电路的设计,从而实现对4*4矩阵键盘的检测识别。

用单片机的P3口连接4×4矩阵键盘,并以单片机的P3.0-P3.3口作键盘输入的列线,以单片机的P3.4-P3.7口作为键盘输入的行线,然后用P0.0-P0.7作输出线,通过上拉电阻在显示器上显示不同的字符“0-F”。

在硬件电路的基础上加上软件程序的控制来实现本设计。

其工作过程为:先判断是否有键按下,如果没有键按下,则继续检测整个程序,如果有键按下,则识别是哪一个键按下,最后通过LED数码管显示该按键所对应的序号。

000关键字:单片机、流水灯、数码管、控制系统SCM since the nineteen seventies, with its high price, and a convenient compact attention and great concern. Thisdesign uses msp430f249 chip as the control chip, to realize the control of the LED digital tube display matrix keyboard. Through the internal control single chip to realize the hardware design of the circuit, so as to re alize the detection and recognition of 4*4 matrix keyboard. 4 * 4 matrix keyboard connected with the MCU P3 port, and the MCU P3.0 P3.3 port for a keyboard input, MCU P3.4P3.7 port as the lines of keyboard input, and then use theP0.0 P0.7 as the output line, by a pull-up resistor display different characters "0F on display". Control with software programs based on the hardware circuit to realize the design. The working process is: first to determine whether a key is pressed, if no key is pressed, it will continue to test the whole procedure, if a key is pressed, the000 Keywords: SCM, water lights, digital tubes, control system000键盘控制流水灯和数码管实验报告00目录000一设计的目的 (200)二任务描述及方案设计 (300)1. 任务描述 (300)2. 方案设计 (300)三硬件设计方案 (30)001. Msp430f149单片机的功能说明 (30)2. 显示器功能 (40)3. 复位电路 (40)4. 按键的部分 (40)5. 74HC573的特点 (4)0006. 流水灯和数码管电路原理图 (40)007. 元器件清单 (40)四程序设计方案 (50)001. 用IAR Embedded W orkbench软件编程序 (5)002. 仿真电路图 (60)五实物实验 (70)001. 实物图 (7)002. 测试结果与分析 (700)六结论 (11)000八参考文献 (16)000一、设计目的0001、进一步巩固和加深学生所学一门或几门相关专业课理论知识,培养学生设计、计算、绘画、计算机应用、文献查阅、报告撰写等基本技能;0002、培养学生实践动手能力及独立分析和解决工程实践问题能力;003、培养学生的团队协作精神、创新意思、严肃认真的治学态度和严谨求实的工作作风。

任务3-2 按键控制多种花样霓虹灯设计

任务3-2 按键控制多种花样霓虹灯设计
} else if(K4==0)
//再次检测到K3按下,第三种模式,高四位亮 //第一次检测到K4按下
{ delay(TIME);
//延时去抖动
if(K4==0) P1=0xf0; //再次检测到K4按下,第四种模式,低四位亮
}
举一反三2
采用8个发光二极管模拟霓虹灯的显示,通过1个按键控制霓虹 灯在四种显示模式之间切换,由P0口的P0.0引脚控制按键K。
//LED全灭
while(1)
{
if(K==0)
//第一次检测到按键K按下
{
delay(1200); //延时10ms左右去抖动
if(K==0)
//再次检测到按键K按下
{ w=0x01;
//流水灯显示字初值为0x01
for(i=0;i<8;i++)
{
P1=~w;
//显示字取反后,送P1口
delay(10000);
{
if(K==0)
//第一次检测到按键K按下
{
delay(1200); //延时10ms左右去抖动
if(K==0)
//再次检测到按键K按下
{ w=0x01;
//流水灯显示字初值为0x01
for(i=0;i<8;i++)
{
P1=~w;
//显示字取反后,送P1口
delay(10000);
//延时,一个灯显示时间
//根据i的值显示不同模式
//i=1显示第1种模式 //i=2显示第2种模式 //i=3显示第3种模式 //i=4显示第4种模式
while(!K); delay(1200);
判断按键是否弹起
//等待K键释放,!为逻辑非操作 //延时消除抖动

cc2530按键控制流水灯

cc2530按键控制流水灯

cc2530按键控制流水灯本次设计用LED1,LED2,LED3 灯及按键S1 为外设。

采用P10、P11、P14 口为输出口,驱动LED1/LED2/LED3,P01 口为输入口,接受按键信号输入(高电平为按键信号)。

1.高性能2.4G 射频模块Q2530RFQ2530RF是丘捷技基于TI公司第二代2.4GHz IEEE 802.15.4 /RF4CE/ZigBee的第二代片上系统解决方案CC2530 F256的全功能模块,集射频收发及MCU控制功能于一体。

外围原件包含一颗32MHz晶振和一颗32.768KHz晶振及其他一些阻容器件。

射频部分采用巴伦匹配和外置高增益SMA天线,接收灵敏度高,发送距离远,空旷环境最大传输距离可达400米。

模块引出CC2530所有IO口,便于功能评估与二次开发。

2.多功能开发板Q2530EB多功能扩展板Q2530EB 可支持多种射频主控模块(例如Q2530RF等),配置有串口液晶显示接口,USB供电接口,DC 5V电源接口,电池接口,RS232接口,DEBUG接口,五向按键及指示灯,红外遥控信号接收/发射等模块。

所有的外设均通过SPI总线/UART /DEBUG等接口与射频模块Q2530RF 相连,并完全受Q2530RF 控制和访问。

多功能仿真扩展板Q2530EB 采用三种电源供电方式:DC 5V供电、USB接口供电、电池供电,可在插座P5设置跳线选择,PIN1-PIN2 为电池供电,PIN2-PIN3 为外接直流电源或者USB接口供电。

电源开关为P4。

Q2530EB 板卡背面的电池盒可放置3节5号干电池,输出电压3.4~4.5V,板载电源电路将其调整到+3.3V 稳定的直流电压输出供后级使用。

当电池电压低于3.4V 时,应更换电池以保持模块正常工作。

Q2530EB 带有1个DC 5V的电源适配器接口P2和一个USB接口P1,输入电压经过稳压器降压为+3.3V输出供后极使用。

按键控制流水灯程序

按键控制流水灯程序

最近有很多学弟来问我流水灯该怎么做,程序怎么写,现在在这里统一说下,很多时候没有时间让你们白跑一趟了,O(∩_∩)O~。

首先就说到单片机了,单片机对于你们来说是个新概念,可能以前都没听说过。

我想说的是它不是传统意义上的集成电路,只能按照特定的焊接来能工作,而是一块类似电脑CPU的芯片,对于一块正常的单片机,只要你提供合适的工作电源(4V都5.5V左右)、复位电路、起振电路它就可以工作了。

所有的输入输出口(以P开头的)都是可以灵活配置的,可以根据你焊接的硬件电路写程序,也可以根据你写的程序焊接硬件电路。

所以没有必要死板硬套。

前天没事写了一下,仿真了一下还可以用。

源码贴于下方供入门者参考,高手勿嘲笑,大家都是从流水灯程序写起的 (*^__^*) 嘻嘻……再就是我的51开发板不知道是谁借走了,很久没有用过51单片机了,所以下载程序的事就不要来找我了。

我把编译过后的代码也贴在下面,如果硬件和我做的一样的同学又不会写程序的就直接复制下面编译过后的代码,在电脑上新建一个文本文档(.txt)命名任意,将复制后的代码粘贴于记事本上,然后重命名,将".txt"改为“.hex”,保存,然后通过下载器下载到单片机里面去就可以用了。

不会的多去看一下教程。

以下仅供参考,不得一味模仿/****************************************************************************** *********************************源码:51单片机晶振频率12Mhz八位数码管采用共阳极接法(所有阳极接一起接Vcc,阴极接P0口)按键分别接P2.0 P2.1 P2.2(低电平有效)编译软件采用keil 4******************************************************************************* ************************************************************************/#include <reg52.h>#define uint unsigned int#define uchar unsigned charsbit key1 =P2^0; //按键1sbit key2 =P2^1; //按键2sbit key3 =P2^2; //按键3uchar flag1=0,flag2=0,flag3=0;void delay_ms(uint z){uint i,j;for(i=0;i<z;i++)for(j=0;j<110;j++);}void O_to_E() //1,3,5,7与2,4,6,8交替闪烁{P0=0Xaa;delay_ms(200);P0=~0Xaa;delay_ms(200);}void key_scan() //键盘扫描{if(!key1){delay_ms(10); //延时消抖if(!key1)flag1=1;}if(!key2){delay_ms(10); //延时消抖if(!key2)flag2=1;}if(!key3){delay_ms(10); //延时消抖if(!key3)flag3=1;}}void main(){uchar i;while(1){key_scan();if(flag1) //按键一按下?{for(i=0;i<8;i++) //从左至右亮,每次一盏{P0=~(0x80>>i);delay_ms(100);key_scan(); //按键扫描if(flag2||flag3){flag1= 0;break;} //如果有其它按键按下响应其它按键}}if(flag2) //按键一按下?{for(i=0;i<8;i++) //从右至左亮,每次一盏{P0=~(0x01<<i);delay_ms(100);key_scan();if(flag1||flag3){flag2= 0;break;}}}if(flag3){O_to_E(); //奇偶交替闪烁key_scan();if(flag1||flag2)flag3=0;}}}/****************************************************************************** *****************************************编译过后的文件注意:复制下面的代码(注意不要包含本句,注意不要改变格式):09015700010800010900010A0081:040123007F0A7E00D1:10012700E4FDFCC3ED9FEC9E5015E4FBFA0BBB000E:0F013700010AEB646E4A70F50DBD00010C80E407:010*********:100147007580AA7FC87E0012012775805502012796:0A00F400F4F5807F647E00120127FE:1000FE0020A00912012320A00375080120A10912D6:10010E00012320A10375090120A20912012320A2B7:05011E0003750A012237:10008F001200FE1200FEE5086021E4F97480A80159:10009F00088002C313D8FC1200F4E5097004E50AC6:1000AF006005E4F508800409B908E1E509601FE47B:1000BF00F97401A801088002C333D8FC1200F4E5DB:1000CF00087004E50A6003E4F50909B908E3E50AD5:1000DF0060B11201471200FEE5087004E50960A344:0500EF00E4F50A809E0B:03000000020003F8:0C000300787FE4F6D8FD75810A02004AFF:10000F0002008FE493A3F8E493A34003F68001F278:10001F0008DFF48029E493A3F85407240CC8C333F2:10002F00C4540F4420C8834004F456800146F6DFC1:10003F00E4800B0102040810204080900157E47EF9:10004F00019360BCA3FF543F30E509541FFEE493B6:10005F00A360010ECF54C025E060A840B8E493A37D:10006F00FAE493A3F8E493A3C8C582C8CAC583CAA8:10007F00F0A3C8C582C8CAC583CADFE9DEE780BE60:010********E:00000001FF结束(注意不要包含本句及上面的※号,注意不要改变格式!)。

任务三 键控流水灯控制器制作

任务三 键控流水灯控制器制作

任务分析:
前面一个任务我们已经完成了LED流 水灯的制作,本任务与前一任务相比仅是 增加了按键的控制,即点按一次按键K后 立即执行“流水灯程序”。“点按按键一 次”通常的理解是先按下按键,然后又放 开,所以编程时,首先要判断按键是否真 正的按下,若按下,就等待按键释放。释 放后,这次按键的动作就完成了。
P1.2
P1.1
P1.0
3
3
8
7
6
5
4
3
2
1
8
9
5
R
LED0
6
2
0
K
S S 2 1
5
R
LED1
6
3
0
5
R
LED2
6
4
05ຫໍສະໝຸດ RLED36
5
0
5
R
LED4
6
6
0
5
R
LED5
6
7
0
5
R
LED6
6
8
0
5
R
LED7
6
9
0
键控LED流水灯硬件模块接线图(YL-236单片机实训装置)
软件编程
1、主程序流程图 2、参考程序 3、程序知识点
程序知识点:
(1)if语句的使用 (2)带参数的延时函数使用 (3)“==”与“=”的区别 (4)数组查表法
(5)按键识别程序段
(1)if语句的使用
if(表达式) {语句}
if(表达式)
if(表达式1) {语句1} else if(表达式2) {语句2} ...... else {语句n}
{语句1}
else {语句2}

流水灯控制实验报告及程序

流水灯控制实验报告及程序

实验三流水灯控制实验姓名专业通信工程学号成绩一、实验目的1.掌握Keil C51 软件与protues软件联合仿真调试的方法;2.掌握如何使用程序与查表等方法实现流水效果;3.掌握按键去抖原理及处理方法。

二、实验仪器与设备1. 微机1台2. Keil C51集成开发环境3. Proteus仿真软件三、实验内容1.用Proteus设计一流水灯控制电路。

利用P1口控制8个发光二级管L1—L8。

P3.3口接一按键K1。

参考电路如下图所示。

其中74LS240为八反响三态缓冲器/线驱动器。

2.用中断或查询方式编写程序,每按动一次K1键,演示不同的流水效果。

若用KEY表示按键的次数,则其对应的流水效果如下:① KEY=0: L1-L8全亮;② KEY=1: L1-L8先全灭,然后自右向左单管点亮,如此循环;③ KEY=2: L1-L8先全灭,然后自右向左依次点亮,如此循环;④ KEY=3: L1-L8先全亮,然后自左向右依次熄灭,如此循环;⑤ KEY=4: L1-L8先全灭,然后整体闪烁,如此循环;⑥ KEY=5:自行设计效果。

以上移位及闪烁时间间隔均设置为0.3秒,按动5次按键后,再按键时,流水效果从头开始循环。

四、实验原理1.按键去抖原理:通常按键所用的开关为机械弹性开关,当机械触点断开、闭合时,电压信号波形如下图所示。

由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定的接通,在断开时也不会一下子断开。

因而在闭合及断开的瞬间均伴随有一连串的抖动。

抖动时间的长短由按键的机械特性决定,一般为5~10ms。

按键抖动会引起一次按键被误读多次。

为了确保CPU对键的一次闭合仅做一次处理,必须去除按键抖动。

在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。

按键的抖动,可用硬件或软件两种方法消除。

常用软件方法去抖动,即检测到按键闭合后执行一个5~10ms延时程序;让前沿抖动消失后,再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有按键按下。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

开关/键盘控制流水灯设计摘要目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。

在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。

单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。

随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的流水灯,主要介绍了利用89C51制作一简易流水灯的软硬件设计过程,可实现花样流水灯的效果,重点给出了其软件编程的思想方法。

关键词:89C51单片机,霓虹灯,开关/按键目录1绪论 (1)2硬件设计 (1)2.1芯片介绍 (1)2.2电源 (2)2.3时钟 (2)2.4控制线:控制线共有4根 (2)2.5 I/O线 (3)2.6晶振电路 (3)2.7 LED灯电路 (6)3程序设计 (7)3.1 程序流程图 (7)3.2程序设计 (7)总结 (13)参考文献 (14)1绪论目前,国内外对于单片机流水灯的研究,大多是利用89c51单片机,软硬件相结合,构造成最简单的流水灯.城市夜景中,变幻多姿的霓虹灯历来是一道亮丽的风景。

利用单片机的自动控制功能,设计出相应不同的电路,可以实现彩灯不同模式的流水效果。

本设计通过对器件选择和线路连接进行分析讨论,结合相应的软件设计,达到相应的设计要求. 2硬件设计2.1芯片介绍按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机.从图1中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。

因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。

在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。

图1 A T89C51单片机硬件组成图2.2电源VCC - 芯片电源,接+5V。

VSS - 接地端。

用万用表测试单片机引脚电流一般为0v 或者5v,这是标准的TTL电平,但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v之间,其实这之是万用表反映没这么快而已,在某一个瞬间单片机引脚电流还是保持在0v或者5v的。

2.3时钟XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。

2.4控制线:控制线共有4根ALE/PROG:地址锁存允许/片内EPROM编程脉冲 ALE功能:用来锁存P0口送出的低8位地址。

PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。

PSEN:外ROM读选通信号。

RST/VPD:复位/备用电源。

RST(Reset)功能:复位信号输入端。

VPD功能:在Vcc掉电情况下,接备用电源。

EA/Vpp:内外ROM选择/片内EPROM编程电源。

EA功能:内外ROM选择端。

Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。

2.5 I/O线80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。

P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总)。

2.6晶振电路对于一个高可靠性的系统设计,晶体的选择非常重要,尤其设计带有睡眠唤醒(往往用低电压以求低功耗)的系统。

这是因为低供电电压使提供给晶体的激励功率减少,造成晶体起振很慢或根本就不能起振。

这一现象在上电复位时并不特别明显,原因时上电时电路有足够的扰动,很容易建立振荡。

在睡眠唤醒时,电路的扰动要比上电时小得多,起振变得很不容易。

在振荡回路中,晶体既不能过激励(容易振到高次谐波上)也不能欠激励(不容易起振)。

晶体的选择至少必须考虑:谐振频点,负载电容,激励功率,温度特性,长期稳定性。

89C51单片机的时钟信号通常用凉种电路形式得到:内部振荡和外部振荡方式。

基于晶振的振荡器通常提供非常高的初始精度和较低的温度系数。

相对RC振荡器能快速启动,但提供的初始精度和温度系数会较差。

图2所示的电路能产生可靠的时钟信号,但其性能受环境条件和电路元件选择以及振荡器布局的影响。

使用时,元件必须根据特定的逻辑系列进行优化。

引脚XTAL1与XTAL2外接晶体振荡器或陶瓷谐振起,构成内部振荡方。

单片机内部有一个高增益的反相放大器,XTAL1为内部反相放大器的输入端,XTAL2为内部反相放大器的输出端,在其两端接上晶振后,就构成了自激振荡电路,并产生振荡脉冲,振荡电路输出的脉冲信号的频率就是晶振的固有频率。

内部振荡方式第外部电路如图2所示。

在实际应用中通常还需要在晶振的两端和地之间各并上一个小电容图1中,C1,C2起振荡频率、快速起振的作用。

起值在5-30PF。

晶振频率的典型值是12MHZ,内部振荡方式所得时钟信号比较稳定,实用电路中使用较多。

外部振荡方式是吧外部已有的时钟信号引入单片机内着适用单片机的时钟与外部信号同步。

89C51XTAL1XTAL2C1C2图2 内部震荡方式的外部电路图复位电路复位是单片机的初始化操作。

单片机启运运行时,都需要先复位,其作用是使CPU 和系统中其他部件处于一个确定的初始状态,并从这个状态开始工作。

因而,复位是一个很重要的操作方式。

但单片机本身是不能自动进行复位的,必须配合相应的外部电路才能实现。

设计上电延时复位电路需考虑电源电压VDD的上升时间和振荡器的起振时间。

电源电压VDD的上升时间,与供电电源、电源所负担的整个单片机应用系统内各部分电路有关;振荡器的起振时间与振荡器频率有关,例如振荡频率为10mhz时,、起振时间约为1ms,振荡频率为1mhz时,起振时间约为10ms。

当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。

如果RST持续为高电平,单片机就处于循环复位状态。

根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。

上电复位要求接通电源后,自动实现复位操作。

常用的上电复位电路如下图3中所示。

电容在上接高电平,电阻在下接地,中间为RST。

图中电容C1和电阻R1对电源十5V来说构成微分电路。

上电后,保持RST一段高电平时间,由于单片机内的等效电阻的作用。

图3 上电复位电路单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。

常用的上电或开关复位电路如上图4所示。

上电后,由于电容C3的充电和反相门的作用,使RST持续一段时间的高电平。

当单片机已在运行当中时,按下复位键K后松开,也能使RST为一段时间的高电平,从而实现上电或开关复位的操作。

图4上电或开关复位电路根据实际操作的经验,下面给出这两种复位电路的电容、电阻参考值。

上图3中:Cl=10-30uF,R1=1K。

上图4中:C:=1uF,Rl=lk,R2=10k。

实用上电或开关复位如图5所示,主要功能是要保证可靠复位,不要让干扰信号进入RET端,要能够和外围芯片的复位信号共用。

图5 上电或开关电路2.7 LED灯电路LED(Light-Emitting-Diode中文意思为发光二极管)是一种能够将电能转化为可见光的半导体,它改变了白炽灯钨丝发光与节能灯三基色粉发光的原理,而采用电场发光。

据分析,LED的特点非常明显,寿命长、光效高、无辐射与低功耗。

LED的光谱几乎全部集中于可见光频段,其发光效率可达80~90%。

将LED与普通白炽灯、螺旋节能灯及T5三基色荧光灯进行对比,结果显示:普通白炽灯的光效为12lm/W,寿命小于2000小时,螺旋节能灯的光效为60lm/W,寿命小于8000小时,T5荧光灯则为96lm /W,寿命大约为10000小时,而直径为5毫米的白光LED为20~28lm/W,寿命可大于100000小时。

有人还预测,未来的LED寿命上限将无穷大。

发光二极管串联一个510欧姆的电阻后接在5V的电压上。

LED灯电路接在单片机P1口上。

LED灯阳极接电源,阴极接单片机的I/O口,低电平驱动,只要在单片机相应引脚给出低电平,LED就会发亮。

3程序设计3.1 程序流程图3.2程序设计单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能看到流水灯循环点亮的现象,我们还需要告诉单片机怎么来进行工作,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。

软件编程是单片机应用系统中的一个重要的组成部分,是单片机学习的重点和难点。

下面我们以最简单的流水灯控制功能即实现8个LED灯的循环点亮,来介绍实现流水灯控制的几种软件编程方法。

/////LYG 流水灯///////#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit KS=P3^0;sbit K0=P3^1;sbit K1=P3^2;sbit K2=P3^3;sbit K3=P3^4;sbit K4=P3^5;sbit ZP=P3^6;sbit JP=P3^7;bit a=0;int K;bit aa;uchar shijian=400;uchar code tab0[]={0xff,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0xff,0x00};//1灯亮uchar code tab1[]={0x00,0x01,0x05,0x15,0x55,0xff,0x00};//1灯间隔uchar code tab2[]={0x00,0x03,0x06,0x0c,0x18,0x30,0x60,0xc0,0x00};//两个亮交叉uchar code tab3[]={0x00,0x03,0x0c,0x30,0xc0,0xff,0x00};//两个亮独立uchar code tab4[]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0xff,0x00,0x80,0x40,0x20,0x10,0 x08,0x04,0x02,0x01,0x00}; //正反uchar code tab5[]={500,2000};void DelayMS(uint x){uchar t;while(x--){for(t=120;t>0;t--);}}key1(){if(KS==0){DelayMS(10);if(KS==0){aa=~aa;}return aa;};}///////////////////key2(){if(K0==0){DelayMS(10);if(K0==0){K=0;}return K;}if(K1==0){DelayMS(10);if(K1==0){K=1;}return K;}if(K2==0){DelayMS(10);if(K2==0){K=2;}return K;}if(K3==0){DelayMS(10);if(K3==0){K=3;}return K;}if(K4==0){DelayMS(10);if(K4==0){K=4;}return K;}}/////////////////////////////key3(){uchar SJ;if(ZP==0){DelayMS(10);if(ZP==0){SJ++;shijian=tab5[SJ];}return shijian,SJ;}////////////////////////////if(JP==0){DelayMS(10);if(JP==0){SJ--;shijian=tab5[SJ];}return shijian,SJ;}}///////////////////////////////void main(){key1();while(aa==1){ key1();if(aa==0)break;key2();key3();if(K==0){uchar I;for(i=0;i<12;i++){P1=~tab0[i];DelayMS(shijian);if(i==12)i=0;}}/////////////////////////////////if(K==1){uchar I;for(i=0;i<7;i++){P1=~tab1[i];DelayMS(400);}}///////////////////if(K==2){uchar I;for(i=0;i<9;i++){P1=~tab2[i];DelayMS(shijian);}}//////////////////////////////////if(K==3){uchar I;for(i=0;i<7;i++){P1=~tab3[i];DelayMS(shijian);}}//////////////////////if(K==4){uchar I;for(i=0;i<20;i++){P1=~tab4[i];DelayMS(shijian);}}}// else// {P1=0xff;}}总结通过在设计期间有许多心得与体会,首先,在专业知识方面,专业课知识学习都是孤立的,没有系统的联系起来,不知道该如何有机地利用。

相关文档
最新文档