单片机实验报告数字时钟设计报告

上传人:仙*** 文档编号:32275470 上传时间:2021-10-13 格式:DOC 页数:14 大小:170KB
收藏 版权申诉 举报 下载
单片机实验报告数字时钟设计报告_第1页
第1页 / 共14页
单片机实验报告数字时钟设计报告_第2页
第2页 / 共14页
单片机实验报告数字时钟设计报告_第3页
第3页 / 共14页
资源描述:

《单片机实验报告数字时钟设计报告》由会员分享,可在线阅读,更多相关《单片机实验报告数字时钟设计报告(14页珍藏版)》请在装配图网上搜索。

1、单片机实验报告题 目: 数字时钟的设计 指导老师: 班 级: 姓 名: 学 号: 数字钟设计报告一、实验目的通过实践设计出能准确显示时、分、秒的时钟,并可以调时、定时,包括蜂鸣器的整点报时与闹钟功能。二、实验要求基本功能:准确计时,以数字形式显示时间,24时制;具备时、分调整和整点报时功能。扩展功能:定时与闹钟功能三、设计方案及论证、硬件部分:1、时钟显示用七段LED数码管来实现,采用共阳管和PNP驱动方式。PNP工作于开关状态,基极通过1K的电阻连到单片机的P2口。为节省P口,将六位数码管的8段段选端分别并接并加上470的限流电阻,由P0口控制,给低电平的段会被点亮。因为六位管的段被并接只能

2、通过动态扫描的方式来显示,即利用管子的余晖和人眼的视觉残留实现六位管子在“同一时间”显示不同的值,而扫描这是靠位选的轮流有效实现。如左图。2、整点报时和闹钟铃此部分用一个5V有源蜂鸣器来做,同样用PNP作为开关来控制,此外为防止其可能的方向电压尖峰在蜂鸣器两端反接一个IN4148二极管来保护。如右图。3、校时、定时此部分由4个按键控制,如下图,key1和key3用来选定要调校的时、分的位,被选中的为将闪烁;key2用来是选中的为按相应的进制增1变化;key4是进入定时模式,定时的时数改变与调时方法相同。4、单片机最小系统本实验采用STC89C52RC单片机,指令系统完全与51兼容。其最小系统包

3、含电源电路、晶振电路、复位电路。本实验才用STC单片机的典型系统,各模块参数配置如图:其中晶振频率为12MHz,震荡部分电容为30pF的瓷片电容。复位电路采用图示的兼有上电复位和按键复位功能的方式,其中的电容为10uF电解电容。5、硬件系统全电路图、软件部分软件部分主要有两大块:一是上电后程序靠定时器T1产生的中断而实现的常规时钟显示,这里面就是要处理时、分、秒的六位数字的循环和进位问题。按照24时制的规则,其进位逻辑为:秒的个位为十进制(09)满10向秒的十位进1,而秒的十位为六进制(05)满6向分的个位进1,分与秒相似,时的个位在时的十位为0、1的时候也是10进制,而在时的十位为2的时候则

4、只是0到4就进位了。但时的十位是3进制的(02)。m0+;if(m0=10)m0=0;m1+;if(m1=6)m1=0;f0+;if(f0=10)f0=0;f1+;if(f1=6)f1=0;h0+;if(h0=10)h0=0;h1+;二是程序监控4个按键的状态并进行相应处理。本实验中我们并未利用外中断来监控键盘,只是在主函数中用一个函数key_scan()来不停地扫4个键的状态并进行相应处理,这一部分的程序中主要的问题是按键抖动的去除,试验中,我们用的是软件延时的办法。四、心得体会通过本次课程设计,我学习到了很多,也收获了很多。总结如下:1、 我对单片机的理论知识有了进一步的掌握,对单片机的原

5、理和实际应用有了更多地理解和掌握。2、 我对单片机的C语言编程有了更深刻的认识和更扎实的掌握,我们不断修改,不断尝试,对源代码各个模块的函数都有了一个非常深入的掌握。3、 理论与实践相结合才能更好的理解和掌握所学的知识。五、附件(程序源代码)#includesbit k1=P14;sbit k2=P15;sbit k3=P16;sbit k4=P17;sbit voice=P36;/蜂鸣器使能端unsigned char code duan=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;/段的共阳编码:0、1、2、3、4、5、6、

