ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:16.45KB ,
资源ID:10942709      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10942709.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(LCD数字温度计代码.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

LCD数字温度计代码.docx

1、LCD数字温度计代码LCD数字温度计代码 /* 1602A液晶屏驱动程序* 晶 振 频 率:11.0592M* 作者:王勋*QQ:249521710*主页:*/#include <reg51.h>#include <absacc.h>#define uchar unsigned char#define uint unsigned inttypedef unsigned char byte;typedef unsigned int word;sbit DQ = P30;unsigned char minus_flag=0;unsigned char ten,one,dot

2、1,dot2;void Read_Temperature(void);sbit LCM_E=P11;/定义接口sbit LCM_RW=P10;sbit LCM_RS=P12;#define LCM_Data P0/数据接口void LCM_WriteData(uchar WDLCM);void LCM_WriteCommand(uchar WCLCM,BuysC);uchar LCM_ReadData(void);uchar LCM_ReadStatus(void);void LCM_Init(void);void DisplayOneChar(uchar X, uchar Y, uchar

3、DData);void DisplayListChar(uchar X, uchar Y, uchar code *DData);void Delay5Ms(void);void Delay400Ms(void);uchar code uctech = "1602A"uchar code net = "Temperature_of_N"uchar code digit = "0"/*1602A写数据函数*/*函数原型:void LCM_WriteData(uchar WDLCM)/*函数功能:1602A写数据/*输入参数:要写入的数据

4、/*输出参数:无/*调用模块:/*/void LCM_WriteData(uchar WDLCM)LCM_ReadStatus();/检测忙LCM_Data = WDLCM;LCM_RS = 1;LCM_RW = 0;LCM_E = 0;/若晶振速度太高可以在这后加小的延时LCM_E = 0;/延时LCM_E = 1;/*1602A写指令函数*/*函数原型:void LCM_WriteCommand(uchar WCLCM,BuysC)/*函数功能:1602A写指令/*输入参数:要写入的指令/*输出参数:无/*调用模块:/*/void LCM_WriteCommand(uchar WCLCM,

5、BuysC)/BuysC为0时忽略忙检测if (BuysC) LCM_ReadStatus();/根据需要检测忙LCM_Data = WCLCM;LCM_RS = 0;LCM_RW = 0;LCM_E = 0;LCM_E = 0;LCM_E = 1;/*1602A读数据函数*/*函数原型:uchar LCM_ReadData(void)/*函数功能:1602A读数据/*输入参数:无/*输出参数:1602A返回的数据/*调用模块:/*/uchar LCM_ReadData(void)LCM_RS = 1;LCM_RW = 1;LCM_E = 0;LCM_E = 0;LCM_E = 1;retur

6、n(LCM_Data);/*1602A读状态函数*/*函数原型:uchar LCM_ReadData(void)/*函数功能:1602A读状态/*输入参数:无/*输出参数:1602A返回的状态/*调用模块:/*/uchar LCM_ReadStatus(void)LCM_Data = 0xFF;LCM_RS = 0;LCM_RW = 1;LCM_E = 0;LCM_E = 0;LCM_E = 1;while (LCM_Data & 0x80);/检测忙信号return(LCM_Data);/*1602A初始化函数*/*函数原型:void LCM_Init(void)/*函数功能:160

7、2A初始化/*输入参数:无/*输出参数:无/*调用模块:/*/void LCM_Init(void)LCM_Data = 0;LCM_WriteCommand(0x38,0);/三次显示模式设置,不检测忙信号Delay5Ms();LCM_WriteCommand(0x38,0);Delay5Ms();LCM_WriteCommand(0x38,0);Delay5Ms();LCM_WriteCommand(0x38,1);/显示模式设置,开始要求每次检测忙信号LCM_WriteCommand(0x08,1);/关闭显示LCM_WriteCommand(0x01,1);/显示清屏LCM_Write

8、Command(0x06,1);/ 显示光标移动设置LCM_WriteCommand(0x0C,1);/ 显示开及光标设置/*1602A按指定位置显示一个字符函数*/*函数原型:void DisplayOneChar(uchar X, uchar Y, uchar DData)/*函数功能:1602A按指定位置显示一个字符/*输入参数:X坐标 Y坐标 要显示的字符/*输出参数:无/*调用模块:/*/void DisplayOneChar(uchar X, uchar Y, uchar DData)Y &= 0x1;X &= 0xF;/限制X不能大于15,Y不能大于1if (Y)

