1、单片机设计60秒倒计时正计时+Proteus仿真60秒倒计时设计一:1目的课程设计是单片机课程教学的最后一个环节,是对学生进行全面的系统的训练。2要求单片机控制的60s倒计时(1)用单片机AT89C51的定时器实现60s倒计时。(2)用PROTEUS设计,仿真基于AT89c51单片机的60s倒计时实验。3. 目标通过课程设计,使自己深刻理解并掌握基本概念,掌握单片机的基本应用程序设计及综合应用程序设计的方法。2:方案选择图2.1:60秒倒计时总体电路设计本设计由硬件设计和软件设计两部分组成,总电路框图如图2.1所示。具体设计:通过AT89C51型号单片机,由P1和P2两组I/O引脚分别控制两个
2、7SEGCOM ANODE型号数码管,分十位控制和个位控制,达到显示60秒倒计时的目的。通过复位电路,在仿真过程中点击开关实现60复位3.1 AT89C51外形及引脚排列如图3.1所示 图3.1:89C51的核心电路框图主要特性与MCS-51 兼容 4K字节可编程闪烁存储器 寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24MHz三级程序存储器锁定1288位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路 管脚说明(1)电源及时钟引脚(4个)Vcc: 电源接入引脚Vss:接地引脚XTAL1:晶振震荡器接入
3、的一个引脚(采用外部振荡器时,此引脚接地);XTAL2:晶体振荡器的另一个引脚(采用外部振荡器时,此引脚作为外部振荡器信号的输入端)。(2)控制线引脚(4个)RST/Vpd:复位信号输入引脚/备用电源输入引脚;ALE:地址锁存允许信号输出引脚/编程脉冲输入引脚:EA:内外存储器选择引脚/片外EPROM编程电压输入引脚;PSEN:外部程序存储器选通信号输出引脚。(3)并行I/O引脚P0.0-P0.7:一般I/O口引脚或数据/低位地址总线复用引脚;P1.0-P1.7:一般I/O口引脚;P2.0-P2.7:一般I/O口引脚或高位地址总线引脚;P3.0-P3.7:一般I/O口引脚或第二功能引脚振荡器特
4、性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度本设计中还用到其他一些元器件,如:晶振,电容,电阻排,电解电容,开关等等。晶振采用频率为12MHZ,连接的两个电容为30pF;电阻排为470*8,能够实现8个470欧电阻的等效替换;电解电容为10u;开关功能是在仿真过程中,按下开关便能实现60秒复位。4. 软件设计4.1定时/计数器初值计算(1)本电路应用TIMER0
5、MODE 16位计数器的计时中断法。 (2)1秒等于1000000微秒,而每一计时脉冲是1微秒,因此需输入100000个计时脉冲,方可达到1秒的时间。本设计中,设定中断每次溢出时间50ms。(3)由上式得知,循环20次即可达到1秒定时,即: N=t/T=0.05s/0.000001=5000X=65536-5000=15536=3CB0H(4)由上式得知5000个脉冲,首先需设定TL0=3CH,TH0=0B0H,此时第1次只要输入5000个脉冲输入,就会溢出;第2次至第20次,则需每1000000个计时脉冲,定时1秒。(5)上电时,显示60,开始倒数计时按下开关实现复位。代码如下 ORG 00
6、00H AJMP MAIN ORG 0030HMAIN: MOV R2,#60 ;计数初值LOOP1: MOV A,R2 MOV B,#10 DIV AB MOV DPTR,#TABLE MOVC A,A+DPTR ;查表 MOV P1,A ;十位显示 MOV A,B MOVC A,A+DPTR MOV P2,A ;个位显示 MOV R7,#20LOOP0: MOV TMOD,#01H ;置T0工作于方式0 MOV TH0,#3CH ;装入计数初值 MOV TL0,#0B0H SETB TR0 ;启动定时器T0 JNB TF0,$ ;TF0=0,等待 CLR TF0 ;清TF0 DJNZ R7
7、,LOOP0 ;循环20次 DEC R2 ;减一 CJNE R2,#0FFH,LOOP1 ;倒计时 AJMP MAIN ;复位回到60秒初始TABLE: DB 0C0H,0F9H,0A4H,0B0H DB 99H,92H,82H,0F8H DB 80H,90H,88H,83H DB 0C6H,0A1H,86H,8EH END5.软件调试:1. 启动Keil c51 2. 新建一个工程。Project菜单New project ,选择好我们要保存的文件夹后,文件 保存。我们选择最常用的AT89C51,确定。3. 在工程中加入文件。新建一个文件,文件菜单FileNew,我们再选择:文件菜单File
8、Save As(另存为)弹出 对话框后,我们文件名框中键入文件名(注意文件后缀名是 .c)保存。C文件建好啦。现在我们把文件加入到工程中去。 点击Target 1前面的+号,右键单击Source Group 1选择Add Files to Group ,Source Group 1,选择添加 Add。编译运行。4.PROTEUS仿真图 60秒正计时设计代码 SECOND EQU 30HTCOUNT EQU 31H ORG 00HSTART: MOV SECOND,#00H MOV TCOUNT,#00H MOV TMOD,#01H MOV TH0,#(65536-50000) / 256 MO
9、V TL0,#(65536-50000) MOD 256 SETB TR0DISP: MOV A,SECOND MOV B,#10 DIV AB MOV DPTR,#TABLE MOVC A,A+DPTR MOV P0,A MOV A,B MOVC A,A+DPTR MOV P2,AWAIT: JNB TF0,WAIT CLR TF0 MOV TH0,#(65536-50000) / 256 MOV TL0,#(65536-50000) MOD 256 INC TCOUNT MOV A,TCOUNT CJNE A,#20,NEXT MOV TCOUNT,#00H INC SECOND MOV A,SECOND CJNE A,#60,NEX MOV SECOND,#00HNEX: LJMP DISPNEXT: LJMP WAITTABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END 60秒正计时PROTEUS仿真图
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1