代码拉取完成,页面将自动刷新
//******************************************************************************/
#include "REG52.h"
#include "oled.h"
#include "qmc.h"
#include "GPS.h"
#include "includes.h"
#include <stdio.h>
volatile bit UPINFO = 0; //1传输
volatile bit CHPAGE = 0; //1测试页
volatile bit PAUSE = 1; //1暂停
volatile bit RESET = 0; //1修复
void usartSendstr(char *s)
{
char *ptr = s;
while( *ptr!= '\0')
{
SBUF=*ptr;
while(!TI);TI=0;
ptr++;
}
SBUF='\r';
while(!TI);TI=0;
SBUF='\n';
while(!TI);TI=0;
}
void HomePage(void)
{
OLED_ShowCHinese(32,3,8);
OLED_ShowCHinese(32+16,3,9);
OLED_ShowCHinese(32+32,3,10);
OLED_ShowCHinese(32+48,3,11);
}
void TaskPage(void)
{
OLED_Clear();
}
void KEY_Task(void)
{
if(KEY_UPINFO)
UPINFO = ~UPINFO;
if(KEY_CHPAGE)
{
if(CHPAGE)//测试页
{
//测试页进入欢迎页需要暂停系统,停止上传
UPINFO = 0;
PAUSE = 1;
//显示欢迎字符
OLED_Clear();
OLED_Clear();
HomePage();
}
else
{
UPINFO = 0;
PAUSE = 0;
TaskPage();
}
CHPAGE = ~CHPAGE;
}
if(KEY_PAUSE && CHPAGE)
PAUSE = ~PAUSE;
if(KEY_RESET)
RESET = ~RESET;
delay_ms(20);
}
int angle;
void QMC_Task(void)
{
// 东(0) 南(1) 西(2) 北(3) 经(4) 纬(5) 度(6)
u8 lbuf[16] = {'\0'};
int ret;
#if 1
ret=QMC_Read(lbuf);
ret+=95;
angle = ret;
if(ret<=400)
{
if(ret>360)
ret-=360;
sprintf(lbuf,"%-3d",ret);
}
else
return;
#else
ret=QMC_Read(lbuf);
#endif
if(ret<70 && ret>=20)
{
OLED_ShowCHinese(0,0,0);
OLED_ShowCHinese(16,0,3);
//东北
}
else if(ret<110 && ret>=70)
{
//东
OLED_ShowCHinese(0,0,0);
OLED_ShowCHinese(16,0,7);
}
else if(ret<160 && ret>=110)
{
//东南
OLED_ShowCHinese(0,0,0);
OLED_ShowCHinese(16,0,1);
}
else if(ret<200 && ret>=160)
{
OLED_ShowCHinese(0,0,1);
OLED_ShowCHinese(16,0,7);
}
else if(ret<250 && ret>=200)
{
//
OLED_ShowCHinese(0,0,2);
OLED_ShowCHinese(16,0,1);
}
else if(ret<290 && ret>=250)
{
//
OLED_ShowCHinese(0,0,2);
OLED_ShowCHinese(16,0,7);
}
else if(ret<340 && ret>=290)
{
//
OLED_ShowCHinese(0,0,2);
OLED_ShowCHinese(16,0,3);
}
else
{
//
OLED_ShowCHinese(0,0,3);
OLED_ShowCHinese(16,0,7);
}
OLED_ShowString(80,0,lbuf,16);
if(UPINFO)
{
//TI = 1;
//printf("角度:%-3d\r\n", ret);
usartSendstr(lbuf);
//TI = 0;
}
}
char cnt = 0;
int main(void)
{
//矽统1初始化
P1 = 0X00;
OLED_Init();
OLED_Clear();
GPS_Init();
QMC_Init();
HomePage();
while(1)
{
//解析按键
KEY_Task();
if(cnt<8)
cnt++;
else
{
cnt = 0;
if(!PAUSE)//主任务
{
GPS_Read();
QMC_Task();
}
}
delay_ms(40);
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。