📄 wdcgq+lcd.c
字号:
for(j=8;j>0;j--)
{
DQ=0;
DQ=i&0x01;
delay_18b20(5);
DQ=1;
i=i/2;
}
delay_18b20(5);
}
int read_temprature(void)
{
union
{
uchar c[2];
int x;
}temp;
rest_18b20();
write_18b20(0xcc);
write_18b20(0xbe);
temp.c[1]=read_18b20();
temp.c[0]=read_18b20();
rest_18b20();
write_18b20(0xcc);
write_18b20(0x44);
return temp.x;
}
void lcd_lra(int x)
{ switch (x)
{
case 1:lcd_cs1=1;lcd_cs2=0;break;
case 2:lcd_cs1=0;lcd_cs2=1;break;
case 3:lcd_cs1=1;lcd_cs2=1;break;
}
}
void decode_word1(int word1)
{
switch (word1)
{
case 1:word_number=_1;break;
case 2:word_number=_2;break;
case 3:word_number=_3;break;
case 4:word_number=_4;break;
case 5:word_number=_5;break;
case 6:word_number=_6;break;
case 7:word_number=_7;break;
case 8:word_number=_8;break;
case 9:word_number=_9;break;
case 0:word_number=_0;break;
// default:word_number=GTH;break;
}
}
send_i(uint s)
{ lcd_di=lcd_rw=0;
lcd_e=1;P0=s;_nop_();lcd_e=0;
}
send_d(uint s)
{ lcd_rw=0;lcd_di=1;
lcd_e=1;P0=s;_nop_();lcd_e=0;
}
lcd_disp_pic( uchar *pic,int lr)
{ uchar z,x,j;
x=0xb8;
for(z=1;z<=8;z++)
{ send_i(x); send_i(0x40);
lcd_lra(lr);
for(j=1;j<=64;j++)
{
send_d(*pic);pic++;
}
x++;
}
}
lcd_disp_maxpic(uchar *pic)
{
uchar z,x,j;
x=0xb8;
for(z=1;z<=8;z++)
{ send_i(x); send_i(0x40);
for(j=1;j<=128;j++)
{ if(j>64)lcd_lra(2);
else lcd_lra(1);
send_d(*pic);pic++;
}
x++;
lcd_lra(3);
}
}
lcd_disp_word(int n,uchar *word,int x,int y,int lr)
{ uchar m,j;
lcd_lra(lr);
for(m=1;m<=2;m++)
{ send_i(x); send_i(y);
for(j=1;j<=n;j++)
{
send_d(*word);word++;
}
x++;
}
}
lcd_disp_number(int word1,int x,int y,int lr)
{ uchar m,j;
lcd_lra(lr);
decode_word1(word1);
for(m=1;m<=2;m++)
{ send_i(x); send_i(y);
for(j=1;j<=8;j++)
{
send_d(*word_number);word_number++;
}
x++;
}
}
clrscr(int lr)
{uchar i,j,k;i=0xb8;
lcd_lra(lr);
for(j=1;j<=8;j++)
{ send_i(i);send_i(0x40);
for(k=1;k<=64;k++)
{ send_d(0x00);
}
i++;
}
}
void dir_temprature(int word1,uchar x,uchar y,uchar lr)///////////显示温度
{
int a,b,c,d,e;
uchar f,ff=0;
if(word1<0)
{
word1=~word1+1;
// word1 |=0x8000;
ff=1;
}
else{ff=0;}
a=word1/16; //整数部分
f=word1%16; //余数
b=a/100; //百位
a%=100;
c=a/10; //十位
d=a%10; //个位
f=(f*10)/16;
e=f ; //小数第一位
if(ff)
lcd_disp_word(EN,inv,x,y,lr);
else
lcd_disp_word(EN,noop,x,y,lr);
lcd_disp_number(b,x,y+=8,lr) ;
lcd_disp_number(c,x,y+=8,lr) ;
lcd_disp_number(d,x,y+=8,lr) ;
lcd_disp_word(EN,XSD,x,y+=8,lr);
lcd_disp_number(e,x,y+=8,lr);
lcd_disp_word(CH,SSD,x,y+=8,lr);
}
void dir_settemp(int word1,uchar x,uchar y,uchar lr)
{
int b,c,d;
b=word1/100; //百位
word1%=100;
c=word1/10; //十位
d=word1%10; //个位
if(key_select==1)
{
lcd_disp_word(CH,ico_shou,x,y,lr);
}
else
{
lcd_disp_word(EN,noop,x,y,lr);
lcd_disp_word(EN,noop,x,y+=8,lr);
}
lcd_disp_word(CH,noop,x,y+=8,lr);
lcd_disp_number(b,x,y+=8,lr) ;
lcd_disp_number(c,x,y+=8,lr) ;
lcd_disp_number(d,x,y+=8,lr) ;
lcd_disp_word(CH,SSD,x,y+=8,lr);
}
void dir_time(uint word1,uchar x,uchar y,uchar lr)///////显示时间
{
uint b,c,d,e;
b=word1/1000; //千位
word1%=1000;
c=word1/100; //百位
word1%=100;
d=word1/10; //十位
e=word1%10; //个位
lcd_disp_word(CH,noop,x,y,lr);
lcd_disp_word(CH,noop,x,y+=8,lr);
lcd_disp_number(b,x,y+=8,lr) ;
lcd_disp_number(c,x,y+=8,lr) ;
lcd_disp_number(d,x,y+=8,lr) ;
lcd_disp_number(e,x,y+=8,lr);
lcd_disp_word(CH,miao3,x,y+=8,lr);
}
void string_DQ05ZKZZ() //电气05自考制作
{
lcd_disp_number(0,x_1,y_1,lra_r) ;
delay();
lcd_disp_number(5,x_1,y_2,lra_r) ;
delay();
lcd_disp_word(CH,dian4,x_1,y_3,lra_r);
delay();
lcd_disp_word(CH,qi4,x_1,y_5,lra_r);
delay();
lcd_disp_word(CH,zi4,x_1,y_7,lra_r);
delay();
lcd_disp_word(CH,kao3,x_2,y_1,lra_r);
delay();
lcd_disp_word(CH,zhi4,x_3,y_1,lra_r);
delay();
lcd_disp_word(CH,zuo4,x_3,y_3,lra_r);
delay();
lcd_disp_word(EN,GTH,x_4,y_1,lra_r);
delay();
lcd_disp_word(EN,GTH,x_4,y_3,lra_r);
delay();
lcd_disp_word(EN,GTH,x_4,y_5,lra_r);
delay();
lcd_disp_word(EN,GTH,x_4,y_7,lra_r);
delay();
}
void string_SJWD(uchar x,lr)//实际温度
{
lcd_disp_word(CH,shi2,x,y_1,lr);
lcd_disp_word(CH,ji4,x,y_3,lr);
lcd_disp_word(CH,wen1,x,y_5,lr);
lcd_disp_word(CH,du4,x,y_7,lr);
}
void string_YSWD(uchar x,lr)//预设温度
{
lcd_disp_word(CH,yu4,x,y_1,lr);
lcd_disp_word(CH,she4,x,y_3,lr);
lcd_disp_word(CH,wen1,x,y_5,lr);
lcd_disp_word(CH,du4,x,y_7,lr);
}
void string_SWSJ(uchar x,lr)//升温时间
{
lcd_disp_word(CH,sheng1,x,y_1,lr);
lcd_disp_word(CH,wen1,x,y_3,lr);
lcd_disp_word(CH,shii2,x,y_5,lr);
lcd_disp_word(CH,jian1,x,y_7,lr);
}
void string_WCSJ(uchar x,lr) //维持时间
{
lcd_disp_word(CH,wei2,x,y_1,lr);
lcd_disp_word(CH,chi2,x,y_3,lr);
lcd_disp_word(CH,shii2,x,y_5,lr);
lcd_disp_word(CH,jian1,x,y_7,lr);
}
void lcd_inti(void)
{
lcd_led = 0;
send_i(lcd_on_dir);
}
void dir_work(void) reentrant
{
//clrscr(lra_a);
EA=0;
string_SJWD(x_1,lra_l);//实际温度
dir_temprature(fact_temprature,x_1,y_1,lra_r);//实际温度
string_YSWD(x_2,lra_l);//预设温度
dir_settemp(set_temprature,x_2,y_1,lra_r);//预设温度
string_SWSJ(x_3,lra_l);//升温时间
dir_time(up_time,x_3,y_1,lra_r);//升温时间
string_WCSJ(x_4,lra_l);//维持时间
dir_time(keep_time,x_4,y_1,lra_r);//维持时间
EA=1;
}
void send_comm(void)
{
uchar i;
for(i=0;i<3;i++)
{
SBUF = comm_out[i];
while(TI==0);
TI=0;
}
}
void int_0() interrupt 0 using 0
{
if(~key_set)
{
send_comm();
}
if(~key_up)
{ if(set_temprature<125)
set_temprature++;
}
if(~key_down)
{
if(set_temprature>0)
set_temprature--;
}
}
void COMM() interrupt 4 using 0
{
if(RI)
{
up_time = SBUF;
RI=0;
}
}
void Intcomm () /*初始串行函数*/
{ TMOD=0x20; /*定时器方式2*/
TL1=0xfd;TH1=0xfd; /*9600波特率*/
SCON=0x50;//PCON=0x80; /*方式1,加被波特率*/
TR1=1;ES=1;EA=1; /*可以接收,开串口中断,开中断*/
RI=0;TI=0;
}
main()
{
fan = relay = 1;
set_temprature=up_time=keep_time=0;
lcd_inti();
Intcomm ();
clrscr(lra_a);
EX0 = 1;
IT0 = 1;
EA = 1;
//lcd_disp_pic(bmp_1,lra_l);
//string_DQ05ZKZZ();
//dir_work();
while(1)
{
fact_temprature=read_temprature();
dir_work();
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* lcd_inti();
while(1)
{
lcd_disp_pic(Bmp1,lra_l);
delay();
lcd_disp_number(0,x_1,y_1,lra_r) ;
lcd_disp_word(CH,piao,x_1,y_1,lra_r);
delay();
lcd_disp_word(CH,liang,x_1,y_3,lra_r);
delay();
lcd_disp_word(CH,nv,x_1,y_5,lra_r);
delay();
lcd_disp_word(CH,hai,x_1,y_7,lra_r);
delay();
lcd_disp_word(CH,kan,x_2,y_1,lra_r);
delay();
lcd_disp_word(CH,guo,x_2,y_3,lra_r);
delay();
lcd_disp_word(CH,lai,x_2,y_5,lra_r);
delay();
lcd_disp_word(CH,Bmpgth,x_2,y_7,lra_r);
delay();
lcd_disp_word(32,Bmp2,x_3,y_3,lra_r);
delay();
lcd_disp_word(CH,Bmpgth,x_3,y_7,lra_r);
delay();delay();
clrscr(lra_r);
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -