基于AT89C51的99秒倒计时器设计

上传人:e****s 文档编号:58146888 上传时间:2022-02-26 格式:DOC 页数:16 大小:332.50KB
收藏 版权申诉 举报 下载
基于AT89C51的99秒倒计时器设计_第1页
第1页 / 共16页
基于AT89C51的99秒倒计时器设计_第2页
第2页 / 共16页
基于AT89C51的99秒倒计时器设计_第3页
第3页 / 共16页
资源描述:

《基于AT89C51的99秒倒计时器设计》由会员分享,可在线阅读,更多相关《基于AT89C51的99秒倒计时器设计(16页珍藏版)》请在装配图网上搜索。

1、目录1、 课程设计的目的和要求.12、 题目.13、 主要器件说明.14、 电路设计框图.75、 各部分电路.86、 程序.107、 心得体会.168、 参考文献.16一、课程设计目的和要求1. 目的:(1)培养学生综合运用所学理论知识分析和解决实际问题的能力。(2)锻炼学生的独立工作能力,也是对前期理论与实践教学效果的检验。(3)通过课程设计使学生深入理解单片机的基本原理,硬件结构和工作原理。掌握程序的编制方法和程序调试的方法,掌握常用接口的设计及使用。掌握一般接口的扩展方法及接口的调试过程。为学生将来在电子信息工程、测试计量技术及仪器、通信工程、电子科学与技术及其他领域应用单片机技术打下良

2、好基础及应用实践能力。2.要求:本课程设计重视培养并提高学生创新设计能力、理论与实际相结合的综合素质、单片机系统硬件设计能力,软件编程技巧,软硬件联合调试技巧及技能等实践能力。(1)选题要求:满足课程设计的教学目的与要求,使学生得到全面的综合训练,题目难度和工作量应适合学生的知识和能力状况。(2)学生根据课程实际任务书的要求合理地安排设计进度,(3)学生对自己课程设计的题目,应概念清楚,设计方案合理,硬件设计正确,程序编制正确合理,调试结果符合设计要求,课程设计报告书撰写规范。2、 题目 实现最长99S的倒计时功能;利用数码管或液晶屏显示数字;利用按键可以设置倒计时时间;设置倒计时开始启动键;

3、时间到,声(光)报警,示意倒计时时间到。三、所需主要器件说明 AT89C51单片机1个、两位动态共阴数码管1个、9个引脚的排阻、电阻3个、12MHz晶振1个、33pF电容2个、10uF极性电容1个、独立按键1个、4行3列矩阵按键1个、LED指示灯1个、电源和地若干声光报警 单片机at89c51 开始启动键数字显示 复位电路电源 振荡电路1、AT89C51 AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容

4、标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 其工作电压在4.55V,一般我们选用5V电压。外形及引脚排列如图2所示 图二 at89c51外形及引脚l 主要特性与MCS-51 兼容 4K字节可编程闪烁存储器 寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24MHz三级程序存储器锁定1288位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源 可编程串行

5、通道低功耗的闲置和掉电模式片内振荡器和时钟电路 l 管脚说明 (1)电源及时钟引脚(4个) Vcc: 电源接入引脚 Vss:接地引脚 XTAL1:晶振震荡器接入的一个引脚(采用外部振荡器时,此引脚接地); XTAL2:晶体振荡器的另一个引脚(采用外部振荡器时,此引脚作为外部振 荡器信号的输入端)。 (2)控制线引脚(4个) RST/Vpd:复位信号输入引脚/备用电源输入引脚; ALE:地址锁存允许信号输出引脚/编程脉冲输入引脚: EA:内外存储器选择引脚/片外EPROM编程电压输入引脚; PSEN:外部程序存储器选通信号输出引脚。 (3)并行I/O引脚 P0.0-P0.7:一般I/O口引脚或数

6、据/低位地址总线复用引脚; P1.0-P1.7:一般I/O口引脚; P2.0-P2.7:一般I/O口引脚或高位地址总线引脚; P3.0-P3.7:一般I/O口引脚或第二功能引脚l 振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。 2、LED数码管显示器概述本设计中采用的是7SEGMPX2-CCBLUE型号双数码管,它是一种半导体发光器件,其基本单元是发光二极

