📄 receive.c
字号:
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define lcd_bus P1
#define re_bus P0 //P3.0,1,2,3
uchar offset=0x80;
//年月度
uchar code hanzi[]={0x80,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02,
0xf,0x9,0xf,0x9,0xf,0x9,0x11,0,
0x1C,0x14,0x1C,0x0,0x0,0x0,0x00,0x00};
// lcd
sbit rs=P2^0;
sbit rw=P2^1;
sbit e =P2^2;
//////////////////////////////////////////
delay(uchar d)
{
while(--d);
}
/**********判断忙标志,返回的是一个位BF**********/
bit lcd_busy(void)
{
uchar bflag;
rs=0;
rw=1;
_nop_();
e=1;
_nop_();
lcd_bus=0xff;
bflag=lcd_bus;
e=0;
return(bit)(bflag&0x80); //BF=1 busy
}
/*********写命令,有两个参数,第一个是要写的命令控制字,
第二个是用来控制是否进行忙标志的判断。
busyflag=1:判断;为 0:不判断****************/
void lcd_wrcmd(uchar cmd)
{
while(lcd_busy());
lcd_bus=cmd;
rs=0;
rw=0;
_nop_();
e=1;
_nop_();
_nop_();
e=0;
}
/************向液晶片写数据***************/
void lcd_wrdata( uchar lcddata)
{
while(lcd_busy());
lcd_bus=lcddata;
rs=1;
rw=0;
_nop_();
e=1;
_nop_();
_nop_();
e=0;
}
/****************初始化***************/
void lcd_ini(void)
{
lcd_wrcmd(0x38);
delay(100);
lcd_wrcmd(0x0c);
delay(100);
lcd_wrcmd(0x06);
delay(100);
lcd_wrcmd(0x01);
delay(100);
}
//////////////////////////////////////////////
//
// 生成汉字子模函数
// 当lcd_wrdata(0);显示第一个汉字
// 当lcd_wrdata(1);显示第二个汉字
//
//////////////////////////////////////////////
lcd_h()
{
uchar i;
lcd_wrcmd(0x40);
for(i=0;i<24;i++) lcd_wrdata(hanzi[i]);
}
void display(uchar temp)
{ unsigned char stra[3],r=0;
unsigned char i;
lcd_wrcmd(0x0c);
stra[0]=temp/100+'0';
stra[1]=temp%100/10+'0';
stra[2]=temp%10+'0';
lcd_wrcmd(0x0c);
if(stra[0]=='0')
r=1;
lcd_wrcmd(0xc2+r);
for(i=r;i<3;i++)
lcd_wrdata(stra[i]);
lcd_wrdata(2);
lcd_wrdata(0x43);
}
main()
{ uchar rect=20,temp,temp11,temp10,temp01,temp00,tt;
lcd_bus=0xff;
lcd_ini();
re_bus=0xff;
lcd_h();
while(1)
{
re_bus=0xff;
rect=re_bus&0x0f;
if(rect>7&&rect<12)
{
temp10=rect&0x03;
temp10<<=4;
if(tt<temp10)
temp01=0;
tt=temp10;
// temp=temp11|temp10|temp01|temp00;
// display(temp);
rect=re_bus&0x0f;
}
else if(rect>3&&rect<8)
{
temp01=rect&0x03;
temp01<<=2;
// temp=temp11|temp10|temp01|temp00;
// display(temp);
rect=re_bus&0x0f;
}
else if(rect>11&&rect<16)
{
temp00=rect&0x03;
temp=temp11|temp10|temp01|temp00;
display(temp);
delay(100);
rect=re_bus&0x0f;
}
/* else if(rect==0)
{
temp00=rect&0x03;
temp=temp11|temp10|temp01|temp00;
display(temp);
} */
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -