版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 大学生电子竞赛设计报告项目名称: 环境温度监控报警系统组 长: 王伟涛 组 员: 王塨、张峰 系 别: 物理系 专 业: 光电器件及其应用方向指导教师: 李清贵 完成时间: 2015年7月25日 摘要:本着熟悉单片机编程,系统设计的目的,增强动手合作能力,选择了做单片机实时温度监控报警系统这个实验项目。本开放性实验主要由AT89C52芯片、1602液晶显示器、DS18B20数字式温度传感器、蜂鸣器等组成。通过温度传感器实时采集环境温度显示在液晶屏上,并经过单片机处理,设置两个上限温度报警值,本系统可用于智能家居温控报警,车间温控等,具有一定推广价值。关键字:温度报警 温度上下限 AT89C5
2、2单片机 液晶LCD1602 温度传感器DS18B20 Abstract: In the design of the single chip microcomputer programming, system design, enhance the ability to work, the choice of real-time temperature monitoring and control system of single-chip microcomputer. This open experiment is mainly made up of AT89C52 chip, 1602 L
3、CD, DS18B20 digital temperature sensor, buzzer and so on. Through the temperature sensors to collect the environmental temperature display on the LCD screen, and through the SCM processing, set two upper limit temperature alarm value, the system can be used for the intelligent home control alarm, wo
4、rkshop temperature control, with certain value of popularization.Key words: temperature alarm Upper and lower limits of temperature temperatureAT89C52 microcontroller LCD LCD1602 temperature sensor DS18B20一、课程设计任务11.1、功能介绍1二、系统整体设计方案12.1、系统组成及功能12.2、系统框架2三、硬件电路设计23.1、单片机模块33.1.1、AT89C52简介33.1.2、AT89
5、C52的资源:43.1.3、引脚说明43.1.4、单片机模块电路设计73.2传感器模块73.2.1、DS18B20简介73.2.2、DS18B20引脚说明83.3、液晶显示模块93.3.1、1602LCD液晶显示屏简介93.3.2、1602引脚说明93.3.3、1602电路设计10四、软件模块设计104.1、主程序流程框图104.2、显示模块124.2.1程序编写说明124.2.2、显示子程序124.3、温度传感器模块134.3.1、程序编写说明134.3.2、温度传感器读取温度以及显示温度的子程序:15五、结论18六、致谢20七、参考文献21八、附录228.1、实物图228.2、仿真图238
6、.3、总程序24一、课程设计任务1.1、功能介绍本环境温度监控报警系统以STC89C52单片机为核心,通过单线数字温度传感器DS18B20来进行收集当前环境温度,用矩阵键盘输入设置两个上线环境温度值,用1602液晶显示屏显示当前温度值和设置好的两个上线环境温度值,用蜂鸣器和LED灯作为警报,从而可以实现以下功能:(1)可以对当前环境温度进行测量温度测量范围:090摄氏度,误差0.1摄氏度(2)可通过1602LCD液晶显示屏显示出来当前环境温度值和设置的两个上线温度值,并且数值可以达到小数点后一位。(3)可以通过矩阵键盘实时对两个上线环境温度值调控(4)当环境温度大于上限的较小值时会亮绿灯并且蜂
7、鸣器会做频率较低的长声报警,当大于较大值时两灯都会亮并且蜂鸣器会做频率较高的报警。(5)通过定时器编一个时钟实时显示当前时间,当环境温度大于上限温度时会停止时间,记下事故发生时间。二、系统整体设计方案2.1、系统组成及功能 本系统共分为六个模块。(1)单片机模块,这部分主要实现数据的处理,输出执行,报警设置功能(主要模块)(2)液晶显示模块可以分别显示实时温度值,温度上下限。(主要模块)(3)温度传感模块的主要功能是通过DS18B20的强大功能实现对温度的采集。(主要模块)(4)蜂鸣器模块可以发出报警声。(5)按键可以设置时间和上限的两个温度值(6)LED灯模块可以显示报警信号2.2、系统框架
8、温度读取液晶显示AT89C52控制器键盘扫描并设置蜂鸣器LED灯 图1三、硬件电路设计本系统由温度传感器DS18B20模块、单片机AT89C52模块、LCD液晶显示1602模块、蜂鸣器模块、LED灯模块、键盘模块六大模块组成,3.1、单片机模块3.1.1、AT89C52简介该环境温度监控报警系统所用的单片机是AT89C52单片机,又图2为AT89C52单片机引脚图,AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,
9、兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,该型号的单片机是应用量最多最普遍的单片机,它具有性能稳定、抗干扰能力强、性价比高、适应温度范围广、功耗低、体积小的特点广泛应用于各种复杂环境及各电子行业中。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本因此我们选择了AT89C52单片机。3.1.2、AT
10、89C52的资源:(1)兼容MCS51指令系统(2)8kB可反复擦写(大于1000次)Flash ROM;(3)32个双向I/O口;(4)256x8bit内部RAM;(5)3个16位可编程定时/计数器中断; 图2(6)时钟频率0-24MHz;(7)2个串行中断,可编程UART串行通道;(8)2个外部中断源,共8个中断源;(9)2个读写中断口线,3级加密位;(10)低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;(11)有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。3.1.3、引脚说明(1)P0口P0 口是一组8 位漏极开路型双向I/O 口, 也即地址/数据总线复用
11、口。作为输出口用时,每位能吸收电流的方式驱动8 个TTL逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。(2)P1口P1 是一个带内部上拉电阻的8 位双向I/O 口, P1 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流
12、(IIL)。与AT89C51 不同之处是,P1.0 和P1.1 还可分别作为定时/计数器2 的外部计数输入(P1.0/T2)和输入(P1.1/T2EX)。(3)P2口P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16 位地数据存储器(例如执行MOVX DPTR 指令)时,P2 口送出高8 位地址数据。在访问8 位地址的外部数据存储器(如执行
13、MOVXRI 指令)时,P2 口输出P2锁存器的内容。(4)P3口P3 口是一组带有内部上拉电阻的8 位双向I/O 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3 口将用上拉电阻输出电流(IIL),P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能,P3 口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。(5)RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位.(6)ALE/PROG当访问外部程序存储器或数据存储器时,ALE(
14、地址锁存允许)输出脉冲用于锁存地址的低8 位字节。一般情况下,ALE 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE 脉冲。(7)PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。(8)EA/VPP外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000HFFFFH),EA 端必须保持低电平(接地)。需注意的是:如果加密位LB1
15、被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU 则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12V 的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。(9)XTAL1振荡器反相放大器及内部时钟发生器的输入端。(10)XTAL2振荡器反相放大器的输出端。 图33.1.4、单片机模块电路设计AT89C52单片机接线图如下图2P0接液晶数据口,P2.2和P2.3接2个发光二极管,P3接8个按钮,P2.4接蜂鸣器,P2.5接继电器,P2.6接液晶的RS,P2.7接液晶的EN,P1.2接温度传感器,其他按单片机最小系统连接。3.2传感器
16、模块3.2.1、DS18B20简介采用DALLAS最新单线数字温度传感器DS18B20。新的“一线器件”体积更小、适用电压更宽、更经济。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20“一线总线”数字化温度传感器也支持“一线总线”接口,测量温度范围为 -55°C+125°C,在-10+85°C范围内,精度为±0.5°C。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。DS18B20的特性:D
17、S18B20可以程序设定912位的分辨率,精度为±0.5°C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的 图4报警温度存储在EEPROM中,掉电后依然保存。DS18B20的性能是新一代产品中最好的!性能价格比也非常出色!继“一线总线”的早期产品后,DS1820开辟了温度传感器技术的新概念。DS18B20使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。3.2.2、DS18B20引脚说明DQ:数字信号输入输出端。GND:电源地端。VDD:外接供电电源输入端(在寄生电源接线时此脚应接地)。3.2.3 DS18B20引脚电路设计 图5
18、3.3、液晶显示模块 3.3.1、1602LCD液晶显示屏简介 采用LCD1602液晶显示模块,有体积小、功耗低、显示内容丰富、超薄轻巧等优点,在袖珍式仪表和低功耗应用系统中得 图6到广泛的应用。目前字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件。它可以显示两行,每行16个字符,采用单5V电源供电,外围电路配置简单,价格便宜,具有很高的性价比。3.3.2、1602引脚说明1602采用标准的16脚接口(1)第1脚:VSS为电源地(2)第2脚:VDD接5V电源正极(3)第3脚:V0为液晶显示器对比度调整端,接正极时对比度最弱,接地电源时对比度最高。 (4)第4脚:RS为寄存器选择,高
19、电平1时选择数据寄存器、低电平0时选择指令寄存器。 (5)第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 (6)第6脚:E(或EN)端为使能(enable)端。 (7)第714脚:D0D7为8位双向数据端。 (8)第1516脚:空脚或背光电源,15脚背光正极,16脚背光负极。3.3.3、1602电路设计 图7四、软件模块设计4.1、主程序流程框图开始液晶、定时器、变量初始化键盘扫描、按键处理时钟显示、温度转化并显示Yes温度小于较低温度值正常工作NoYes温度大于较低且小于温度值绿灯亮,有长报警声No温度大于较高温度值红绿灯亮,有短报警声,继电器控制开关断开,停
20、止时钟YesNo结束单片机温度实时监控报警系统流程图 图84.2、显示模块4.2.1程序编写说明寄 图9 图10 寄存器选择控制表RSR/W操作说明00写入指令寄存器(清除屏等)01读busy flag(DB7),以及读取位址计数器(DB0DB6)值10写入数据寄存器(显示各字型等)11从数据寄存器读取数据注:关于E=H脉冲开始时初始化E为0,然后置E为1,再清0.4.2.2、显示子程序void write_com(uchar com)/写液晶命令函数rs=0;lcden=0;P0=com;delay(3);lcden=1;delay(3);lcden=0;void write_date(uc
21、har date)/写液晶数据函数rs=1;lcden=0;P0=date;delay(3);lcden=1;delay(3);lcden=0;void write_sfm(uchar add,char date)/1602液晶刷新时分秒函数1为时,4为分,7为秒 char shiwei,gewei;shiwei=date/10;gewei=date%10;write_com(0x80+add);write_date(0x30+shiwei);write_date(0x30+gewei);void write_nyr(uchar add,char date)/1602液晶刷新年月日函数3为年,
22、6为分,9为秒char shiwei,gewei;shiwei=date/10;gewei=date%10;write_com(0xc0+add);write_date(0x30+shiwei);write_date(0x30+gewei);4.3、温度传感器模块4.3.1、程序编写说明 图11 图12初始化(1) 先将数据线置高电平“1”。(2) 延时(该时间要求的不是很严格,但是尽可能的短一点)(3) 数据线拉到低电平“0”。(4) 延时750微秒(该时间的时间范围可以从480到960微秒)。(5) 数据线拉到高电平“1”。(6) 延时等待(如果初始化成功则在15到60微秒时间之内产生一个
23、由DS18B20所返回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。(7) 若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。(8) 将数据线再次拉高到高电平“1”后结束。写操作(1) 数据线先置低电平“0”。(2) 延时确定的时间为15微秒。(3) 按从低位到高位的顺序发送字节(一次只发送一位)。(4) 延时时间为45微秒。(5) 将数据线拉到高电平。(6) 重复上(1)到(6)的操作直到所有的字节全部发送完为止。(7) 最后将数据线拉高。读操作
24、(1)将数据线拉高“1”。(2)延时2微秒。(3)将数据线拉低“0”。(4)延时3微秒。(5)将数据线拉高“1”。(6)延时5微秒。(7)读数据线的状态得到1个状态位,并进行数据处理。(8)延时60微秒。4.3.2、温度传感器读取温度以及显示温度的子程序:void dsreset(void) /18B20复位,初始化函数 uint i; ds=0; i=103; while(i>0)i-; ds=1; i=4; while(i>0)i-;bit tempreadbit(void) /读1位函数 uint i; bit dat; ds=0;i+; /i+ 起延时作用 ds=1;i+;
25、i+; dat=ds; i=8;while(i>0)i-; return (dat);uchar tempread(void) /读1个字节 uchar i,j,dat; dat=0; for(i=1;i<=8;i+) j=tempreadbit(); dat=(j<<7)|(dat>>1); /读出的数据最低位在最前面,这样刚好一个字节在DAT里 return(dat);void tempwritebyte(uchar dat) /向18B20写一个字节数据 uint i; uchar j; bit testb; for(j=1;j<=8;j+) t
26、estb=dat&0x01; dat=dat>>1; if(testb) /写 1 ds=0; i+;i+; ds=1; i=8;while(i>0)i-; else ds=0; /写 0 i=8;while(i>0)i-; ds=1; i+;i+; void tempchange(void) /DS18B20 开始获取温度并转换 dsreset(); delay(1); tempwritebyte(0xcc); / 写跳过读ROM指令 tempwritebyte(0x44); / 写温度转换指令uint get_temp() /读取寄存器中存储的温度数据 uc
27、har a,b; dsreset(); delay(1); tempwritebyte(0xcc); tempwritebyte(0xbe); a=tempread(); /读低8位 b=tempread(); /读高8位 temp=b; temp<<=8; /两个字节组合为1个字 temp=temp|a; f_temp=temp*0.0625; /温度在寄存器中为12位 分辨率位0.0625° temp=f_temp+0.5; /加0.5是四舍五入 return temp; /temp是浮点型五、结论紧紧张张的电子大赛培训也有一周之久了,首先给我们的感觉就是有好多东西都
28、不懂,但这未必是一件坏事,就像王老师说的一样,你越是不懂就说明你要学的东西很多,你的提升空间也就越大。我们组每天都是起早贪黑的工作者早上7:40准时在实验室坐着中午不休息一直到晚上10:40才回去,因为再晚回到宿舍就要关门了,当东西做不完时我们都有一种冲动晚上不回了,正是因为这种执着拼搏的精神使我们收获很多,每天我们都会感觉脑子里都是满满的不管是懂得的收获还是不懂得烦恼。从刚开始的什么也不懂到现在的protel画电路图、proteus仿真、腐蚀、打板,焊接、调试等一些东西基本上动能很好的掌握了,可以说这是一个巨大的进步,调试是一个复杂而漫长的过程,需要我们不断地去做,有一次我们的仿真也做出来了
29、,但是在实物上就是不行,结果总是不对,经过一上午的检查调试终于知道了是我们的一根线接反了,开始的时候我们还以为是在焊接时由于高温而把与器件烧了呢,于是我们有万能表一个一个的检查电路。从这可以看出这是一个看似简单而最容易出错的过程,需要我们的耐心和细心。现在我们的环境温度监控报警系统已经做出来了,它可以收集环境的温度并在显示屏上显示出来,我们可以用矩阵键盘设置两个上线温度值,当检测到的环境温度值大于最小上线温度时二极管会闪烁并且蜂鸣器会做频率较低的报警,当环境温度大于较大上线温度值时二极管会闪烁并且蜂鸣器会做频率较高的报警。它具有一定的使用价值可以用于仓库、实验室、机房以及军事等设备上。该系统的
30、整体设计还是有很大的提升空间的,比如让它也可以监控低温,当温度低于设置温度值时也能够做出一些指示报警。另一方面,该系统只是报警这是不够的,最终还是需要人去做出反应,我们可以让它自动切断电源,从而保护设备,这样使其更具有自动化,从而会有更大的推广应用范围。六、致谢本次项目从开始设计到最后完工涉及到大量的知识应用,我们的指导老师李清贵老师一直孜孜不倦的指导我们,给我们提供帮助,特别是当遇到单片机上的问题。在此我们感谢李清贵老师。在项目设计的过程中有杨彦伟老师、李浩平老师和王晓军老师的监督管理以及在知识、器材、元件方便对我们的帮助,在此我们一并表示致谢!对当我们遇到问题时给我们提供帮助的同学们在此我
31、们同样便是感谢。感谢一路上有你们的陪伴,真心的感谢你们!七、参考文献1、唐颖.单片机技术及C51程序设计.电子工业出版社.20122、黄智伟.全国大学生电子设计竞赛训练教程.电子工业出版社.20103、郭天祥.51单片机C语言教程.电子工业出版社.20094 李朝清.单片机原理及接口技术.北京航空航天大学出版社,1996.85 于永权.89系列(MCS-51兼容)Flash单片机原理及应用.北京:电子工业出版社,19976 百度文库7 宋文续,扬帆.传感器与检测技术.北京:高等教育出版社,2005.48 常健生.检测与转换技术.北京:机械工业出版社,2004.69 凌志浩.智能仪表原理与设计技
32、术.上海:华东理工大学出版社,2003.8八、附录8.1、实物图8.2、仿真图8.3、总程序#include<reg51.h>#define uchar unsigned char #define uint unsigned intsbit rs=P26;sbit lcden=P27;sbit jidianqi=P25;sbit s1=P30;/功能键sbit s2=P31;/增加键sbit s3=P32;/减小键sbit beep=P15;/蜂鸣器sbit led1=P10;sbit led2=P11;sbit ds=P37; /温度传感器uint warnl=33; /下限温度
33、uint warnh=35; /上限温度uint temp;/整形温度数据float f_temp;/浮点型温度数据uchar count,stop,s1num,s2num;/其它变量定义char miao,shi,fen;uchar code table=" : : "/液晶固定显示内容uchar code table1=" L H: "void delay(uint z)/延时函数uint x,y;for(x=z;x>0;x-)for(y=124;y>0;y-); void di() /蜂鸣器报警声音beep=0;delay(100);b
34、eep=1; /*=液晶操作=*/void write_com(uchar com)/写液晶命令函数rs=0;lcden=0;P0=com;delay(3);lcden=1;delay(3);lcden=0;void write_date(uchar date)/写液晶数据函数rs=1;lcden=0;P0=date;delay(3);lcden=1;delay(3);lcden=0;void write_sfm(uchar add,char date)/1602液晶刷新时分秒函数1为时,4为分,7为秒 char shiwei,gewei;shiwei=date/10;gewei=date%1
35、0;write_com(0x80+add);write_date(0x30+shiwei);write_date(0x30+gewei);void write_sfm1(uchar add,int temp)char shiwei,gewei,xswei;shiwei=temp/100;gewei=temp%100/10;xswei=temp%100%10;write_com(0x80+add);write_date(0x30+shiwei);write_date(0x30+gewei);write_date(0x2e);write_date(0x30+xswei);void write_ny
36、r(uchar add,char date)/1602液晶刷新年月日函数3为年,6为分,9为秒char shiwei,gewei;shiwei=date/10;gewei=date%10;write_com(0xc0+add);write_date(0x30+shiwei);write_date(0x30+gewei); /*=*/*=ds18B20程序=*/void dsreset(void) /18B20复位,初始化函数 uint i; ds=0; i=103; while(i>0)i-; ds=1; i=4; while(i>0)i-;bit tempreadbit(void
37、) /读1位函数 uint i; bit dat; ds=0;i+; /i+ 起延时作用 ds=1;i+;i+; dat=ds; i=8;while(i>0)i-; return (dat);uchar tempread(void) /读1个字节 uchar i,j,dat; dat=0; for(i=1;i<=8;i+) j=tempreadbit(); dat=(j<<7)|(dat>>1); /读出的数据最低位在最前面,这样刚好一个字节在DAT里 return(dat);void tempwritebyte(uchar dat) /向18B20写一个字
38、节数据 uint i; uchar j; bit testb; for(j=1;j<=8;j+) testb=dat&0x01; dat=dat>>1; if(testb) /写 1 ds=0; i+;i+; ds=1; i=8;while(i>0)i-; else ds=0; /写 0 i=8;while(i>0)i-; ds=1; i+;i+; void tempchange(void) /DS18B20 开始获取温度并转换 dsreset(); delay(1); tempwritebyte(0xcc); / 写跳过读ROM指令 tempwriteb
39、yte(0x44); / 写温度转换指令uint get_temp() /读取寄存器中存储的温度数据 uchar a,b; dsreset(); delay(1); tempwritebyte(0xcc); tempwritebyte(0xbe); a=tempread(); /读低8位 b=tempread(); /读高8位 temp=b; temp<<=8; /两个字节组合为1个字 temp=temp|a; f_temp=temp*0.625; /温度在寄存器中为12位 分辨率位0.0625° temp=f_temp+0.5; /加0.5是四舍五入 return te
40、mp; /temp是浮点型 /*=*/*=温度处理=*/void deal(uint t)if (t>warnh*10)jidianqi=1;TR0=0;led1=0;delay(100);led1=1;delay(100);led2=0;delay(100);led2=1;delay(100);di();delay(150);di();delay(100); if (t>warnl*10&&t<=warnh*10)led2=0;delay(100);led2=1;delay(100);di();delay(400);di();delay(100);/*=液晶
41、处理=*/ void init()/初始化函数uchar num;s1num=0;count=0;fen=0;miao=0;shi=0;lcden=0;jidianqi=1;led1=1;led2=1;write_com(0x38);/1602液晶初始化write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(num=0;num<15;num+)/写入液晶固定部分显示write_date(tablenum);delay(1);write_sfm(6,miao);/分别送去液晶显示write_sfm(3,fen)
42、;write_sfm(0,shi);write_com(0x8e);write_date(0xdf);write_date(0x43);write_com(0x80+0x40);for(num=0;num<15;num+)write_date(table1num);delay(1);write_com(0xc5);write_date(0xdf);write_date(0x43);write_com(0xcd);write_date(0xdf);write_date(0x43);TMOD=0x01;/设置定时器0工作模式1TH0=(65536-50000)/256;/定时器装初值TL0=
43、(65536-50000)%256;EA=1;/开总中断ET0=1;/开定时器0中断TR0=1;/启动定时器0/*=按键处理=*/void keyscan()/按键扫描函数if(s1=0)delay(5);if(s1=0)/确认功能键被按下s1num+;/功能键按下次数记录while(!s1);/释放确认di();/每当有按键释放蜂鸣器发出滴声if(s1num=1)/第一次被按下时TR0=0; /关闭定时器write_com(0x80+6);/光标定位到秒位置write_com(0x0f); /光标开始闪烁if(s1num=2)/第二次按下光标闪烁定位到分钟位置write_com(0x80+3
44、);if(s1num=3)/第三次按下光标闪烁定位到小时位置write_com(0x80+0);if(s1num=4) write_com(0xc0+3);if(s1num=5) write_com(0xc0+11);if(s1num=6)/第四次按下s1num=0;/记录按键数清零write_com(0x0c);/取消光标闪烁TR0=1;/启动定时器使时钟开始走if(s1num!=0)/只有功能键被按下后,增加和减小键才有效if(s2=0)delay(5);if(s2=0)/增加键确认被按下while(!s2);/按键释放di();/每当有按键释放蜂鸣器发出滴声if(s1num=1)/若功能键第一次按下miao+; /则调整秒加1if(miao=60)/若满60后将清零miao=0;write_sfm(6,miao);/每调节一次送液晶显示一下wri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 静电复印机项目营销计划书
- 扫雪机产业链招商引资的调研报告
- 创意写作行业相关项目经营管理报告
- 2024年份海鲜采购合同
- 2024年合作方:安能物流月结服务协议
- 软件开发外包协议书
- 2024年合作意向书模板:双方共同发展协议
- 2024年个人借给公司款项合同
- 医用球囊导管产业链招商引资的调研报告
- 2024年双边劳动合同范本
- 网络直播营销
- 2024年节能减排培训资料
- 2024传染病预防ppt课件完整版
- 2024年华融实业投资管理有限公司招聘笔试参考题库含答案解析
- 2024年1月普通高等学校招生全国统一考试适应性测试(九省联考)历史试题(适用地区:贵州)含解析
- 《宽容待人 正确交往》班会课件
- HSK五级必过考前辅导课件
- 小儿胃肠功能紊乱护理查房课件
- 大学生职业生涯规划书铁道工程
- 2024年中国铁路国际有限公司招聘笔试参考题库含答案解析
- 小学教育课件教案雪雕和冰雕的历史与传统
评论
0/150
提交评论