首页 基于单片机ATmega16L的电子温度日历表软件设计(已处理)

基于单片机ATmega16L的电子温度日历表软件设计(已处理)

举报
开通vip

基于单片机ATmega16L的电子温度日历表软件设计(已处理)基于单片机ATmega16L的电子温度日历表软件设计(已处理) 基于单片机ATmega16L的电子温度日历表软件设计 本科学生毕业论文 论文题目: 电子温度日历表软件设计 学 院: 电子工程学院 年 级: 专 业: 电子信息科学与技术 姓 名: 学 号: 指导教师:年5月10日 摘要 本文主要结合了ATmega16L,DS12887,DS18B20,128*64显示模块的工作原理及工作过程,重点介绍了电子温度日历表的软件设计,以广泛使用的单片机ATmega16L技术为核心,配合时钟芯片DS12...

基于单片机ATmega16L的电子温度日历表软件设计(已处理)
基于单片机ATmega16L的电子温度日历表软件 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 (已处理) 基于单片机ATmega16L的电子温度日历表软件设计 本科学生毕业论文 论文 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 目: 电子温度日历表软件设计 学 院: 电子工程学院 年 级: 专 业: 电子信息科学与技术 姓 名: 学 号: 指导教师:年5月10日 摘要 本文主要结合了ATmega16L,DS12887,DS18B20,128*64显示模块的工作原理及工作过程,重点介绍了电子温度日历表的软件设计,以广泛使用的单片机ATmega16L技术为核心,配合时钟芯片DS12887,温度芯片DS18B20通过128*64显示模块实现了时间及温度的显示。软硬件结合,使硬件部分大为简化,提高了系统稳定性,同时具有数字集成电路精度高等优点,能够广泛应用于人们生活,同时有关温度控制,时间控制等装置也是以电子温度日历表为基础的,研究电子温度日历表及其扩大应用,对现实也具有非常重要的意义。 关键词 ATmega16L单片机;DS12887时钟芯片;DS1820温度传感芯片;128*64电子 液晶显示;软件编程; Abstract This paper combines the ATmega16L, DS12887, DS18B20, LCD128*64working principle and working process, focusing on the electron temperature calendar software design. ATmega16L microcontroller widely used technology as the core, With the clock chip DS12887, DS18B20 through LCD128*64 achieved time and temperature displaybination of hardware and software greatly simplifies hardware and improve system stability, but also has many advantages of digital integrated circuits like high accuracy. It can be widely used in people's lives, while temperature control, time control device is based on electronic temperature calendar The study of electron temperature calendar and the expandition of the application of reality has very important significance. Key words ATmega16L microcontroller; DS12887 clock chip; DS1820 temperature sensor chip; LCD128 * 64 ;software programming 目录 摘要 I Abstract II 前言 1 第一章 总体设计 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 2 1.1设计思路 2 1.2设计方案 2 1.3方案比较论证 2 1.4总体设计方框图 3 第二章 主要芯片介绍 4 2.1 ATmega16L简介 4 2.2温度传感器芯片 5 2.2.1 DS18B20简介 5 2.2.2温度计算 5 2.2.3 DS18B20工作过程 8 2.3时钟芯片DS12887 10 2.3.1 DS12887功能 10 2.3.2 DS12887管脚及存储器说明 10 2.4 128*64液晶显示 11 2.4.1 DS12887读写时序 11 2.4.2 DS12887基本指令介绍 12 第三章 硬件电路 16 3.1单片机主模块设计 16 第四章 系统软件设计 17 4.1程序流程框图 17 4.2时钟调整程序 18 4.3温度采集模块相关程序 21 4.4矩形键盘控制程序 25 4.5液晶相关程序 30 结论 32 参考文献 33 附录一 34 致谢 57 前言 在当代繁忙的工作与生活中,时间与我们每一个人都有非常密切的关系,每个人都受到时间的影响。为了更好的利用我们自己的时间,我们必须对时间有一个度量,因此产生了钟表。钟表的发展是非常迅速的,从刚开始的机械式钟表到现在普遍用到的数字式钟表,即使现在钟表千奇百怪,但是它们都只是完成一种功能??计时功能,只是工作原理不同而已,在人们的使用过程中,逐渐发现了钟表的功能太单一,没有更大程度上的满足人们的需求。于是人们在钟表中加入了一些辅助功能入对温度的测量。 电子温度日历表是采用数字电路实现对.时,分,秒.数字显示的计时装置以及温度测量装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟以及温度表的精度,远远超过老式钟表和温度计,给人们生产生活带来了极大的方便。 本系统采用了以广泛使用的单片机ATmega16L技术为核心,配合时钟芯片DS12887。软硬件结合,使硬件部分大为简化,提高了系统稳定性,并采用LCD显示电路、键盘电路,做到可以调整时间的功能。 本设计中我重点研究实现了单片机+时钟芯片+测温芯片这种模式的电子温度日历表,从原理上对单片机、时钟芯片和测温芯片有了深一步的认识,在软件 基础上实现时间和温度显示及时间调整的功能。 第一章 总体设计方案 1.1设计思路 用ATmega16L处理产生内部时钟数据或者读取外部时钟数据和采集外部传感器的信息进行处理,并暂时寄存在其内部的储存器中,再通过单片机调用内部RAM的数据并送到LCD或者LED数码管上显示出来。 1.2设计方案 方案1:单片机一般的工作频率在12MHz左右,而且内部还有定时、计数器,可以产生精确的1S定时,由次可以用定时中断的方式产生精确的1S时间,秒位不断的加1,再设计分、时、星期、日、月、年之间的进制,使产生进位。本方案只需要单片机最小系统加上显示电路,再设计简单的程序算法就可以实现。对 于测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理。在显示电路上,采用数码管就可以将年月日星期时分秒和室内温度显示出来 方案2:采用单片机控制DS12887实时时钟芯片[[ 参考文献 [] 胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,1996:274-279.]],能达到走时准确且掉电不丢失数据的。DS12887与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线1 RES( 复位)2 I/O (数据线)3 SCLK(串行时钟)。温度计要灵敏反映室温的变化这样可采用单片机与数字式温度传感器DS18B20通讯,采集温度数字信号进行处理。DS18B20通过一个单线接口发送或接受信息,因此在单片机与DS18B20之间仅需一条连接(加上地线)。在显示电路上,采用16*2的LCD显示。 1.3方案比较论证 对于方案1,单片机虽然可以产生精确的秒信号,但是单片机在处理闰年上会比较麻烦,加之一旦单片机断电后,所有的时间都要重新调整。对于测温电路,采用热敏电阻的输出电压-温度特性,要加上A/D转换,温度传感信息才能被单片机所接受,这种设计需要用到A/D转换电路,感温电路比较麻烦。在显示电路上,采用LED数码的话要用到单片机的许多I/O口,甚至I/O不够用,还需要接上其它芯片大量扩展I/O口,这是一个弊处。 对于方案2,单片机不用去产生时钟的数据,时钟的数据由DS12887独立产生,并寄存在其内部的寄存器上,单片机可以通过三总线与它通讯,不仅可以对 它进行读取实时时钟数据,还可以对它进行编程,设置它的工作模式。单片机只是处理从DS12887读出来的数据并送显示,大大减少了单片机的负担。而且DS12887可以通过后备电池继续工作,内部的时钟还在走,下次启动后不用去调整时钟,方便使用。基于同样的原理,DS18B20也是一个独立的传感器,只要单片机配置它的工作状态后它就可以独立工作,内部已经把模拟信号转换成数字信号,并把数字信号储存在其内部的寄存中。同样,单片机通过单总线与它通讯,可以处理9~12位的温度数字数据。在显示电路上,采用16*2 LCD液晶显示器,能容纳年月日星期时分秒温度等信息的显示。LCD显示器只需占用11个I/O口就可以工作了,不用其它扩展芯片,总体上使电路简单化。 1.4总体设计方框图 总体的方框图如图所示[[[] 占友,王彦朋.孟志永.单片机外围电路设计[M].北京:电子工业出版社,2003:135-137,222-226.]],控制器采用单片机ATMEGA16L,时钟芯片DS12887、温度传感器采用DS18B20,用128*64的LCD液晶显示屏实现年、月、日、星期、时、分、秒、温度的显示。 图1-1 总体设计方框图 第二章 设计原理与 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 2.1 ATmega16L简介 ATmega16L是基于增强的AVR RISC结构的低功耗8 位CMOS微控制器。由 于其先进的指令集以及单时钟周期指令执行时间,ATmega16L的数据吞吐率高达1 MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。 ATmega16 LAVR 内核具有丰富的指令集和32 个通用工作寄存器。所有的寄存器都直接与算逻单元ALU 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC 微控制器最高至10 倍的数据吞吐率。 ATmega16L主要特性如下: 高性能、低功耗的 8 位AVR 微处理器 1、先进的RISC 结构 131 条指令 ? 大多数指令执行时间为单个时钟周期 32 个8 位通用工作寄存器 全静态工作 工作于16 MHz 时性能高达16 MIPS 只需两个时钟周期的硬件乘法器 2、非易失性程序和数据存储器 16K字节的系统内可编程Flash 具有独立锁定位的可选Boot 代码区 通过片上Boot 程序实现系统内编程 真正的同时读写操作 512字节的EEPROM 擦写寿命: 100,000 次 1K字节的片内SRAM 可以对锁定位进行编程以实现用户程序的加密 3、JTAG 接口 与IEEE 1149.1 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 兼容 符合JTAG 标准的边界扫描功能 支持扩展的片内调试功能 通过JTAG 接口实现对Flash、EEPROM、熔丝位和锁定位的编程 图2-1 ATmega16L引脚 2.2温度传感器芯片 2.2.1 DS18B20简介 DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器[[[] 童诗白,华成英.模拟电子技术基础[M].北京:高等教育出社,2001:312-330,387-391,408-411,446-451.]],与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。DS18B20的性能特点如下: 1采用单总线的接口方式与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通信。单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的够建引入全新概念。 2测量温度范围宽,精度高DS18B20的测量范围是-55?-+125?;在-10?-+85?范围内,精度为?0.5?。 3在使用中不需要任何外围器件。 4持多点组网功能多个DS18B20可以并联在唯一的单线上,实现多点测温。 5供电方式灵活DS18B20可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定的要求是,可以不接外部电源,从而使系统结构更趋简单,可靠性更高[[[] 康华光,陈大钦.第四版电子技术基础[M].北京:高等教育出版,2001: 56-57,443-446.]]。 6测量参数可配置DS18B20的测量分辨率可通过程序设定9-12位。 7负压特性电源极性接反时,温度计不会因发热而烧毁,但不能正常工作[[[] 张福学.传感器应用及其电路精选[M].北京:电子工业出版社,1991:102-121.]]。 8掉电保护功能DS18B20内不含有EEPROM,在系统掉电以后它仍可保存分辨率及报警温度的设定值。 DS18B20具有体积小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐 2.2.2温度计算 1、DS18B20用9位存贮温值度,最高位为符号位,如表2-1为DS18B20的温度存储方式,负温度S1,正温度S0。如:00AAH为+85摄式度,0032H为25摄式度,FF92H为55摄式度 表2-1 DS18B20用9位的温度存储方式 bit7 bit6bit5bit4 bit3 bit2 bit1bit0 23 22 2 20 2-1 2-2 2 2^-4 2、DS18B20用12位存贮温值度,最高位为符号位,如表2-2为DS18B20 的温度存储方式,负温度S1,正温度S0。如:0550H为+85摄式度,0191H为25.0625摄式度,FC90H为-55摄式度。 表2-2 DS18B20用12位的温度存储方式 bit7bit6 bit5 bit4bit3 bit2 bit1bit0 23 22 21 20 2-1 2-2 2-3 2-4 bit15bit14 bit13 bit12 bit11bit10 bit9 bit8 S S S SS 26 25 24 DS18B20[[[] 黄继昌,张海贵,郭继忠.实用单元电路及其应用[M].北京:人民邮电出社,2002:185-190,234-235.]]温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EEROM。高速暂存RAM的结构为8字节的存储器,结构如图2-2所示。头2个字节包含测得的温度信息,第3和第4字节TH和的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器它的内容用于确定温度值的数字转换分辨率。 图2-2 DS18B20存储器结构 DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值[[[] 张萌,和湘.单片机应用系统开发综合实例[M].北京:清华大学出版社,2007:119-150,254-261.]]。该字节各位的定义如图2-3所示。低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨 率。由表2-3可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。 表2-3 DS18B20分辨率 R1 R0分辨率/位 温度最大转向时间/ms 0 0 9 93.75 0 1 10187.5 1 0 11 375 1 1 12 750 高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。 当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625?/LSB形式表示。 当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。 2.2.3 DS18B20工作过程 DS18B20的一线工作协议流程是[[[] 谢宜仁.单片机实用技术问答[M].北京:人民邮电出版社,2003:31,33-35,55-57,67-69.]]: 初始化??ROM操作指令??存储器操作指令??数据传输 其工作时序包括:初始化时序,写时序,读时序 图2-3 DS18B20初始化时序图 主机首先发出一个480-960微秒的低电平脉冲,然后释放总线为高电平,并在随后的480微秒时间内对总线进行检测,如果有低电平出现说明总线上有器 件已作出应答。若无低电平出现一只都是高电平说明总线上无器件应答。作为从器件的DS18B20在一上电后就一直在检测总线上是否有480-960微秒的低电平出现,如果有,在总线转为高电平后等待15-60微秒后将总线电平拉低60-240微秒做出响应存在脉冲,告诉主机本器件已经做好准备。若没有检测到就一直在检测等待 图2-4 DS18B20写操作时序图 写周期最少要60微秒,最长不超过120微秒。写周期一开始作为主机先把总线拉低1微秒表示写周期开始。随后若主机想写0,则继续拉低电平最少60微秒直至写周期结束,然后释放总线为高电平。若主机想写1,在一开始拉低总线电平1微秒后就释放为高电平,一直到写周期结束。而作为从机得DS18B20则在检测到总线被拉低后等待15微秒然后从15us4到5us开始对总线采样,在采样期内总线为高电平则为1,若采样期内为低电平则为0. 图2-5 DS18B20 读操作时序图 对于读数据操作也分为读0时序和读1时序两个过程。读时序是从主机把单总线拉低之后,在1微秒之后就得释放单总线为高电平,以让DS18B20把数据传输到单总线上。DS18B20在检测到总线被拉低1微秒后,便开始送出数据,若是要送出0就把总线辣味低电平知道读周期结束。若要送出1则释放总线为高电平。主机在一开始拉低总线1微秒后释放总线,然后在包括前面的拉低总线1微秒在内的15微秒时间内完成对总线进行采样检测,采用期内总线低电平则确认为0.采样期内总线为高电平则确认为1.完成一个读时序过程,至少需要60微秒才能完成。 2.3时钟芯片DS12887 2.3.1 DS12887的功能 DS12887是美国达拉斯半导体公司最新推出的时钟芯片RTC,它功能丰富,应用广泛,PC机内的信号就是由DS12887提供的。其主要功能如下: 1可作为PC机的时钟和日历。 2与MC146818B和DS1287的管脚兼容。 3在没有外部电源的情况下可工作十年以上不丢失数据。 4自带晶体振荡器及锂电池。 5)可计算到2100年前的秒,分,小时,星期,日,月,年七种日历信息并有闰年补偿功能。 6二进制数码或BCD码表示时间,日历和闹钟。 712和24小时两种制式,12小时时钟模式带有PM和AM指示,有夏令时功能。 8可编程方波输出。 当Vcc低于4.25V时,芯片处于写保护状态(所有的输入均无效),同时所有输出呈高阻状态。当Vcc低于3V,芯片将自动把供电方式切换为由内部电池供电 2.3.2 DS12887的管脚及存储器说明 AD0?AD7为地址/数据复用线。NC为空脚。MOT为总线模式选择,当此脚接到Vcc时,选用的是MOTOROLA总线时序,当它接地或不接时,选用的是INTEL总线时序。CS为片选端。AS为地址锁存允许端。R/W在INTEL总线下作为写。DS在INTEL总线下作为读。RSET为复位端,复位端对时钟,日历,RAM无效,系统上电时复位端要保持低电平200MS以上DS12887才可以正常工作。IRO为中断请求输出端。SQW为方波输出端,当Vcc低于4.25V时没有作用,Vcc为5V电源。GND接地端[[[] 何立民. 单片机应用系统设计[M].北京:航空航天大学出版社,1994:24-38.]] 表2-4 DS12887内部寄存器A UIP DV2 DV1 DV0 RS3 RS2 RS1 RS0 UIP1:更新已到,不能读/写DS12887;UIP0,更新未到,能读/写DS12887。 DV2,DV1,DV0应设置为010,表示打开晶振,允许计时。 RS3,RS2,RS1,RS0为方波频率选择位,产生方波周期中断。 表2-5 DS12887内部寄存器B SET PIE ALE UIE SQWE DM 24/12 DSE SET0:时间更新正常运行,每秒计数一次,SET1:禁止更新,程序可初始化时间 和日历。 PIE1:允许周期中断PIE0:禁止周期中断 ALE1:允许报警中断,ALE0:禁止报警中断 UIE1:允许更新结束中断,UIE0:禁止更新结束中断。 SQWE为方波允许位SQWE1:将RS3,RS2,RS1,RS0选定的方波输出。 DM1:BCD码 DM0:二进制 24/12:1表示24时制;0表示12时制 DSE为夏时制允许位。DSE1:采用夏时制,DSE0:不采用夏时制 表2-6 DS12887内部寄存器C IRQF PF AF UF 0 0 0 0 IRQF为中断申请标志 PF为方波周期中断标志。PF1:方波周期结束,申请中断。 AF为闹钟中断标志。AF1:当前时间与闹铃时间匹配时即刻申请中断 UF为更新周期结束中断标志。 表2-7 DS12887内部寄存器D VRT 0 0 0 0 0 0 0 VRT为内部锂电池状态,VRT1:锂电池正常,VRT0:锂电池耗尽 2.4 128*64液晶显示 2.4.1 128*64读写时序图 12864液晶显示模块采用8位并行连接时序图如图所示 图2-7 DS12887读写时序 2.4.2基本指令介绍[[[] 先锋工作室.单片机程序设计实例[M].北京: 清华大学出版,社2003:235-241.]] 1、清除显示 表2-8 清屏指令RW RS DB7 DB6 DB5DB4 DB3 DB2 DB1 DB0 LLLL L LL L L L 功能:清除显示屏幕,把DDRAM位址计数器调整为“00H” 2、位址归位 表2-9 地址归位指令 RW RSDB7 DB6 DB5DB4 DB3DB2 DB1DB0LLL L LLL LH X 功能:把DDRAM位址计数器调整为“00H”,游标回原点,该功能不影响显示 DDRAM 3、位址归位 表2-10 位址归位指令 RW RSDB7 DB6DB5 DB4 DB3 DB2 DB1DB0LLLL L L L H I/DS 功能:把DDRAM位址计数器调整为“00H”,游标回原点,该功能不影响显示 DDRAM功能:执行该命令后,所设置的行将显示在屏幕的第一行。显示起始行是由Z地址计数器控制的,该命令自动将A0-A5位地址送入Z地址计数器,起始地址可以是0-63范围内任意一行。Z地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。 4、显示状态 开/关 表2-11 显示状态指令 RWRS DB7 DB6 DB5 DB4 DB3DB2 DB1DB0LLLLLLHDCB 功能: D1;整体显示ON C1;游标ON B1;游标位置ON 5、游标或显示移位控制 表2-12 游标或显示移位控制指令 RW RS DB7 DB6 DB5 DB4 DB3DB2 DB1DB0 LL LLLH S/C R/L XX 功能:设定游标的移动与显示的移位控制位:这个指令并不改变DDRAM的内容 6、功能设定 表2-13 功能设定指令 RW RS DB7 DB6 DB5 DB4 DB3DB2 DB1DB0 LL LLHDL X 0RE XX 功能:DL1(必须设为1)RE1;扩充指令集动作 RE0:基本指令集动作 7、设定CGRAM位址 表2-14 设定CGRAM地址指令 RW RS DB7 DB6 DB5 DB4 DB3DB2 DB1DB0 LL LH AC5 AC4 AC3 AC2 AC1 AC0 功能:设定CGRAM位址到位址计数器(AC) 8、设定DDRAM位址 表2-15 设定DDRAM地址指令 RW RS DB7 DB6 DB5 DB4 DB3DB2 DB1DB0 LL HAC6AC5 AC4 AC3 AC2 AC1 AC0 功能:设定DDRAM位址到位址计数器(AC) 9、读取忙碌状态(BF)和位址 表2-16 读取忙碌状态指令 RW RS DB7 DB6 DB5 DB4 DB3DB2 DB1DB0 LH BFAC6AC5 AC4 AC3 AC2 AC1 AC0 功能:读取忙碌状态(BF)可以确认内部动作是否完成,同时可以读出位址计 数器(AC)的值 10、写资料到RAM 表2-17写RAM指令 RW RS DB7 DB6 DB5 DB4 DB3DB2 DB1DB0 HL D7D6D5 D4 D3 D2 D1 D0 功能:写入资料到内部的RAM(DDRAM/CGRAM/TRAM/GDRAM) 11、读出RAM的值 表2-18读RAM指令 RW RS DB7 DB6 DB5 DB4 DB3DB2 DB1DB0 H H D7D6D5 D4 D3 D2 D1 D0功能:从内部RAM读取资料 (DDRAM/CGRAM/TRAM/GDRAM) 12、待命模式(12H) 表2-19 待命模式指令 RW RS DB7 DB6 DB5 DB4 DB3DB2 DB1DB0 L L LL L L L L L H 功能:进入待命模式,执行其他命令都可终止待命模式 13、卷动位址或IRAM位址选择(13H) 表2-20 卷动位置指令 RW RS DB7 DB6 DB5 DB4 DB3DB2 DB1DB0 L L LL L L L L H SR 功能:SR1;允许输入卷动位址SR0;允许输入IRAM位址 14、反白选择(14H) 表2-21 反白选择指令 RW RS DB7 DB6 DB5 DB4 DB3DB2 DB1DB0 L L LL L L L H R1 R0功能:选择4行中的任一行 作反白显示,并可决定反白的与否 15、睡眠模式(015H) 表2-22 睡眠模式指令 RW RS DB7 DB6 DB5 DB4 DB3DB2 DB1DB0 L L LL L L H SL X X 功能:SL1;脱离睡眠模式SL0;进入睡眠模式 16、扩充功能设定(016H) 表2-23 扩充功能指令 RW RS DB7 DB6 DB5 DB4 DB3DB2 DB1DB0 L L LL H H X RE G L 功能:RE1;扩充指令集动作 RE0;基本指令集动作 G1;绘图显示ON G0;绘 图显示OFF 17、设定IRAM位址或卷动位址(017H) 表2-24卷动位址指令 RW RS DB7 DB6 DB5 DB4 DB3DB2 DB1DB0 L L LH AC5 AC4 AC3 AC2 AC1 AC0功 能:SR1;AC5~AC0为垂直卷动位址SR0;AC3~AC0写ICONRAM位址 18、设定绘图RAM位址(018H) 表2-24卷动位址指令 RW RS DB7 DB6 DB5 DB4 DB3DB2 DB1DB0 L L HAC6 AC5 AC4 AC3 AC2 AC1 AC0 功能:设定GDRAM位址到位址计数器(AC) 第三章 硬件电路 3.1单片机主模块电路设计 本设计电子温度日历表的总设计电路图如图所示 。 图3-1 总设计电路图 第四章 系统软件设计 4.1程序流程框图 因为使用了时钟芯片DS12887,所以只需要从DS12887中的各个寄存器中读出年、月、日、星期、时、分、秒等数据,再处理即可。在首次对DS12887进行操作前,必须对它进行初始化,然后从DS12887中读出数据,再经处理后,送给显示缓冲单元。 图4.1 程序主流程图 系统初始化程序[[[] 谭浩强.C程序设计[M].北京:清华大学,2007:56-67]] //时钟调准后屏蔽该段程序 //时间初始化设置 DS12887_SetTimeDS12887_Second,00; //设置秒 DS12887_SetTimeDS12887_Minute,59; //设置分 DS12887_SetTimeDS12887_Hour,11; //设置时 DS12887_SetTimeDS12887_Day,30; //设置天 DS12887_SetTimeDS12887_Month,05; //设置月 DS12887_SetTimeDS12887_Year,10; //设置年 DS12887_SetTimeDS12887_Week,1; //设置星期 void settimeuint add,uint time switchadd case 1:DS12887_SetTimeDS12887_Minute,time;break; //设置分 case 2:DS12887_SetTimeDS12887_Hour,time;break;//设置时 case 3:DS12887_SetTimeDS12887_Day,time;break; //设置天 case 4:DS12887_SetTimeDS12887_Week,time;break; //设置星期 case5:DS12887_SetTimeDS12887_Month,time;break; //设置月 case 6:DS12887_SetTimeDS12887_Year,time;break; //设置年default:break; 4.2时间调整程序流程 调整时间用4个调整按钮,2个作为移位、控制用,另外2个作为加调整用,分别定义为控制钮1,控制钮2,加、减按钮。在调整时间的过程当中,要调整的位与其它的位应该有区别,所以增加了闪烁的功能。时间调整程序流程图如图3.2所示。 时间调整程序如下[[[] 佟长福.AVR单片机GCC程序设计[M].北京:北京航空航天大学出版,2007:74-78]]: void mainvoid SYSTEMTIME CurrentTime; init_devices; write_command0x01; //清除显示 write_command0x02; //地址归位 write_command0x80; //设置DDRAM地址 while1 key_numread_keyboard; ifdisplay_time_mark //时间更新显示 DS12887_GetTime&CurrentTime; display_time; display_CGROM2,0,"当前室温: "; Display_ds18B20; ifkey_num7&&m1 //调时状态下调制项选择 beep; display_time_mark0; item++; ifitem7 item1; setitem; ifkey_num7&&m0 //正常状态下启动调时 beep; m1; setitem; ifkey_num8&&m1 //时间++ beep; setitem; ifkey_num4&&m1 //时间-- beep; setitem; ifkey_num3&&m1 //退出调制时间 beep; m0; display_time_mark1; display_CGROM3,0," "; //抹掉显示 图4-2 时间调整程序流程图 4.3温度采集模块相关程序 单片机实现对温度传感器DS18B20的温度转换读取温度数值流程图如下 图4-3所示。 图4-3 温度转换读取温度数值流程图 温度采集程序如下: 从18B20中读取一个字节的数据 uchar Read18B20void uint byte0,i; fori0;i8;i++ DDRC | 0x40; PORTC& 0xbf; //总线为低电平 DelayUS6; //延时 PORTC| 0X40;//总线为高电平 asm"nop"; asm"nop"; DDRC& 0xbf;//PD7端口输入 PORTC| 0X40; DelayUS6; ifPINC& 0x400x40 byte | 0x01i; //先读高位的值 DelayUS58; // 延时60us return byte; 向18B20写入一个字节的数据 void Write18B20uchar cmd uchar i ; fori0;i8;i++ DDRC | 0x40; PORTC| 0X40; ifcmd & 0x01 PORTC & 0Xbf; //高„„》低 DelayUS8;//延时15us PORTC | 0x40;//将总线设置为高电平 DelayUS60; // 延时60us else PORTC & 0Xbf; DelayUS60;//延时60us PORTC| 0x40; DelayUS5; cmd cmd1; //右移一位 得到一个温度的数据 16位;高5位为正负标志 void GetTempvoid TCNT0 0xB9; CNT++; //中断次数累加 ifCNT250 uint temph0; uint templ0; uint ds18b20_temp0; CNT0; //计数到250次,计数值复位 whileCheck18B20 //检查18b20是否存在 ; Write18B200xcc; //跳过编码ID,直接读取(在多个传感器使用时易出 错) Write18B200x44;//启动转换,转换完后存入RAM Delay_MS750; //延时200MS whileCheck18B20//检查18B20是否存在,复位 ; Write18B200xcc; Write18B200xbe; //从RAM中读取温度值 templ Read18B20; temph Read18B20; ds18b20_temp temph 8; ds18b20_temp |templ; tempds18b20_temp; SREG0x80; 将温度值拆分为ascall码并显示[[[] Ronald L. Pease.Total dose and dose rate response of an AD590 temperature transducer [J].IEEE transactions on nuclear science.2007,8.]] void Display_ds18B20void uchar b0,c0,a0; uint i,j; write_command0x8d; //温度在LCM上的写入位置 itemp; ifi&0x8000 i~i+1; //取反加一 write_data0x19; else write_data0x18; ji&0x000f; ii4; ai%100/10; //取十位显示数码 write_dataa+0x30;//显示温度十位 bi%10; write_datab+0x30; //ASCAl码转换个位 write_data0x2e; //"." cj*10/16; write_datac+0x30;//小位1位 // display_CGROM3,7,"?";//度C //write_command0x87; //write_data0x0e; //write_command0x80; //write_data0x02; 4.4矩形键盘控制程序 #define KEY_H #define No_key 255 #define K1_1 1 #define K1_2 2 #define K1_3 3 #define K1_4 4 #define K2_1 5 #define K2_2 6 #define K2_3 7 #define K2_4 8 #define K3_1 9 #define K3_2 10 #define K3_3 11 #define K3_4 12 #define K4_1 13 #define K4_2 14 #define K4_3 15 #define K4_4 16 #define Key_mask 0b11110000 //选择输入输出端口此为高输入低输出 #define PORT_PIND PINC//定义键盘端口宏定义端口初始化处做相应设 置 #define PORT_D PORTC unsigned char read_keyboardvoid //void read_keyboardvoid static unsigned char key_state 0, key_value, key_line; unsigned char key_return No_key,i; switch key_state case 0: key_line 0b00000001; for i1; i4; i++ // 扫描键盘 PORT_D ~key_line;// 输出行线电平 PORT_D ~key_line;// 必须送2次!!! key_value Key_mask & PORT_PIND; // 读列电平 if key_value Key_mask key_line 1; // 没有按键,继续扫描 else key_state++; // 有按键,停止扫描 break; // 转消抖确认状态 break; case 1: if key_value Key_mask & PORT_PIND // 再次读列电平, switch key_line | key_value // 与状态0的相同,确认按键此 时输出端口连上v
本文档为【基于单片机ATmega16L的电子温度日历表软件设计(已处理)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_003124
暂无简介~
格式:doc
大小:57KB
软件:Word
页数:0
分类:企业经营
上传时间:2017-09-29
浏览量:16