单片机电子时钟的设计与制作_第1页
单片机电子时钟的设计与制作_第2页
单片机电子时钟的设计与制作_第3页
单片机电子时钟的设计与制作_第4页
单片机电子时钟的设计与制作_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.单片机课程设计姓 名: 阿 帅 学 号: 1102081005 班 级:自动化1101班成 绩: 指导老师: 吴玉蓉 设计时间:2014年1月7日 目 录1、 引 言二、系统总体方案三、系统硬件设计1、硬件电路原理图2、原件清单四、系统软件设计1、软件流程图2、程序清单五、系统实物图六、课程设计体会七、参考文献及网站8、 附录一、 引 言 单片机因将其主要组成部分集成在一个芯片上而得名,就是把中央处理器、随机存储器、只读存储器、中断系统、定时器/计数器以及I/O接口电路等部件集成在一个芯片上。 本设计使用12MHZ晶振与单片机AT89C51相连接,以AT89C51芯片为核心,采用动态扫描方式

2、显示,通过使用该单片机,加之在显示电路部分使用SN74LS373N驱动电路,实现在8个LED数码管上显示时间,通过4个按键进行调时、复位等功能,在实现各功能时数码管进行相应显示。软件部分用C语言实现,分为显示、延迟、调时、复位等部分。通过软硬件结合达到最终目的。2、 系统总体方案熟悉硬件,了解作用分块设计各部分电路 学习和了解单片机构成完整电路图 确定方案和思路分块设计各部分电路 综合成整体程序调试程序并修改 仿真并修改错误用Protel画出电路图并仿真 搭载硬件电路验证硬件电路 3、 系统硬件设计1.硬件电路原理图 (1)时钟电路(2)复位电路单片机有两种基本复位方式:即上电复位和按键复位。

3、本次设计用按键复位,如下图所示,通过接通按钮开关,使单片机进入复位状态。本次按键复位清零,各元件参考下图:(3) 键盘电路按键处理设置为: 如没有按键,则时钟正常走时。 按下K0键:进入调分状态,时钟停止走动; 按K1和K2键:可进行加1和减1操作; 继续按K0键:可分别进行分和小时的调整; 最后按K0键:退出调整状态,时钟开始计时运行 电路图如下:(4) 显示电路本次数码管采用共阴极8段式LED数码管,该数码管参数见附录。本系统共用8个数码管,从右到左依次显示秒个位、秒十位、横线、分个位、分十位、横线、时个位和时十位。数码管显示的信息用8个内存单元存放,这8个内存单元称为显示缓冲区,其中秒个

4、位和秒十位、分个位和分十位、时个位和时十位分别由秒数据、分数据和小时数据分拆得到。用软件译码动态显示。在存储器中首先建立一张显示信息的字段码表,显示时,先从显示缓冲区中取出显示的信息,然后通过查表程序在字段码表中查出所显示的信息的字段码,从P0口输出,同时在P2口将对应的位选码输出选中显示的数码管,就能在相应的数码管上显示显示缓冲区的内容。同时采用NPN型三极管,三极管接法如下图,其中当三极管基极高电平时,数码管共阴极为高电平,三极管基极接低电平时,数码管共阴极为低电平,该位选中。还采用了74LS373锁存器,用来缓存输入数码管段选的高低电平,提高电路稳定。系统总电路图如下:2.原件清单品名规

5、格型号技术要求数量单价总价单片机STC89C51RC45单片机座子STC89C51RC45晶振12MHz45独石电容30pF90电解电容47F90电解电容10F45轻触四脚按键6.0X6.0X5.0mm180RJ电阻10K1/4w180RJ电阻510 1/4w360RJ电阻4.7K1/4w360三极管2N5551 NPN360锁存器74LS37345锁存器座子74LS373458段式LED数码管QH5011AS0.5单字共阴360五连孔通用板14cm*21cm带电源插座孔和USB插座孔45导线0.4mm20.4单股导线3卷焊锡丝1KG2卷交流220V-直流5V适配器配套插座454、 系统软件电

6、路1、 软件流程图 (1)主程序执行流程如图,主程序先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有键按下,则转入相应的功能程序 开始 显示单元清零 T0、T1设为16位计数模式 允许T0中断 调用显示子程序按下键否? 否 是 进入功能程序(2)中断服务流程图 开始 现场保护,重置初值启动下个50ms 50ms计数器加1 50ms计数器=20? 否 是 秒单元加1,50ms计数器清0秒单元=60? 否 是 分单元加1,秒单元清0分单元=60? 否 是时单元加1,分单元清0 时单元=24? 否 是 时单元清0中断返回(3)按键扫描流程图 开始 EA=0,TR0=

7、1,ET0=1Key0键按下否?否 是 调用10ms延时子程序Key0键按下否?否 是 Con加1,TR0=0,ET0=0 0Con3?否 是 是Key2键按下否? 否Key1键按下否?否 是 调用10ms延时子程序 是 调用10ms延时子程序Key2键按下否? 否Key1键按下否?否 是 是 时或分加1,加满则清0 时或分减1,至0则取模 EA=12. 程序清单/采用8位LED软件译码动态显示程序/使用89C51单片机,12MHZ晶振,P0输出字段码,P2输出位选码/用共阴极LED数码管,KEY0为调时位选择键,KEY1为加1键,KEY2为减1键#include #define uchar