9、 X |= 0x40;/当要显示第二行时地址码+0x40;X |= 0x80;/ 算出指令码LCM_WriteCommand(X, 0);/这里不检测忙信号,发送地址码LCM_WriteData(DData);/*1602A按指定位置显示一串字符函数*/*函数原型:void DisplayListChar(uchar X, uchar Y, uchar code *DData)/*函数功能:1602A按指定位置显示一个字符/*输入参数:X坐标 Y坐标 要显示字符串的首地址/*输出参数:无/*调用模块:/*/void DisplayListChar(uchar X, uchar Y, uchar

10、 code *DData)uchar ListLength;ListLength = 0;Y &= 0x1;X &= 0xF;/限制X不能大于15,Y不能大于1while (DDataListLength>0x20)/若到达字串尾则退出if (X <= 0xF)/X坐标应小于0xFDisplayOneChar(X, Y, DDataListLength);/显示单个字符ListLength+;X+;/*5ms延时函数*/*函数原型:void Delay5Ms(void)/*函数功能:5ms延时/*输入参数:无/*输出参数:无/*调用模块:/* */void Dela

11、y5Ms(void)unsigned int TempCyc = 5552;while(TempCyc-);/*400ms延时延时函数*/*函数原型:void Delay400Ms(void)/*函数功能:400ms延时延时/*输入参数:无/*输出参数:无/*调用模块:/*/void Delay400Ms(void)uchar TempCycA = 5;unsigned int TempCycB;while(TempCycA-)TempCycB=7269;while(TempCycB-);/温度程序/* 文件名: ds1820.c* 描 述: ds1820驱动程序,供调用*/* 函数名: de

12、lay* 描 述: 软件延时,* 输 入: ticks,不同的晶体需要调整* 返 回: 无* 备 注: 本软件适用于11.0592MHz晶振*/void delay(word ticks) for(;ticks>0;ticks-); /* 函数名: ow_reset* 描 述: one wire bus单线总线的复位* 输 入: 无* 返 回: 1 bit, ow器件不存在出1;器件正常出0;*/bit ow_reset(void) bit presence;DQ = 0;delay(29);DQ = 1;delay(3);presence = DQ;delay(25); / wait

13、for end of timeslotreturn(presence); / presence signal returned/* 函数名: ow_read_byte* 描 述: 从one wire总线读出一个字节* 输 入: 无* 返 回: 从one wire总线读出的字节*/byte ow_read_byte(void) byte i; byte value = 0;for (i=8;i>0;i-) value>>=1;DQ = 0; / pull DQ low to start timeslotDQ = 1; / then return highdelay(0);if(

14、DQ)value|=0x80;delay(5); / wait for rest of timeslotreturn(value);/* 函数名: ow_write_byte* 描 述: 向one wire总线送出一个字节* 输 入: 要写入的字节* 返 回: 无*/void ow_write_byte(char val) byte i;for (i=8; i>0; i-) / writes byte, one bit at a time DQ = 0; / pull DQ low to start timeslotDQ = val&0x01;delay(7); / hold v

15、alue for remainder of timeslot DQ = 1;val=val/2;delay(5);/* 函数名: Read_Temperature* 描 述: 从DS18B20读取16进制温度值* 输 入: 无* 返 回: 未经处理的16bits,1 6进制温度值*/void Read_Temperature(void) byte c2;unsigned int temperature;ow_reset();ow_write_byte(0xCC); / Skip ROMow_write_byte(0xBE); / Read Scratch Padc0=ow_read_byte(

16、); / low 8 bit hexc1=ow_read_byte(); /high 8 bit hexow_reset();ow_write_byte(0xCC); /Skip ROMow_write_byte(0x44); / Start Conversionif(c1 & 0xFC)minus_flag=1;temperature=(c1<<8)| c0);temperature=(temperature)+1);temperature*=0.0625;elseminus_flag=0;temperature=(c1<<8)| c0) *(0.0625*1

17、00);ten=temperature/1000; /十位one=temperature/100%10;/个位dot1=temperature%100/10;/十分位dot2=temperature%100%10;/百分位 void main(void)Delay400Ms();/启动等待,等LCM讲入工作状态LCM_Init();/LCM初始化Delay5Ms();/延时片刻(可不要)DisplayListChar(0, 0, net);DisplayListChar(0, 1,"ow_is:");LCM_ReadData();/测试用句无意义LCM_Data=255;while(1)Read_Temperature();DisplayOneChar(6,1,0x30+ten);DisplayOneChar(7,1,0x30+one);DisplayOneChar(8,1,'.');DisplayOneChar(9,1,0x30+dot1);DisplayOneChar(10,1,0x30+dot2);DisplayOneChar(11,1,0xdf);DisplayOneChar(12,1,0x43);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1