📄 text1.c
字号:
#include<reg52.h> ///////////////////////////////
#define uchar unsigned char ///////////////////////////////
#define uint unsigned int
/// 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
char d[32]={' ','K','a','o',' ','Y','a','n',' ','X','i','a','n','g',' ',' ',
////17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
'T','1',0x3d,' ',' ',0xdf,'C',' ',' ','T','2',0x3d,' ',' ',0xdf,'C'};
char s[10]={'0','1','2','3','4','5','6','7','8','9'};
char q[10]={'0','1','2','3','4','5','6','7','8','9'};
#define data_IO P2
sbit rs=P3^7;//指令和数据寄存器 “1是数据,” “0是指令”
sbit rw=P3^6;//读写控制,“1读” “0写”
sbit e=P3^5; //片选信号
sbit laotie=P3^4;///加热控制的端口
sbit baojing=P1^0 ; ///响音乐的端口
sbit qing=P1^1 ; ///清除报警键
sbit jian=P1^2 ; ///温度减
sbit jia=P1^3 ; ///温度加
sbit DQ=P1^4;
void delay(uint n) ////////////////延时/////////
{
uint i;
for(i=0;i<n;i++);
}
/////////////////////复位函数/////////////////////////
uchar reset(void)
{uchar ready,j;
DQ=0;
delay(100); //480~960
DQ=1;
for(j=0;j<6;j++); /*delay(3); *///15~60
ready=DQ;
delay(80);
return(ready);
}
///////////////////读(传字节)///////////////////////
uchar read_bit(void)
{
uchar i;
DQ=0;
for(i=0;i<2;i++);
DQ=1;
return(DQ);
}
//////////////////读数据////////////////////
uchar read_byte(void)
{
uchar i,m=1,shuju=0;
for(i=0;i<8;i++)
{
if(read_bit()) {shuju=shuju+(m<<i);}
delay(2);
}
return(shuju);
}
//////////////////传字节////////////////////////////
void chuan_bit(uchar i)
{
DQ=0;
if(i==1) DQ=1;
delay(6);
DQ=1;
}
/////////////////////写数据//////////////////////////////
void write(uchar xie)
{
uchar i,shuju ;
for(i=0;i<8;i++)
{
shuju=xie>>i;
shuju=shuju&0x01;
chuan_bit(shuju);
delay(2);
}
}
///////////////*写指令*///////////////////////
void xiezl(uint shuju)
{
delay(1000) ;
data_IO=shuju;
rs=0; //写指令
rw=0; //表示写状态
e=1; //下降延//
e=0; /////////
}
//////////////////写数据//////////////////////////
void w_dat(uint n)
{
delay(1000) ;
data_IO=n;
rs=1; //写数据
rw=0; //表示写状态
e=1; //下降延//
e=0; /////////
return;
}
//////////////////显示函数//////////////////////////
void xianshi(uchar n)
{
uchar j,i;
xiezl(0x80); // DDRAM地址的设置
for(j=0;j<n-16;j++)
{w_dat(d[j]); ///n表示有写几位数据
delay(100) ;
}
xiezl(0xc0);//换行
for(i=(n-16);i<n;i++)
{w_dat(d[i]); ///n表示有写几位数据
delay(100) ;
}
}
///////////////////*液晶模块初始化*//////////////
void chushihua(void)
{ uchar i;
rs=0; //写指令
rw=0; //表示写状态
e=0; //使能
for(i=0;i<3;i++)
{
xiezl(0x38); //功能设置,8位,一行显示,5*7点阵
delay(1000) ;
}
xiezl(0x38); //两行显示
xiezl(0x0f); //显示开关控制位
xiezl(0x18); //移位控制,光标和显示一起左移
xiezl(0x06); //设置输入模式
xiezl(0x01); //清屏显示
xiezl(0x80); // DDRAM地址的设置
}
void main(void)
{
uchar fuhaowei,wenduzhi,z,x,a,b,i=3,j=2;////////////////温度值
chushihua();/////////液晶初始化
while(1)
{
reset();
write(0xcc); ///发出跳过ROM的命令////
write(0X44);/////////开始转换温度/////
reset();
write(0xcc);
write(0xbe); ///////////读温度值////
wenduzhi= read_byte(); //////////读低八位温度值//
fuhaowei=read_byte(); //////////读高八位温度值//
wenduzhi=((fuhaowei&0x07)<<4)|(wenduzhi>>4);
z=wenduzhi/10;////////十位上的数//
x=wenduzhi%10;////////个位上的数////
d[19]=s[z];d[20]=s[x]; //实际温度
xianshi(32);//显示函数
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -