八位数显示时钟的设计方案与制作_第1页
八位数显示时钟的设计方案与制作_第2页
八位数显示时钟的设计方案与制作_第3页
八位数显示时钟的设计方案与制作_第4页
八位数显示时钟的设计方案与制作_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、毕业设计V论文) 题 目:八位数显示时钟的设计与制作 2018年8月28日 毕业设计任务书 1. 毕业设计题目:八位数显时钟 题目类型 实验研究题目来源 教师科研题 毕业设计内容要求: 一)设计任务: 1 、用单片机设计8位数显电子时钟; 2 、走时,误差精度控制在 1s/天; 3 、调时,小时、分钟加减调整及闪烁显示; 4 、闹铃,可以设置三组闹铃,默认闹铃时间为1分钟,可按任意键推出 闹铃。 二)涉及要求: 1、总体方案设计及框图; 2、设计原理电路图及分析: 3、独立编写程序; 4、完成protues仿真设计; 5、使用 protel设计 pcb并制作、调试电路。 2. 主要参考资料 1

2、电子工业出版社51单片机典型系统开发实例精讲白延敏; 2复旦大学出版社单片微型机原理、应用和实验张友德; 3海纳电子资讯网 www.fpga-IC 中文资料: 摘要 时间是现代社会中不可缺少的一项参数 , 无论是平时生活还是社 会生产都需要对时间进行控制 , 有的场合对其精确性还有很高的要求 . 采用单片机进行计时,对于社会生产有着十分重要的作用。 本文首先介绍了电子时钟的特点和功能,然后对单片机和 LCD 显示做了详细的介绍,提出了系统总体设计方案,并设计了各部分 硬件模块和软件流程,再用 Protues 软件进行了仿真和调试 , 结果证 明了该设计系统的可行性。 由于AT89S52系列单片

3、机的控制器运算能力强,处理速度快, 可以精确计时,很好地解决了实际生产生活中对计时高精确度的要 求,因此该设计在现代社会中具有广泛的适用性。 关键字:单片机;LCD1602夜晶显示器;C程序设计 目录 第一章系统设计要求及功能 5 1.1 设计本电子定时闹钟的目的和意义 5 1.2 本 LCD 电子闹钟的特点和功能介绍 5 1.2.1 本电子钟设计特点 5 1.2.2 本电子钟的主要功能 5 第二章方案设计与比较 6 2.1 数字时钟方案 6 2.2 显示方案 7 第三章系统硬件的设计 8 3.1 单片机的选择及管脚介绍 8 3.1.1 单片机的选择及主要性能 8 3.1.2 单片机管脚介绍

4、9 3.2 LCD1602 的管脚及功能介绍 11 3.2.1 引脚说明 11 3.2.2 控制器接口说明 12 3.3 总体设计 13 3.3.1 系统说明 13 3.3.2 整体系统框图 13 3.4 各部分功能实现 14 3.5 元件清单 14 3.6 电子钟电路原理图 15 3.7 时钟仿真各功能分析及图解 16 第四章软件总体设计方案 20 4.1 主程序流程图: 20 4.2 、闹钟的实现 22 第五章课程设计结果分析 23 致谢 24 参考文献 25 附录 26 1)控制电路的 C 语言源程序 26 2)8 位数显时钟成品展示图 35 第一章 系统设计要求及功能 1.1 设计本电

5、子定时闹钟的目的和意义 1 、复习和巩固所学过的知识,利用此毕业设计正好可以对所学过的知识进 行系统的回顾和总结。 2、拓展知识面,课堂的知识是远远满足不了设计的要求的,这就需要我们 主动去找寻更多的资料,了解更多的知识。 3、培养了设计能力和解决实际问题的能力,同时增强了自学能力,通过设 计完整的单片机系统也初步掌握了组成系统、编程、调试等能力。 4、通过本LCD电子钟的设计初步了解了单片机应用系统开发研制过程,软 件和硬件设计的方法。 1.2 本LCD电子闹钟的特点和功能介绍 1.2.1 本电子钟设计特点 本LCD电子定时闹钟是一种基于单片机技术的多功能、多用途的电子产品,有 电子时钟、定

6、时闹铃功能。性能卓越,采用LCD显示更加直观,是一个比较实 用的电子产品。 1.2.2 本电子钟的主要功能 1.可以显示24小时制“时时-分分-秒秒”,LCD显示。 2可以方便的设定定时时间、修改定时时间,闹铃功能,预设定时时间到将发 出闹铃声。 第二章 方案设计与比较 2.1 数字时钟方案 数字时钟是本设计的最主要的部分。根据需要,可利用两种方案实现 本方案采用Dallas公司的专用时钟芯片 DS12887A该芯片内部采用 石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能, 因此,可直接对其以用于显示或设置,使得软件编程相对简单。为保证时钟在 电网 电压不足或突然掉电等

