基于单片机的温湿度检测仪的设计.doc_第1页
基于单片机的温湿度检测仪的设计.doc_第2页
基于单片机的温湿度检测仪的设计.doc_第3页
基于单片机的温湿度检测仪的设计.doc_第4页
基于单片机的温湿度检测仪的设计.doc_第5页
免费预览已结束,剩余28页可下载查看

下载本文档

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

文档简介

基于单片机的温湿度检测仪的设计温度是表示物体冷热程度的物理量,微观上来讲是物体分子热运动的剧烈程度。在整个宇宙当中,温度无处不存在。无论在地球上还是在月球上,也无论是在炽热的太阳上还是在阴冷的冥王星上,这一切无不由于空间位置的不同而存在着温度的差别。湿度是表示大气干燥程度的物理量。在一定的温度下在一定体积的空气里含有的水汽越少,则空气越干燥;水汽越多,则空气越潮湿。空气的干湿程度叫做“湿度”。在此意义下,常用绝对湿度、相对湿度、比较湿度、混合比、饱和差以及露点等物理量来表示。湿度表示气体中的水蒸汽含量,有绝对湿度和相对湿度两种表示方法。绝对湿度是一定体积的空气中含有的水蒸气的质量,一般其单位是克/立方米,绝对湿度的最大限度是饱和状态下的最高湿度;相对湿度是绝对湿度与最高湿度之间的比,它的值显示水蒸气的饱和度有多高。温度、湿度和人类的生产、生活有着密切的关系,同时也是工业生产中最常见最基本的工艺参数,例如机械、电子、石油、化工等各类工业中广泛需要对温度、湿度的检测与控制。并且随着人们生活水平的提高,人们对自己的生存环境越来越关注,而空气中温湿度的变化与人体的舒适度和情绪都有直接的影响,所以对温度、湿度的检测就非常有必要了。目 录摘要一、温、湿度测量的目的及要求二、设计所需元件清单三、单片机实现温、湿度测量3.1 原理图及说明3.2 设计理念及实现方法四、温、湿度传感器及液晶显示12864简介及应用4.1 温、湿度传感器4.2 液晶显示12864简介及应用五、各个模块设计流程图5.1 温度测量程序流程图5.2 湿度测量程序流程图5.3 显示程序流程图六、VC、VB界面显示结论参考文献附录一、源程序代码附录二、硬件实现与仿真图摘 要随着科学技术的日新月异,人类社会取得了长足的进步!在居家生活、工农业生产、气象、环保、国防、科研、航天等部门,经常需要对环境中的湿度和温度进行测量及控制。本设计设计了一个智能化的温湿度测量应用系统。本系统采用技术成熟的DHT11作为测量湿度和温度的传感器。控制系统芯片采用技术成熟,功能强大、价位低廉大众化的AT89C51单片机。DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。每个DHT11传感器都在精确的湿度校验箱中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。LCD显示电路,声光报警电路都由AT89C51单片机控制。同时设计了能给系统提供稳定工作电压的电源电路。为了提高系统的抗干扰性能,对湿度、温度的检测采用了硬件抗干扰和软件抗干扰的综合方法。最后设计了系统各个功能部分的软件程序。由本设计课题做成的温湿度检测系统结构简单、价格便宜、量程宽,具有较高的可靠性、安全性及实用性。AbstractWith the rapid development of science and technology, human society has achieved great progress! In the life that occupy the home, industry, agriculture, national defense, weather, environmental protection and scientific research departments, such as aerospace, often need to the environment humidity and temperature measurement and control. The design of an intelligent humidity measuring the application systems. The system adopts the technology DHT11 as measuring the humidity and temperature sensor. Control system chip adopt mature technology, powerful, price cheap popular AT89C51. Each DHT11 sensors are accurate calibration of humidity in calibration. In the form of calibration coefficient of the program memory, OTP stored in sensor signal detection in the internal process to call these calibration factor. Wired system, system integration serial interface becomes easy. LCD display circuit, sound-light alarm circuit controlled by AT89C51. The system can be designed to provide a stable working voltage of power supply circuit. In order to improve the system of anti-jamming performance of temperature, humidity, using the hardware and software anti-interference synthesis method. Finally the design of the system software program each function. By this design task to make the temperature and humidity of the detection system structure is simple, cheap price, wide range, high reliability, safety and practicality.一、温湿度测量的目的及要求1、作品设计目的在重要的设备房间中,设备对温、湿度等运行环境的要求非常严格。对于面积较大的房间,由于气流及设备分布的影响,温湿度值可能会有较大的区别。所以应根据主房间实际面积在房间加装温湿度传感器,以实时客观检测房间内的温、湿度。在监控本系统,温湿度一体化传感器将把检测到的温湿度值实时传送到监控主机中,并在监控界面上以图形形式直观地表现出来。管理员可实时了解房间各点的实际温湿度值,一旦房间内实际温、湿度值越限,系统将自动弹出报警框并触发报警,提示管理员通过调节送风口的位置、数量,设定空调的运行温湿度值,尽可能让房间各点的温湿度趋向合理,确保房间设备的安全正常运行。 2、作品设计内容及要求 1设计一个温湿度侧量电路,要求: (1)用89X51单片机通过编程来控制温湿度的显示 (2)液晶要准确显示外界的温、湿度的大小 (3)具有超温、湿度测量报警装置 2用中、小规模集成电路组成测量系统,并在实验仪器(可在面包板)上进行组装、调试。3 画出各单元电路图、整机功能框图和逻辑电路图,写出设计和实验总结报告二、设计所需元件清单 5V电源 万用表 杜包线若干。 12864液晶显示各1块。 80X51单片机芯片1块。 DHT11湿度传感器1个 排阻2排 电阻若干 20pf电容若干 蜂鸣器1个。 32768HZ时钟晶体1个 回弹开关1个 按钮开关2个三、单片机实现温湿度测量1、原理图容下所示:由控制器单片机89x51、复位电路、DHT11温湿度检测系统、报警电路及12864显示系统组成。2、控制系统芯片采用技术成熟,功能强大、价位低廉大众化的AT89C51单片机。DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接;采用12864LCD显示温湿度同时应用VC界面显示数据使温湿度变化便于观测。四、 温、湿度传感器及12864显示简介一、DHT11湿度传感器简介DHT11的供电电压为35.5V。传感器上电后,要等待1s 以越过不稳定状态在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波。DATA 用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:一次完整的数据传输40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。1、总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开始信号结束后,延时等待20-40us后, 读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可, 总线由上拉电阻拉高。2、总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总线拉高80us,准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定了数据位是0还是1.格式见下面图示.如果读取响应信号为高电平,则DHT11没有响应,请检查线路是否连接正常.当最后一bit数据传送完毕后,DHT11拉低总线50us,随后总线由上拉电阻拉高进入空闲状态。二、12864液晶显示简介 1、12864液晶接口说明:(1) 液晶2、3端为电源和地;19、20为背光电源;(2) 液晶4端为液晶对比度调节端,在首次使用时,在液晶上电情况下,调节至液晶上面一行显示出黑色小格为止;(3) 液晶8端为向液晶控制器写数据/写命令端;(4) 液晶5、6端为读/写选择端,此处我们不读取数据则接地(5) 液晶7端为使能信号端(6) 液晶9端为复位端2、12864 读写时序图如下: 读写操作时序 数据与命令时序3、基本操作时序 (1)读状态:输入:RS=L,RW=H,E=H 输出:D0D7=状态字 (2)写指令:输入:RS=L,RW=L, D0D7=指令码,E=高脉冲 输出:无 (3)读数据:输入:RS=H,RW=H,E=H 输出:D0D7=数据 (4)写数据:输入:RS=H,RW=L, D0D7=数据,E=高脉冲 输出:无4、初始化过程(复位过程)指令:(1)延时15毫秒(2)写指令38H;显示模式设置(3)写指令08H;显示关闭(4)写指令01H;显示清屏(5)写指令06H;显示光标移动设置(6)写指令0CH;显示开及光标设置五、各个模块流程设计图1、温度模块控制流程图:2、湿度模块控制流程图: 3、显示模块流程图:4、DHT11的温度报警子程序图:5、万年历程序流程图:五、设计总结方案一 基于DHT11温湿度传感器和Visual Basic上位机界面的设计由于使所检测的温湿度更具有实际用途,我们决定将温湿度值和万年历一起以汉字的形式显示出来,这样就能实际应用在仓库检测中,工作人员能实时通过万年历来记录产品的温湿度值,并通过串口通信将数据传送到PC机上,管理人员就能“足不出户”地监测各个仓库的情况。通过所检测的温湿度值,我们能通过文字的形式实时显示三种报警状态:温报警、湿报警、温湿报警。为什么采用dhtX系列的温湿度传感器?由于shtX系列的温湿度传感器价格在25-80元/个之间,而dht系列普遍较为便宜,一般在10元/个以下,故经过相关资料的查询,最终选择了性价比较高的dht11作为此次设计的温湿度传感器。有利就有弊,dht11然而在最为常用的电路仿真软件Proteus中都没有其仿真元件,也就是说只有直接通过硬件仿真来实现了,这无疑增加了设计的难度,因为直接通过硬件仿真并不能确保硬件焊接的电路没有一点错误,而用电路仿真软件Proteus就只要考虑程序的问题,大大减少了设计的困难,降低了难度。具体设计的步骤:在网上和图书馆查阅有关温湿度传感器的相关资料及有关参考程序;结合有关dht11温湿度传感器的相关典型硬件连接电路来焊接网购的dht11元件,组成一个小型功能模块;根据所查资料,编写相应程序,用能写汉字的12864液晶来即时显示检测传回的数据,然后就下载到硬件中不断调试程序直到传回的数据稳定显示为止;考虑到数据的实时性,因此将液晶万年历也集成显示在12864液晶上,同时将温湿度和时间的信息显示出来。为了更好的管理仓库,设定了温湿度报警装置,当温度和湿度其中有一种超过设定的范围时就会使流水灯的一旁的四个灯全闪烁,温湿度分别各四个为一排灯,同时蜂鸣器滴答报警。当两者共同超过时就会同时报警。同时也考虑到温湿度传感器的串口通信功能和在实际远程控制温湿度中的应用,又通过查阅相关书籍,自学了Visual Basic来用电脑的上位机界面显示12864液晶上温湿度数据,进行远程监控。以下说明每一步骤中遇到的问题和解决的方法:步骤1:由于dht11远没有shtX系列的温湿度传感器应用广泛,因此查阅资料既困难又极其重要,因为这是对新事物从陌生到熟悉的过程。只有了解它,我们才能操作它,用它来为我们服务。最后将百度的相关信息查询完后终于苦尽甘来,一两个程序和元件资料包让我逐渐一点一点了解了它,操作它就指日可待了。步骤2:在下图所示的电路图中,由于电路简单,我们直接用电烙铁将dht11焊接起来,没有用到软件制板。经过万用表的检测线路是否连接错误后,形成了温湿度检测的小模块。步骤3、4:由于编写程序时,没有考虑到串口通信中传回PC的数据的十六进制与显示字符之间的数据处理关系,导致在串口助手软件中只显示了传回的最后一个十六进制数所对应的ASC的字符,找到问题的解决关键所在后,经过数的分位与字符显示后,成功的显示了传回的温度、湿度的数据,让我们距离成功只差一小步了。接下来的任务就是显示在12864液晶上,根据之前单独在其上显示过液晶万年历的基础,知道只要将dht11检测的数据进行相应处理后并且与液晶万年历的显示集成一起送显示就行了。理论虽简单,但实际在下载到芯片中检测现象时,我们发现分别单独显示两者的数据没有问题,但集成在一块显示不久就会花屏的现象,问题出在刷新汉字时,指针光标的位置修改错误所导致的。之后经过重新写回指针后就达到了较为满意的效果。在报警程序的设置上,主要解决蜂鸣器报警间隔和流水灯闪烁的时间匹配问题,让两者现象统一。步骤5:根据查阅相关Visual Basic的书籍后知道,只要将传到串口助手上的数据经过在Visual Basic的相关控件中编写代码就能将数据通过Visual Basic软件显示出来,并且能实现高层管理人员对工厂运作情况的一个远程控制。在具体编写中,学习到由于程序中的一个MSComm控件只能对应一个串行端口,故在绘制VB的界面图时,只能在一个MSComm中显示温度与湿度两个数据,这就使得在两个MSComm中分别显示温度与湿度成为泡影,因为只有一个串口上传,但又要很明显的区分出来,而不能将两者紧挨着显示以免误看,故将MSComm控件的MultiLine属性设置为Ture即可,这样方框就调整为刚好在两行分别显示数据的形式便达到了目的。MSComm的代码:Private Sub MSComm1_OnComm() Dim rec As String Select Case MSComm1.CommEvent Case comEvReceive rec = MSComm1.Input Text1.Text = rec MSComm1.InBufferCount = 0 End SelectEnd SubTextBox的代码:Private Sub Form_Load() MSComm1.Settings = 9600,N,8,1 MSComm1.CommPort = 3 MSComm1.InBufferSize = 8 MSComm1.OutBufferSize = 2 If MSComm1.PortOpen = True Then MSComm1.PortOpen = False MSComm1.RThreshold = 4 MSComm1.SThreshold = 2 MSComm1.InputLen = 0 MSComm1.InputMode = comInputModeText If MSComm1.PortOpen = False Then MSComm1.PortOpen = True MSComm1.InBufferCount = 0 Me.Caption = 温湿度显示End Sub VB界面的显示其中“花屏”问题的原因与解决方法:由于12864这种能写汉字的液晶显示要在同一个位置刷新汉字就必须注意指针光标的位置,否则就会出现所想写的汉字与所要显示的汉字不匹配的情况,甚至还可能出现显示一段时间后“花屏”。因为汉字是同时显示两个字节,而1602是显示一个字节,这可能就是两者的最大区别,为此我们每刷新一次汉字立即调整指针光标到之前的位置,便将棘手的问题迎刃而解。方案二 基于DHT11温湿度传感器的Visual C+上位机界面的设计由于DHT11的温度误差为2,仓库温度要求不高因此我们设计了适用范围一般的DHT11来检测温度和湿度,避免了精度不高,提高了检测的准确性。遇到的问题和解决的方法:由于要将温度值和液晶万年历同时在12864的液晶上显示,这就会使两者的显示数据出现混叠的现象,因为液晶万年历每一秒的刷新频率和DHT11的检测数据刷新频率不一致所导致的,为此我们只要检测的温度值每一秒钟刷新一次即可。VC界面显示图参考文献1 侯建军. 电子技术基础实验、综合设计与课程设计.北京:高教出版社 2007,10(第一版)2 童诗白,华成英模拟电子技术基础北京:清华大学教研组编 3 阎石数字电子技术基础。北京:清华大学教研组编4 李朝青单片机原理及接口技术 北京:航空航天大学出版社2005,10.(第三版)5 蔡方凯单片机原理及基于单片机的嵌入式系统设计 中国水利水电出版社20076 张永枫单片机应用实训教程西安电子科技大学出版,20057 谢自美电子线路设计、实验、测试华中理工大学出版社,20008 郭天祥十天学会单片机。电子工业出版社,20089 /Html/DownView.asp?ID=15&SortID=4附录一 /*/远程监测的工厂温湿度检测仪/*/#include#define uchar unsigned char#define uint unsigned int/*端口定义*/sbit LCD_RS=P35; /寄存器选择输入sbit LCD_RW=P36;/液晶读/写控制sbit LCD_EN=P34;/液晶使能控制sbit LCD_PSB=P37;/串/并方式控制sbit s1=P20;/调时开/关sbit s2=P21;/调时+sbit s3=P22;/调时-sbit buzzer=P27;/蜂鸣器sbit P2_6=P26; /P2.6口为通讯口连接DHT11typedef unsigned char U8;typedef unsigned int U16;char sec,min,hour,week,day=1,month=1,year;uchar a,flag,flag2;uchar s1num;uchar code dis1=2000年01月01日;uchar code dis2=00时00分00秒;uchar code dis3=温度:00 星期日;uchar code dis4=湿度:00 上传.;uchar code dis5=0x20,0x20,0xce,0xc2,0xb1,0xa8,0xbe,0xaf; /空温报警uchar code dis6=0x20,0x20,0xca,0xaa,0xb1,0xa8,0xbe,0xaf; /空湿报警uchar code dis7=0xce,0xc2,0xca,0xaa,0xb1,0xa8,0xbe,0xaf; /温湿报警uchar code dis8=0x20,0x20,0xc9,0xcf,0xb4,0xab,0x2e,0x2e; /空上传.uchar code disx=0xc8,0xd5,0xd2,0xbb,0xb6,0xfe,0xc8,0xfd,0xcb,0xc4,0xce,0xe5,0xc1,0xf9;/日,一,二,三,四,五,六(两个字节为一个汉字)/-定义区-/U8 U8FLAG,k;U8 U8count,U8temp;U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata,U8T_data_H1,U8T_data_L1,U8RH_data_H1,U8RH_data_L1;U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;U8 U8comdata;U8 outdata5; /定义发送的字节数 U8 indata5;U8 count, count_r=0;U8 str5=ZPF ;U16 U16temp1,U16temp2;/*延时1ms子函数*/void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/*延时子函数*/void Delay2(U16 j) U8 i; for(;j0;j-)for(i=0;i27;i+);/*延时10us子函数*/void Delay_10us(void)U8 i;i-;i-;i-;i-;i-;i-;/*发送字符串子函数*/SendData(U8 *a)outdata0 = a0; outdata1 = a1;outdata2 = a2;outdata3 = a3;count = 1;SBUF=outdata0;/*写指令子函数*/*RS=0,RW=0,E=0,D0-D7=指令码*/void write_com(uchar com)LCD_RS=0;LCD_RW=0;LCD_EN=0;P0=com;delay(5);LCD_EN=1;delay(5);LCD_EN=0;/*写数据子函数*/*RS=1,RW=0,E=0,D0-D7=数据*/void write_dat(uchar dat)LCD_RS=1;LCD_RW=0;LCD_EN=0;P0=dat;delay(5);LCD_EN=1;delay(5);LCD_EN=0;/*设定显示位置*/void lcd_pos(uchar X,uchar Y)uchar pos;if(X=0) X=0x80;else if(X=1) X=0x90;else if(X=2) X=0x88;else if(X=3) X=0x98;pos=X+Y;write_com(pos);/*LCD初始化设定*/void init()LCD_PSB=1; /并口方式write_com(0x30); /基本指令操作delay(5);write_com(0x0c); /显示开,关光标delay(5);write_com(0x01); /清除LCD的显示内容delay(5);TMOD=0x21;TH0=0x4c;TL0=0x00;ET0=1;EA=1;TR0=1;TH1 = 253; / 设置初值TL1 = 253;TR1 = 1; / 开始计时SCON = 0x50; /工作方式1,波特率9600bps,允许接收 ES = 1;EA = 1; / 打开所以中断 TI = 0;RI = 0;SendData(str); /发送到串口 Delay2(1); /*写年月日子函数*/void write_ymd(uchar add,uchar dat)uchar shi,ge;shi=dat/10;ge=dat%10;write_com(0x80+add);write_dat(0x30+shi);write_dat(0x30+ge);/*写时分秒子函数*/void write_hms(uchar add,uchar dat)uchar shi,ge;shi=dat/10;ge=dat%10;write_com(0x90+add);write_dat(0x30+shi);write_dat(0x30+ge);/*温度显示子函数*/void write_tem(uchar add)write_com(0x88+add);write_dat(str2);write_dat(str3); /*湿度显示子函数*/void write_hum(uchar add)write_com(0x98+add);write_dat(str0);write_dat(str1); void COM(void)U8 i;for(i=0;i8;i+) U8FLAG=2;while(!P2_6)&U8FLAG+);Delay_10us();Delay_10us();Delay_10us();U8temp=0;if(P2_6)U8temp=1;U8FLAG=2;while(P2_6)&U8FLAG+);/超时则跳出for循环 if(U8FLAG=1)break;/判断数据位是0还是1 / 如果高电平高过预定0高电平值则数据位为 1 U8comdata=1;U8comdata|=U8temp; /*温湿度读取子函数*/void RH(void)/主机拉低18ms P2_6=0;Delay2(180);P2_6=1;/总线由上拉电阻拉高 主机延时20usDelay_10us();Delay_10us();Delay_10us();Delay_10us();/主机设为输入 判断从机响应信号 P2_6=1;/判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行 if(!P2_6) /T ! U8FLAG=2;/判断从机是否发出 80us 的低电平响应信号是否结束 while(!P2_6)&U8FLAG+);U8FLAG=2;/判断从机是否发出 80us 的高电平,如发出则进入数据接收状态while(P2_6)&U8FLAG+);/数据接收状态 COM();U8RH_data_H_temp=U8comdata;COM();U8RH_data_L_temp=U8comdata;COM();U8T_data_H_temp=U8comdata;COM();U8T_data_L_temp=U8comdata;COM();U8checkdata_temp=U8comdata;P2_6=1;/数据校验 U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);if(U8temp=U8checkdata_temp)U8RH_data_H1=U8RH_data_H_temp;U8RH_data_L1=U8RH_data_L_temp;U8T_data_H1=U8T_data_H_temp;U8T_data_L1=U8T_data_L_temp;U8checkdata=U8checkdata_temp;U8RH_data_H=U8RH_data_H1/10;U8RH_data_L=U8RH_data_H1%10;U8T_data_H=U8T_data_H1/10;U8T_data_L=U8T_data_H1%10;/*键盘扫描子函数*/ void keyscan()if(s1=0)delay(5);/延时5ms去抖动!if(s1=0)while(!s1);s1num+;if(s1num=1)TR0=0;write_com(0x80+1);write_com(0x0f);if(s1num=2)write_com(0x80+3);if(s1num=3)/TR0=0; 上一次已经停了。write_com(0x80+5);/write_com(0x0f);if(s1num=4)/TR0=0; 上一次已经停了。write_com(0x90+0);/write_com(0x0f);if(s1num=5)/TR0=0; 上一次已经停了。write_com(0x90+2);/write_com(0x0f);上一次光标已闪烁if(s1num=6)/TR0=0; 上一次已经停了。write_com(0x90+4);/write_com(0x0f);上一次光标已闪烁if(s1num=7)write_com(0x88+7);if(s1num=8)s1num=0;TR0=1;write_com(0x0c);if(s1num!=0)/*按键计数加*/if(s2=0)delay(5);if(s2=0)while(!s2);/消抖,否则就会一下加很多/*调节修改显示的位置*/if(s1num=1)year+;if(year=99)year=0;/刷新年!write_ymd(1,year);write_com(0x80+1);if(s1num=2)month+;if(month=13)month=1;/刷新月!write_ymd(3,month);write_com(0x80+3);if(s1num=3)day+;if(day=32)day=1;/刷新日!write_ymd(5,day);write_com(0x80+5);if(s1num=4)hour+;if(hour=24)hour=0;/刷新时!write_hms(0,hour);write_com(0x90+0);if(s1num=5)min+;if(min=60)min=0;/刷新分!write_hms(2,min);write_com(0x90+2);if(s1num=6)sec+;if(sec=60)sec=0;/刷新秒!write_hms(4,sec);write_com(0x90+4);if(s1num=7)uchar i;week+;if(week=7)week=0;/刷新星期! i=2*week;while(i2*week+2)write_dat(disxi);i+; write_com(0x88+7);/*按键计数减*/if(s3=0)delay(5);if(s3=0)while(!s3);/消抖,否则就会一下加很多/*调节修改显示的位置*/if(s1num=1)year-;if(year=-1)year=99;write_ymd(1,year);write_com(0x80+1);if(s1num=2)month-;if(month=0)month=12;write_ymd(3,month);write_com(0x80+3);if(s1num=3)day-;if(day=0)day=31;write_ymd(5,day);write_com(0x80+5);if(s1num=4)hour-;if(hour=-1)hour=23;write_hms(0,hour);write_com(0x90+0);if(s1num=5)min-;if(min=-1)min=59;write_hms(2,min);write_com(0x90+2);if(s1num=6)sec-;if(sec=-1)sec=59;write_hms(4,sec);write_com(0x90+4);if(s1num=7)uchar i;week-;if(week=-1)week=6;i=2*week;while(i2*week+2)write_dat(d

温馨提示

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

评论

0/150

提交评论