单片机30秒倒计时.docx
《单片机30秒倒计时.docx》由会员分享,可在线阅读,更多相关《单片机30秒倒计时.docx(13页珍藏版)》请在冰豆网上搜索。
单片机30秒倒计时
天津工业大学
电子CAD课程设计
报告书
三、总体方案
本设计由硬件设计和软件设计两部分组成,总电路如图1所示,硬件设计主要包括单片机芯片选择,数码管选择及晶振,电容,电阻等元器件的选择及其参数的确定;软件设计主要是实现30秒倒计时程序的编写,包括利用中断实现1秒的定时及30秒的倒计时。
具体设计:
通过AT89C51型号单片机,由P0I/O引脚分别控制7SEG–MPX2–CA型号数码管,通过单片机的和控制选通数码管控制十位和个位,达到显示30秒倒计时的目的。
。
30秒倒计时,到0时1KHZ声音报警,LED2秒闪烁一次。
4秒后声光停
图130秒倒计时总体电路设计
硬件设计方法
AT89C51的芯片概述
AT89C51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
其工作电压在-5V,一般我们选用+5V电压。
外形及引脚排列如图2所示:
AT89C51主要特性
图2:
AT89C51的核心电路框图
LED数码管显示器概述
本设计中采用的是7SEG–MPX2–CA型号7段共阳数码管,它是一种半导体发光器件,其基本单元是发光二极管。
实物如图3所示:
图37SEG–MPX2–CA型号数码管
图5程序框图
软件设计方法
定时/计数器初值计算
(1)本电路应用TIMER0MODE16位计数器的计时中断法。
(2)12M的晶振每秒可以产生1M个机器周期,1秒等于1000000微秒,而每一计时脉冲是1微秒,因此需输入100000个计时脉冲,方可达到1秒的时间。
本设计中,设定中断每次溢出时间50ms。
(3)由上式得知,循环20次即可达到1秒定时,即:
N=t/Tcy==5000
X=65536-5000=15536=3CB0H
(4)由上式得知5000个脉冲,首先需设定TL0=3CH,TH0=0B0H,此时第1次只要输入5000个脉冲输入,就会溢出;第2次至第20次,则需每1000000个计时脉冲,定时1秒。
(5)上电时,显示30,开始倒数计时按下开关实现复位。
四、原理图仿真
软件调试过程
系统调试工具keilC51
KeilC51仿真器是一款利用KEILC51的IDE集成开发环境作为仿真环境的廉价仿真器,是利用SST公司具有IAP功能的单片机SST89C58制作而成,主要是利用了SST89C58的IAP功能,所谓IAP功能是Inapplicationprogram的英文缩写,是在应用编程的意思,通俗一点讲就是:
它可以通过串口将用户的程序下载到单片机中,可以通过串口对单片机进行编程。
它之所以具有这种功能,实际上它有两块程序flash区,其中一块flash中运行的程序可以更改另外的一块程序flash区中的程序,正是利用这一特性才用它作成了仿真器,我们把仿真器的监控程序事先烧入SST89C58,监控程序通过SST89C58的串口和PC通讯,当使用KEILC51的IDE环境仿真时,用户的程序通过串口被监控程序写入flash程序区中,当用户设置断点等操作仿真程序时,flash程序中的用户程序也在相应的更改,从而实现了仿真功能。
调试的主要方法:
1.启动Keilc51
2.新建一个工程。
Project菜单—〉Newproject,选择好我们要保存的文件夹后,键入Frist保存。
接着弹出CPU类型选择框,我们选择最常用的AT89C51,按确定。
3.在工程中加入文件。
新建一个文件,文件菜单File—〉New,我们再选择:
文件菜单File—〉SaveAs(另存为)弹出对话框后,我们文件名框中键入(注意文件后缀名是.ASM)保存.ASM文件建好啦。
现在我们把文件加入到工程中去。
点击Target1前面的+号,右键单击SourceGroup1—〉选择AddFilestoGroup,SourceGroup1,选择添加Add。
编译运行,检查程序是否有错误。
系统调试工具PROTEUS
Proteus是一款EDA软件,该软件具有模拟电路仿真,数字电路仿真,单片机以及外围电路组成的系统的仿真,RS-232动态仿真,I2C调试器,SPI调试器,键盘和LCD系统的仿真,以及各种虚拟仪器,如示波器,逻辑分析仪,信号发生器等。
该软件目前支持的单片机类型有:
68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列、ARM以及各种外围芯片。
该软件还支持大量的存储器和外围芯片,所以,该软件是一款集单片机和SPICE分析于一身的仿真软件。
调试方法:
首先用Keil软件将C编译成HEX文件,打开Keil软件,新建一个文档,输入C程序,保存成C格式文件,然后新建工程,连接单片机为AT89C51,选择Optionsfortarget,选择OUTPUT子菜单,在CreateHEXFi前打钩,DeBug子菜单中,Settings选择ProteusVSMSimulator,USE前打钩,再次运行文件,成功后在目录下会生成HEX文件,打开Proteus软件,或直接点击DSN文件,双击单片机模板,点击文件夹式样的图标选择对应的HEX驱动文件,然后点击开始,进行调试。
1、启动
2、暂停
3、倒计时完成
五、元器件清单
序号
元件类型
元件参数
元件个数
备注
1
芯片
AT89C51
1
2
晶振
12M
1
3
电源接口
5V
1
4
电容
100PF
3
5
排阻
10K
1
6
电阻
300
2
7
电阻
10K
1
8
排阻
10K
1
9
数码管
7SEG–MPX2–CA
1
共阳
10
电解电容
2200u
1
11
电解电容
10u
1
12
蜂鸣器
Buzzer
1
13
发光二极管
D1、D2
2
六、PCB版图
图6仿真图
附录2
软件程序
STRTEQU
STPEQU
CLRREQU
ORG00H
AJMPMAIN
ORG0BH
AJMPT0INT
ORG1BH
AJMPT1INT
ORG30H
MAIN:
MOVSP,#60H
MOVDPTR,#TAB
MOVTMOD,#11H;T0、T1定时方式1
SETBEA
SETBET0
SETBET1
MOVTH0,#3CH;50ms定时常数
MOVTL0,#0B0H
MOVTH1,#0FEH;定时常数
MOVTL1,#0CH
MOVR0,#20;20x50mS=1S
MOVR1,#4;蜂鸣4S
MOVR4,#30;倒计时30S
k1:
LCALLDISP
JBSTRT,K2
LCALLDISP
JNBSTRT,$-3
AJMPSTART
k2:
JBSTP,K3
LCALLDISP
JNBSTP,STOP
K3:
JBCLRR,K1
LCALLDISP
JNBCLRR,CLEAR
AJMPK1
START:
SETBTR0
AJMPK1
STOP:
CLRTR0
AJMPK2
CLEAR:
CLRTR0
MOVR4,#0
AJMPK1
T0INT:
MOVTH0,#03CH;;定时中断子程序。
重装定时常数
MOVTL0,#0B0H;
DJNZR0,T0INTR;50msX20=1S,未满20次,跳出中断子程序
MOVR0,#20
CJNER4,#0,T0INT1
AJMPT0INT2;倒计时间到,跳转
T0INT1:
DECR4
RETI
T0INT2:
CPL;LED光报警
DECR1
CJNER1,#0,T0INT3;报警时间未到,继续
CLRTR1
ACALLDISP
AJMP$-2
T0INT3:
ACALLALARM
AJMPT0INTR
T0INTR:
RETI
T1INT:
MOVTH1,#0FEH;高低电平变换一次,频率即为1KHz
MOVTL1,#0CH
CPL
RETI
ALARM:
SETBTR1
RET
DISP:
MOVA,R4
MOVB,#10
DIVAB;当前值除以10
MOV20H,A;得出的商送给十位
MOV21H,B;得出的余数送给个位
MOVA,20H;十位显示
MOVCA,@A+DPTR
MOVP0,A
SETB
LCALLDELAY
CLR
MOVA,21H;个位显示
MOVCA,@A+DPTR
MOVP0,A
SETB
LCALLDELAY
CLR
RET;子程序返回
DELAY:
;误差0us
MOVR6,#10
DL0:
MOVR5,#50
DJNZR5,$
DJNZR6,DL0
RET;子程序返回
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H;共阳极0-9显示代码
DB92H,82H,0F8H,80H,90H
END