《水温控制系统》1997电子设计大赛第三届C组Word下载.docx
- 文档编号:4768352
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:9
- 大小:25.46KB
《水温控制系统》1997电子设计大赛第三届C组Word下载.docx
《《水温控制系统》1997电子设计大赛第三届C组Word下载.docx》由会员分享,可在线阅读,更多相关《《水温控制系统》1997电子设计大赛第三届C组Word下载.docx(9页珍藏版)》请在冰点文库上搜索。
sbitRW=P1^2;
sbitEN=P1^1;
还有我的LCD的16引脚接到了单片机上的P1.0上,就是要用软件使LCD亮,
硬件已经做出来了,所以改不了.(最好附上详细的解释,谢谢了)
提问者:
weilynare-三级最佳答案#include<
reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitBLK=P1^0;
unsignedcharcodestr1[]={"
temperature:
"
};
unsignedcharcodestr2[]={"
uchardatadisdata[5];
uinttvalue;
//温度值
uchartflag;
//温度正负标志
/*************************lcd1602程序**************************/
voiddelay1ms(unsignedintms)//延时1毫秒(不够精确的)
{
unsignedinti,j;
for(i=0;
i<
ms;
i++)
for(j=0;
j<
100;
j++);
}
voidwr_com(unsignedcharcom)//写指令//
delay1ms
(1);
RS=0;
RW=0;
EN=0;
P0=com;
EN=1;
voidwr_dat(unsignedchardat)//写数据//
;
RS=1;
P0=dat;
voidlcd_init()//初始化设置//
{
BLK=0;
delay1ms(15);
wr_com(0x38);
delay1ms(5);
wr_com(0x08);
delay1ms(5);
wr_com(0x01);
wr_com(0x06);
wr_com(0x0c);
voiddisplay(unsignedchar*p)//显示//
while(*p!
='
\0'
)
{
wr_dat(*p);
p++;
}
init_play()//初始化显示
lcd_init();
wr_com(0x80);
display(str1);
wr_com(0xc0);
display(str2);
/******************************ds1820程序***************************************/
voiddelay_18B20(unsignedinti)//延时1微秒
while(i--);
voidds1820rst()/*ds1820复位*/
{
unsignedcharx=0;
DQ=1;
//DQ复位
delay_18B20(4);
//延时
DQ=0;
//DQ拉低
delay_18B20(100);
//精确延时大于480us
//拉高
delay_18B20(40);
}
uchards1820rd()/*读数据*/
unsignedchari=0;
unsignedchardat=0;
for(i=8;
i>
0;
i--)
//给脉冲信号
dat>
>
=1;
if(DQ)
dat|=0x80;
delay_18B20(10);
return(dat);
voidds1820wr(ucharwdata)/*写数据*/
i>
i--)
DQ=wdata&
0x01;
wdata>
read_temp()/*读取温度值并转换*/
uchara,b;
ds1820rst();
ds1820wr(0xcc);
//*跳过读序列号*/
ds1820wr(0x44);
//*启动温度转换*/
//*跳过读序列号*/
ds1820wr(0xbe);
//*读取温度*/
a=ds1820rd();
b=ds1820rd();
tvalue=b;
tvalue<
<
=8;
tvalue=tvalue|a;
if(tvalue<
0x0fff)
tflag=0;
else
tvalue=~tvalue+1;
tflag=1;
tvalue=tvalue*(0.625);
//温度值扩大10倍,精确到1位小?
return(tvalue);
/*******************************************************************/
voidds1820disp()//温度值显示
{ucharflagdat;
disdata[0]=tvalue/1000+0x30;
//百位数
disdata[1]=tvalue%1000/100+0x30;
//十位数
disdata[2]=tvalue%100/10+0x30;
//个位数
disdata[3]=tvalue%10+0x30;
//小数位
if(tflag==0)
flagdat=0x20;
//正温度不显示符号
flagdat=0x2d;
//负温度显示负号:
-
if(disdata[0]==0x30)
disdata[0]=0x20;
//如果百位为0,不显示
if(disdata[1]==0x30)
disdata[1]=0x20;
//如果百位为0,十位为0也不显示
wr_dat(flagdat);
//显示符号?
wr_com(0xc1);
wr_dat(disdata[0]);
//显示百位
wr_com(0xc2);
wr_dat(disdata[1]);
//显示十位
wr_com(0xc3);
wr_dat(disdata[2]);
//显示个位
wr_com(0xc4);
wr_dat(0x2e);
//显示小数点
wr_com(0xc5);
wr_dat(disdata[3]);
//显示小数位
/********************主程序***********************************/
voidmain()
init_play();
//初始化显示
while
(1)
read_temp();
//读取温度
ds1820disp();
//显示
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 水温控制系统 水温 控制系统 1997 电子设计 大赛 第三