7、管。实物如图3所示: 图3 共阴双数码管 共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。共阴极接法:把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地。每个发光二极管的阳极通过电阻与输入端相连。LED数码显示器的显示段码。 为了显示字符,要为LED显示器段码(或称字形代码),组成一个8字形字符的7段,再加上1个小数点位,共计8段,因此提供给LED显示器的显示段码为1个字节。各段码位的对应关系如下表所示.十六进

8、制数及空白字符与P的显示如下表:段码位 D7 D6 D5 D4 D6 D2 D1 D0 显示段 pd g f e d e b a 字型 共阳极段码 共阴极段码 字型 共阳极段码 0 C0H 3FH 9 90H 1 F9H 06H A 88H 2 A4H 5BM B 83H 3 B0H 4FH C C6H 4 99H 66H D A1H 5 92H 6DH E 86H 6 82H 7DH F 84H 7 F8H 07H 空白 FFH 8 80H 7FH P 8CH 3、矩阵键盘 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图3所示。在矩阵式键盘中,每条水平线和垂直

9、线在交叉处不直接连通,而是通过一个按键加以连接 图3 4行3列矩阵键盘四、程序框图动态数码管的显示键盘扫描主程序程序初始化上电 上电 输入数字开始倒计时 num-num=0?NY停止计时,并声光报警 主程序 五、部分电路连接1、矩阵按键扫描函数ankey()矩阵按键的原理和方法:矩阵按键的两端都与单片机的I/O口相连,在检测时,人为的通过单片机I/O口送出低电平。检测时,先送一行为低电平,其余几列全为高电平,确定行数,然后立即轮流检测一次各列是否有低电平,若检测到某一行为低电平,则确定列数,这样就可以确定按下那个数字。本设计用的是4行3列矩阵按键,它接AT89C51单片机的P1口,接法如图所示

10、:当按下09数字键时,会产生相应数值赋给矩阵按键扫描函数中以定义的参数key,当按下*或#键时,会分别产生10或11赋给key。若key=10,则将前面按下的数字送给显示器;若key=11时调用对矩阵按键扫描进行相应处理函数text(uchar )且key赋给它,text(uchar )函数对key值进行相应处理:如果只按下一次数字键,那这数字就会是倒计时的个位,如果按下两次数字键,那第一次的数字就会是倒计时的十位,第二次数字的数字就会是倒计时的个位,当按下#或*键时,开始倒计时。2、动态数码管显示函数动态数码管显示就是轮流向各位数码管送出段选及相应的位选,利用发光管的余辉和人眼视觉暂留作用,

11、使人眼感觉各位数码管同时都在显示,实际上多位数码管是一位一位轮流显示的,只是轮流比较快,我们分辨不出来。本设计用的是两位动态共阴数码管显示,它和单片机的连接如图所示:其中那排阻是驱动电路。3、复位电路如图:RST为复位信号输入端,高电平有效。系统上电后,当已经进行过倒计时,这时想进行不同时间的倒计时,只要按下复位按钮后,就可以进行新的倒计时。4、总电路图六、总体程序#include #define uchar unsigned char#define uint unsigned int sbit sw=P06;/十位位选sbit gw=P07;/个位位选sbit led=P37;/LED灯uc

12、har code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/编码定义uchar numt0,num;void delayms(uint);void text(uchar);void display(uchar numdis) /动态数码管显示子函数uchar shi,ge; /分离两个分别要显示的数shi=numdis/10;ge=numdis%10; sw=0;P2=tableshi; /送十位段选数据delayms(5);/延时sw=1;gw=0;P2=tablege; /送个位段选数据delayms(5);gw=1;

13、void delayms(uint x)/延时x msuint i,j;for(i=x;i0;i-) /i=x即延时约x毫秒for(j=110;j0;j-);void ankey() /键盘扫描uchar temp,key;P1=0xf7;/第1行 11110111 temp=P1; temp=temp&0xf0;/temp低4位清0; if(temp!=0xf0) /判断是否有键按下 delayms(5); /延时,消除抖动 temp=P1; /重新读取P1口 switch(temp)/判断哪个键按下 case 0xe7: key=1; break; case 0xd7: key=2; br

