基于LCD12864的温度传感器DS18b20的显示程序.docVIP

  • 12
  • 0
  • 约3.07千字
  • 约 5页
  • 2018-04-03 发布于河南
  • 举报

基于LCD12864的温度传感器DS18b20的显示程序.doc

基于LCD12864的温度传感器DS18b20的显示程序

/*由于DS18B20对延时的要求很高,所以要根据采用的晶振来确定延迟时间,以下程序待对时间都有明确标注,根据你选用的晶振来调节即可*/ #include reg52.h // #include intrins.h #define uchar unsigned char #define uint unsigned int #define LCD_data P0 //显示屏输出数据口 /*液晶控制端口*/ sbit LCD_RST = P1^4; //液晶复位端口 sbit LCD_RS = P1^5; //寄存器选择输入 sbit LCD_RW = P1^6; //液晶读/写控制 sbit LCD_EN = P1^7; //液晶使能控制 sbit DQ=P1^0; uint a,b,i; uchar str[16]={--温度:000.0 M--}; //定义数组 uchar k,m; float temp; //延时子函数1 void delay5us(uchar z) {uchar i; for(i=0;iz;i++); } void delayNOP() {_nop_();_nop_();_nop_();_nop_();} void delay(uint z) //延时子函数1 ms { uint x,y; for(x=z;x0;x--) for(y=200;y0;y--); } bit lcd_busy() //检测液晶忙碌? { bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result = (bit)(P00x80); LCD_EN = 0; return (result); } void lcd_wcmd(uchar cmd) //液晶屏写指令 { while(lcd_busy()); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; } void lcd_wdat(uchar dat) //写数据 { while(lcd_busy()); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; } void lcd_init() //液晶初始化 { LCD_RST = 0; //液晶复位 delay(3); LCD_RST = 1; delay(3); lcd_wcmd(0x34); //扩充指令操作 delay(5); lcd_wcmd(0x30); //基本指令操作 delay(5); lcd_wcmd(0x0C); //显示开,关光标 delay(5); lcd_wcmd(0x01); //清除LCD的显示内容 delay(5); } uchar ds18_init() { uchar i; DQ = 0;//总线拉低 delay5us(100);//500us DQ = 1;//总线拉高 delay5us(20);//延时100us i=DQ; delay5us(100);//500us return i; } void write_18(uchar value) { uchar i,v1=0; v1 = value; for (i =0 ;i8;i++) { DQ = 0;//总线拉低 delay5us(2);//延时10us if(v10x01) DQ = 1;

文档评论(0)

1亿VIP精品文档

相关文档