简单温度控制完整程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
unsigned int setl=30,set2=10;
unsigned char flag=O;
sbit DQ =P1A7;〃定义通信端口
sbit fengmingqi=P 1A1;
sbit jidianqi=PlA5;
codeuchar
mayuan[]={,0Vl\,2,;3,;475,;6,;7,;8,;9,};
=0;
ep =
=0;
P2:
=cmd ;
ep =
=1;
ep =
=0;
void lcd_pos(uchar pos)
{〃设定显示位置
lcd_wcmd(pos I 0x80);
}
void lcd_wdat(uchar dat)
{〃写入字符显示数据到LCD
while(lcd_bz());
rs = 1 ; rw = 0 ;
功能:在LCD±显示数组的数据调用:lcd_wcmd()9lcd_pos()
入口参数:pos写入的位置,q指向要写入的数 据所在的数组 返回值:无
*/
void display(uchar pos, uchar *q) {
uchar i;
//lcd_wcmd(0x01) ; //clear
//delay(lO);
<f> <f> <f> <f>
rj>rj> rj> rj>rj>rj> rj> rj>rj>rj> rj> rj>rj>rj> rj> rj>rj>rj> rj> rj> rj>
Jr|> <l> rj>rj> rj> r|> rj> rj> rj>r|> r|> rj> rj>r|> rj> e^> rj> rj>rj> rj> r|> rj> rj>
<f> <9><f> <f> <Y>k{><f> <f><f> <9>k|>%f><f> <f> <Y>
rjw rjw rjwrj> rjw rjw rjwrj> rjw rjw rjwrj> rjw rjw rjwrj> rjw rjw rjwrj> r|>
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);
f rj^ rj> rjw rj> rjw rj> rj>/
〃读一个字节
unsigned char ReadOneChar(void) {
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i—)
{
DQ = 1;
delay2(5);
DQ = 0; //给脉冲信号
delay2(80);〃精确延时大于480us
DQ = 1;〃拉高总线
delay2(10);
x=DQ;〃稍做延时后如果x=0则初始化
成功x=l则初始化失败
delay2(5);
DQ=1;
//return (x);
}
^2^ <2><2^ ^2> <S> ^2>^2^ ^2> ^2> ^2^ <2> ^2> ^S><2> ^2>^2^ ^2> <2^ ^S> ^2^ <2> ^2> <2^ ^2> <S> ^2>
ep = 0 ;
P2 = dat;
ep = 1;
ep = 0 ;
} void lcd_init()
{//LCD初始化设定
//function set
//function set
//display on/off
〃清除LCD的显示内容
//entry mode set
delay⑴;
/*函数名称:display()
code uchar aa[]={Hwendu is:''};
code uchar bb[]={nsheding:
typedef bit BOOL ;
unsigned char k,dat_wr[8],dat_rd[8];
void putchar(uchar weizhi,uchar da); void delay(uchar);
lcd_pos(pos);
for(i=0 ;i<9;i++)
lcd_wdat(*q); q++;
}
void putchar(uchar weizhi,uchar da)
{
delay (2);
lcd_pos(weizபைடு நூலகம்i);
lcd_wdat(da);
}
〃延时函数
uchar i;
while(ms—)
{
for(i = 0 ; i<250;i++);
BOOL lcd_bz()
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:
dat»=l;
DQ = 1;//给脉冲信号
if(DQ)
datl=0x80;
delay2(5);
DQ = 1;
return(dat);
}
^2^ ^2^ ^2> <2>^2> ^S><2> ^2^ ^2^ ^2^ ^2^ <2> <2^ ^2> ^2>^S> ^2>
/ rj> rj> rj> <j> rj> rj> rj> rj> rj> e^> rj^ rj> rj> rj^ rj> rj> rj^ rj> rj> rj> rj> rj> rj> <j> rj> rj> rj> rj> rj> e^> rj^ rj> rj>
}
void delayl(uchar a) {
while(a-);
} void delay2(unsigned int i)〃延时函数
{
while(i—);
}
void Imt_DS18B20(void)
{
unsigned char x=0;
DQ = 1; //DQ复位
delay2(8);〃稍做延时
DQ = 0;〃单片机将DQ拉低
简单温度控制完整程序
#include<reg52.h>
#include <intrins.h> #define uchar unsigned char #define uint unsigned int sbit rs = P3A4 ;
sbit rw = P3A5 ;
sbit ep = P3A7 ;
unsigned char flag=O;
sbit DQ =P1A7;〃定义通信端口
sbit fengmingqi=P 1A1;
sbit jidianqi=PlA5;
codeuchar
mayuan[]={,0Vl\,2,;3,;475,;6,;7,;8,;9,};
=0;
ep =
=0;
P2:
=cmd ;
ep =
=1;
ep =
=0;
void lcd_pos(uchar pos)
{〃设定显示位置
lcd_wcmd(pos I 0x80);
}
void lcd_wdat(uchar dat)
{〃写入字符显示数据到LCD
while(lcd_bz());
rs = 1 ; rw = 0 ;
功能:在LCD±显示数组的数据调用:lcd_wcmd()9lcd_pos()
入口参数:pos写入的位置,q指向要写入的数 据所在的数组 返回值:无
*/
void display(uchar pos, uchar *q) {
uchar i;
//lcd_wcmd(0x01) ; //clear
//delay(lO);
<f> <f> <f> <f>
rj>rj> rj> rj>rj>rj> rj> rj>rj>rj> rj> rj>rj>rj> rj> rj>rj>rj> rj> rj> rj>
Jr|> <l> rj>rj> rj> r|> rj> rj> rj>r|> r|> rj> rj>r|> rj> e^> rj> rj>rj> rj> r|> rj> rj>
<f> <9><f> <f> <Y>k{><f> <f><f> <9>k|>%f><f> <f> <Y>
rjw rjw rjwrj> rjw rjw rjwrj> rjw rjw rjwrj> rjw rjw rjwrj> rjw rjw rjwrj> r|>
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);
f rj^ rj> rjw rj> rjw rj> rj>/
〃读一个字节
unsigned char ReadOneChar(void) {
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i—)
{
DQ = 1;
delay2(5);
DQ = 0; //给脉冲信号
delay2(80);〃精确延时大于480us
DQ = 1;〃拉高总线
delay2(10);
x=DQ;〃稍做延时后如果x=0则初始化
成功x=l则初始化失败
delay2(5);
DQ=1;
//return (x);
}
^2^ <2><2^ ^2> <S> ^2>^2^ ^2> ^2> ^2^ <2> ^2> ^S><2> ^2>^2^ ^2> <2^ ^S> ^2^ <2> ^2> <2^ ^2> <S> ^2>
ep = 0 ;
P2 = dat;
ep = 1;
ep = 0 ;
} void lcd_init()
{//LCD初始化设定
//function set
//function set
//display on/off
〃清除LCD的显示内容
//entry mode set
delay⑴;
/*函数名称:display()
code uchar aa[]={Hwendu is:''};
code uchar bb[]={nsheding:
typedef bit BOOL ;
unsigned char k,dat_wr[8],dat_rd[8];
void putchar(uchar weizhi,uchar da); void delay(uchar);
lcd_pos(pos);
for(i=0 ;i<9;i++)
lcd_wdat(*q); q++;
}
void putchar(uchar weizhi,uchar da)
{
delay (2);
lcd_pos(weizபைடு நூலகம்i);
lcd_wdat(da);
}
〃延时函数
uchar i;
while(ms—)
{
for(i = 0 ; i<250;i++);
BOOL lcd_bz()
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:
dat»=l;
DQ = 1;//给脉冲信号
if(DQ)
datl=0x80;
delay2(5);
DQ = 1;
return(dat);
}
^2^ ^2^ ^2> <2>^2> ^S><2> ^2^ ^2^ ^2^ ^2^ <2> <2^ ^2> ^2>^S> ^2>
/ rj> rj> rj> <j> rj> rj> rj> rj> rj> e^> rj^ rj> rj> rj^ rj> rj> rj^ rj> rj> rj> rj> rj> rj> <j> rj> rj> rj> rj> rj> e^> rj^ rj> rj>
}
void delayl(uchar a) {
while(a-);
} void delay2(unsigned int i)〃延时函数
{
while(i—);
}
void Imt_DS18B20(void)
{
unsigned char x=0;
DQ = 1; //DQ复位
delay2(8);〃稍做延时
DQ = 0;〃单片机将DQ拉低
简单温度控制完整程序
#include<reg52.h>
#include <intrins.h> #define uchar unsigned char #define uint unsigned int sbit rs = P3A4 ;
sbit rw = P3A5 ;
sbit ep = P3A7 ;