6、7、8、9、灭灯unsigned char code wei=0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07;/共阳位选编码:第0位、第1位、第2位、第3位、第4位、第5位、第6位、第7位unsigned char m0=0,m1=0,f0=0,f1=0,h0=0,h1=0,num=0,con=0;/正常时钟模式unsigned char d_f0=0,d_f1=0,d_h0=0,d_h1=0,d_con=0;/定时模式相关变量unsigned shan=0;/闪烁函数中量、灭的次数的控制变量unsigned sound=0;/蜂鸣器叫与不叫的次数的控制变量bi

7、t xiang=0;/蜂鸣器使能变量bit dingshi=0;/定时模式的使能变量bit naozhong=0,only=0;/闹钟的止叫控制变量void init();/初始化定时器1void display();/正常时钟显示void d_display();/定时模式的显示void delay_ms(unsigned);/非准确延时void key_scan();/按键扫描、处理函数void shanshuo(unsigned char);/数码管闪烁显示void fengming(unsigned);/蜂鸣器叫/*main()void main()init();while(1)key

8、_scan();/整点报时if(m0=0&m1=0&f0=0&f1=0) xiang=1;if(m0=2&m1=0&f0=0&f1=0)voice=1;xiang=0;/ 蜂鸣器叫两声 /闹钟if(h1=d_h1&h0=d_h0&f1=d_f1&f0=d_f0&naozhong=0&only=1)naozhong=1;/预定时间到if(naozhong=1&(k1=0|k2=0|k3=0|k4=0)naozhong=0;only=0;voice=1;while(!k1);while(!k2);while(!k3);while(!k4);/禁止闹钟叫if(only=0&h1!=d_h1&h0!=

9、d_h0&f1!=d_f1&f0!=d_f0)only=1;/时刻唤醒闹钟、另外,在退出定时模式时也能唤醒闹钟/正常显示if(dingshi=0)display();/闹钟定时模式if(dingshi=1)d_display();/*/*init()/*参数:无返回值:无功能:设置T1计数器相关的特殊功能寄存器,初始化计时器T1细节:备注:*/void init()TMOD=0X10;TH1=0X3C;TL1=0XB0;EA=1;ET1=1;TR1=1;/*/*TI_time() interrupt 3/*参数:返回值:功能:细节:备注:*/void TI_time() interrupt 3

10、TH1=0X3C;TL1=0XB0;num+;if(num=20)num=0;m0+;if(m0=10)m0=0;m1+;if(m1=6)m1=0;f0+;if(f0=10)f0=0;f1+;if(f1=6)f1=0;h0+;if(h0=10)h0=0;h1+;if(h1=2)if(h0=4)h0=0;h1=0;/*/*display()/*参数:返回值:功能:细节:备注:*/void display() int j;for(j=0;j8;j+)P2=weij;switch(j)case 0:if(!naozhong&xiang)fengming(400);if(naozhong=1)feng

11、ming(200); P0=duanm0;delay_ms(1);P0=0xff;break;case 1:P0=duanm1;delay_ms(1);P0=0xff;break;case 3:if(con=1)shanshuo(f0);else P0=duanf0;delay_ms(1);P0=0xff;break;case 4:if(con=2)shanshuo(f1);else P0=duanf1;delay_ms(1);P0=0xff;break;case 6:if(con=3)shanshuo(h0);else P0=duanh0;delay_ms(1);P0=0xff;break;

12、case 7:if(con=4)shanshuo(h1);else P0=duanh1;delay_ms(1);P0=0xff;break;/*/*d_display()/*参数:返回值:功能:细节:备注:*/void d_display()int j;for(j=0;j8;j+)P2=weij;switch(j)case 0:P0=0xff;delay_ms(1);break;case 1:P0=0xff;delay_ms(1);break;case 3:if(d_con=1)shanshuo(d_f0);else P0=duand_f0;delay_ms(1);P0=0xff;break;