8、unsigned char uchar codevalue12=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40; /共阴极LED数码管09,灭和-的字段码 uchar chocode8=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f; /位选码表uchar dis8=0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x00; /显示缓冲区 ,时分秒初值为0 , uchar timedata3=0x00,0x00,0x00; /分别为秒,分和小时的值 uchar n=0x

9、00,con=0x00,con1=0x00,con2=0x00;sbit key0=P10; sbit key1=P11; sbit key2=P12; delay1ms(int t) int i,j; for(i=0;it;i+) for(j=0;j=3) con=0;TR0=1;ET0=1; if(con!=0) if(key1=0) delay1ms(10); while(key1=0); timedatacon+; if(con=2)con1=24; else con1=60; if(timedatacon=con1) timedatacon=0; if(con!=0) if(key2

10、=0) delay1ms(10); while(key2=0); timedatacon-; if(con=2)con2=23; else con2=59; if(timedatacon=0) timedatacon=con2;EA=1;/数码管显示函数 scan() uchar k; dis0=timedata0%10; dis1=timedata0/10; dis3=timedata1%10; dis4=timedata1/10; dis6=timedata2%10;dis7=timedata2/10; for(k=0;k8;k+) P0=codevaluedisk; P2=chocode

11、k; delay1ms(1); P2=0x00; /主函数 main() TH0=0x3c; /允许T0中断 TL0=0xb0; TMOD=0x01; ET0=1; TR0=1; EA=1; while(1) scan(); keyscan(); /定时器、计数器T0中断服务函数 void time0_int(void) interrupt 1 ET0=0; TR0=0; TH0=0x3c; TL0=0xb0; /定时50ms ,以n来表示 TR0=1; n+; if(n=20) n=0x00; timedata0+; if(timedata0=60) timedata0=0; timedat

12、a1+; if(timedata1=60) timedata1=0; timedata2+; if(timedata2=24) timedata2=0; ET0=1; 另一种程序:#includetypedef unsigned char uchar;typedef unsigned int uint;sbit key0=P10;sbit key1=P11;sbit key2=P12; uchar timer0=0;char k=0,c=0,counter=0,i=0,j=0,s=0,m=0; uchar SMG=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

13、0x7f,0x6f;void timer_init(); void key_init(); void main()timer_init();while(1)key_init();P2=0x00; P0=SMGi;P2=0x01;P2=0x00;P0=SMGj;P2=0x02;P2=0x00;P2=0x00;P0=0x40; P2=0x04;P2=0x00;P0=SMGk;P2=0x08;P2=0x00;P0=SMGs;P2=0x10;P2=0x00;P2=0x00;P0=0x40;P2=0x20;P2=0x00;P0=SMGc;P2=0x40;P2=0x00;P0=SMGm;P2=0x80;P

14、2=0x00; if(timer0=20) timer0=0; i+;if(i=10)i=0;j+;if(j=6)j=0;k+;if(k=10)k=0;s+;if(s=6)s=0;c+;if(c=10) c=0; m+;if(m=2)if(c=4)m=0;c=0;void timer_init()TMOD = 0x01;TH0=0x3c;TL0=0xb0;ET0=1;EA=1; TR0=1;void timer0_ISR(void) interrupt 1TH0=0x3c;TL0=0xb0;timer0+;void key_init()uint b;P1=0xff;if(key0=0)for(

15、b=0;b2000;b+);if(key0=0)ET0=0;TR0=0;counter+;while(key0=0);for(b=0;b2000;b+);while(key0=0);if(counter=3)counter=0;ET0=1;TR0=1;if(counter=1)if(key1=0)for(b=0;b2000;b+);if(key1=0)k+;while(key1=0);for(b=0;b2000;b+);while(key1=0);if(key2=0)for(b=0;b2000;b+);if(key2=0)k-;if(k=0)s-;k=9;if(s0)k=9;s=5;while

16、(key2=0);for(b=0;b2000;b+);while(key2=0);if(counter=2)if(key1=0)for(b=0;b2000;b+);if(key1=0)c+;while(key1=0);for(b=0;b2000;b+);while(key1=0); if(key2=0)for(b=0;b2000;b+);if(key2=0)c-; if(c=0)m-;c=9;if(m0)c=0;m=0;while(key2=0);for(b=0;b2000;b+);while(key2=0);5 系统实物图6 课程设计体会通过本次的课程设计,使我收获很大,让我对单片机有了更深入的认识,现代社会中几乎处处都有单片机的影子,电子产品离不开它。课设提高了我的单片机实际运用能力,也发现了自己以前学习的不扎实,对问题不求甚解。现在才知道“书到用时方少”啊!学习还是得扎实。本次完成课程设计的过程中遇到很多问题,在熟悉和了解各硬件的情况下,搭建电路的过程中,如何布置和排版器件以及如何连线都是有讲究的,起初大致布置了下各硬件,结果连线的时候就出问题了,有的线无法走的

温馨提示

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

最新文档

评论

0/150

提交评论