简单温度控制完整程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;