7、突发情况下仍能正常工作,芯片内部包含锂电池。当电 网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。而且即使系 统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正 确的时间。 本方案完全用软件实现数字时钟。原理为:在单片机内部存储器设三 个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现 1 秒定时 中断,每产生一次中断,存储器内相应的秒值加 1;若秒值达到 60,则将其清 零,并将相应的分字节值加 1;若分值达到 60,则清零分字节,并将时字节值 加 1;若时值达到 24,则将十字节清零。该方案具有硬件电路简单的特点。 基于硬件电路的考虑,本设计采用方案二

8、完成数字时钟的功能。 2.2 显示方案 采用LED数码管动态扫描丄ED数码管价格适中,对于显示数字合适,采用动态扫 描法与单片机连接时 , 虽然占用的单片机口线少,但连线还需要花费一点时间, 所以也不用此种作为显示。 采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于 显示文字比较适合 , 如采用在显示数字显得太浪费 , 且价格也相对较高 , 所以也不 用此种作为显示。 采用 LCD 液晶显示屏 , 液晶显示屏的显示功能强大 , 可显示大量文字 , 图形 , 显示多样,清晰可见,和AT89S52已经接好,省了很多麻烦。 所以在此设计中采用LCD液晶显示屏。 第三章 系统硬件的

9、设计 3.1 单片机的选择及管脚介绍 3.1.1 单片机的选择及主要性能 AT89S52是一种低功耗、高性能 CMOS位微控制器,具有8K在系统可编程 Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业 80C51 产品指令和引脚完全兼容。片上 Flash 允许程序存储器在系统可编程, 亦适于常规编程器。在单芯片上,拥有灵巧的8 位 CPU 和在系统可编程 Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方 案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM 32位I/O 口 线,看门狗定时器, 2 个数据指针,三

10、个 16 位定时器 /计数器,一个 6 向量 2 级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至 0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工 作,允许RAM定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复 位为止。 3.1.2单片机管脚介绍 VCC电源 GND地 P0 口: P0 口是一个8位漏极开路的双向 I/O 口。作为输出口,每位能驱动 8个TTL逻辑电 平。对P0端口写“ 1”时,弓I脚用作高阻抗输入。 当访问外部程序和数据存储器时,P0 口也 被作

11、为低8位地址/数据复用。在这种模式下,P0 具有内部上拉电阻。在flash编程时,P0 口也用来 接收指令字节;在程序校验时,输出指令字节。程 序校验时,需要外部上拉电阻。 g F1.DC :T2 EXP1.匚 匚 P1.3 匚 匚 (MOSI) P1.5 匚 iMISC? P1;0E (SCK)Pt7E RSTC (RXD) P3.0 匚 TX3:-P3/ 匚 iriTD) P3J2 匚 (nrn)P3.3c :TC ? F3.4 匚 匚 (WR) P3t3 匚 P3.7 匚 XTA1L2 匚 XTAL* 匚 Gb 口匚 4a 2 30 3 36 4 37 占 36 6 3E 34 6 33

12、 Q 32 10 31 11 30 V 29 T3 20 14 27 15 26 13 2S 17 A 23 3 22 20 21 VCC PC C I AD:1 FC 1 i PC 2 D2:i Zl 尸匸 2 |A.D3:I PC 4 iAD4 PCS AD5) ZU PC e I ACr.,1 PC 71 EAPP =RO3 P2 7 e 1A1- P2.5 (Al 3 P2 4 i A12 5 iA11) Tl P2-2 A1Q) P2 1 i AD i P2 C iA5: P1 口: P1 口是一个具有内部上拉电阻的 8位 双向I/O 口,pl输出缓冲器能驱动4个TTL逻辑电 平。对

13、P1端口写“ T时,内部上拉电阻把端口拉高,此时可以作为输入口使 用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流 IIL )。此外,P1.0和P1.2分别作定时器/计数器2的外部计数 输入 VP1.0/T2 )和时器/计数器2的触发输入VP1.1/T2EX),具体如下表所示。在 flash编程和校验时,P1 口接收低8位地址字节。 引脚号第二功能: P1.0 T2定时器/计数器T2的外部计数输入),时钟输出 P1.1 T2EXV定时器/计数器T2的捕捉/重载触发信号和方向控制) P1.5 MOSI在系统编程用) P1.6 MISOS系统编程用) P1.7 SCK:调岭二 ;

