单片机倒计时器设计说明书

上传人:nu****n 文档编号:113771722 上传时间:2022-06-27 格式:DOC 页数:17 大小:202.50KB
收藏 版权申诉 举报 下载
单片机倒计时器设计说明书_第1页
第1页 / 共17页
单片机倒计时器设计说明书_第2页
第2页 / 共17页
单片机倒计时器设计说明书_第3页
第3页 / 共17页
资源描述:

《单片机倒计时器设计说明书》由会员分享,可在线阅读,更多相关《单片机倒计时器设计说明书(17页珍藏版)》请在装配图网上搜索。

1、单片机倒计时器设计说明书1设计方案简介(1)4个按键组成2*2矩阵形式,接到P3口。其中SW4接P3.6口,SW5接P3.7。(2)通过T0定时器与P2.3引脚配合构成音频发生器,在P2.3引脚输出音频频率。2设计流程图设计电路原理图输入汇编语言焊接电路编译映射下载到芯片上3设计原理3.1 AT89C51 AT89C51单片机简介图(a) 89C51内部结构图AT89C51是美国ATMEL公司推出的系列单片机,将多种功能的8位CPU与FPEROM(快闪可编程/擦除只读存储器)结合在一个芯片上,是一种低功耗、高性能的CMOS控制器,为很多嵌入式控制应用提供了非常灵活而又价格适宜的方案,其性能价格

2、比远高于同类芯片。它与MCS-51指令系统兼容,片内FPEROM允许对程序存储器在线重复编程,也可用常规的EPROM编程器编程,可循环写入/擦除1000次。89C51内含4KB的FPEROM,一般的EEPROM的字节擦除时间和写入时间基本上均为10ms,对于任一个实时控制系统来说,这样长的时间是不可能在线修改程序的。与EEPROM相比较,FPEROM大大缩短了存储内容擦除和写入的时间,为在线改写程序提供了极大的方便,而且价格也比带EPROM87C系列单片机便宜,这更显示出了89C系列的优越性。它还有128*8Bit的片内RAM;32根I/O线;2个16位定时/计数器;5个中断源;一个全双工的异

3、步串行口;间歇和掉电工作模式;三级程序存储器加密;全静态工作,晶振工作范围:0Hz24MHz。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口是双功能口

4、, 该口的每一位均可独立地定义为第一I/O 功能或第二I/O功能。作为第一功能使用时操作同P1口。P3口的第二功能如图(c)。图(b) 89C51引脚图(2)控制口线: PSEN (片外取控制)、AL E( 地址锁存控制)、EA (片外储器选择)、RE2SET (复位控制) ;(3)电源及时钟: CCC、VSS; XTAL 1, XTAL 2图(c) 引脚功能表3.2 实验原理图图(1) 主控制电路图(2) LED数码管控制电路 图(3) 蜂鸣器控制电路 4软件流程图4.1倒计时器主程序框图主程序定时器初始化允许T0中断启动T0调用键盘扫描程序有键按下吗调用显示子程序查表取计数初值T0装入计数

5、初值调用键盘扫描程序允许T0中断有键按下吗否是否是4.2显示子程序框图赋表首值选定片选数码管输出数据左移选择下一显示数码管5带详细注释的源程序清单;*; 设计选题: 倒计时器系统设计; 描述: 4位LED数码显示倒计时器,显示时间为99秒,; 一个开始键,一个复位键,一个暂停键。; 调用子程序: 计时子程序,显示子程序,定时子程序; 所用特殊寄存器:寄存器A,寄存器C; 所用中断:外部中断INT0,定时器T0; 实验作者: 肖延文-47号,高穹誉-10号;* ORG 0000H LJMP START ;主程序必须避开地址000BH ORG 000BH ;定时器0的中段服务程序,起始地;址为00

6、0BH LJMP IT00 ORG 0030HSTART: MOV TH0,#0D8H ;装入初始值,定时10ms MOV TL0,#0F0H MOV TMOD,#01H ;工作方式1 MOV 33H,#09 ;显示初值为99s MOV 32H,#09 MOV 31H,#00 MOV 30H,#00 SETB ET0 ;打开定时0 SETB EA ;开总中断LOOP1: JB P3.6,LOOP ;判断高低位,即按键KEY0是否按下 LCALL DISPLAY ;为低,即按键按下,延时消抖 LCALL DISPLAY JB P3.6,LOOP ;按键真的按下,并不是外界的干扰 SETB TR0

7、 ;启动定时器HERE: LCALL DISPLAY ;调用显示 JB P3.7,LOOP3 ;判断高低,即KEY1按键是否按下 CLR TR0 ;按下,关闭定时器,这里并没有消抖 LJMP LOOP1 ;等待KEY0的按下LOOP3: SJMP HERE ;KEY1没有按下,就需显示LOOP: LCALL DISPLAY ;KEY1没有按下,就需显示 LJMP LOOP1;* ; 减10ms子程序;*SUB1: DEC 30H ;百分位减1 MOV A,30H CJNE A,#0FFH,LOOP2 ;判断百分位减到0之后是否再减1 MOV 30H,#09 ;是,装入初值9 DEC 31H ;

