📄 新建.c
字号:
#include<reg51.h>
#include<intrins.h>
#include<stdio.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
sbit bflag=P0^0;
sbit rs=P2^0;
sbit rw=P2^1;
sbit en=P2^2;
uchar get[42];
uchar getflag=0;
static uchar getnum;
void delay()
{uchar j;
for(j=250;j>0;j--);
}
void longdelay(uint s) //长延时,0.25ms
{
while(s--)
{
delay();
}
}
//1602程序
void en_toggle()
{
en=0;
//_nop_();
delay();
en=1;
delay();
// _nop_();
en=0;
} //必须加延时
void is_ready()
{
P0=0x00;//设置为输入口 ,现实中应该送0xff
rs=0;
rw=1;
en=1;
while(bflag);
en=0;
}
void write_cmd(uchar cmd)
{
is_ready();
rs=0;
rw=0;
P0=cmd;
en_toggle();
_nop_();
}
void display(uchar row,uchar col,uchar indata)//行,位置,字符
{uchar p;
if(row==1)
{p=0x80+col-1;
write_cmd(p);}
else
{p=0xc0+col-1;
write_cmd(p);
}
is_ready();
rs=1;
rw=0;
P0=indata;
en_toggle();
_nop_();
}
void init_lcd()
{
write_cmd(0x38);
write_cmd(0x0f);
write_cmd(0x06);
write_cmd(0x01);
}
void init_series(void) //串口初始化
{SCON=0x50;//方式1,禁止多机通信,允许接收
TMOD=0x20;//T1工作在方式2下
PCON=0x00;
IE=0x90;//T1禁止中断溢出,开中断
TH1=0xfd;//波特率为:9600
TL1=0xfd;
TR1=1;
}
void serial()interrupt 4
{
RI=0;
if(SBUF=='$')
{getflag=1;}
if(getflag==1)
{
get[getnum]=SBUF;
getnum++;
}
}
void main()
{ uchar position,i,j;
position=0;
i=0;
j=1;
init_lcd(); //初始化1602
getnum=0;
init_series(); //初始化串口
while(1)
{
if(getnum>43)
{
IE=0;
display(1,1,get[27]);
display(1,3,get[17]);
display(1,4,get[18]);
display(1,6,get[19]);
display(1,7,get[20]);
display(1,5,get[21]);
display(1,8,get[22]);
display(1,9,get[23]);//纬度
display(2,1,get[40]);
display(2,2,get[29]);
display(2,3,get[30]);
display(2,4,get[31]);
display(2,6,get[32]);
display(2,7,get[33]);
display(2,5,get[34]);
display(2,8,get[35]);
display(2,9,get[36]);//经度
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -