完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这个是程序,各位大神帮忙看看啊!
#include #include #define START '$' #define END '*' #define TS1602_DATA P0 //LCD1602地址表 /* 0X80 0X81 0X82 0X83 0X84 0X85 0X86 0X87 0X88 0X89 0X8A 0X8B 0X8C 0X8D 0X8E 0X8F 0XC0 0XC1 0XC2 0XC3 0XC4 0XC5 0XC6 0XC7 0XC8 0XC9 0XCA 0XCB 0XCC 0XCD 0XCE 0XCF */ unsigned char code lcd_code[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; unsigned char Num_comma=0; bit read_start=0; unsigned char i,j=10,k=11;igps=0; bit flag1=0,flag2=0,flag3=0,flag4=0,flag5=0; unsigned char status[1];//状态 A 为数据OK; V 为警告 unsigned char latitude[10]={0};//纬度 unsigned char N_S[1];//N(北纬) 或 S(南纬) unsigned char longitude[11]={0};//经度 unsigned char E_W[1];//E(东经)或W(西经) ***it RS=P2^3; //指令或数据 ***it RW=P2^4; //读或写 ***it E =P2^5; //使能端 /*************************************************** //函数功能:LCD1602驱动函数 *****************************************************/ void delay(unsigned int x) { unsigned int i; for(;x>0;x--) for(i=0;i<4;i++) ; } //************************************************ //函数功能:写指令 //使用说明:无 //************************************************ void write_com(unsigned char com) { RW=0; RS=0; TS1602_DATA=com; delay(1); E=1; delay(1); E=0; } //*************************************************** //函数功能:写数据 //使用说明:无 //**************************************************** void write_date(unsigned char date) { RW=0; RS=1; TS1602_DATA=date; delay(1); E=1; delay(1); E=0; } //*************************************************** //函数功能:液晶初始化 //使用说明:无 //**************************************************** void TS1602_INIT(void) { RS=0; RW=0; write_com(0x38); write_com(0x0C); //设置液晶光标 不显示 write_com(0x06); write_com(0x01); //清屏 write_com(0x80); //光标的位置 } //函数功能:显示一位数字 void display_a_num(unsigned char num) { write_date(lcd_code[num]); } //函数功能:显示字符串 void display_string(unsigned char *P) { while(*P) { write_date(*P); P++; } } //**************************************************************** //函数功能:LCD显示 //参数说明:参数为地点代号 //**************************************************************** void LCD1602_display() { write_com(0x80); //设置液晶光标起始位置 第一行起点 write_date(N_S[0]); //显示"N"或"S" write_date(':'); display_a_num(latitude[0]); //显示十位 display_a_num(latitude[1]); //显示个位 display_a_num(latitude[2]); display_a_num(latitude[3]); write_date(latitude[4]); //显示小数点 display_a_num(latitude[5]); display_a_num(latitude[6]); display_a_num(latitude[7]); display_a_num(latitude[8]); display_a_num(latitude[9]); write_com(0x8d); //设置液晶光标起始位置 write_date(status[0]); //显示'A'或'V' write_com(0xc0); //设置光标位置 第二行起点 write_date(E_W[0]); //显示"E"或"W" write_date(':'); display_a_num(longitude[0]); //百位 display_a_num(longitude[1]); //十位 display_a_num(longitude[2]); //个位 display_a_num(longitude[3]); display_a_num(longitude[4]); write_date(longitude[5]); //显示小数点 display_a_num(longitude[6]); display_a_num(longitude[7]); display_a_num(longitude[8]); display_a_num(longitude[9]); display_a_num(longitude[10]); } void main() { TS1602_INIT(); //液晶初始化 TMOD=0X20;//单片机晶振11.0592M TL1=0XFD; //256-253=3 波特率:9600bps TH1=0XFD; SCON=0X50;//SM0 SM1 SM2 REN TB8 RB8 TI RI串行方式1 PCON=0X00;//SMOD=0 IE=0X90; //EA=1; ET1=1; TR1=1;//开定时器1 delay(100); while(1)//死循环,程序一直在里面运行 { LCD1602_display();//液晶显示 } } void serial()interrupt 4 { RI=0; if(SBUF=='$') { flag1=1; igps=0; Num_comma=0; } else flag1=0; if((SBUF=='G')&&(flag1==1))flag2=1; else flag2=0; if((SBUF=='P')&&(flag2==1))flag3=1; else flag3=0; if((SBUF=='R')&&(flag3==1))flag4=1; else flag4=0; if((SBUF=='M')&&(flag4==1))flag5=1; else flag5=0; if((SBUF=='C')&&(flag5==1))read_start=1; else read_start=0; if(read_start==1) { if(SBUF==',') { Num_comma++; } if(Num_comma==2) { status[igps]=SBUF; } if(Num_comma==3) { for(i=0;i } if(Num_comma==4) { N_S[igps]=SBUF; } if(Num_comma==5) { for(i=0;i if(Num_comma==6) { E_W[igps]=SBUF; igps++; } if(SBUF=='*') { Num_comma=0; read_start=0; igps=0; } } } |
|
相关推荐
9个回答
|
|
还是将1602调试好再说
|
|
|
|
怎么单独调试1602
|
|
|
|
写个简单显示程序,先测试下液晶,没有问题再往下进行
|
|
|
|
液晶显示是没有问题的,就是单片机接收不到数据。
|
|
|
|
|
|
|
|
单独测试单片机--蓝牙--电脑,是不是正常。
|
|
|
|
GPS和蓝牙如何与单片机连接,如果共用一个串口的话,应该是得不到正确数据的
|
|
|
|
只有小组成员才能发言,加入小组>>
2970 浏览 9 评论
2687 浏览 16 评论
3212 浏览 1 评论
8426 浏览 16 评论
3770 浏览 18 评论
6950浏览 6评论
求助,请问MS51FB9AE带隙电压能作为侦测的基准电压吗?
7449浏览 3评论
6950浏览 3评论
支持UART-to-BLE透传的新唐NuTool – BLE ATCMD开发工具推荐
5798浏览 3评论
9370浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-19 05:26 , Processed in 1.035764 second(s), Total 101, Slave 78 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号