数字电子钟设计(共44页).doc

上传人:飞****2 文档编号:13635395 上传时间:2022-04-30 格式:DOC 页数:44 大小:14.74MB
返回 下载 相关 举报
数字电子钟设计(共44页).doc_第1页
第1页 / 共44页
数字电子钟设计(共44页).doc_第2页
第2页 / 共44页
点击查看更多>>
资源描述

《数字电子钟设计(共44页).doc》由会员分享,可在线阅读,更多相关《数字电子钟设计(共44页).doc(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上学号姓名实物演示(60%)论文成绩(30%)平时成绩(10%)总成绩评语:该小组基于AT89C51设计了一个系统,主要实现了实时时间显示、实时温度显示、按键加减调时、按键时发出提示音、超温报警、无线数据传输、远程控制等功能,硬件和软件系统工作正常,达到了设计要求。报告内容充实,格式正确,程序代码注解清晰,程序流程正确。 指导教师: 2016 年 月 日设计题目:数字电子钟的设计与制作组员姓名:班级:2016年 月 日摘要时间对人们生活和生产有着重要的意义。因此,如何精确的知道、计算时间就成了从古至今人们一直在努力的方向。电子钟,也称为数字显示钟,是一种利用数字电路来显

2、示秒、分、时的计时装置,相较石英钟的石英机芯驱动,更具准确性,现已成在人们日常生产生活中的必需品,在家庭、办公室、码头、剧院以及车站等场所被广泛应用。本文的主要内容是基于AT89C51单片机设计实现数字电子钟。在深入地学习和理解了C51系列单片机的相关知识绘制电路图后,应用keil4编程实现预期的实验目的。以AT89C51单片机作为整个系统的控制核心,简化了系统的结构和生产成本,模块化的设计便于及时的修改和调试系统,并重视实用性和个人不同的喜好。这个数字电子时钟拥有基本电子钟的计时功能,扩展实现了数字电子时钟的实时显示、实时温度显示、按键提示音、接收提示音、整点报时、无线传输、超温报警、远程控

3、制等功能。本文的目的是了解数字电子钟的工作原理,并在设计和调试的过程中学习发现中小规模集成电路在实际应用与理论学习的不同之处,掌握基于单片机的中小规模集成电路的开发流程及要注意的方面。【关键字】:AT89C51 数字电子钟 单片机目录专心-专注-专业1. 设计任务与要求1.1 设计任务设计制作一数字电子时钟。能够实现数字电子时钟的实时显示、实时温度显示,调时、无线数据收发功能等基本功能及其他扩展功能。1.2 设计要求1.2.1 基本要求用单片机及键盘、LED数码管显示器构成一个单片机应用硬件系统,在此硬件系统上设计一个时间可预制的数字电子钟,用8个数码管显示小时、分钟和秒。显示部分与键盘合用部

4、分I/O接口。1. 基于AT89C51单片机实现24进制计时方式的数字电子钟以及即时温度显示;2. 显示功能:在LED数码管上分别显示时、分、秒、温度,自动进位;3. 进制:时-24进制;分-60进制;秒-60进制;4. 增加按键设置,可修改时间;5. 可依靠蓝牙进行双机通信,实现数据传输;6. 可适当添加其他功能。1.2.2 发挥部分(1) 按键音功能:在发送端进行按键音设计,每进行一次按键,蜂鸣器会发出“嘀”声;(2) 整点报时功能:在整点时,设计蜂鸣器发出“嗞”声,该功能可扩展为定时闹钟;(3) 超温报警功能:当温度超过25.5摄氏度时,就会发出“嗞-嗞”声,进行高温提醒;(4) 接收音

5、乐:当完成一次数据传输的时候,会有生日快乐音乐提醒;(5) 利用键盘进行时间加减调整。2.方案论证与选择2.1主控芯片的选择主控芯片由AT89C51进行:AT89C51是一种带4KFLASH(FPEROM-Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位,俗称。AT89C51 提供以下标准功能:4kFlash,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工口,片内振荡器及。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方

6、式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。图1 AT89C51引脚图图2 AT89C51实物图2.2 温度传感器模块选择温度传感器模块由DS18B20进行:DS1820温度传感器外观图和引脚图如图所示,三个管脚定义如下: 引脚1接地; 引脚2数字信号输入/输出; 引脚3接高电平5V高电平。此模块的设计中AT89C51单片机作为控制主体,温度传感器DS18B20采集温度,温度传感器DS18B20是一种单线接口传感器,所以连接电路很简单,只要将其管脚DQ接单片机的一个端口进行温度采集,

7、VDD接高电平,GND接地即可。根据DS18B20的工作原理、内部结构图、时序图,还有DS18B20的ROM指令操作码,编写DS18B20的操作代码,采集温度样本,将采集的样本数据存放在寄存器中等待下一步处理。图3 DS18B20引脚图2.3无线收发模块设计无线收发模块使用蓝牙zs-040模块,引出接口包括VCC,GND,TXD,RXD,预留LED状态输出脚,单片机可通过该脚状态判断蓝牙是否已经连接,KEY引脚对从机无效;led指示蓝牙连接状态,闪烁表示没有蓝牙连接,常亮表示蓝牙已连接并打开了端口;底板3.3V LDO,输入电压3.66V,未配对时电流约30mA,配对后约10mA,输入电压禁止

8、超过7V;接口电平3.3V,可以直接连接各种单片机(51,AVR,PIC,ARM,MSP430等),5V单片机也可直接连接,无需MAX232也不能经过MAX232;配对以后当全双工串口使用,无需了解任何蓝牙协议,但仅支持8位数据位、1位停止位、无奇偶校验的通信格式,这也是最常用的通信格式,不支持其他格式;在未建立蓝牙连接时支持通过AT指令设置波特率、名称、配对密码,设置的参数掉电保存。蓝牙连接以后自动切换到透传模式;体积小巧(3.57cm*1.52cm),工厂贴片生产,保证贴片质量。并套透明热缩管,防尘美观,且有一定的防静电能力。图4 蓝牙模块实物图2.4 显示模块选择显示模块功能实现主要是用

9、LCD1602模块实现的工业字符型液晶,能够同时显示16x02即32个字符(16列2行)。(注:为了表示的方便 ,后文皆以1表示高电平,0表示。) 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。 1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。图5 LCD1602引脚图图6 LCD1602

10、实物图3.硬件电路设计整个系统采用应用广泛的AT89C51作为时钟控制芯片,利用DS1302模块进行时钟部分的设计,可通过数码管显示即时时间,利用LCD1602模块进行温度部分的设计,可通过数码管显示即时温度。另外,为了使用方便,设计了简单的按键,可以通过按键实现时间调整。3.1 最小系统的设计 AT89C51单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构。这样,既能做到经济合理又能实现预期的功能。由于本次设计只使用了P1、P2

11、,故在此重点介绍这四个端口的功能,其他几个端口可在网上找到相应的资料,这里就不再赘述。具体功能见下表。表1 引脚功能示意端口P1P2功能1一般的I/O使用(内部具有上拉电阻)一般的I/O使用(内部具有上拉电阻)功能2地址总线(外部扩展存储器时)相同点8位双向口线此处采用LCD液晶显示器对时间进行显示,通过对液晶模块的地址设置使数字显示在屏幕的正中央以达到美观的效果。图7 LCD1602电路图当作为最基本的显示时间功能时LCD1602第一行显示年-月-日,第二行显示时-分-秒;同时因为加入了温度传感器可以实时显示温度。3.2 DS1302 电路设计DS1302 是美国DALLAS公司推出的一种高

12、性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。 DS1302的引脚如图2.3所示。各引脚功能如表2.3所示。表2 DS1302各引脚口说明管脚号管脚名称功能1VCC2主电源2、3X1、X232.768KHz4GND地5RST复位/片

13、选端6I/O串行数据输入/输出7SCLK串行时钟输入端8VCC1后备电源图8 DS1302电路图其工作过程可概括为:首先系统RST引脚驱动至高电平,然后在作用于SCLK时钟脉冲的作用下,通过I/O引脚向DS1302输入地址/命令字节,随后再在SCLK时钟脉冲的配合下,从I/O引脚写入或读出相应的数据字节。因此,其与单片机之间的数据传送是十分容易实现的。3.3 按键控制电路设计本部分采用独立式键盘,通过键盘实现调时,定时功能,设计如图9。独立式键盘是一键一线,各键相互独立,每个按键各接一条I/O口线,通过检测I/O输入线的电平状态,可以很容易地判断哪个按键被按下。这种键盘电路简单,各条检测线独立

14、,识别按下的按键的软件编程简单。适用于键盘按键数目较少的场合,故此处选用独立式键盘。图9 按键电路图由图9我们可以看出,P1.4P1.7分别对应小时键,分钟键,调整建以及调整确认键。3.4 蜂鸣器电路设计蜂鸣器有两种结构,有源型和无源型。这里的源不是指电源而是指振荡源。有源蜂鸣器内部带振荡源,所以只要一通电就会叫。其电路图如下图所示:图10 蜂鸣器电路图综合上述分析,通过对上述硬件解析与设计可使各模块相互配合,搭配合理,达到了预期的目的。系统的总体设计电路如图11所示。图11 数字时钟总体设计电路本次设计利用AT89C51作为主控制器,利用P0和 P2.5P2.7口控制LCD1602以实现对年

15、月日和时间的显示功能;利用P1.0P1.7各个键盘以实现不同的键盘功能;利用P2.3与蜂鸣器相连,使数字时钟的整点报时和闹钟功能得以体现;利用P2.4控制DS1302,为数字时钟提供时间。最后为了保证系统能够正常工作,各引脚处都连接了一个1K的上拉电阻。4.系统软件设计程序模块编写完成后,通过编译后,在开发系统上进行调试。调试时应先分别调试各模块子程序,调试通过后,最后调试主程序,并将各部分进行联调。4.1温度模块代码详见附录。超温报警功能流程图为: 获取温度显示函数获取温度值(十位=2&个位=5&小数点后一位=5)?蜂鸣器响起Y结束N图12 超温报警功能流程图4.2键盘模块键盘实现流程图为:

16、返回查找闭合键键号键号key=0f键号key=-1获取键号函数扫描4次?获取P1口的值(P1&0x0f)=0x0f?YNYN图13 键盘实现流程图按键功能为:图14 按键功能示意图4.3时间模块代码详见附录。整点报时流程图为: 获取温度显示函数获取时间值(分的十位=0&分的个位=0&秒的十位=0&秒的个位=0)?蜂鸣器响起Y结束N图15 整点报时功能流程图4.4主函数代码详见附录。主函数流程图 开始为:图16 主函数流程图 结束时钟调整处理程序 整点报时程序将时间、温度送到LCD显示串口调试初始化读取时间信息初始化DS18B02初始化DS13025. 系统测试5.1测试仪器 AT89C51芯片

17、、LCD显示屏、数据线、独立键盘、蜂鸣器、杜邦线、温度传感器、蓝牙模块5.2测试方法首先按仿真电路连接好实际电路的接线,打开电源,然后加载hex文件到测试仪器上,测试相应的功能。5.2.1测试过程a. 测试准备:按照仿真图连接好实际模块线路;b. 测试准备:打开仪器开关、并加载.hex文件;c. 测试无线传输功能;d. 测试音乐点播功能;e. 测试按键音响功能f. 测试校时功能;g. 测试实时温度显示及传输功能;h. 测试超温报警功能;i. 测试整点报时功能;j. 测试完成,安全关闭测试仪器5.3测试结果图17 传输功能的实现图18 时调整功能的实现图19 分调整功能的实现图20 时钟功能的实

18、现6. 设计总结这次基于AT89C51单片机的数字电子钟设计采用了现代社会生产和生活中广泛应用的单片机技术为核心,采用软件和硬件相结合方法使得硬件部分大大简化,节约了成本,并且提高了精确度。在电路设计和软件编程上采用模块的思路便于调试和扩展。本次试验设计其实就是一个单片机的最小系统设计,看起来虽然简单,但麻雀虽小五脏俱全。再复杂的电路也是由最基础的部分组合起来的。倘若是单片机的最小系统都无法工作,其他的都只会是空谈。人常说纸上得来终觉浅,绝知此事要躬行。在此次试验的过程中,自已一步步设计绘制电路图、编写程序、调试修改直至完成,其中虽然有困难、有挫折,但最终还是完成了这次简单却不容易的设计。学习

19、到的知识虽然很重要,但更重要的是作为一名大学生所应当具有的严谨细致却不放弃的心态。在这次设计的过程中,我们小组得到了XXX老师的大力帮助。不仅在设计前帮我们理清设计思路,在设计的过程中遇到的问题XXX老师都耐心的分析修正,提出的意见和建议对完成这次设计有着重要的作用,也使我们在这个过程中获益匪浅,对以前所学的知识有了更深刻的理解,更重要的是培养了作为通信、电信方面的工程技术人员应该具有的严谨细致的工作态度,做对我们以后的工作和学习都有着重要的意义,在这里表示衷心的感谢。本次实验虽然比较顺利地实现了一部分功能,但是试验过程中出现了许多问题,比如说通信过程中出现了无法传输、引脚重复导致无法正常运行

20、等问题,在后续的实验过程中都很好的解决了这些问题。比较遗憾的是许多设想中的功能没有实现,比如说点阵、液晶屏的使用,虽然本次实验结束了,但是我们的学习之路还在继续,我们会在未来的学习中继续加深对单片机的学习,感谢本次实验中给予我们帮助的所有人。附录:(a)发送端的代码为:#include#include unsigned char code SONG_TONE=212,212,190,212,159,169,212,212,190,212,142,159,212,212,106,126,159,169,190,119,119,126,159,142,159,0;unsigned char cod

21、e SONG_LONG=9,3,12,12,12,24,9,3,12,12,12,24,9,3,12,12,12,12,12,9,3,12,12,12,24,0;unsigned int temp;unsigned char flag;unsigned int wendu;unsigned char second;unsigned char minute;unsigned char hour;unsigned char week;unsigned char month;unsigned char day;unsigned char year;sbit DQ=P37; /DS18B20的数据线引

22、脚sbit Beep=P23 ; /蜂鸣器控制引脚sbit RS=P26; /LCD1602的寄存器选择线sbit RW=P25; /LCD1602的读/写线sbit E=P27; /LCD1602的使能信号sbit ACC0=ACC0;sbit ACC7=ACC7;bit fh_flag; /温度正负标志,=0为正,=1为负bit TZ_flag=0; /时钟调整标志,=0,无调整;=1,调整时、分sbit DS1302_CLK = P36; /实时时钟时钟线引脚 sbit DS1302_IO = P24; /实时时钟数据线引脚 sbit DS1302_RST = P35; /实时时钟复位线

23、引脚sbit I2C_SDA=P20; /I2C的数据线引脚sbit I2C_SCL=P21; /I2C的时钟线引脚unsigned char trm16;unsigned char code TAB= +-.;unsigned char x16=2016-12-13 Temp ; /LCD1602第一行显示数据格式日期unsigned char y16=10:20:30 +100.5C; /LCD1602第二行显示数据格式(时间+温度)/unsigned char x16=Temp: 100.5;unsigned char code xx16=Appointment Time; /预设时间p

24、resetting timeunsigned char code xxx16=Ending Time ;unsigned char xxxx16=Time: 15:50:30 ; /unsigned char yy16=Down: 16:48.OK; /剩余时间remaining time/*ms延时程序*/void delay(unsigned int m) unsigned int n; for(;m0;m-) for(n=125;n0;n-); /* s延时程序*/void delay_us(unsigned char us) while(us-);/*DS18B20初始化*/void

25、reset() DQ=1; /DQ复位 delay_us(1); /稍做延时 DQ=0; /单片机将DQ拉低 delay_us(80); /精确延时大于480 s DQ=1; /拉高总线 delay_us(8); flag=DQ; /如果flag=0则初始化成功flag=1则初始化失败 delay_us(20); /*对DS18B20写指令*/void write_byte(unsigned char dat) unsigned char i; bit onebit; for(i=1;i1; if(onebit) DQ=0; _nop_();_nop_(); DQ=1; delay_us(5)

26、; else DQ=0; delay_us(8); DQ=1; _nop_(); _nop_(); /*读DS18B20*/bit read_bit() bit dat; DQ=1; _nop_();_nop_(); DQ=0; _nop_();_nop_();_nop_();_nop_(); DQ=1; dat=DQ; delay_us(10); return(dat); unsigned char read_byte() /读一字节 unsigned char value,i,j; value=0; for(i=0;i8;i+) j=read_bit(); value=(j1); retu

27、rn(value); /*温度转换程序*/unsigned int readtemperture() unsigned char a,b; reset(); write_byte(0xcc); write_byte(0xbe); a=read_byte();/温度低字节 b=read_byte(); /温度高字节 temp=b; temp0x80) /判断温度正、负 fh_flag=1; temp=temp+1; else fh_flag=0; temp=temp*5/8; /计算温度,扩大了10倍,便于显示时取小数点后一位值 return temp; /*蜂鸣器*/void pulse_BZ

28、(unsigned int count) unsigned char i; for(i=0;icount;i+) Beep=0; delay(1); Beep=1; delay(1); void Speakertest() pulse_BZ(1); delay(5); pulse_BZ(1); delay(5); void Speaker() pulse_BZ(10); delay(10); pulse_BZ(10); delay(10);void PlayMusic()unsigned int i=0,j,k;while(SONG_LONGi!=0|SONG_TONEi!=0) /播放各个音

29、符,SONG_LONG 为拍子长度 for(j=0;jSONG_LONGi*20;j+) Beep=Beep;/SONG_TONE 延时表决定了每个音符的频率 for(k=0;k=2)&(ge=5)&(dec=5) Speaker(); /超温报警/*LCD1602程序*/void out(unsigned char x)unsigned char i; RW=0; P0=x; for(i=0;i10;i+); E=1; for(i=0;i10;i+); E=0;void init1602() RS=0; out(0x38); out(0x06); out(0x0c); out(0x03);v

30、oid wr1602(unsigned char d,a) unsigned char i; unsigned int t; RS=0; out(a); for(t=0;t100;t+); RS=1; for(i=0;i0; i-) DS1302_IO = ACC0; /相当于汇编中的 RRC DS1302_CLK = 1; DS1302_CLK = 0; ACC = ACC 1; unsigned char DS1302OutputByte(void) /实时时钟读取一字节(内部函数) unsigned char i; for(i=8; i0; i-) ACC = ACC 1; /相当于汇编

31、中的 RRC ACC7 = DS1302_IO; DS1302_CLK = 1; DS1302_CLK = 0; return(ACC); void Write1302(unsigned char ucAddr, unsigned char ucDa) /ucAddr: DS1302地址, ucData: 要写的数据 DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr); / 地址,命令 DS1302InputByte(ucDa); / 写1Byte数据 DS1302_CLK = 1; DS1302_RST = 0; unsigned char Read1302(unsigned char ucAddr) /读取DS1302某地址的数据 unsigned char ucData; DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr|0x01); / 地址,命令 ucData = DS1302OutputB

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