13、case 4:if(d_con=2)shanshuo(d_f1);else P0=duand_f1;delay_ms(1);P0=0xff;break;case 6:if(d_con=3)shanshuo(d_h0);else P0=duand_h0;delay_ms(1);P0=0xff;break;case 7:if(d_con=4)shanshuo(d_h1);else P0=duand_h1;delay_ms(1);P0=0xff;break;/*/*keyscan()/*参数:返回值:功能:细节:备注:*/void key_scan()/*调时if(dingshi=0&naozhon

14、g=0)if(k1=0)/调时选位delay_ms(60);/去抖动延时if(k1=0)con+;if(con=5)con=0;while(!k1); /程序会停在这里,所以此时会没有任何显示 .但时间的进位并没有停,因为中断有优先权。即时间还在走 if(k3=0)/tiao时选位delay_ms(60);/去抖动延时if(k3=0)con-;if(con=-1)con=4;while(!k3);/程序会停在这里,所以此时会没有任何显示 但时间的进位并没有停if(con=1&k2=0)/调分的个位+delay_ms(60);if(k2=0)f0+;if(f0=10)f0=0;while(!k2

15、);/程序会停在这里,所以此时会没有任何显示 但时间的进位并没有停if(con=2&k2=0)/调分的十位+delay_ms(60);if(k2=0)f1+;if(f1=6)f1=0; while(!k2);/程序会停在这里,所以此时会没有任何显示 但时间的进位并没有停 if(con=3&k2=0)/调时的个位+delay_ms(60);if(k2=0)if(h1=1|h1=0)h0+;if(h0=10) h0=0;if(h1=2)h0+;if(h0=4)h0=0;while(!k2);/程序会停在这里,所以此时会没有任何显示 但时间的进位并没有停if(con=4&k2=0)/调时的十位+de

16、lay_ms(60);if(k2=0)h1+;if(h1=3)h1=0;while(!k2);/程序会停在这里,所以此时会没有任何显示 但时间的进位并没有停 if(k4=0)/启动定时功能delay_ms(60);/去抖动延时if(k4=0)dingshi=1;while(!k4); /*定时if(dingshi=1&naozhong=0) if(k4=0)/退出定时功能delay_ms(60);/去抖动延时if(k4=0)dingshi=0;only=1;d_con=0;while(!k4); if(k3=0)/定时选位delay_ms(60);/去抖动延时if(k3=0)d_con-;if

17、(d_con=-1)d_con=4;while(!k3);/程序会停在这里,所以此时会没有任何显示 但时间的进位并没有停if(k1=0)/定时选位delay_ms(60);/去抖动延时if(k1=0)d_con+;if(d_con=5)d_con=0;while(!k1); /程序会停在这里,所以此时会没有任何显示 .但时间的进位并没有停,因为中断有优先权。即时间还在走if(d_con=1&k2=0)/调定时分的个位+delay_ms(60);if(k2=0)d_f0+;if(d_f0=10)d_f0=0;while(!k2);/程序会停在这里,所以此时会没有任何显示 但时间的进位并没有停if

18、(d_con=2&k2=0)/调定时分的十位+delay_ms(60);if(k2=0)d_f1+;if(d_f1=6)d_f1=0; while(!k2);/程序会停在这里,所以此时会没有任何显示 但时间的进位并没有停 if(d_con=3&k2=0)/调定时时的个位+delay_ms(60);if(k2=0) if(d_h1=1|d_h1=0)d_h0+;if(d_h0=10)d_h0=0;if(d_h1=2)d_h0+;if(d_h0=4)d_h0=0;while(!k2);/程序会停在这里,所以此时会没有任何显示 但时间的进位并没有停 if(d_con=4&k2=0)/调定时时的十位+

19、delay_ms(60);if(k2=0)d_h1+;if(d_h1=3)d_h1=0;while(!k2);/程序会停在这里,所以此时会没有任何显示 但时间的进位并没有停 /keyscan()/*/*shanshuo()/*参数:返回值:功能:细节:备注:*/void shanshuo(unsigned char w)shan+;if(shan=70)shan=0;/*/*fengming()/*参数:返回值:功能:细节:备注:*/void fengming(unsigned x)sound+;if(sound=2*x)sound=0;/*/*delay_ms()/*参数:返回值:功能:细节:备注:*/void delay_ms(unsigned t)/六分之一毫秒int i,j;for(i=0;it;i+)for(j=0;j120;j+);- 13 -

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