



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精品多功能电脑时钟设计报告一、实训目的意义及任务要求1.1 目的意义在如今,单片机的使用领域已十分广泛,它在智能仪器仪表、实时工控、通讯设备、导航系统、家用电器等均有很广泛的应用。单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。单片机作为一门专业学科,对学生的要求也较高,要求对 C 语言有较好的掌握,还要与单片机的硬件工作原理相结合,也是理论与实践相结合的一大体现。多功能电脑时钟有效地检验了单片机中对数码管,蜂鸣器, LED 灯的控制,同时提高了学生的工程系统设计能力。通过此次单片机系统综合训练,不仅要让学生认识了解它,而且增强学生学科积极性。2.
2、2 任务要求通过对硬件和软件的设计要求设计的电脑时钟完成以下功能:1.基本功能实时显示当前时间( 4 位数码管显示, 2 位显示小时, 2 位显示分钟,第 2位小数点 0.5 秒亮, 0.5 秒灭)。能用一按键依次切换显示年及月日。能修改当前时钟。具有秒表功能,显示秒和百分秒。welcome精品2. 扩展功能单片机与 PC 机的通讯(可选);可设定初值的倒计时功能(可选)闹钟及报时功能(可选) ;显示星期(可选)。3. 设计参数显示时间时, 4 位数码管显示, 2 位显示小时, 2 位显示分钟,第2 位小数点 0.5 秒亮, 0.5 秒灭;蜂鸣器报时时间以每生学号最末位确定。二.实习任务的方案
3、2.1任务进度布置任务、分析任务、学习单片机的C51 功能程序设计( 3 天)方案设计、使用Protel 设计和绘制硬件原理图(1.5 天)程序设计和调试( 4.5 天)设计验收、撰写报告(1 天)2.2系统分析根据系统功能要求,可将系统组成结构分成四大部分: DS1302 时钟芯片读数据写数据模块;数码管显示模块;按键设置调节时间模块;秒表功能模块。硬件电路接线图如附录一,本系统采用 DS1302 时钟芯片,四位数码管用来welcome精品显示年月日,星期,时分,以及秒和百分秒。其中年月日,时分秒和星期采用DS1302 的数据显示,秒表采用单片机定时中断实现。本系统共用到四个按键,且均为独立
4、对地按键,分别用于显示切换,修改切换,修改加一,修改减一,秒表启动暂停和数据清零。2.3器件选择选用 STC89C51 芯片,频率为 11.0592MHz,由于系统要求显示年月日小时和分钟,采用四位LED 数码管显示即可。按键是用来设置时间或闹钟时间或启动秒表等功能的,设置三个按键:显示切换模式键( key3 )、修改数据键( key0 )、加一键 (key1) 、减一键( key2 )。常见的 LED 显示具有清晰明亮的特点。 是显示接口也是绝大多数单片机应用系统必备的部件之一。发光二极管组成的显示器是单片机应用产品中最常用的廉价输出设备。它由若干个发光二极管按一定的规律排列而成。当某一个发
5、光二极管导通时,相应的一个点或一笔画被点亮,控制不同组合的二极管导通,就能显出各种字符。常用的 7 段显示器的结构如图所示,发光二极管的阳极连在一起的称为共阳极显示器,阴极连在一起的成为共阴显示器。1 位显示器由 8 个发光二极管组成,其中 7 个发光二极管 ag 控制 7 个笔画的亮或暗,另一个控制一个小数点的亮和暗,这种笔画的七段显示器能显示的字符较少,字符的形状有些失真,但失控简单,使用方便。welcome精品三、系统硬件设计3.1单片机的最小系统单片机功能系统图见附录1,。单片机最小系统由STC89C51 单片机、复位电路、晶振电路组成。如图3.1 所示welcome精品图 3.1 单
6、片机最小系统图3.2数码管、独立按键及DS1302时钟芯片电路的设计在电子钟的输入部分, 设置相应的置数功能, 通过外部设备的输入, 如按键,实现时间的切换。除此之外,调整日期等时间也需要按键进行输入。在选用输入端口时,将 P0 引脚与按键相连进行输入。K1、 K2、 K3、K4 分别表示设置切换键、数值加一键、数值减一、显示月和日键。系统仿真电路图welcome精品系统仿真电路图DS1302 与单片机连线图3.3其他附属电路设计按键设计,电频转换芯片的硬件电路如下图所示:welcome精品RS232 串口通信及电源电路等设计,如图3.3 所示图 3.3 附属电路设计图welcome精品四、软
7、件设计4.1主程序设计使用定时器 0 来定时,定时 5ms ,运用定时器的中断来实现这些功能,显示是用的数码管的动态扫描,每5ms 扫描一位数码管, 20ms 循环一次。设置一些标志位,实时时间显示的标志位,星期显示的标志位,闹铃时间显示的标志位,秒表显示的标志位,在不同的模式下,我们要使该模式下的标志位有效,从而进行此模式的显示,通过按键进行不同的操作。每个标志位有效时,数码管显示的内容就不一样。闹钟的实现是用一个子函数, 每 5ms 调用一次函数, 并把北京时间与设定的闹铃时间比较,如果相等就使蜂鸣器有效。闹铃时间的长短可以用一个变量对秒计数,当计数值小于我们设定的值时,就是蜂鸣器有效,当
8、大于等于设定的值时就关闭蜂鸣器。整点报时或半点报时很好实现,在中断函数里,当分钟等于60 时,蜂鸣器对应鸣叫相应点数,并且小时要自增1,当分钟等于30 时,蜂鸣器鸣一次,分钟自增 1 ,要使蜂鸣器有效,可用一个变量对秒计数,当秒等于我们设定的值时,就关闭蜂鸣器。4.2系统操作功能设计根据系统功能描述,可以分为:北京时间功能、整点报时、闹铃功能、日期显示及秒表功能功能。我们通过对 K_Mode键按下的次数计数,用Mode计数, Mode的次数就welcome精品代表了不同的模式,每个模式都有与之相对应的指示灯,每个模式的功能如下:Mode0:按键每按下时显示北京时间模式,此时,四个指示灯全灭,显
9、示格式为:小时 .分钟(如: 07.35 ,为 7 点 35 分),按 K_UP 或者 K_DN 键对系统没影响,每到整点或半点时时, 要进行相应点数的间隔蜂鸣报时 (半点短鸣一次)。Mode1:按键按下一次时,进入修改北京时间的小时模式,四个指示灯依次为“亮灭灭灭”,按 K_UP 或者 K_DN 键对小时进行修改。Mode2:按键按下两次时,进入修改北京时间的分钟模式,四个指示灯依次为“灭亮灭灭”,按 K_UP 或者 K_DN 键对分钟进行修改。Mode3:按键按下三次时,进入修改闹铃时间的小时模式,四个指示灯依次为“灭灭亮灭”,按 K_UP 或者 K_DN 键对闹铃小时进行修改。Mode4
10、:按键按下四次时,进入修改闹铃时间的分钟模式,四个指示灯依次为灭灭灭亮,按K_UP 或者 K_DN 键对闹铃分钟进行修改。Mode5:按键按下五次时,进入年显示模式,四个指示灯依次为“亮亮灭灭”,显示格式为:四位年(如20.12 为当前年份为公元2012 年) ,在此种模式下,按 K_UP 或者 K_DN 键对系统没影响。Mode6:按键按下六次时,进入月日显示模式,四个指示灯依次为“亮灭亮灭”,显示格式为:月日(如07.05 为当前日期为7 月 5 日) ,在此种模式下 ,按 K_UP 或者 K_DN 键对系统没影响。Mode 7 :按键按下七次时, 进入秒表模式, 四个指示灯依次为 “亮灭
11、灭亮”,显示格式为:秒百分秒(如05.90 为当前秒表计时到5 秒 900 毫秒) ,在此种模式下 ,K_UP 键设为用来启动 / 暂停秒表、 K_DN 键设为用来对秒表进行清零。Mode8:按键按下八次时,进入闹钟选择模式,四个指示灯依次为“亮亮welcome精品亮灭”,显示格式为: CL01/00 ,"CL.00" 表示贪睡闹铃功能关闭, "CL.01" 表示贪睡闹铃功能开启, 按 UP 或 DN 键可在 00 或 01 间循环选择;在贪睡闹铃功能关闭时,可按任意键停止当前闹钟,或不按键,则闹钟1 分钟,以后再不响。在贪睡闹铃功能开启时,如按下除UP
12、 键外的任意键,停止当前闹钟,如不按键,则闹钟 1 分钟;当过 5 分钟后,闹钟又会重新响起, 如此循环,只有按下 UP 键时,才能停止闹钟以后再不响。 在此种模式下 ,K_UP 键设为用来启动 / 暂停秒表、K_DN键设为用来对秒表进行清零。Mode 9 :按键按下九次时, 进入整点报时选择模式, 四个指示灯依次为 “亮亮亮亮”,显示格式为: BS01/00 ,"BS.00" 表示整点报时功能关闭, 01 表示报时功能开启,按 UP 或 DN 键可在 00 或 01 间循环选择。4.3 主程序 void main()图 4.1 主程序功能流程图welcome精品4.4 主
13、程序设计主程序采用定时器0 对程序进行扫描执行。分别执行 DS1302 芯片初始化子程序, 写数据子程序,将最初的值写入芯片中, 采用 while 循环循环执行键盘扫描子程序。main()TMOD=0x01;/ 使用模式 1,16 位定时器TH0=(65536-10000)/256;/ 给定初值TL0=(65536-10000)%256;EA=1;/ 总中断打开ET0=1;/ 定时器中断打开TR0=1;/ 定时器开关打开Ds1302_Init();Ds1302_Write_Time();while(1)keyscan();if(Btread=0) Btread=1;Ds1302_Read_Ti
14、me();welcome精品display();4.5 DS1302子程序设计此子程序分为初始化程序,读数据程序,写数据程序,一些数据程序为例;void Ds1302_Write_Byte(unsigned char addr, unsigned char d)CE=0;_nop_();SCLK=0; _nop_();welcome精品CE=1; _nop_();Write1302(addr);Write1302(d);CE=0; _nop_();IO=1;SCLK=1;welcome精品4.6 时间调整子程序welcome精品时间调整子程序采用的是对key1 按的次数不同来进行对年月日时分及
15、星期的设置。void zongshi(void)if(!key)if(btx=0)if(!key)btx=1;k+; elsebtx=0; k=1时,调整年份, key1 为加 ,key2 为减void keyscan()k=2 时,调整月份, key1 为加 ,key2 为减k=3 时,调整日份, key1 为加 ,key2为减display();k=4 时,调整星期, key1 为加 ,key2为减if(!key)if(btx=0)welcome精品if(!key)btx=1;k+;4.7按键切换子程序void tiaoshidisplay()if(z=15)z=0;switch(k)ca
16、se 1:bt1=bt1;break;/ 年case 2:bt2=bt2;bt1=0;break;/ 月case 3:bt3=bt3;bt1=0;break;/ 日case 4:bt1=bt1;bt3=0;break;/ 周case 5:bt2=bt2;bt1=0;break;/ 时case 6:bt3=bt3;bt2=0;break;/ 分welcome精品default:bt3=0;break;welcome精品五、调试及性能分析5.1 软件测试电子成年历是多功能的数字型,可以看当前日期(阴、阳历),时间,还有温度的仪器。电子成年历功能很多,所以对于它的程序也较为复杂,所以在编写程序和调试
17、时出现了相对较多的问题。最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。在软件的调试过程中主要遇到的问题如下:1. 时钟不准,走一段时间后误差较大原因:该问题主要是晶振芯片的频率不真确引起的。晶振的频率理论值为12MHZ, 由于存在误差,导致了单片机时间走一段时间后便出现了误差。2烧入程序后, LED 数码管显示闪动 ,而且亮度不均匀。解决:首先对调用的延时进行逐渐修改,可以解决显示闪动问题。其次,由于本作品使作动态扫描方式显示的数字,动态扫描很快,人的肉眼是无法看出,但是调用的显示程序时,如果不在反回时屏蔽掉最后的附值,则会出现很亮的现象,所以在显示的后面加了屏蔽子令,最后解
18、决了此问题。3修改时间、日期时没有农历没有自动对应上。解决:把不相关的程序暂时屏蔽,地农历的子程序独立调试,发现在调用农历自动更新时,对十进制和十六进制处理不好,所以会造成错乱。最后把相应的十进制进行修改,使得可以与十六进制对应,最后解决了此问题.welcome精品5.2 测试结果分析与结论(1 )在测试中遇到发光二极管、LED 数码管为不显示时 ,首先使用试测仪对电路进行测试 ,观察是否存在漏焊 ,虚焊 ,或者元件损坏 .(2 ) LED 数码管显示不正常,还有亮度不够,首先使用试测仪对电路进行测试 ,观察电路是否存在短路现象。查看烧写的程序是否正确无误,对程序进行认真修改。( 3) .DS
19、1302 与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位 MSB(D7) 必须为逻辑 1 ,如果 D7=0 ,则禁止写DS1302 ,即写保护; D6=0 ,指定时钟数据, D6=1 ,指定RAM数据; D5 D1 指定输入或输出的特定寄存器; 最低位 LSB(D0) 为逻辑 0,指定写操作 (输入 ),D0=1 ,指定读操作 (输出 )。在 DS1302 的时钟日历或 RAM 进行数据传送时, DS1302 必须首先发送命令字节。若进行单字节传送, 8 位命令字节传送结束之后, 在下 2 个 SCLK 周期的上升沿输入数据字节,或在下 8 个 SCLK 周期的下降
20、沿输出数据字节。DS1302与 RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8 位的字节,其命令控制字为C0H FDH ,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,在此方式下可一次性读、写所有的RAM的 31 个字节。要特别说明的是备用电源B1,可以用电池或者超级电容器(0.1F 以上 )。虽然 DS1302在主电源掉电后的耗电很小,但是,如果要长时间保证时钟正常,最好选用小型充电电池。可以用老式电脑主板上的3.6V 充电电池。如果断电时间较短 (几小时或几天 )时,就可以用漏电较小的普通电解电容器代替。100 就F可welcome精品
21、以保证1 小时的正常走时。 DS1302在第一次加电后,必须进行初始化操作。初始化后就可以按正常方法调整时间。5.3测试结论经过多次的反复测试与分析,可以对电路的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力.同时在软件的编程方面得到更到的提高,对编程能力得到加强 .同时对所学的知识得到很大的提高与巩固welcome精品六、心得体会在该部分实习中,我有几点收获:1 、 整合程序时,并非把各个模块链接起来就行,往往需要把某些模块拆开,重新嵌入整合程序中,方能实现它的功能,说明程序的调用和嵌套要灵活,不能生搬硬套。2 、 中断的应用。在程序中,T0 和 T1 两个定时器我均用到了,而源
22、程序模块都用 T0,没用 T1,中断优先级一样,所以在整合后,需要修改中断优先级,而我简单的把两个中断优先级定为 1 和 2,程序当然无法运行了,后来经学长指导才明白,优先级是有顺序的,单片机共五个中断源,都有自然的优先级,不能随便设置,后来将 T1 的优先级改为 3 ,程序可以执行。3 、该部分实习,使我对软件的设计有了进一步的认识,编写程序也有迹可循,对单片机有了更深的理解,而且将 C 语言用到了单片机上,有了一次新的尝试,以前学到的单片机的知识在实习中均得到了实践,对我以后的从事相应的工作奠定了一个基础。welcome精品参考文献1 李广弟等 单片机基础 北京航空航天出版社, 20072
23、 楼然苗等 51 系列单片机设计实例 北京航空航天出版社, 20083 张毅刚 .单片机原理及应用 .北京:高等教育出版社 ,200welcome精品附录一welcome精品附录二程序如下:#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int#define Write_Protect 0x8e/ 写保护#define OutPut P0/ 显示输出/sbit DU=P26;/ 数码管段选/sbit WE=P27;/ 数码管位选sbit CE=P33
24、;/ 复位端口定义在P0.2 引脚sbit IO=P24;/ 数据输出端定义在P0.4 引脚sbit SCLK=P32;/ 时钟输出端口定义在 P0.3引脚sbit key=P34;/ 时间调节控制键sbit key1=P35;/ 每按一次位加一sbit key2=P36;/ 每按一次位减一sbit key3=P37;/ 显示切换ucharcodeWei=0xfe,0xfd,0xfb,0xf7,0xfd;/位选数据0xef,0xdf,0xbf,0x7fucharcodeDuan=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;welcome精
25、品/0-9共阴代码codeucharWaddr=0x8c,0x88,0x86,0x84,0x82,0x80,0x8a;/ 寄存器写地址codeucharRaddr=0x8d,0x89,0x87,0x85,0x83,0x81,0x8b;/ 寄存器读地址uchar timeset=0x01,0x02,0x03,0x04,0x05,0x00,0x01; /*设置初始时间 */uchar time_buf7;/* 存读到的时间 */uchar time_disp7;uchar dispdat5;/* 存储显示值的 */uchar Btdis=0,k=0,z;bit btx,btx1,btx2,btx3
26、,bt1,bt2,bt3; bit Btread;uint flag1;/*=函数功能:延时n 毫秒入口参数: n=*/void Write1302(uchar dat);void delaynms(uchar n)uchar i,j;for(i=n;i>0;i-)welcome精品for(j=125;j>0;j-);/*=函数功能:根据命令字,向1302 写一个字节数据入口参数: Cmd ,存储命令字; dat ,存储待写的数据=*/void Ds1302_Write_Byte(unsigned char addr, unsigned char d)CE=0;_nop_();SC
27、LK=0; _nop_();CE=1;_nop_();Write1302(addr);Write1302(d);CE=0; _nop_();IO=1;SCLK=1;/ 从 DS1302 读出一字节数据uchar Ds1302_Read_Byte(unsigned char addr)unsigned char i;welcome精品unsigned char temp;CE=1;addr = addr | 0x01;for (i = 0; i < 8; i +) if (addr & 0x01) IO=1; elseIO=0; SCLK=1;SCLK=0;addr = addr
28、>> 1;/ 输出数据: temp for (i = 0; i < 8; i +) temp = temp >> 1; if (IO) temp |= 0x80; else temp &= 0x7F; SCLK=1; SCLK=0;welcome精品CE=0; / 停止 DS1302 总线return temp;/*=函数功能:向 1302 日历时钟芯片写入一个字节的数据入口参数: dat=*/void Write1302(uchar dat)uchar i;/SCLK=0;CE=1;for(i=0;i<8;i+)IO=dat&0x01;SC
29、LK=0;SCLK=1;dat=dat>>1;welcome精品/*=函数功能:根据命令字,从1302 读取一个字节的数据入口参数: Cmd返回参数: dat=*/uchar Readset1302(uchar Cmd)uchar dat;CE=0;SCLK=0;CE=1;Write1302(Cmd);SCLK=1;CE=0;return dat;void bcdpro(void)unsigned char i,tmp;for(i=0;i<7;i+)/BCD处理welcome精品tmp=timeseti/10;/timeset=0x01,0x02,0x03,0x04,0x05
30、,0x06,0x01time_bufi=timeseti%10;/time_buf7time_bufi=time_bufi+tmp*16;/*=向 DS1302 写入时钟数据=*/void Ds1302_Write_Time(void)unsigned int i;uchar flag;flag=Readset1302(0x81);if(flag&0x80)/ 判断时钟芯片是否停止,为1 时时钟停止/ 掉电保存bcdpro();for(i=0;i<7;i+) Ds1302_Write_Byte(Waddri,time_bufi); Ds1302_Write_Byte(0x8e,0
31、x80);/ 打开写保护welcome精品/*=从 DS1302 读出时钟数据=*/void Ds1302_Read_Time(void)unsigned char i,tmp;for(i=0;i<7;i+)time_bufi=Ds1302_Read_Byte(Raddri); for(i=0;i<7;i+)/BCD 处理tmp=time_bufi/16;time_bufi=time_bufi%16;time_dispi=time_bufi+tmp*10; /*=DS1302 初始化=welcome精品=*/void Ds1302_Init(void)CE=0;/RST 脚置低SC
32、LK=0;/SCK 脚置低Ds1302_Write_Byte(0x80,0x00);/*= 函数名: 时分秒显示子程序= 函数功能:将从 DS1302 读到的数据在 8 位共阴数码管上显示= 返回参数:=*/void display()uchar i;if(Btdis=0) if(bt2=0)dispdat0=Duantime_disp3/10;/ 时dispdat1=Duantime_disp3%10;elsewelcome精品dispdat0=0x00;dispdat1=0x00;/dispdat2=0x40;/"-"if(bt3=0)dispdat2=Duantime_disp4/10;/ 分dispdat3=Duantime_disp4%10;elsedispdat2=0x00;dispdat3=0x00;/dispdat5=0x40;if(flag1<25)dispdat4=0x80;elsedispdat4=0x00;if(Btdis=3)welcome精品dispdat0=Duantime_disp5/10;/ 秒dispdat1=Duantime_disp5%10;disp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 21711.3-2025基础机电继电器第3部分:强制定位(机械联锁)触点继电器
- 2025年初升高暑期数学讲义专题09 函数及其表示分层训练(含答案)
- 2003年江苏省淮安市中考数学真题【含答案、解析】【含答案、解析】
- 生物●广东卷丨2023年广东省普通高中学业水平选择性考试生物试卷及答案
- 布洛芬片的紫外鉴别授课冯白茹药物分析92课件
- 薄层色谱法35课件
- 考研复习-风景园林基础考研试题附参考答案详解(夺分金卷)
- 风景园林基础考研资料试题及参考答案详解(达标题)
- (高清版)DB62∕T 1247-2019 蕨麻猪
- 2024年山东华兴机械集团有限责任公司人员招聘笔试备考题库附答案详解(预热题)
- 新能源汽车与传统汽车的对比
- 头孢呋辛酯的代谢产物与毒理学研究
- 《坚持才会有收获》-小学道德与法治坚持才会有收获课件2
- 《柴油机常见故障》课件
- 中国非特异性腰背痛临床诊疗指南
- 基于STM32的智能避障循迹小车系统设计答辩模板
- 机械连接预应力混凝土异型桩L19ZG403
- C++17入门经典(第5版)
- 普外科肿瘤外科乳腺癌一病一品优质护理汇报
- 驾校消防安全知识培训
- 23秋国家开放大学《农业经济基础》形考任务1-4参考答案
评论
0/150
提交评论