课程设计:倒计时器

课程设计:倒计时器

ID:18904277

大小:181.00 KB

页数:10页

时间:2018-09-18

课程设计:倒计时器_第1页
课程设计:倒计时器_第2页
课程设计:倒计时器_第3页
课程设计:倒计时器_第4页
课程设计:倒计时器_第5页
资源描述:

《课程设计:倒计时器》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、课程设计课程名称单片机课程设计题目名称倒计时器学生学院物理与光电工程学院专业班级学号学生姓名指导教师2012年12月14日倒计时器设计1、功能要求:实现最长99S的倒计时功能;利用数码管或液晶屏显示数字;利用按键可以设置倒计时时间;设置倒计时开始启动键;时间到,声(光)报警,示意倒计时时间到。2、实现方法:单片机采用51系列,分析功能要求,设计方案,编写程序(keilc51软件),利用Proteus进行仿真。流程图:显示电路时钟电路按键倒计时时间设计电路C51单片机具体电路与软件设计1、按键倒计时时间设计与矩阵按键扫描函数ankey()上图就是4行3

2、列矩阵按键与AT89C51的接法。矩阵按键的原理和方法:矩阵按键的两端都与单片机的I/O口相连,在检测时,人为的通过单片机I/O口送出低电平。检测时,先送一列为低电平,其余几列全为高电平(这时就确定了列数),然后立即轮流检测一次个行是否有低电平,若检测到某一行为低电平(这时就确定了行数),则可以确定单前被按下的键是哪行哪列。同样,用这种方法轮流检测各行各列,这样就可以检测所有按键,当有键按下时,就可判断是哪个键被按下。当然,也可以将行线置为低电平,扫描列是否有低电平。当按下0~9数字键时,会产生相应数值赋给矩阵按键扫描函数中以定义的参数key,当按下

3、#或*键时,会分别产生11或10赋给key。这时调用对矩阵按键扫描进行相应处理函数text(uchar)且key赋给它,text(uchar)函数对key值进行相应处理:如果只按下一次数字键,那这数字就会是倒计时的个位,如果按下两次数字键,那第一次的数字就会是倒计时的十位,第二次数字的数字就会是倒计时的个位,当按下#或*键时,开始倒计时。2、动态数码管显示函数动态数码管显示就是轮流向各位数码管送出段选及相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人眼感觉各位数码管同时都在显示,实际上多位数码管是一位一位轮流显示的,只是轮流比较快,我们分辨不出来

4、。本设计用的是两位动态共阴数码管显示,它和单片机的连接如图所示:其中那排阻是驱动电路。3、时钟和复位电路RST为复位信号输入端,高电平有效。系统上电后,当已经进行过倒计时,这时想进行不同时间的倒计时,只要按下复位按钮K后,就可以进行新的倒计时。时钟电路接XTAL1和XTAL2,再通过单片机中的定时器分频,得到秒的时间量级。中断函数设计先初始化中断函数:TMOD=0x01;设置定时器0为工作方式1(00000001)TH0=(65536-50000)/256;//装初值50ms一次中断TL0=(65536-50000)%256;EA=1;//开总中断E

5、T0=1;//开定时器0中断TR0=0;//先别启动中断,留着用按键启动,以便开始倒计时中断函数如下:voidT0_time()interrupt1//定时器0中断函数{TH0=(65536-50000)/256;//重装初值TL0=(65536-50000)%256;numt0++;//50ms中断一次}完整电路图和程序:完整电路图程序:#include#defineucharunsignedchar#defineuintunsignedintsbitsw=P0^6;//十位位选sbitgw=P0^7;//个位位选sbitled=

6、P3^7;//LED灯ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//编码定义ucharnumt0,num;voiddelayms(uint);voidtext(uchar);voiddisplay(ucharnumdis)//动态数码管显示子函数{ucharshi,ge;//分离两个分别要显示的数shi=numdis/10;ge=numdis%10;sw=0;P2=table[shi];//送十位段选数据delayms(5);//延时sw=1;gw=0;P

7、2=table[ge];//送个位段选数据delayms(5);gw=1;}voiddelayms(uintx)//延时xms{uinti,j;for(i=x;i>0;i--)//i=x即延时约x毫秒for(j=110;j>0;j--);}voidankey()//键盘扫描{uchartemp,key;P1=0xef;//第1行temp=P1;temp=temp&0x0f;//temp高4位清0;if(temp!=0x0f)//判断是否有键按下{delayms(10);//延时,消除抖动if(temp!=0xf0)//判断是否有键按下{temp=P1

8、;//重新读取P1口switch(temp)//判断哪个键按下{case0xeb:key=1;break;c

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。