




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖北大学物理学与电子科学学院单片机课程设计多功能数字钟胡博2011221105200147余蕾2011221105200156指导老师:卢仕 王晓临2014年6月摘 要单片机就是微控制器,是面向应用对象设计、突出控制功能的芯片。单片机接上晶振、复位电路和相应的接口电路,装载软件后就可以构成单片机应用系统。将它嵌入到形形色色的应用系统中,就构成了众多产品、设备的智能化核心。本设计就是应用单片机强大的控制功能制作而成的电子万年历,该电子万年历包括三大功能:实时显示年、月、日、时、分、秒;实时监测环境温度(可根据需要启动高温报警功能);电子闹钟。本设计采用的是AT89S52单片机,该单片机采用的MCU51内核,因此具有很好的兼容性,内部带有8KB的ROM,能够存储大量的程序,最突出特点是具有ISP在系统烧写功能,使得烧写程序更加方便。计时芯片采用时钟芯片DS1302,该芯片通过简单的串行通信与单片机进行通信,时钟/日历电路能够实时提供年、月、日、时分、秒信息,采用双电源供电,当外部电源掉电时能够利用后备电池准确计时。温度检测采用18B20温度传感器,该芯片采用的是独特的“一线总线”的方式与单片机进行通信,一线总线独特而且经济的特点,是用户可以轻松的组建传感器网络,为测量系统的构建引入全新的概念。实时温度采用一线总线的方式传输大大的提高了信号的抗干扰性,分辨率可通过软件设置,其小巧的体积为各种环境下测量温度提供了方便。显示器件采用通用型1602液晶,可显示32个字符,如果使用数码管来做显示器件需消耗大量的系统资源,因此采用低功耗的1602液晶,该液晶显示方便,功能强大,完全能满足数字万年历的显示要求。 通过此次设计能够更加牢固的掌握单片机的应用技术,增强动手能力、硬件设计能力以及软件设计能力。设计任务1、设计任务:利用单片机、时钟芯片DS1302、温度传感器DS18B20、1602液晶等实现日期、时间、温度的显示即一个简单的万年历。2、设计要求(1)通过DS1302能够准确的计时,时间可调并在液晶上显示出来。(2)通过DS18B20能准确的检测当前环境温度,并设置超温报警。(3)利用单片机自身功能实现多闹钟。(4)利用单片机自身功能实现秒表。总体方案1、 液晶显示模块1602液晶也叫1602字符型液晶 它是一种专门用来显示字母、数字、符号等的点阵型液晶模块 它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔,每行之间也有也有间隔,起到了字符间距和行间距的作用。1602的驱动电路带有11条指令,可以很方便的控制液晶的现实效果如:清屏、左移右移、光标显示。而且1602显示的字符在下一条指令为到来之前不会改变,也就是能够维持显示的字符,1602液晶占用的系统资源也少。2、 实时时间计算模块DS1302是一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.55.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。利用单片机强大的控制功能就可实现实时计时的功能,而且消耗的系统资源少,程序简单。3、实时环境温度采集模块DS18B20是数字温度传感器,采用单总线的接口方式与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20 的双向通讯。 单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。测量温度范围宽,测量精度高 ,在使用中不需要任何外围元件,支持多点组网功能 多个 DS18B20 可以并联在惟一的单线上,实现多点测温,供电方式灵活 DS18B20 可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而使系统结构更趋简单,可靠性更高。因此非常适合本系统使用。4、报警模块此模块采用无源蜂鸣器实现,只要编写相应的程序即可实现发出不同频率的声音。5、设置模块因设置模块只需编写相应的程序外加相应的按键即可实现。总体方案组成框图报警模块(蜂鸣器)显示模块(1602液晶)AT89S52时间计算模块DS1302实时温度采集模块(DS18B20)设置模块(独立按键)系统软件设计程序框图如下:蜂鸣器响,显示闹钟到判断是否为闹钟时间开机初始化:定时器,液晶,ds1302,18b20显示欢迎界面从DS1302读取信息1602液晶显示相关信息判断是否有按键按下时间、日期、上限温度、闹钟设置、秒表模块没有按键按下 温度检测模块是否超温蜂鸣器响,显示超温系统硬件设计1、LCD显示模块设计1602引脚介绍1602液晶11条指令介绍1.清屏指令 功能: 清除液晶显示器,即将DDRAM的内容全部填入“空白”的字符码20H; 光标归位,即将光标撤回液晶显示屏的左上方; 将地址计数器(AC)的值设为0;2.光标归位指令 功能: 把光标撤回到显示器的左上方; 把地址计数器(AC)的值设置为0; 保持DDRAM的内容不变 ;3.输入模式设置指令 功能:设定每次写入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。参数设定的情况如下所示: 位名设置 I/D0=写入新数据后光标左移 1=写入新数据后光标右移 S0=写入新数据后显示屏不移动 1=写入新数据后显示屏整体右移1个字 4.显示开关控制指令功能:控制显示器开/关、光标显示/关闭以及光标是否闪烁。参数设定的情况如下: 位名设置 D0=显示功能关 1=显示功能开 C0=无光标 1=有光标 B0=光标不闪烁 1=光标闪烁 5.设定显示屏或光标移动方向指令功能:使光标移位或使整个显示屏幕移位。参数设定的情况如下: S/CR/L设定情况 0 0光标左移1格,且AC值减1 0 1光标右移1格,且AC值加1 1 0显示器上字符全部左移一格,但光标不动 1 1显示器上字符全部右移一格,但光标不动 6.功能设定指令 (非常重要的指令)功能:设定数据总线位数、显示的行数及字型。参数设定的情况如下: 位名设置 DL 0=数据总线为4位 1=数据总线为8位 N 0=显示1行 1=显示2行 F0=57点阵/每字符1=510点阵/每字符 7.设定CGRAM地址指令 功能:设定下一个要存入数据的CGRAM的地址。 8.设定DDRAM地址指令 功能:设定下一个要存入数据的CGRAM的地址。 9.读取忙信号或AC地址指令 功能: 读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令; 当BF=0时,液晶显示器可以接收单片机送来的数据或指令; 读取地址计数器(AC)的内容。 10.数据写入DDRAM或CGRAM指令 功能: 将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符; 将用户自己设计的图形存入CGRAM。 11.从CGRAM或DDRAM读出数据的指令 功能:读取DDRAM或CGRAM中的内容。 基本操作时序: 读状态 输入:RS=L,RW=H,E=H输出:DB0DB7=状态字 写指令 输入:RS=L,RW=L,E=下降沿脉冲,DB0DB7=指令码 输出:无 读数据 输入:RS=H,RW=H,E=H输出:DB0DB7=数据 写数据 输入:RS=H,RW=L,E=下降沿脉冲,DB0DB7=数据 输出:无 代码应用液晶忙检测bit BusyTest(void)bit result;RS=0; /数据、命令选择端 1为数据0为指令RW=1; /读、写选择端 1为读E=1; /使能控制,1读取指令,下降沿时执行_nop_();result=BF;_nop_();E=0;return result;写指令void Write_com(unsigned char command)while(BusyTest()!=0);RS=0;RW=0;E=0;_nop_();P0=command; /指令送到P0端口_nop_();E=1; _nop_();E=0; /由1到0执行写地址void Write_Address(unsigned char address) /0x00到0x0F为第一行,0x40到0x4F为第二行Write_com(address|0x80);delay1ms(1);/*写数据*/void Write_Date(unsigned char date)RS=1;RW=0;E=0;_nop_();P0=date;_nop_();E=1;_nop_();E=0;delay1ms(1);初始化void Lcd_Int(void)Write_com(0x38);delay1ms(1);Write_com(0x38); /数据总线为8位,显示2行,0=57点阵/每字符delay1ms(1);Write_com(0x06); /写入数据后光标右移delay1ms(1);Write_com(0x0c); /显示功能开,无光标,光标不闪烁delay1ms(1);Write_com(0x01);/清除液晶显示器.光标归位,将地址计数器(AC)的值设为02、时间计算模块设计DS1302引脚介绍 各引脚的功能为:8 、Vcc1:备用电池端;1、Vcc2:5V电源。当Vcc2Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2 Vcc1时,由Vcc1向DS1302供电。7、 SCLK:串行时钟,输入; 6、I/O:数据输入输出口;5、CE/RST:复位脚2 3、X1、X2 是外接晶振脚 (32.768KHZ的晶振)4、地(GND)DS1302有关日历、时间的寄存器 寄存器的说明如下:1、秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH)。当初始上电时该位置为1,时钟振荡器停止,DS1302处于低功耗状态;只有将秒寄存器的该位置改写为0时,时钟才能开始运行。2、小时寄存器(85h、84h)的位7用于定义DS1302是运行于12小时模式还是24小时模式。当为高时,选择12小时模式。在12小时模式时,位5是 ,当为1时,表示PM。在24小时模式时,位5是第二个10小时位3、控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置为0。在对任何的时钟和RAM的写操作之前,WP位必须为0。当WP位为1时,写保护位防止对任一寄存器的写操作。也就是说在电路上电的初始态WP是1,这时是不能改写上面任何一个时间寄存器的,只有首先将WP改写为0,才能进行其它寄存器的写操作。 DS1302控制字介绍控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。位6:如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1(A4A0):指示操作单元的地址;位0(最低有效位):如为0,表示要进行写操作,为1表示进行读操作。读数据:读数据时在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据是从最低位到最高位。写数据:控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入也是从最低位(0位)开始。位0(最低有效位):为1表示进行读操作。 如为0,表示要进行写操作,控制字后 SCLK 下降沿 读数据 SCLK上升沿写数据DS1302单字节读写时序介绍DS1302的数据读写是通过I/O串行进行的。当进行一次读写操作时最少得读写两个字节,第一个字节是控制字节,就是一个命令,告诉DS1302是读还是写操作,是对RAM还是对CLOK寄存器操作,以及操作的址。第二个字节就是要读或写的数据了。我们先看单字节写:在进行操作之前先得将CE(也可说是RST)置高电平,然后单片机将控制字的位0放到I/O上,当I/O的数据稳定后,将SCLK置高电平,DS1302检测到SCLK的上升沿后就将I/O上的数据读取,然后单片机将SCLK置为低电平,再将控制字的位1放到I/O上,如此反复,将一个字节控制字的8个位传给DS1302。接下来就是传一个字节的数据给DS1302,当传完数据后,单片机将CE置为低电平,操作结束。单字节读操作的一开始写控制字的过程和上面的单字节写操作是一样,但是单字节读操作在写控制字的最后一个位,SCLK还在高电平时,DS1302就将数据放到I/O上,单片机将SCLK置为低电平后数据锁存,单机机就可以读取I/O上的数据。如此反复,将一个字节的数据读入单片机。读与写操作的不同就在于,写操作是在SCLK低电平时单片机将数据放到IO上,当SCLK上升沿时,DS1302读取。而读操作是在SCLK高电平时DS1302放数据到IO上,将SCLK置为低电平后,单片机就可从IO上读取数据。DS1302操作指令介绍操作说明:1 首先要通过8EH将写保护去掉,将日期,时间的初值写时各个寄存器。2 然后就可以对80H、82H、84H、86H、88H、8AH、8CH进行初值的写入。同时也通过秒寄存器将位7的CH值改成0,这样DS1302就开始走时运了。3 将写保护寄存器再写为80H,防止误改写寄存器的值。4 不断读取80H8CH的值,将它们格式化后显示到1602LCD液晶上。代码应用向1302写数据void Write1302(unsigned char date) unsigned char i;SCLK=0;delaynus(2);for(i=0;i=1; /date右移一位,准备写入高一位数据 根据相应的命令输入相应的数据void WriteSet1302(unsigned char cmd,unsigned char date) REST=0;SCLK=0;REST=1; /置一进行写操作Write1302(cmd);delaynus(5);Write1302(date);SCLK=1;REST=0; 读取1302数据unsigned char Read1302(void) unsigned char i,date;delaynus(2);for(i=0;i=1; /将date右移一位if(DATE=1) date|=0x80; /date或 1000 0000SCLK=1; /置一delaynus(2);SCLK=0; / 下降沿 delaynus(2);return date; 根据命令读取1302相应的值unsigned char ReadSet1302(unsigned char cmd) unsigned char date;REST=0;SCLK=0;REST=1; /置一进行读操作Write1302(cmd); /发送命令delaynus(2);date=Read1302();SCLK=1;REST=0;return date;DS1302初始化void IntDS1302(void) unsigned char flag; flag= ReadSet1302(0x81);if(flag&0x80) /判断时钟芯片是否关闭 WriteSet1302(0x8E,0x00); /根据写状态寄存器命令字,写入不保护指令 WriteSet1302(0x80,(0/10)4|(0%10); /根据写秒寄存器命令字,写入秒的初始值WriteSet1302(0x82,(0/10)4|(0%10); /根据写分寄存器命令字,写入分的初始值WriteSet1302(0x84,(0/10)4|(0%10); /根据写小时寄存器命令字,写入小时的初始值WriteSet1302(0x86,(0/10)4|(0%10); /根据写日寄存器命令字,写入日的初始值WriteSet1302(0x88,(0/10)4|(0%10); /根据写月寄存器命令字,写入月的初始值WriteSet1302(0x8c,(10/10)4|(10%10); /根据写年寄存器命令字,写入年的初始值WriteSet1302(0x90,0xa5); /打开充电功能 选择2K电阻充电方式WriteSet1302(0x8E,0x80); /根据写状态寄存器命令字,写入保护指令 3、实时环境温度检测模块DS18B20管脚介绍 1 . GND为电源 地;2. DQ为数字信号输入输出端;3. VDD为外接供电电源输入端,在寄生电源接线方式时接地; DS18B20结构n DS18B20 内部结构主要由四部分组成: 64 位光刻 ROM 、温度传感器、非挥发的温度报警触发器 TH 和 TL 、配置寄存器。n 光刻 ROM 中的 64 位序列号是出厂前被光刻好的,它可以看作是该 DS18B20 的地址序列码。 64 位光刻 ROM 的排列是:开始 8 位(地址: 28H )是产品类型标号,接着的 48 位是该 DS18B20 自身的序列号,并且每个 DS18B20 的序列号都不相同,因此它可以看作是该 DS18B20 的地址序列码;最后 8 位则是前面 56 位的循环冗余校验码( CRC=X8+X5+X4+1 )。由于每一个 DS18B20 的 ROM 数据都各不相同,因此微控制器就可以通过单总线对多个 DS18B20 进行寻址,从而实现一根总线上挂接多个 DS18B20 的目的。DS18B20中的温度传感器完成对温度的测量,用16位二进制形式提供,形式表达,其中S为符号位。DS18B20温度转化示例DS18B20时序介绍DS18B20的一线工作协议流程是:初始化ROM操作指令存储器操作指令数据传输。其工作时序包括:l 初始化时序l 写时序l 读时序初始化时序 主机首先发出一个480960微秒的低电平脉冲,然后释放总线变为高电平,并在随后的480微秒时间内对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。若无低电平出现一直都是高电平说明总线上无器件应答。做为从器件的DS18B20在一上电后就一直在检测总线上是否有480960微秒的低电平出现,如果有,在总线转为高电平后等待1560微秒后将总线电平拉低60240微秒做出响应存在脉冲,告诉主机本器件已做好准备。若没有检测到就一直在检测等待。 对DS18B20的写和读操作接下来就是主机发出各种操作命令,但各种操作命令都是向DS18B20写0和写1组成的命令字节,接收数据时也是从DS18B20读取0或1的过程。因此首先要搞清主机是如何进行写0、写1、读0和读1的。写周期最少为60微秒,最长不超过120微秒。写周期一开始做为主机先把总线拉低1微秒表示写周期开始。随后若主机想写0,则继续拉低电平最少60微秒直至写周期结束,然后释放总线为高电平。若主机想写1,在一开始拉低总线电平1微秒后就释放总线为高电平,一直到写周期结束。而做为从机的DS18B20则在检测到总线被拉底后等待15微秒然后从15us到45us开始对总线采样,在采样期内总线为高电平则为1,若采样期内总线为低电平则为0。对于读数据操作时序也分为读0时序和读1时序两个过程。读时序是从主机把单总线拉低之后,在1微秒之后就得释放单总线为高电平,以让DS18B20把数据传输到单总线上。DS18B20在检测到总线被拉低1微秒后,便开始送出数据,若是要送出0就把总线拉为低电平直到读周期结束。若要送出1则释放总线为高电平。主机在一开始拉低总线1微秒后释放总线,然后在包括前面的拉低总线电平1微秒在内的15微秒时间内完成对总线进行采样检测,采样期内总线为低电平则确认为0。采样期内总线为高电平则确认为1。完成一个读时序过程,至少需要60us才能完成DS18B20操作步骤()每次读写前对 DS18B20 进行复位初始化。复位要求主 CPU 将数据线下拉 500us ,然后释放, DS18B20 收到信号后等待 16us60us 左右,然后发出 60us240us 的存在低脉冲,主 CPU 收到此信号后表示复位成功。()发送一条 ROM 指令()发送存储器指令代码应用DS18B20初始化bit IntDS18B20(void)bit temp;DQ=1;for(time=0;time2;time+);DQ=0;for(time=0;time200;time+);DQ=1;for(time=0;time10;time+);temp=DQ;for(time=0;time200;time+);return temp;读DS18B20 unsigned char ReadDS18B20(void) unsigned char i;unsigned char dat;for(i=0;i8;i+)DQ=1;_nop_();DQ=0;_nop_();DQ=1;for(time=0;time
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民爆物品安全培训系统课件
- 初级电焊考试题库及答案
- 宝玉石基础考试题及答案
- 中式婚礼设计理念策划方案
- 民族舞蹈课件封面设计
- 新质生产力与海洋经济的联系
- 企业网络安全方案活动
- 民族理论常识说课课件
- 民族教育多彩的服饰课件
- 2025年口腔科常见口腔疾病处理技巧模拟考试卷答案及解析
- 大象版四年级科学上册 (我们需要呼吸)课件
- 陶瓷材料基础-陶瓷力学性能-课件
- 一年级话说温州1《可爱的水乡》课件
- 开展VIP商务旅客服务的项目策划书
- 影视剧摄制组财务管理制度
- 广东省封开县金装神梧黄金开采有限公司金矿矿山地质环境保护与土地复垦方案评审意见
- 四年级下册英语人教PEP版课件Let's talk-Look,ask and answer
- 一年级下册竖式计算题大全
- 大学英语六级(CET-6)试卷模拟真题及答案
- 《医疗纠纷预防与处理条例》解读
- 中国建设银行专用PPT模板
评论
0/150
提交评论