#include "config.h" void Port_Init(); sbit Led = P2^0; void main() { Port_Init(); // Timer0_Init(); Uart1_Init(); Uart1String("hello1\n"); // Led = 0; // clrStruct(); while(1) { parseGpsBuffer(); printGpsBuffer(); } } void Port_Init() { P1M1=0x00; P1M0=0x00; P0M1=0x00; P0M0=0x00; P2M1=0x00; P2M0=0x00; P3M1=0x00; P3M0=0x00; }在这个函数里面添加一个液晶显示显示经纬度
时间: 2023-10-16 10:10:39 浏览: 125
pwm.rar_51 pwm_51单片机 led pwm_PWM 51
好的,你需要添加一个LCD1602显示屏,然后连接到微控制器上,并且需要一个LCD1602的驱动程序。以下是一个简单的LCD1602驱动程序示例:
```
sbit RS = P2^0;
sbit RW = P2^1;
sbit EN = P2^2;
sbit LCD_D4 = P0^4;
sbit LCD_D5 = P0^5;
sbit LCD_D6 = P0^6;
sbit LCD_D7 = P0^7;
void delay_ms(unsigned int ms)
{
unsigned int i, j;
for (i = 0; i < ms; i++)
{
for (j = 0; j < 120; j++);
}
}
void LCD_WriteCommand(unsigned char cmd)
{
RS = 0;
RW = 0;
LCD_D7 = cmd & 0x80;
LCD_D6 = cmd & 0x40;
LCD_D5 = cmd & 0x20;
LCD_D4 = cmd & 0x10;
EN = 1;
delay_ms(1);
EN = 0;
delay_ms(1);
LCD_D7 = cmd & 0x08;
LCD_D6 = cmd & 0x04;
LCD_D5 = cmd & 0x02;
LCD_D4 = cmd & 0x01;
EN = 1;
delay_ms(1);
EN = 0;
delay_ms(1);
}
void LCD_WriteData(unsigned char dat)
{
RS = 1;
RW = 0;
LCD_D7 = dat & 0x80;
LCD_D6 = dat & 0x40;
LCD_D5 = dat & 0x20;
LCD_D4 = dat & 0x10;
EN = 1;
delay_ms(1);
EN = 0;
delay_ms(1);
LCD_D7 = dat & 0x08;
LCD_D6 = dat & 0x04;
LCD_D5 = dat & 0x02;
LCD_D4 = dat & 0x01;
EN = 1;
delay_ms(1);
EN = 0;
delay_ms(1);
}
void LCD_Init()
{
LCD_WriteCommand(0x28); // 16×2显示,5×7点阵,4位数据接口
LCD_WriteCommand(0x0C); // 开启显示,不显示光标,不闪烁
LCD_WriteCommand(0x06); // 光标移动时不要移动屏幕
LCD_WriteCommand(0x01); // 清屏
}
void LCD_DisplayString(unsigned char x, unsigned char y, unsigned char *s)
{
unsigned char i = 0;
if (x < 16)
{
x |= 0x80;
switch (y)
{
case 0:
i = 0;
break;
case 1:
i = 0x40;
break;
case 2:
i = 0x10;
break;
case 3:
i = 0x50;
break;
}
i += x;
LCD_WriteCommand(i);
}
while (*s)
{
LCD_WriteData(*s++);
}
}
void main()
{
Port_Init();
Uart1_Init();
LCD_Init();
Uart1String("hello1\n");
while (1)
{
parseGpsBuffer();
printGpsBuffer();
// 在LCD1602显示经纬度
LCD_DisplayString(0, 0, "Lat: "); // 在第一行显示Lat:
LCD_DisplayString(5, 0, Latitude); // 在第一行显示经度
LCD_DisplayString(0, 1, "Lon: "); // 在第二行显示Lon:
LCD_DisplayString(5, 1, Longitude);// 在第二行显示纬度
}
}
```
这样,当你运行程序时,LCD1602将显示经纬度。注意,在代码中的parseGpsBuffer()和printGpsBuffer()函数中,需要将经纬度分别存储在变量Latitude和Longitude中。
阅读全文