14、::* : 02 ;ui ji m.vm P05JW 册血卑 M Q L g : 37 ET0=1 。 TH0=0 x3c 。 TL0=0 xb0 。 /中断初始值设定; TR0=1 。 /启动中断; LCM_Initial( 。 /lcd 初始化函数; i=0 。 while(1 switch(i case 0:f_hh=0。 f_mm=0 。 f_ss=0。 LCM_Display(ss1,ss2 。 if(flag=0 ss14=h_cl1/10+0 x30 。 ss15=h_cl1%10+0 x30 。 ss17=m_cl1/10+0 x30 。 ss18=m_cl1%10+0 x30

15、 。 ss110=0 x30 。 ss111=0 x30 。 else ss14=0 x48 。 ss15=0 x48 。 ss17=0 x4d 。 ss18=0 x4d 。 ss110=0 x53 。 ss111=0 x53 。 if(scank1(i=1 。 break。 case 1:f_hh=1。 f_mm=0 。 f_ss=0。 LCM_Display(ss5,ss2 。 if(scank1(i=2 。 if(scank2(h+ 。 if(h23h=0 。 if(scank4(h- 。 if(hh=23 。 break 。 case 2:f_hh=0。 f_mm=1 。 f_ss=0

16、。 LCM_Display(ss5,ss2 。 if(scank1(i=3 。 if(scank2(m+ 。 if(m59m=0 。 if(scank4(m- 。 if(mm=59 。 break 。 case 3:f_hh=0。 f_mm=0 。 f_ss=1。 LCM_Display(ss5,ss2 。 if(scank1(i=4 。 if(scank2(s+。if(s59s=0。 if(scank4(s- 。 if(ss=59 。 break 。 case 4:f_h_cl1=1 。 f_m_cl1=0 。 LCM_Display(ss3,ss2 。 if(scank1(i=5 。 if

17、(scank2(h_cl1+ 。 if(h_cl123h_cl1=0 。 if(scank4(h_cl1- 。 if(h_cl1h_cl1=23 。 break。 case 5:f_h_cl1=0 。 f_m_cl1=1 。 LCM_Display(ss3,ss2 。 if(scank1(i=0 。 if(scank2(m_cl1+ 。 if(m_cl159m_cl1=0 。 if(scank4(m_cl1- 。 if(m_cl1m_cl1=59 。 break 。 default: break 。 / 按键控制; alarm_(。 dis( 。 /闹钟退出; 2 液晶显示模块及调用函数 #i

18、nclude #define uchar unsigned char #define uint unsigned int /*LCM1602 #define LINE1_HEAD 0 x80 / 地址相关 */ 第一行 DDRAM 起始地址 #define LINE2_HEAD #define LINE1 #define LINE2 0 xc0 / / 第一行 / 第二行 第二行 DDRAM 起始地址 #define LINE_LENGTH /*LCM1602 #define LCM_Port P3 16 / 每行的最大字符长度 接线引脚定义 */ /定义P2 口与LCM1602的数据口相接

19、sbit LCM RS=P1A0 。 sbit LCM RW=P1A1。 sbit LCM_E=P1A2 。 sbit LCM_Busy=LCM_PortA7 。 /*/ void delay_1ms(uint cnt uchar i,j 。 for(i=cnt 。 i!=0 。 i- for(j=120 。 j!=0 。 j- /* 检测 LCM1602 状态 */ void LCM_Check_Busy(void do LCM_RS=0 。 LCM_RW=1 。 LCM_E=0 。 LCM_Port=0 xff 。 LCM_E=1 。 while(LCM_Busy=1 LCM_E=0 。

20、写命令 * /*LCM1602 void LCM_Write_Command(uchar WCommand,uchar scan_BF if(scan_BF LCM_Check_Busy( 。 LCM_RS=0 。 LCM_RW=0 。 LCM_E=0 。 LCM_Port=WCommand 。 LCM_E=1 。 LCM_E=0 。 * LCM1602 写数据 * void LCM_Write_Data(uchar WData LCM_Check_Busy( 。 LCM_RS=1 。 LCM_RW=0 。 LCM_E=0 。 LCM_Port=WData 。 LCM_E=1 。 LCM_E=

21、0 。 void LCM_Initial(void * LCM1602 初始化 * delay_1ms(15 。 LCM_Write_Command(0 x38,0 。 delay_1ms(5 。 LCM_Write_Command(0 x38,0 。 delay_1ms(5 。 LCM_Write_Command(0 x38,0 。 delay_1ms(5 。 LCM_Write_Command(0 x38,1 。 LCM_Write_Command(0 x06,1 。 LCM_Write_Command(0 x0c,1 。 LCM_Write_Command(0 x01,1 。 * *LCM1602 显示字符串 * void LCM_Write_String(uchar x,uchar y,uchar *Data if(y=LINE1/ 在第一行显示 LCM_Write_Command(LINE1_HEAD+x,1 。 for(。x LCM_Write_Data(*(Data+ 。

温馨提示

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

评论

0/150

提交评论