8、十分位减1 MOV A,31H CJNE A,#0FFH,LOOP2 ;判断十分位减到0之后是否再减1 MOV 31H,#09 DEC 32H MOV A,32H CJNE A,#0FFH,LOOP2 MOV 32H,#09 DEC 33H MOV A,33H CJNE A,#0FFH,LOOP2 CLR P2.3 ;从99s减到0s后,驱动蜂鸣器 LCALL DELAY ;延时 LCALL DELAY SETB P2.3 ;关闭蜂鸣器 MOV 33H,#09 ;装入初值99s MOV 32H,#09 MOV 31H,#00 MOV 30H,#00LOOP2: NOP ;空指令 RET ;返回

9、;*; 显示子程序;*DISPLAY: MOV DPTR,#TAB ;赋表首地址 ;选定片选数码管 MOV A,#0FBH SETB P2.7 MOV P0,A ;点亮最左边的数码管 CLR P2.7 XCH A,R0 ;暂存A的值 ;输出显示数据 MOV A,33H MOVC A,A+DPTR ;根据表值查找所需的值 SETB P2.6 MOV P0,A ;显示值 CLR P2.6 LCALL DELAY ;延时 ;选择下一显示数码管 XCH A,R0 ;恢复原值 RL A ;循环左移,为下次做准备 SETB P2.7 MOV P0,A CLR P2.7 XCH A,R0 MOV A,32H

10、 MOVC A,A+DPTR SETB P2.6 MOV P0,A CLR P2.6 LCALL DELAY XCH A,R0 RL A SETB P2.7 MOV P0,A CLR P2.7 XCH A,R0 MOV A,31H MOVC A,A+DPTR SETB P2.6 MOV P0,A CLR P2.6 LCALL DELAY XCH A,R0 RL A SETB P2.7 MOV P0,A CLR P2.7 XCH A,R0 MOV A,30H MOVC A,A+DPTR SETB P2.6 MOV P0,A CLR P2.6 LCALL DELAY RET;*; 数码管显示的数值

11、;*TAB: DB 0EDH,48H,0F4H,0B5H,99H DB 3DH,7DH,85H,0FDH,0BDH,0DDH,79H,6CH,0F1H,7CH,5CHIT00: MOV TH0,#0D8H ;装入初值10ms MOV TL0,#0F0H LCALL SUB1 ;减10ms RETI ;返回;*;延时子程序,时间大约为:2us*10*250;*DELAY: MOV R7,#10 DEL2: MOV R6,#250DEL1: DJNZ R6,DEL1 DJNZ R7,DEL2 RET END ;结束6.调试运行1. 接硬件图连线,为了确保四位数码管能够对应显示。实验时,对P0口的接

12、线做了调整。即:P0.0接L1,P0.1接L2,P0.2接L3,P0.3接L4。2. 从0030H单元开始连续运行,观察四个数码管显示情况是否与预期的结果一致。如果不一致,则单步运行或断点运行进行调试,直至满足设计要求。3. 整体运行,观察数码管显示是否符合要求。如果不符合,则再调试,直至满足要求。7个人体会 通过本次课程设计,我深深的体会到了作为一个硬件工程师的艰辛。即使做一个小小的项目,都需要这么多的辛苦,必须考虑到问题的任何一个细节,否则最后也将是功败垂成。 原理图设计: 当我们选取了这样一个题目,我们就开始收集相关的各种资料,对题目有个大致的了解,规划一下设计的任务将要完成哪些功能。然

13、后就具体的每一项功能应该怎样具体的设计,例如用什么方法完成这一功能,这种想法是否合理。经过长时间的查阅资料、思索、推敲,最后定出了这次设计的原理图。编程调试:此次设计的编程,难点在于对LED数码管显示程序的编写,由于对AT89C51的工作原理不是很熟悉,所以一开始摸不着头脑。看参考教材、上网查阅其相关资料,对AT89C51的工作原理有个大致的了解后,程序的编写也初见端倪了,所以花在编此段程序的时间最长;中断程序的编写也是常规的编写。在整个程序的编写过程中,研究每个子程序是否好使,我是通过Keil C和proteus两个软件来实现的。Proteus是一个单片机的仿真软件,发现它之后真的很受用,通

14、过它可以不用连接硬件就能检查程序是否好使。Keil C则帮助我检查程序是否存在语法错误之类的问题,还可以生成hex文件,供proteus软件仿真使用。通过这两个软件,我们把整个的程序调试正确。通过上面的这个步骤,把程序调试好,接下来就是真正的硬件连接调试了。程序既然已经在仿真的软件上通过认证,如果连接上硬件不好使的话,说明在硬件上某个部分存在一定的问题。这点得到了验证:硬件模拟的时候,紧急情况用的开关有一个不好使,按下的时候没有反应。用万用表检测发现,开关内部的连接没有错误,但是当开关按下的时候,不是接通的,说明此开关有问题。后来仔细检查,发现一个引脚在焊接的时候没有焊接上。这次课程设计我是全身心的投入进去了,从中确确实实学到了不少东西,使我受益匪浅。这次课程设计中犯下了不少错误,以后我会接受这些教训,同时把这些教训转换为经验应用到以后的此类设计中。最后,衷心感谢在课程设计期间老师对我们的无私帮助,还要感谢和我同组的合作者,以及所有帮助过我的同学。8参考文献(1) 单片机原理及接口技术 张毅刚/彭喜元主编 人们邮电出版社(2) 单片机试验与实践教程 万光毅主编 北京航空航天大学出版

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!