简单温度控制完整程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

简单温度控制完整程序

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit rs = P3^4 ;

sbit rw = P3^5 ;

sbit ep = P3^7 ;

unsigned int set1=30,set2=10;

unsigned char flag=0;

sbit DQ =P1^7; //定义通信端口

sbit fengmingqi=P1^1;

sbit jidianqi=P1^5;

code uchar mayuan[]={'0','1','2','3','4','5','6','7','8','9'}; code uchar aa[]={"wendu is:"};

code uchar bb[]={"sheding :"};

typedef bit BOOL ;

unsigned char k,dat_wr[8],dat_rd[8];

void putchar(uchar weizhi,uchar da); void delay(uchar);

void lcd_wcmd(uchar);

BOOL lcd_bz();

void lcd_pos(uchar) ;

void lcd_wdat(uchar) ;

void display(uchar,uchar *) ;

void lcd_init();

void longdelay(uchar s);

void keyscan(void);

BOOL lcd_bz()

{ // 测试LCD忙碌状态

BOOL result ;

rs = 0 ;

rw = 1 ;

ep = 1 ;

result = (BOOL)(P2 & 0x80) ;

ep = 0 ;

return result ;

}

void lcd_wcmd(uchar cmd)

{ // 写入指令数据到LCD while(lcd_bz()) ;

rs = 0 ;

rw = 0 ;

ep = 0 ;

P2 = cmd ;

ep = 1 ;

ep = 0 ;

}

void lcd_pos(uchar pos)

{ //设定显示位置

lcd_wcmd(pos | 0x80) ;

}

void lcd_wdat(uchar dat)

{ //写入字符显示数据到LCD

while(lcd_bz()) ;

r s = 1 ;

r w = 0 ;

e p = 0 ;

P2 = dat ;

e p = 1 ;

e p = 0 ;

}

void lcd_init()

{ //LCD初始化设定

lcd_wcmd(0x38) ; //function set

delay(1) ;

lcd_wcmd(0x38) ; //function set

delay(1) ;

lcd_wcmd(0x08) ; //display on/off

delay(1) ;

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

lcd_wcmd(0x06) ; //entry mode set

delay(1) ;

lcd_wcmd(0x0c) ; //entry mode set

delay(1) ;

}

/*---------------

函数名称:display()

功能:在LCD上显示数组的数据

说明:先写显示地址,后写显示数据

调用:lcd_wcmd(), lcd_pos()

入口参数:pos 写入的位置,q指向要写入的数据所在的数组

返回值:无

----------------*/

void display(uchar pos, uchar *q)

{

uchar i ;

//lcd_wcmd(0x01) ; //clear

//delay(10) ;

lcd_pos(pos) ;

for(i=0 ;i<9;i++)

{

lcd_wdat(*q) ;

q++ ;

//longdelay(2) ;

}

}

void putchar(uchar weizhi,uchar da)

{

delay(2);

lcd_pos(weizhi);

lcd_wdat(da);

}

//延时函数

void delay(uchar ms) // 延时子程序

{ uchar i ;

while(ms--)

{

f or(i = 0 ; i<250;i++) ;

}

}

void delay1(uchar a)

{

while(a--);

}

void delay2(unsigned int i)//延时函数

{

while(i--);

}

void Init_DS18B20(void)

{

unsigned char x=0;

DQ = 1; //DQ复位

delay2(8); //稍做延时

DQ = 0; //单片机将DQ拉低

delay2(80); //精确延时大于480us

DQ = 1; //拉高总线

delay2(10);

x=DQ; //稍做延时后如果x=0则初始化成功x=1则初始化失败

delay2(5);

DQ=1;

相关文档
最新文档