欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
LED和LCD顯示測量溫度C程序
[打印本頁]
作者:
das
時間:
2015-4-5 01:04
標題:
LED和LCD顯示測量溫度C程序
//說明:本程序用的延時程序部分,都是用示波器精確的測試所得的數據.
#include<reg52.h>
#define uchar unsigned char
sbit DQ=P3^5;
sbit D1=P0^1;
sbit D2=P0^2;
sbit D3=P0^3;
///////////////LCD1602/////
sbit RS=P0^5;
sbit RW=P0^6;
sbit YE=P0^7;
/////////////////////////////////////////////////////////////
uchar code table[]={0xc0,0xf9,0xa4,0xb0,//0,1,2,3
0x99,0x92,0x82,0xf8,//4,5,6,7
0x80,0x90,0xfe};//8,9,.,段碼表
/////////////////////////////////////////////////////////////
uchar code table1[] ={"0123456789"};
uchar code table2[] ={" Temperature="};
uchar code table3[] ={" www.raoushi.com "};
/////////////////////////////////////////////////////////////
void delay(unsigned int us)
{
while(us--);
}
////////////////////////////////////////////
void delay2()
{
RS=0;
RW=0;
YE=0;
delay(50);
YE=1;
}
/***************************************************************/
void reset()// DS18B20復位OK
{
uchar x=0;
DQ=1;
delay(8);
DQ=0;
delay(330);
DQ=1;
delay(100);
x=DQ;
delay(20);
}
////////////////////////////////////////////從DS18B20讀一字節
uchar readbyte()
{
uchar i=0;
uchar dat=0;
for(i=8;i>0;i--)
{
DQ=0;
dat>>=1;
DQ=1;
if(DQ)
dat|=0x80;
delay(27);//41us
}
return(dat);
}
/////////////////////////////////////////////向DS18B20寫一字節
void writebyte(unsigned char dat)
{
uchar i=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
delay(8);
if(DQ==0)
{
delay(27);//41us
DQ=1;
}
else
{
DQ=1;
delay(27);//41us
}
dat>>=1;
}
}
////////////////////////////////////////////MCU讀取溫度值
uchar readtemp()
{
uchar a=0;
uchar b=0;
reset();
writebyte(0xcc);
writebyte(0x44);
reset();
writebyte(0xcc);
writebyte(0xbe);
a=readbyte();
b=readbyte();
////////////////////////
b<<=4;
b+=(a&0xf0)>>4;
return(b);
}
//////////////////////////////////////////LED數碼管顯示程序
void shanshi(uchar dat)
{
uchar a,b;
a=dat/10;
b=dat%10;
////////////
D1=0;
D2=1;
P1=table[a];
delay(1000);
P1=0xff;
delay(1000);
/////////////////
D1=1;
D2=0;
P1=table[b];
delay(1000);
P1=0xff;
delay(1000);
}
/******************LCD1602液晶顯示****************************/
void LCD1602(uchar dd)
{
uchar e,f,i,nem,t;
e=dd/10;
f=dd%10;
//////////////////////
P2=0x01; //清屏
delay2();
P2=0x38; //顯示設定兩行
delay2();
P2=0x0f; //打開顯示和光標
delay2();
P2=0x06; //光標右移
delay2();
P2=0x80; //光標回到第一行的開頭
delay2();
///////////////////////
for(nem=0;nem<13;nem++)
{
P2=table2[nem];
RS=1;
RW=0;
YE=0;
delay2();
}
//////////////////////////////////////
for(t=0;t<1;t++)
{
P2=table1[e];
RS=1;
RW=0;
YE=0;
P2=0x06; //光標右移
delay2();
////////////////////////
P2=table1[f];
RS=1;
RW=0;
YE=0;
}
//////////////////////////////////////
P2=0xc0;
delay2();
for(i=0;i<16;i++)
{
P2=0xc0;
delay2();
P2=table3[i];
RS=1;
RW=0;
YE=0;
}
}
////////////////////////////////////////////主函數
void main()
{
uchar temp;
while(1)
{
temp=readtemp();
shanshi(temp);
delay(10);
LCD1602(temp);
}
}
復制代碼
作者:
ly11994
時間:
2017-4-27 09:45
有幫助,先謝過
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1