云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > LM016L的显示程序

LM016L的显示程序

  • 62 次阅读
  • 3 次下载
  • 2026/4/25 7:32:15

#include < reg51.h > #include < intrins.h > #define uchar unsigned char #define uint unsigned int

sbit DQ = P2^7 ; //定义DS18B20端口DQ

void reset(); //DS18B20复位函数 void write_byte(uchar val); //DS18B20写命令函数 uchar read_byte(void); //DS18B20读1字节函数

void read_temp(); //温度读取函数 void work_temp(); //温度数据处理函数 sbit BEEP=P2^5 ; //蜂鸣器驱动线

bit presence ;

sbit LCD_RS = P3^5 ;

sbit LCD_RW = P3^6 ; sbit LCD_EN = P3^7 ;

uchar code cdis1[ ] = {\SETTEMP: 50.C %uchar code cdis2[ ] = {\TESTTEMP: . C %uchar code cdis3[ ] = {\ERR0R %uchar code cdis4[ ] = {\PLEASE CHECK %unsigned char data temp_data[2] = {0x00,0x00} ;

unsigned char data display[5] = {0x00,0x00,0x00,0x00,0x00} ;

unsigned char code ditab[16]

= {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09} ;

void beep() ;

unsigned char code mytab[8] = {0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00} ;

#define delayNOP() ; {_nop_() ;_nop_() ;_nop_() ;_nop_() ;} ; /*******************************************************************/

void delay1(int ms)

{

unsigned char y ; while(ms--)

{

for(y = 0 ; y<250 ; y++)

{ _nop_() ; _nop_() ; _nop_() ; _nop_() ;

}

} }

/******************************************************************/ /*检查LCD忙状态 */

/*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 */

/******************************************************************/

bit lcd_busy() { bit result ; LCD_RS = 0 ; LCD_RW = 1 ; LCD_EN = 1 ; delayNOP() ; result = (bit)(P1&0x80) ;

LCD_EN = 0 ; return(result) ;

}

/*写指令数据到LCD */ /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */ /*******************************************************************/

void lcd_wcmd(uchar cmd)

{ while(lcd_busy()) ; LCD_RS = 0 ; LCD_RW = 0 ; LCD_EN = 0 ; _nop_() ; _nop_() ; P1 = cmd ; delayNOP() ; LCD_EN = 1 ; delayNOP() ; LCD_EN = 0 ;

}

/*******************************************************************/

/*写显示数据到LCD */ /*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */ /*******************************************************************/

void lcd_wdat(uchar dat)

{ while(lcd_busy()) ; LCD_RS = 1 ; LCD_RW = 0 ;

LCD_EN = 0 ; P1 = dat ; delayNOP() ; LCD_EN = 1 ; delayNOP() ; LCD_EN = 0 ;

}

/* LCD初始化设定 */ /*******************************************************************/

void lcd_init()

{

delay1(15) ;

lcd_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(0x0c) ; //显示开,关光标

delay1(5) ;

lcd_wcmd(0x06) ; //移动光标

delay1(5) ;

lcd_wcmd(0x01) ; //清除LCD的显示内容

delay1(5) ;

}

/* 设定显示位置 */

/*******************************************************************/

void lcd_pos(uchar pos)

{

lcd_wcmd(pos | 0x80) ; //数据指针=80+地址变量

}

/*自定义字符写入CGRAM */ /*******************************************************************/

void writetab()

{

unsigned char i ;

lcd_wcmd(0x40) ; //写CGRAM

for (i = 0 ; i< 8 ; i++) lcd_wdat(mytab[ i ]) ;

}

/*us级延时函数 */

/*******************************************************************/

void Delay(unsigned int num)

{

while( --num ) ;

}

/*初始化ds1820 */

/*******************************************************************/

Init_DS18B20(void)

{

DQ = 1 ; //DQ复位 Delay(8) ; //稍做延时 DQ = 0 ; //单片机将DQ拉低 Delay(90) ; //精确延时 大于 480us

DQ = 1 ; //拉高总线

Delay(8) ;

presence = DQ ; //如果=0则初始化成功 =1则初始化失败

Delay(100) ; DQ = 1 ;

return(presence) ; //返回信号,0=presence,1= no presence

}

/* 读一个字节 */

/*******************************************************************/

ReadOneChar(void)

{

unsigned char i = 0 ; unsigned char dat = 0 ; for (i = 8 ; i > 0 ; i--)

{

DQ = 0 ; // 给脉冲信号

dat >>= 1 ; DQ = 1 ; // 给脉冲信号

if(DQ) dat |= 0x80 ; Delay(4) ;

} return (dat) ;

}

搜索更多关于: LM016L的显示程序 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

#include #include #define uchar unsigned char #define uint unsigned int sbit DQ = P2^7 ; //定义DS18B20端口DQ void reset(); //DS18B20复位函数 void write_byte(uchar val); //DS18B20写命令函数 uchar read_byte(void); //DS18B20读1字节函数 void read_temp(); //温度读取函数 void

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com