单片机课程设计书倒计时器的设计.docx
《单片机课程设计书倒计时器的设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计书倒计时器的设计.docx(15页珍藏版)》请在冰豆网上搜索。
单片机课程设计书倒计时器的设计
XXXXXXXXXXXXX
单片机原理及接口技术课程设计总结报告
设计题目:
电子钟倒计时器的设计
姓名:
XXXXXXX
系别:
XXXXXXXXXXXXXXX
XXXXXXXXXXXXX
专业:
XXXXXXXX
班级:
XXXXXXXXX
学号:
XXXXXXXXXXX
指导教师:
XXXX
2010年01月12日
郑州轻工业学院
课程设计任务书
题目电子钟倒计时器的设计
专业、班级XXXXXXXXX班学号XXXX姓名XXXXXX
主要内容、基本要求、主要参考资料等:
主要内容
1.以单片机为核心器件组成具有倒计时功能的计时器。
2.可以通过按键进行复位、启动、暂停等功能。
基本要求
1.能够对电子电路、电子元器件等方面的知识有进一步的认识,独立对其进行测试与检查。
2.熟悉8052单片机的内部结构和功能,合理使用其内部寄存器,能够完成相关软件编程设计工作。
为实现预期功能,能够对系统进行快速的调试,并能够对出现的功能故障进行分析,及时修改相关软硬件。
参考资料
1.单片机原理及接口技术张毅刚/彭喜元主编人们邮电出版社
2.单片机试验与实践教程万光毅主编北京航空航天大学出版
完成期限:
2010年01月12日
指导教师签名:
课程负责人签名:
2010年01月04日
绪论
单片机自20世纪70年代问世以来,已对人类社会产生了巨大的影响。
尤其是美国Intel公司生产的MCS-51系列单片机,由于其具有集成度高、处理功能强、可靠性高、系统结构简单、价格低廉、易于使用等优点,在工业控制、智能仪器仪表、办公室自动化、家用电器等诸多领域得到广泛的应用。
在于MCS-51单片机兼容的各种增强型、扩展性等多种衍生单片机产品中,美国ATMEL公司推出的AT89C5x系列单片机在我国的8位单片机市场中占有比较大的份额。
AT89C5x系列单片机有多种机型,其中的基本型AT89C51单片机时十分重要的,因为他是目前替代MCS-51系列单片机的主要芯片之一,具有典型性、代表性,同时也是各种增强型、扩展型等衍生产品的基础。
本次课程设计就是用AT89C5x系列的单片机设计电子钟倒计时器,,不但电路简单,而且功能可根据需要自行设计。
电子钟倒计时器在生活中非常有用。
例如:
可用于新年倒计时、重大的事件倒计时以及科研上的倒计时。
目录
1设计方案简介5
2设计流程图5
3设计原理6
3.1AT89C516
3.1.1AT89C51单片机简介6
3.1.2管脚功能7
3.2实验原理图9
4软件流程图10
4.1倒计时器主程序框图10
4.2显示子程序框图11
5带详细注释的源程序清单11
6调试运行18
7个人体会18
8参考文献20
1.设计方案简介
(1)4个按键组成2*2矩阵形式,接到P3口。
其中SW4接P3.6口,SW5接P3.7。
(2)通过T0定时器与P2.3引脚配合构成音频发生器,在P2.3引脚输出音频频率。
2.设计流程图
设计电路
原理图输入
汇编语言
焊接电路
编译
映射下载到芯片上
3.设计原理
3.1AT89C51
3.1.1AT89C51单片机简介
图(a)89C51内部结构图
AT89C51是美国ATMEL公司推出的系列单片机,将多种功能的8位CPU与FPEROM(快闪可编程/擦除只读存储器)结合在一个芯片上,是一种低功耗、高性能的CMOS控制器,为很多嵌入式控制应用提供了非常灵活而又价格适宜的方案,其性能价格比远高于同类芯片。
它与MCS-51指令系统兼容,片内FPEROM允许对程序存储器在线重复编程,也可用常规的EPROM编程器编程,可循环写入/擦除1000次。
89C51内含4KB的FPEROM,一般的EEPROM的字节擦除时间和写入时间基本上均为10ms,对于任一个实时控制系统来说,这样长的时间是不可能在线修改程序的。
与EEPROM相比较,FPEROM大大缩短了存储内容擦除和写入的时间,为在线改写程序提供了极大的方便,而且价格也比带EPROM87C系列单片机便宜,这更显示出了89C系列的优越性。
它还有128*8Bit的片内RAM;32根I/O线;2个16位定时/计数器;5个中断源;一个全双工的异步串行口;间歇和掉电工作模式;三级程序存储器加密;全静态工作,晶振工作范围:
0Hz—24MHz。
3.1.2管脚功能
AT89C51单片机为40引脚芯片如图(b)所示。
(1)I/O口线:
P0、P1、P2、P3共四个八位P0口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读ˆ写操作。
P0口也用以输出外部存储器的低8位地址。
由于是分时输出,故应在外部加锁存器将此地址数据锁存,地址锁存信号用ALE。
P1口是专门供用户使用的I/O口,是准双向口。
P2口是从系统扩展时作高8位地址线用。
不扩展外部存储器时,P口也可以作为用户I/O口线使用,P2口也是准双向口。
P3口是双功能口,该口的每一位均可独立地定义为第一I/O功能或第二I/O功能。
作为第一功能使用时操作同P1口。
P3口的第二功能如图(c)。
图(b)89C51引脚图
(2)控制口线:
PSEN(片外取控制)、ALE(地址锁存控制)、EA(片外储器选择)、RE2SET(复位控制);
(3)电源及时钟:
CCC、VSS;XTAL1,XTAL2
图(c)引脚功能表
3.2实验原理图
图
(1)主控制电路
图
(2)LED数码管控制电路图(3)蜂鸣器控制电路
4.软件流程图
4.1倒计时器主程序框图
4.2显示子程序框图
5.带详细注释的源程序清单
;************************************************
;设计选题:
倒计时器系统设计
;描述:
4位LED数码显示"倒计时器",显示时间为99秒,
;一个"开始"键,一个"复位"键,一个"暂停"键。
;调用子程序:
计时子程序,显示子程序,定时子程序
;所用特殊寄存器:
寄存器A,寄存器C
;所用中断:
外部中断INT0,定时器T0
;实验作者:
肖延文--47号,高穹誉--10号
;************************************************
ORG0000H
LJMPSTART;主程序必须避开地址000BH
ORG000BH;定时器0的中段服务程序,起始地
;址为000BH
LJMPIT00
ORG0030H
START:
MOVTH0,#0D8H;装入初始值,定时10ms
MOVTL0,#0F0H
MOVTMOD,#01H;工作方式1
MOV33H,#09;显示初值为99s
MOV32H,#09
MOV31H,#00
MOV30H,#00
SETBET0;打开定时0
SETBEA;开总中断
LOOP1:
JBP3.6,LOOP;判断高低位,即按键KEY0是否按下
LCALLDISPLAY;为低,即按键按下,延时消抖
LCALLDISPLAY
JBP3.6,LOOP;按键真的按下,并不是外界的干扰
SETBTR0;启动定时器
HERE:
LCALLDISPLAY;调用显示
JBP3.7,LOOP3;判断高低,即KEY1按键是否按下
CLRTR0;按下,关闭定时器,这里并没有消抖
LJMPLOOP1;等待KEY0的按下
LOOP3:
SJMPHERE;KEY1没有按下,就需显示
LOOP:
LCALLDISPLAY;KEY1没有按下,就需显示
LJMPLOOP1
;************************************************
;减10ms子程序
;************************************************
SUB1:
DEC30H;百分位减1
MOVA,30H
CJNEA,#0FFH,LOOP2;判断百分位减到0之后是否再减1
MOV30H,#09;是,装入初值9
DEC31H;十分位减1
MOVA,31H
CJNEA,#0FFH,LOOP2;判断十分位减到0之后是否再减1
MOV31H,#09
DEC32H
MOVA,32H
CJNEA,#0FFH,LOOP2
MOV32H,#09
DEC33H
MOVA,33H
CJNEA,#0FFH,LOOP2
CLRP2.3;从99s减到0s后,驱动蜂鸣器
LCALLDELAY;延时
LCALLDELAY
SETBP2.3;关闭蜂鸣器
MOV33H,#09;装入初值99s
MOV32H,#09
MOV31H,#00
MOV30H,#00
LOOP2:
NOP;空指令
RET;返回
;************************************************
;显示子程序
;************************************************
DISPLAY:
MOVDPTR,#TAB;赋表首地址
;选定片选数码管
MOVA,#0FBH
SETBP2.7
MOVP0,A;点亮最左边的数码管
CLRP2.7
XCHA,R0;暂存A的值
;输出显示数据
MOVA,33H
MOVCA,@A+DPTR;根据表值查找所需的值
SETBP2.6
MOVP0,A;显示值
CLRP2.6
LCALLDELAY;延时
;选择下一显示数码管
XCHA,R0;恢复原值
RLA;循环左移,为下次做准备
SETBP2.7
MOVP0,A
CLRP2.7
XCHA,R0
MOVA,32H
MOVCA,@A+DPTR
SETBP2.6
MOVP0,A
CLRP2.6
LCALLDELAY
XCHA,R0
RLA
SETBP2.7
MOVP0,A
CLRP2.7
XCHA,R0
MOVA,31H
MOVCA,@A+DPTR
SETBP2.6
MOVP0,A
CLRP2.6
LCALLDELAY
XCHA,R0
RLA
SETBP2.7
MOVP0,A
CLRP2.7
XCHA,R0
MOVA,30H
MOVCA,@A+DPTR
SETBP2.6
MOVP0,A
CLRP2.6
LCALLDELAY
RET
;************************************************
;数码管显示的数值
;************************************************
TAB:
DB0EDH,48H,0F4H,0B5H,99H
DB3DH,7DH,85H,0FDH,0BDH,0DDH,79H,6CH,0F1H,7CH,5CH
IT00:
MOVTH0,#0D8H;装入初值10ms
MOVTL0,#0F0H
LCALLSUB1;减10ms
RETI;返回
;************************************************
;延时子程序,时间大约为:
2us*10*250
;************************************************
DELAY:
MOVR7,#10
DEL2:
MOVR6,#250
DEL1:
DJNZR6,DEL1
DJNZR7,DEL2
RET
END;结束
6.调试运行
1.接硬件图连线,为了确保四位数码管能够对应显示。
实验时,对P0口的接线做了调整。
即:
P0.0接L1,P0.1接L2,P0.2接L3,P0.3接L4。
2.从0030H单元开始连续运行,观察四个数码管显示情况是否与预期的结果一致。
如果不一致,则单步运行或断点运行进行调试,直至满足设计要求。
3.整体运行,观察数码管显示是否符合要求。
如果不符合,则再调试,直至满足要求。
7.个人体会
通过本次课程设计,我深深的体会到了作为一个硬件工程师的艰辛。
即使做一个小小的项目,都需要这么多的辛苦,必须考虑到问题的任何一个细节,否则最后也将是功败垂成。
原理图设计:
当我们选取了这样一个题目,我们就开始收集相关的各种资料,对题目有个大致的了解,规划一下设计的任务将要完成哪些功能。
然后就具体的每一项功能应该怎样具体的设计,例如用什么方法完成这一功能,这种想法是否合理。
经过长时间的查阅资料、思索、推敲,最后定出了这次设计的原理图。
编程调试:
此次设计的编程,难点在于对LED数码管显示程序的编写,由于对AT89C51的工作原理不是很熟悉,所以一开始摸不着头脑。
看参考教材、上网查阅其相关资料,对AT89C51的工作原理有个大致的了解后,程序的编写也初见端倪了,所以花在编此段程序的时间最长;中断程序的编写也是常规的编写。
在整个程序的编写过程中,研究每个子程序是否好使,我是通过KeilC和proteus两个软件来实现的。
Proteus是一个单片机的仿真软件,发现它之后真的很受用,通过它可以不用连接硬件就能检查程序是否好使。
KeilC则帮助我检查程序是否存在语法错误之类的问题,还可以生成hex文件,供proteus软件仿真使用。
通过这两个软件,我们把整个的程序调试正确。
通过上面的这个步骤,把程序调试好,接下来就是真正的硬件连接调试了。
程序既然已经在仿真的软件上通过认证,如果连接上硬件不好使的话,说明在硬件上某个部分存在一定的问题。
这点得到了验证:
硬件模拟的时候,紧急情况用的开关有一个不好使,按下的时候没有反应。
用万用表检测发现,开关内部的连接没有错误,但是当开关按下的时候,不是接通的,说明此开关有问题。
后来仔细检查,发现一个引脚在焊接的时候没有焊接上。
这次课程设计我是全身心的投入进去了,从中确确实实学到了不少东西,使我受益匪浅。
这次课程设计中犯下了不少错误,以后我会接受这些教训,同时把这些教训转换为经验应用到以后的此类设计中。
最后,衷心感谢在课程设计期间老师对我们的无私帮助,还要感谢和我同组的合作者,以及所有帮助过我的同学。
8.参考文献
(1)单片机原理及接口技术张毅刚/彭喜元主编人们邮电出版社
(2)单片机试验与实践教程万光毅主编北京航空航天大学出版