14、eak; case 0xb7: key=3; break; text(key); while(temp!=0xf0)/判断按键是否释放 temp=P1; temp=temp&0xf0; P1=0xfb;/第2行 temp=P1; temp=temp&0xf0; if(temp!=0xf0) delayms(5); temp=P1; switch(temp) case 0xeb: key=4; break; case 0xdb: key=5; break; case 0xbb: key=6; break; text(key); while(temp!=0xf0) temp=P1; temp=te

15、mp&0xf0; P1=0xfd;/第3行 temp=P1; temp=temp&0xf0; if(temp!=0xf0) delayms(5); temp=P1; switch(temp) case 0xed: key=7; break; case 0xdd: key=8; break; case 0xbd: key=9; break; text(key); while(temp!=0xf0) temp=P1; temp=temp&0xf0; P1=0xfe;/第4行 temp=P1; temp=temp&0xf0; if(temp!=0xf0) delayms(5); temp=P1; s

16、witch(temp) case 0xee: key=10; break;case 0xde: key=0; break; case 0xbe: key=11; break; text(key); while(temp!=0xf0) temp=P1; temp=temp&0xf0; void text(uchar key)/判断键盘扫描结果,并倒计时static uchar n,bb,s;/静态局部变量s=1;if(key=0|key=1|key=2|key=3|key=4|key=5|key=6|key=7|key=8|key=9)n+;/有数字键被按下,n加1if(key=10)n=3;

17、/*被按下,n置3if(key=11)n=4;/#被按下,n置4switch(n)case 1: bb=key;key=20;display(bb);break;/第1次按下数字键case 2: bb=bb*10+key;n=0;key=20;display(bb);break;/第2次按下数字键 case 3: num=bb;break;/显示倒计时时间case 4: num=bb;/开始倒计时while(s=1)TR0=1;/启动定时器0中断if(numt0=20)/如果到了20次,说明1秒时间到numt0=0;/然后把numt0清0重新再计20次num-;/num自减if(num=0)/

18、如果num等0 TR0=0;/关闭定时器0中断s=0; /退出循环led=0;/点亮LED灯display(num);/显示num break;void init() /初始化函数 TMOD=0x01;/设置定时器0为工作方式1(0000 0001)TH0=(65536-50000)/256;/装初值50ms一次中断TL0=(65536-50000)%256;EA=1; /开总中断ET0=1; /允许定时器0中断TR0=0; /定时器0计时开始sw=1;/关数码管十位位选gw=1; /关数码管个位位选void main()/主函数init();/初始化函数num=0;while(1) /循环a

19、nkey(); /键盘扫描display(num);/动态数码管显示void T0_time() interrupt 1/定时器0中断函数TH0=(65536-50000)/256;/重装初值(晶振为12MHz时为定时50毫秒)TL0=(65536-50000)%256;numt0+;/50ms中断一次七、心得体会我们学的单片机课程是汇编的,对我而言,这是一门苦涩难懂的课程,而且与教材配套的课件完全跟课本一样,老师本人也不太愿意用那本教材,结果只能无奈地照本宣科地把教材过一遍。说实在话,直到这门课程结束,我对单片机还知之甚少。我明白,作为一名大学生,决不能再依赖老师,必须学会如何学习,必须提高

20、自学能力。但是,可能是惰性,正如朱光潜先生说的,“人容易朝抵抗力最低的路径走”,经过多次读阅教材都未能摸出一个所以然来,我最终还是放弃了。因为这次课程设计,我接触到了郭天祥的51单片机C用语言教程,我才知道当初的学习方法太错了,原以为必须完全了解其内部结构原理后,才能去实践,殊不知实践中学习才是最好的方法,于是就浪费了很多时间,又被打击了信心。后悔无补于事,最糟糕莫过于重头再来!这次单片机设计,我选择了相对比较简单的题目,查阅了不少网络资源和书籍,试着去理解往年师兄师姐做的课程设计的电路连接、程序的编写,才慢慢地摸到了门槛。虽然,至今我还无法完全靠自己完成设计,但是万事开头难,只要踏出了第一步,以后就能不断地提高自己。总的来说,通过这次单片机设计,我没有取得很大的进步,但收获却不少。如果没有这次“被迫”练手的机会,我恐怕早就放弃这门学科。现在我至少知道应该如何去学单片机,我有信心学好这门课,即使从零开始!八、参考文献1. 郭天祥 51单片机C语言教程2.宋戈 黄鹤松51单片机应用开发3.潘永雄 新编单片机原理与应用

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