全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TX-1开发板DS18B20的温度读取和液晶显示#include#include#define uchar unsigned char#define uint unsigned intuchar code digit10=0123456789;uchar code error=Error!Check!;uchar time;uchar TL,TH,TN,TD; sbit dula=P26;sbit wela=P27;sbit lcdrs=P35;sbit lcden=P34;sbit DQ=P22;void delayus(uint z);void delay1ms();void delaynms(uchar n);void lcd_init();void lcd_wc(uchar com);void lcd_wd(uchar dat);bit Init_DS18B20();void display_error();void display_dot();void display_temp1(uchar x);void display_temp2(uchar x);WriteOneChar(uchar dat);uchar ReadOneChar(void);void ReadyReadTemp();void main()lcd_init();delaynms(5);display_dot();while(Init_DS18B20()=1) display_error(); while(1) /不断检测并显示温度delaynms(100);ReadyReadTemp(); /读温度准备TL=ReadOneChar(); /先读的是温度值低位TH=ReadOneChar(); /接着读的是温度值高位TN=TH*16+TL/16; /实际温度值=(TH*256+TL)/16,即:TH*16+TL/16 /这样得出的是温度的整数部分,小数部分被丢弃了TD=(TL%16)*10/16; /计算温度的小数部分,将余数乘以10再除以16取整,/这样得到的是温度小数部分的第一位数字(保留1位小数)display_temp1(TN); /显示温度的整数部分display_temp2(TD); /显示温度的小数部分 delaynms(10); void lcd_init()dula=0;wela=0;lcd_wc(0x38);delaynms(5);lcd_wc(0x38);/写两次以确保初始化成功lcd_wc(0x01);lcd_wc(0x0e);lcd_wc(0x06);lcd_wc(0x80);void lcd_wc(uchar com)lcdrs=0;P0=com;delaynms(3);lcden=1;delaynms(6);lcden=0;void lcd_wd(uchar dat)lcdrs=1;P0=dat;delaynms(3);lcden=1;delaynms(6);lcden=0;void delay1ms()unsigned char i,j;for(i=0;i10;i+)for(j=0;j33;j+); void delaynms(uchar n)unsigned char i;for(i=0;in;i+)delay1ms();bit Init_DS18B20()bit flag;DQ = 1; /先将数据线拉高for(time=0;time2;time+); /略微延时约6微秒DQ = 0; /再将数据线从高拉低,要求保持480960usfor(time=0;time200;time+);/略微延时约600微?(以向DS18B20发出一持续480960us的低电平复位脉冲)DQ = 1; /释放数据线(将数据线拉高) for(time=0;time20;time+); /延时约30us(释放总线后需等待1560us让DS18B20输出存在脉冲)flag=DQ; /让单片机检测是否输出了存在脉冲(DQ=0表示存在) for(time=0;time200;time+);/延时足够长时间,等待存在脉冲输出完毕return(flag); /返回检测成功标志 void display_error()uchar i;lcd_wc(0x80); /写显示地址,将在第1行第1列开始显示i = 0; /从第一个字符开始显示while(errori != 0)/只要没有写到结束标志,就继续写lcd_wd(errori); /将字符常量写入LCDi+; /指向下一个字符delaynms(100); /延时100ms较长时间,以看清关于显示的说明while(1); /进入死循环,等待查明原因void display_dot() lcd_wc(0x49+0x80);/写显示地址,将在第2行第10列开始显示 lcd_wd(.); /将小数点的字符常量写入LCDdelaynms(50); /延时1ms给硬件一点反应时间void display_temp1(uchar x)uchar j,k,l; /j,k,l分别储存温度的百位、十位和个位j=x/100; /取百位k=(x%100)/10; /取十位l=x%10; /取个位 lcd_wc(0x46+0x80);/写显示地址,将在第2行第7列开始显示lcd_wd(digitj); /将百位数字的字符常量写入LCDlcd_wd(digitk); /将十位数字的字符常量写入LCDlcd_wd(digitl); /将个位数字的字符常量写入LCDdelaynms(50); /延时1ms给硬件一点反应时间 void display_temp2(uchar x) lcd_wc(0x4a+0x80); /写显示地址,将在第2行第11列开始显示lcd_wd(digitx); /将小数部分的第一位数字字符常量写入LCDdelaynms(50); /延时1ms给硬件一点反应时间WriteOneChar(uchar dat)uchar i=0;for(i=0;i8;i+) DQ =1; / 先将数据线拉高 _nop_(); /等待一个机器周期 DQ=0; /将数据线从高拉低时即启动写时序 DQ=dat&0x01; /利用与运算取出要写的某位二进制数据,/并将其送到数据线上等待DS18B20采样 for(time=0;time10;time+);/延时约30us,DS18B20在拉低后的约1560us期间从数据线上采样 DQ=1; /释放数据线 for(time=0;time=1; /将dat中的各二进制位数据右移1位 for(time=0;time4;time+); /稍作延时,给硬件一点反应时间uchar ReadOneChar()unsigned char i=0;unsigned char dat; /储存读出的一个字节数据for (i=0;i=1; _nop_(); /等待一个机器周期 DQ = 1; /将数据线人为拉高,为单片机检测DS18B20的输出电平作准备 for(time=0;time2;time+);/延时约6us,使主机在15us内采样 if(DQ=1) dat|=0x80; /如果读到的数据是1,则将1存入datelsedat|=0x00; /如果读到的数据是0,则将0存入dat for(time=0;time8;time+);/延时3us,两个读时序之间必须有大于1us的恢复期 return(dat); /返回读出的十进制数据void ReadyReadTemp()Init_DS18B20(); /将DS18B20初始化WriteOneChar(0xCC); / 跳过读序号列号
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工现场施工防水制度
- 教职工培训与发展制度
- 2026届内蒙古自治区包头市第一机械制造有限公司第一中学高二数学第一学期期末学业水平测试模拟试题含解析
- 2026广西物资学校春学期招聘兼职教师备考题库及答案详解参考
- 吉林省辽源市2026届高二上数学期末联考模拟试题含解析
- 2026年东营河口区事业单位公开招聘工作人员备考题库(21人)及答案详解一套
- 2026中央民族大学教学科研人员招聘89人备考题库及1套参考答案详解
- 2026江西新余市社会保险服务中心招聘见习生2人备考题库(含答案详解)
- 2025年建筑施工企业施工许可管理制度
- 2026山东事业单位统考济宁微山县招聘45人备考题库有答案详解
- 《微电子封装技术》课程教学大纲
- 城市轨道交通服务员(城市轨道交通站务员)考核要素细目表与考核内容结构表
- JBT 12530.4-2015 塑料焊缝无损检测方法 第4部分:超声检测
- 江西省吉安市初中生物七年级期末下册高分预测题详细答案和解析
- 《中国心力衰竭诊断和治疗指南2024》解读(总)
- DZ∕T 0033-2020 固体矿产地质勘查报告编写规范(正式版)
- 沥青拌合站方案
- (汪晓赞)运动教育课程模型
- GB/T 42677-2023钢管无损检测无缝和焊接钢管表面缺欠的液体渗透检测
- 轮机英语题库
- 神木市孙家岔镇神能乾安煤矿矿山地质环境保护与土地复垦方案
评论
0/150
提交评论