1 Star 0 Fork 0

仁矜羽/C52

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
main.c 2.67 KB
一键复制 编辑 原始数据 按行查看 历史
仁矜羽 提交于 2021-04-24 20:20 . 2.0电子指南针定版
//******************************************************************************/
#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);
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/yjr_ty/C52.git
git@gitee.com:yjr_ty/C52.git
yjr_ty
C52
C52
master

搜索帮助