完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include "uart.h"
***it Key1=P3^6; //采样时间 ***it Key2=P3^3; //开启关闭 #define uchar unsigned char #define uint unsigned int uchar ge,shi,bai,qian,wan; //显示变量 uchar Flag; uchar angle_flag=0; //变量 void conversion(uint temp_data); int angle_int; int dis_data; //变量 unsigned char dis[4]; unsigned int Cycount=0; unsigned int JSms=0; unsigned int mscnt=0; unsigned char cjflag=0; //----------------------------------- //********************************************************* void conversion(uint temp_data) { unsigned char aa,bb,cc; wan=temp_data/10000+0x30 ; temp_data=temp_data%10000; //取余运算 aa=temp_data/1000; qian=temp_data/1000+0x30 ; temp_data=temp_data%1000; //取余运算 bb=temp_data/100; bai=temp_data/100+0x30 ; temp_data=temp_data%100; //取余运算 cc=temp_data/10; shi=temp_data/10+0x30 ; temp_data=temp_data%10; //取余运算 ge=temp_data+0x30; angle_int=aa*100+bb*10+cc; } void Inittimer0(void) { TMOD = 0x01; TH0 = 0x0DC; TL0 = 0x00; EA = 1; ET0 = 1; TR0 = 1; } void KeyScan(void) //按键扫描 { if(Key1 == 0) //开启停止 { DelayMs(10); //消抖 if(Key1 == 0) { Flag++; if(Flag>1) Flag=0; } while(Key1 == 0);//等待键松开 } if(Key2 == 0) //采样时间 { DelayMs(10); //消抖 if(Key2 == 0) { Cycount++; if(Cycount>2) Cycount=0; if(Cycount==0) { LCD_Write_String(0,0,"caiyang: 10ms"); mscnt=0; } if(Cycount==1) { LCD_Write_String(0,0,"caiyang: 100ms"); mscnt=10; } if(Cycount==2) { LCD_Write_String(0,0,"caiyang:1000ms"); mscnt=100; } } while(Key2 == 0);//等待键松开 } } //********************************************************* //******主程序******** //********************************************************* void main() { int K,Q,X,Temp; float Roll,Strtemp; long Ksum=0,Qsum=0; unsigned char kcnt=0,qcnt=0; Flag=0; LCD_Init(); //液晶初始化ADXL345 InitMPU6050(); //初始化ADXL345 LCD_Write_String(0,0,"caiyang: 10ms"); LCD_Write_String(0,1,"angle : "); InitTimer0(); while(1) //循环 { KeyScan(); if(Flag==0) { if(cjflag==1) { X=GetData(ACCEL_XOUT_H); K=GetData(ACCEL_ZOUT_H); Q=GetData(ACCEL_YOUT_H); Ksum=Ksum+K; Qsum=Qsum+Q; kcnt++; if(kcnt>=10) { K=Ksum/kcnt; Q=Qsum/kcnt; kcnt=0; Ksum=0; Qsum=0; if(Q<0) { Q=-Q; if(K<0) { K=-K; Roll=(float)(90+((atan2(K,Q)*180)/3.1416)); //X轴角度值 } else { Roll=(float)(90-((atan2(K,Q)*180)/3.1416)); //X轴角度值 } } else { if(K<0) { K=-K; Roll=360-(float)(90+((atan2(K,Q)*180)/3.1416)); //X轴角度值 } else { Roll=360-(float)(90-((atan2(K,Q)*180)/3.1416)); //X轴角度值 } } Roll=360-Roll; //倾角显示与处理 if(Roll>=0) { Strtemp=Roll; LCD_Write_Char(8,1,' '); } if(Roll<0) { Strtemp=-Roll; LCD_Write_Char(8,1,'-'); } Temp=(int)(Strtemp*10); LCD_Write_Char(9,1,Temp/1000+'0'); LCD_Write_Char(10,1,Temp%1000/100+'0'); LCD_Write_Char(11,1,Temp%100/10+'0'); LCD_Write_Char(12,1,'.'); LCD_Write_Char(13,1,Temp%10+'0'); cjflag=0; } } } } } void Timer0Interrupt(void) interrupt 1 { TH0 = 0x0DC; TL0 = 0x00; JSms++; if(JSms>=mscnt) { JSms=0; cjflag=1; } } |
|
相关推荐
4 个讨论
|
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
203 浏览 0 评论
761 浏览 0 评论
806 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
743 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1195 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11806 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 19:38 , Processed in 0.810134 second(s), Total 59, Slave 46 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号