18B201602LCD温度实验(C语言)_第1页
18B201602LCD温度实验(C语言)_第2页
18B201602LCD温度实验(C语言)_第3页
18B201602LCD温度实验(C语言)_第4页
18B201602LCD温度实验(C语言)_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#in elude < reg51.h >#i nclude < in tri ns.h >#defi ne uchar un sig ned char#defi ne uint un sig ned intsbit DQ = P1A2 ; 定义 DS18B20 端口 DQsbit BEEP=PM3 ; /蜂鸣器驱动线bit prese nee ;sbit LCD_RS =卩2八2 ;sbit LCD_RW =卩2八3 ;sbit LCD_EN =卩2八4 ;uchar code cdis1 = " welcome to JLDZ " ;/ 嘉乐电子

2、缩写uchar code cdis2 = " WENDU: . C "uchar code cdis3 = " DS18B20 ERROR "uchar code cdis4 = " PLEASE CHECK "un sig ned char data temp_data2 = 0x00,0x00;un sig ned char data display5 = 0x00,0x00,0x00,0x00,0x00;un sig ned char code ditab16 = 0x00,0x01,0x01,0x02,0x03,0x03,0x

3、04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09 ;/*小数位表,四舍五入 */void beep(;unsigned char code mytab8 = 0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00; #defi ne delayNOP(;匕no p_( ;_no p_( ;_nop_( ;_n op_( ;/*/ void delay1(i nt msun sig ned char y ;while(ms-for(y = 0 ; y<250 ; y+_nop_(;_nop_(;_nop_(;_nop_(

4、;*/*检查LCD忙状态*/ /*lcd_busy为1时,忙,等待。Icd-busy为0时,闲,可写指令 与数据。*/*/bit lcd_busy(bit result ;LCD_RS = 0 ;LCD_RW = 1 ;LCD_EN = 1 ;delayNOP(;result = (bit(P0&0x80 ;LCD_EN = 0 ;retur n( result ;/*写指令数据到LCD */ /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。*/*/ void lcd_wcmd(uchar cmdwhile(lcd_busy(;LCD_RS = 0 ;LCD_RW = 0 ;L

5、CD_EN = 0 ;_nop_(;_nop_(;P0 = cmd ;delayNOP(;LCD_EN = 1 ;delayNOP(;LCD_EN = 0 ;/* / /*写显示数据到LCD */*RS=H,RW=L,E=高脉冲,D0-D7=数据。*/*/ void lcd_wdat(uchar datwhile(lcd_busy(;LCD_RS = 1 ;LCD_RW = 0 ;LCD_EN = 0 ;P0 = dat ;delayNOP(;LCD_EN = 1 ;delayNOP(;LCD_EN = 0 ;/* LCD初始化设定*/*void ledn it(delay1(15 ;lcd_

6、wcmd(0x01 ; 清除LCD的显示内容lcd_wcmd(0x38 ; 16*2 显示,5*7 点阵,8 位数据 delay1(5 ;lcd_wcmd(0x38 ;delay1(5 ;lcd_wcmd(0x38 ;delay1(5 ;lcd_wcmd(OxOc ; /显示开,关光标delay1(5 ;lcd_wcmd(0x06 ; / 移动光标delay1(5 ;lcd_wcmd(OxO1 ; 清除LCD的显示内容delay1(5 ;/*设定显示位置*/*/ void lcd_pos(uchar poslcd_wcmd(pos | 0x80 ; /数据指针=80+地址变量/*自定义字符写入

7、 CGRAM */*/ void writetab(un sig ned char i ;Icd_wcmd(0x40 ; /与 CGRAMfor (i = 0 ; i< 8 ; i+lcd_wdat(mytab i ;/*us级延时函数*/*/void Delay (un sig ned int numwhile( -num ;/* 初始化 ds1820 */*/ I nit_DS18B20(voidDQ = 1 ; DQ 复位Delay(8 ; 稍做延时DQ = 0 ; /单片机将DQ拉低Delay(90 ; 精确延时大于480usDQ = 1 ; /拉高总线Delay(8 ;pres

8、e nee = DQ ; /如果=0则初始化成功=1则初始化失败Delay(100 ;DQ = 1 ;return(presenee ; /返回信号,0=presence,1= no presenee/*读一个字节*/*/ Read On eChar(voidun sig ned char i = 0 ;un sig ned char dat = 0 ;for (i = 8 ; i > 0 ; i-DQ = 0 ; /给脉冲信号dat >>= 1 ;DQ = 1 ; /给脉冲信号if(DQdat |= 0x80 ;Delay(4 ;return (dat ;/*写一个字节*/

9、*/ Write On eChar( un sig ned char datun sig ned char i = 0 ;for (i = 8 ; i > 0 ; i-DQ = 0 ;DQ = dat&0x01 ;Delay(5 ;DQ = 1 ;dat>>=1 ;/*读取温度*/*/ Read_Temperature(voidIn it_DS18B20(;WriteO neChar(0xCC ; /跳过读序号列号的操作Write On eChar(0x44 ; / 启动温度转换In it_DS18B20(;WriteO neChar(0xCC ; 跳过读序号列号的操

10、作Write On eChar(0xBE ; 读取温度寄存器temp_data0 = Read On eChar(;温度低 8 位temp_data1 = Read On eChar(;温度高 8 位/*数据转换与温度显示*/ /*/Disp_Temperature( display4=temp_data0&0x0f ; display0=ditabdisplay4+0x30 ; / 查表得小数位的值 display4=(temp_data0&0xf0»4|(temp_data1&0x0f<<4 ; display3=display4/100+0x

11、30 ; display1=display4%100 ; display2=display1/10+0x30 ; display1=display1%10+0x30 ; if(display3=0x30 display3=0x20 ; if(display2=0x30 display2=0x20 ; Icd_pos(0x48 ; lcd_wdat(display3 ; lcd_pos(0x49 ; lcd_wdat(display2 ; lcd_pos(0x4a ; lcd_wdat(display1 ; lcd_pos(0x4c ; lcd_wdat(display0 ; /*蜂鸣器响一声*

12、/void beep( un sig ned char y ; for (y=0 ;y<100 ;y+ Delay(60 ; BEEP=!BEEP ; /BEEP 取反 BEEP=1 ; /关闭蜂鸣器Delay(40000 ; /次高位为0,不显示高位为0,不 显示百位数显示/十位数显示个位数显示小数位数显示/* DS18B20 OK 显示菜单 */*/void Ok_Menu ( uchar m ; lcd_init( ; / 初始化 LCD lcd_pos(0 ; m=0;while(cdis1m != '0' Icd_wdat(cdis1m; m+ ; Icd_po

13、s(0x40 ; m=0;while(cdis2m != '0' Icd_wdat(cdis2m; m+ ; writetab( ; delay1(5 ; lcd_pos(0x4d ; lcd_wdat(0x00 ; /设置显示位置为第一行的第 1个字符显示字符/设置显示位置 为第二行第1个字符显示字符自定义字符写入CGRAM /显示自定义字符/*DS18B20 ERROR 显示菜单 */*/void Error_Menu ( uchar m ; lcdnit(; / 初始化 LCD lcd_pos(0 ; m=0; while(cdis3m != '0' Icd_wdat(cdis3m ; m+ ; / 设置显示位置为第一行的第 1 个 字符显示字符 lcd_pos(0x40 ; m=0; while(cdis4m != '0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论