单片机C语言应用100例
单片机C语言应用100例,单片机,语言,应用,利用,运用
/实例90:DS18B20温度检测及其液晶显示#include /包含单片机寄存器的头文件#include /包含_nop_()函数定义的头文件unsigned char code digit10=“0123456789“; /定义字符数组显示数字unsigned char code Str=“Test by DS18B20“; /说明显示的是温度unsigned char code Error=“Error!Check!“; /说明没有检测到DS18B20unsigned char code Temp=“Temp:“; /说明显示的是温度unsigned char code Cent=“Cent“; /温度单位/*以下是对液晶模块的操作程序*/sbit RS=P20; /寄存器选择位,将RS位定义为P2.0引脚sbit RW=P21; /读写选择位,将RW位定义为P2.1引脚sbit E=P22; /使能信号位,将E位定义为P2.2引脚sbit BF=P07; /忙碌标志位,将BF位定义为P0.7引脚/*函数功能:延时1ms(3j+2)*i=(333+2)10=1010(微秒),可以认为是1毫秒*/void delay1ms()unsigned char i,j;for(i=0;i=1;_nop_(); /等待个机器周期 DQ = 1; /将数据“ 为“高,为单片机检测DS18B20的 电平作 for(time=0;time=1; /将dat 的 位数据1位for(time=0;time4;time+); / 作延时,给硬件反应时间/*以下是 温度有关的显示设置*/*函数功能:显示没有检测到DS18B20*/ void display_error(void)unsigned char i;WriteAddress(0x00); /写显示地址,将第1 第1列 显示i = 0; / 第个字符 显示while(Errori != 0) /只 没有写到结束标志,就继写WriteData(Errori); /将字符 写入LCDi+; /指 下个字符delaynms(100); /延时100ms时间,以看 关显示的说明while(1) / 入死循环,等待查明原因;/*函数功能:显示说明信息*/ void display_explain(void)unsigned char i;WriteAddress(0x00); /写显示地址,将第1 第1列 显示i = 0; / 第个字符 显示while(Stri != 0) /只 没有写到结束标志,就继写WriteData(Stri); /将字符 写入LCDi+; /指 下个字符delaynms(100); /延时100ms时间,以看 关显示的说明/*函数功能:显示温度符号*/ void display_symbol(void)unsigned char i;WriteAddress(0x40); /写显示地址,将第2 第1列 显示i = 0; / 第个字符 显示while(Tempi != 0) /只 没有写到结束标志,就继写WriteData(Tempi); /将字符 写入LCDi+; /指 下个字符delaynms(50); /延时1ms给硬件反应时间/*函数功能:显示温度的小数*/ void display_dot(void) WriteAddress(0x49); /写显示地址,将第2 第10列 显示 WriteData(.); /将小数的字符 写入LCDdelaynms(50); /延时1ms给硬件反应时间/*函数功能:显示温度的单位(Cent)*/ void display_cent(void)unsigned char i; WriteAddress(0x4c); /写显示地址,将第2 第13列 显示i = 0; / 第个字符 显示 while(Centi != 0) /只 没有写到结束标志,就继写WriteData(Centi); /将字符 写入LCDi+; /指 下个字符delaynms(50); /延时1ms给硬件反应时间/*函数功能:显示温度的整数部分入口参数:x*/ void display_temp1(unsigned char x)unsigned char j,k,l; /j,k,l分别 存温度的百位、位和个位j=x/100; /百位k=(x%100)/10; /位l=x%10; /个位 WriteAddress(0x46); /写显示地址,将第2 第7列 显示WriteData(digitj); /将百位数字的字符 写入LCDWriteData(digitk); /将位数字的字符 写入LCDWriteData(digitl); /将个位数字的字符 写入LCDdelaynms(50); /延时1ms给硬件反应时间 /*函数功能:显示温度的小数数部分入口参数:x*/ void display_temp2(unsigned char x)WriteAddress(0x4a); /写显示地址,将第2 第11列 显示WriteData(digitx); /将小数部分的第位数字字符 写入LCDdelaynms(50); /延时1ms给硬件反应时间/*函数功能:做好读温度的 */ void ReadyReadTemp(void)Init_DS18B20(); /将DS18B20 WriteOneChar(0xCC); / 过读序号列号的操作WriteOneChar(0x44); / 温度转换 for(time=0;time100;time+); /温度转换 时间Init_DS18B20(); /将DS18B20 WriteOneChar(0xCC); / 过读序号列号的操作WriteOneChar(0xBE); /读温度寄存器, 个分别是温度的低位和高位/*函数功能:函数*/ void main(void) unsigned char TL; / 存暂存器的温度低位unsigned char TH; / 存暂存器的温度高位unsigned char TN; / 存温度的整数部分unsigned char TD; / 存温度的小数部分LcdInitiate(); /将液晶 delaynms(5); /延时5ms给硬件反应时间if(Init_DS18B20()=1)display_error();display_explain();display_symbol(); /显示温度说明display_dot(); /显示温度的小数display_cent(); /显示温度的单位while(1) /不断检测显示温度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整,/这得到的是温度小数部分的第位数字(fi留1位小数)display_temp1(TN); /显示温度的整数部分display_temp2(TD); /显示温度的小数部分delaynms(10);
收藏
编号:520475
类型:共享资源
大小:99.15KB
格式:RAR
上传时间:2019-03-08
10
积分
- 关 键 词:
-
单片机
语言
应用
利用
运用
- 资源描述:
-
单片机C语言应用100例,单片机,语言,应用,利用,运用
展开阅读全文
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。