




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电路原理图程序1.main.c#include<reg51.h>#include"lcd.h"#include"temp.h"void LcdDisplay(int);sbit K1=P20;sbit K2=P21;sbit K3=P22;sbit K4=P23;extern int th=20;extern int tl=-10;sbit beep=P10;void main() LcdInit(); LcdWriteCom(0xc7);LcdWriteData('C'); while(1)if(K1=0)Delay1ms(
2、500);if(K1=0);th+;if(K2=0)Delay1ms(500);if(K2=0);th-;if(K3=0)Delay1ms(500);if(K3=0);tl+;if(K4=0)Delay1ms(500);if(K4=0);tl-;LcdDisplay(Ds18b20ReadTemp();void LcdDisplay(int temp) int i,tt,rr,mm; unsigned char datas = 0, 0, 0, 0,datas1 = 0, 0, 0,datas2 = 0, 0, 0;float tp; if(temp< 0) LcdWriteCom(0x
3、c0); LcdWriteData('-'); i=1;temp=temp-1;temp=temp;tp=temp;temp=tp*0.0625*10+0.5;mm=-temp; else LcdWriteCom(0xc0); LcdWriteData('+'); tp=temp;temp=tp*0.0625*10+0.5;mm=temp;datas0 = temp / 1000;datas1 = temp % 1000 / 100;datas2 = temp % 100 / 10;datas3 = temp% 10;if(th < 0) LcdWrite
4、Com(0x89); LcdWriteData('-'); tt=-th; else LcdWriteCom(0x89); LcdWriteData('+'); tt=th;datas10 = tt / 100;datas11 = tt% 100 / 10;datas12 = tt % 10;LcdWriteCom(0x87); LcdWriteData('H');LcdWriteCom(0x88); LcdWriteData(':');LcdWriteCom(0x8a); LcdWriteData('0'+dat
5、as10);LcdWriteCom(0x8b); LcdWriteData('0'+datas11);LcdWriteCom(0x8c); LcdWriteData('0'+datas12);if(tl < 0) LcdWriteCom(0x90); LcdWriteData('-'); rr=-tl; else LcdWriteCom(0x90); LcdWriteData('+'); rr=tl;datas20 = rr / 100;datas21 = rr% 100 / 10;datas22 = rr % 10;Lcd
6、WriteCom(0x8e); LcdWriteData('L');LcdWriteCom(0x8f); LcdWriteData(':');LcdWriteCom(0x91); LcdWriteData('0'+datas20);LcdWriteCom(0x92); LcdWriteData('0'+datas21);LcdWriteCom(0x93); LcdWriteData('0'+datas22);if(mm>=(th*10)|mm<=(tl*10)|th<=tl)beep=0;else
7、beep=1; LcdWriteCom(0x80); LcdWriteData('T'); LcdWriteCom(0x81); LcdWriteData('A'); LcdWriteCom(0x82); LcdWriteData('I'); LcdWriteData(' '); LcdWriteCom(0x84); LcdWriteData('A'); LcdWriteCom(0x85);LcdWriteData('N'); LcdWriteCom(0xc1); LcdWriteData('
8、;0'+datas0); LcdWriteCom(0xc2); LcdWriteData('0'+datas1); LcdWriteCom(0xc3);LcdWriteData('0'+datas2); LcdWriteCom(0xc4);LcdWriteData('.'); LcdWriteCom(0xc5);LcdWriteData('0'+datas3); LcdWriteCom(0xc6);LcdWriteData('"'); 2.lcd.h#ifndef _LCD_H_#define _
9、LCD_H_/*当使用的是4位数据传输的时候定义,使用8位取消这个定义*/#define LCD1602_4PINS/*包含头文件*/#include<reg51.h>/-重定义关键词-/#ifndef uchar#define uchar unsigned char#endif#ifndef uint #define uint unsigned int#endif/*PIN口定义*/#define LCD1602_DATAPINS P0sbit LCD1602_E=P27;sbit LCD1602_RW=P25;sbit LCD1602_RS=P26;/*函数声明*/*在51单片
10、机12MHZ时钟下的延时函数*/void Lcd1602_Delay1ms(uint c); /误差 0us/*LCD1602写入8位命令子函数*/void LcdWriteCom(uchar com);/*LCD1602写入8位数据子函数*/void LcdWriteData(uchar dat);/*LCD1602初始化子程序*/void LcdInit(); #endif3.temp.h#ifndef _TEMP_H_#define _TEMP_H_#include<reg51.h>sbit DSPORT=P37;void Delay1ms(unsigned int );un
11、signed char Ds18b20Init();void Ds18b20WriteByte(unsigned char com);unsigned char Ds18b20ReadByte();void Ds18b20ChangTemp();void Ds18b20ReadTempCom();int Ds18b20ReadTemp();#endif4.lcd.c#include"lcd.h"void Lcd1602_Delay1ms(uint c) /延时 uchar a,b;for (; c>0; c-) for (b=19;b>0;b-) for(a=1
12、;a>0;a-); #ifndef LCD1602_4PINS /当没有定义这个LCD1602_4PINS时void LcdWriteCom(uchar com) /写入一个字节命令LCD1602_E = 0; LCD1602_RS = 0; LCD1602_RW = 0; LCD1602_DATAPINS = com; Lcd1602_Delay1ms(1);LCD1602_E = 1; Lcd1602_Delay1ms(5); LCD1602_E = 0;#else void LcdWriteCom(uchar com) LCD1602_E = 0; LCD1602_RS = 0;
13、LCD1602_RW = 0; LCD1602_DATAPINS = com;/由于4位的接线是接到P0口的高四位,所以传送高四位不用改Lcd1602_Delay1ms(1);LCD1602_E = 1; Lcd1602_Delay1ms(5);LCD1602_E = 0;LCD1602_DATAPINS = com << 4; /发送低四位Lcd1602_Delay1ms(1);LCD1602_E = 1; Lcd1602_Delay1ms(5);LCD1602_E = 0;#endif #ifndef LCD1602_4PINS void LcdWriteData(uchar
14、dat)/写入一个字节数据LCD1602_E = 0;LCD1602_RS = 1;LCD1602_RW = 0;LCD1602_DATAPINS = dat; Lcd1602_Delay1ms(1); LCD1602_E = 1;Lcd1602_Delay1ms(5); LCD1602_E = 0;#elsevoid LcdWriteData(uchar dat)LCD1602_E = 0; LCD1602_RS = 1; LCD1602_RW = 0; LCD1602_DATAPINS = dat;/由于4位的接线是接到P0口的高四位,所以传送高四位不用改Lcd1602_Delay1ms(
15、1);LCD1602_E = 1; /写入时序Lcd1602_Delay1ms(5);LCD1602_E = 0;LCD1602_DATAPINS = dat << 4; /写入低四位Lcd1602_Delay1ms(1);LCD1602_E = 1; /写入时序Lcd1602_Delay1ms(5);LCD1602_E = 0;#endif #ifndefLCD1602_4PINSvoid LcdInit() /LCD初始化子程序 LcdWriteCom(0x38); LcdWriteCom(0x0c); LcdWriteCom(0x06); LcdWriteCom(0x01);
16、 LcdWriteCom(0x80); #elsevoid LcdInit() LcdWriteCom(0x32); LcdWriteCom(0x28); LcdWriteCom(0x0c); LcdWriteCom(0x06); LcdWriteCom(0x01); LcdWriteCom(0x80); #endif5.temp.c#include"temp.h"void Delay1ms(unsigned int y) /延时unsigned int x;for(y;y>0;y-)for(x=110;x>0;x-);unsigned char Ds18b20
17、Init()/初始化unsigned int i;DSPORT=0;i=70;while(i-);DSPORT=1;i=0;while(DSPORT)i+;if(i>5000)return 0;/失败return 1;/成功void Ds18b20WriteByte(unsigned char dat) /写字节unsigned int i,j;for(j=0;j<8;j+)DSPORT=0;/每写入一位数据之前先把总线拉低1us(数据手册上模糊)i+;DSPORT=dat&0x01; i=6;while(i-); DSPORT=1;dat>>=1;unsigned char Ds18b20ReadByte()unsigned char byte,bi;unsigned int i,j;for(j=8;j>0;j-)DSPORT=0;i+;DSPORT=1;i+;i+;bi=DSPORT; byte=(byte>>1)|(bi<<7); i=4;while(i-);return byte;void Ds18b20ChangTemp() /温度转换Ds18b20Init();Delay1ms(1);Ds18b20WriteByte(0xcc); Ds18b20WriteByte(0x44); void Ds18b20R
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届武汉市东西湖区三上数学期末检测模拟试题含解析
- 行政管理与公共关系学相辅相成的试题及答案
- 行政管理者如何提升公共关系能力试题及答案
- 中级经济师的国际投资环境试题及答案
- 2025年经济学考试实务试题及答案综述
- 电商平台用户数据隐私保护细则协议
- 食育课爆米花课件
- 旅游行业酒店服务标准考核试卷
- 行政管理专科公共关系学试题及答案见解
- 物流业绿色物流发展路径及技术应用研究
- MOOC 猪生产学-南京农业大学 中国大学慕课答案
- 内蒙古呼和浩特市2024届小升初考试语文试卷含答案
- 贵阳市普通住宅小区物业管理服务收费参考标准
- MOOC 地学景观探秘·审美·文化-重庆大学 中国大学慕课答案
- 丁苯橡胶工艺流程
- 安全生产事故报告处理制度范本
- (高清版)WST 311-2023 医院隔离技术标准
- 2024年电梯安装与维修工理论考试题库及答案(通用版)
- 天耀中华合唱简谱大剧院版
- 【《我国互联网企业价值评估现状与问题探析11000字》(论文)】
- 智慧农业的无人机技术应用
评论
0/150
提交评论