mma7361角速度传感器实验

合集下载

三轴加速度传感器mma7361程序成功!!!

三轴加速度传感器mma7361程序成功!!!

三轴加速度传感器mma7361程序成功#include "STC12C5410AD.H"sbit MMA7260sleep=P1^0; //MMA7260休眠与否,0-休眠;1-正常工作//---------------------------------------//名称: 延时约1毫秒函数//日期:20081111//-----------------------------------------void delay1ms(){word k;for(k=0;k<12000;k++);}void delayms(word ms){word k,j;for(j=0;j<ms;j++)for(k=0;k<12000;k++);}//---------------------------------------//名称: 串口数据发送函数//日期:20081111//----------------------------------------- void uart_putchar(byte ch){TI=0;if (ch == '\n'){SBUF= 0x0d; //output'CR'while(!TI);return;}SBUF=ch;while(!TI);}//--------------------------------------- //名称: 串口数据接收函数//日期:20081111//----------------------------------------- byte uart_getchar(void){if(RI){RI=0;return SBUF; //有数据接收到,返回1}else{return 0; //无数据接收到,返回0}}void putstr(char ch[]){byte ptr=0;while(ch[ptr]){uart_putchar((byte)ch[ptr++]);}}//---------------------------------------//名称: 模数转换函数(8位)//日期:20081111//-----------------------------------------byte ReadAD(byte ch){ADC_DATA = 0; //清A/D转换结果寄存器ADC_CONTR = 0xF8|ch; //0000,1000ADCS = 1,启动转换delay1ms();do{;}while((ADC_CONTR&0x10)==0); //0001,0000等待A/D转换结束ADC_CONTR = ADC_CONTR&0xE7; //1110,0111清ADC_FLAG位,停止A/D转换return ADC_DATA;}/*************************************************** 把0--255的数值转化为3位字符串格式****************************************************/ void Byte2Str3(char zifu[],byte val,byte StartPtr) {char characters[11]="0123456789";byte tv=0;tv=val/100;zifu[StartPtr++] = characters[tv];tv=(val%100)/10;zifu[StartPtr++] = characters[tv];tv=val%10;zifu[StartPtr] = characters[tv];//zifu[3] = '\0';return;}//---------------------------------------//名称: 初始化函数函数//日期:20081111//-----------------------------------------void init_ad(void){P1M0=0x07; //设置P1.012为高阻输入,以准备ADP1M1=0x00;ADC_CONTR = 0xf8; //1000,0000打开A/D转换电源delay1ms();ADC_CONTR = ADC_CONTR&0xe0; //1110,0000 清ADC_FLAG,ADC_START位和低3位}void init_uart(void) //P3.0,3.1{TMOD=0x20; //TH1=256-INT(22118400/32/12/baud+0.5) TH1=0xfa; //0xfa,9600TL1=0xfd; //0xff,57600PCON=0x00;TR1=1;SCON=0xd0;}void init_dev(void){init_ad();init_uart();}//---------------------------------------//名称: 主函数//日期:20081111//---------------------------------------</ms;j++)--void main(){char txtbuf[17]="\n ADC Val: ";byte adbuf;init_dev();putstr("\n MMA7260 starts working!\n"); MMA7260sleep=1;//MMA7260开始工作while(1){//ADCadbuf=ReadAD(0); //X AXISByte2Str3(txtbuf,adbuf,11);putstr(txtbuf);adbuf=ReadAD(1); //Y AXISByte2Str3(txtbuf,adbuf,11);putstr(txtbuf);adbuf=ReadAD(2); //Z AXISByte2Str3(txtbuf,adbuf,11);putstr(txtbuf);delayms(300);}}。

基于MMA7361加速度传感器的重力感应遥控小车设计

基于MMA7361加速度传感器的重力感应遥控小车设计

基于MMA7361加速度传感器的重力感应遥控小车设计唐海玲;赵春雨;宋家友
【期刊名称】《传感器世界》
【年(卷),期】2013(019)006
【摘要】系统由重力感应遥控板和被控小车两部分构成.遥控板部分通过
MMA7361加速度传感器感知遥控板的倾斜方向和倾斜角度,通过ATmega8单片机内置A/D转换器获取传感器采集到的信息,经编码后,通过无线串口发送出去;被控小车通过无线接收模块接收到遥控板发送来的编码信息,由ATmega8单片机完成相应的解码工作,获取遥控板发出的控制信息,通过电机驱动模块对小车左右电机进行驱动,从而完成相应动作.经实际制作和检验,小车运动姿态与遥控板控制姿态高度协调,反应灵敏,满足设计要求.
【总页数】4页(P9-12)
【作者】唐海玲;赵春雨;宋家友
【作者单位】黄河科技学院信息工程学院河南郑州450063;黄河科技学院信息工程学院河南郑州450063;郑州大学信息工程学院河南郑州450001
【正文语种】中文
【中图分类】TP23
【相关文献】
1.采用数字加速度传感器的重力感应无线小车设计 [J], 杨晓多;刘述喜;李山
2.采用数字加速度传感器的重力感应无线小车设计 [J], 杨晓多;刘述喜;李山;
3.基于Andriod重力感应控制的小车设计与研究 [J], 陈锦儒;彭昕昀
4.基于STM32的重力感应无线智能遥控小车设计 [J], 李志瑞;申庆超
5.基于STM32的无线重力感应遥控系统设计 [J], 李志瑞;申庆超
因版权原因,仅展示原文概要,查看原文内容请购买。

电子设计方案大赛设计方案报告

电子设计方案大赛设计方案报告

2012年福建省大学生电子设计竞赛指导教师:林惠君吴建宁连桂仁姓名学院专业年级联系方式陈建平数学与计算机科学学院电子信息科学与技术10黄健数学与计算机科学学院电子信息科学与技术10黄志鹏数学与计算机科学学院电子信息科学与技术10自平衡小车系统摘要我们采用模块化设计的方法,设计了一款基于STC12C5A60S2单片机的自平衡小车系统,实现了题目中的基本要求和发挥部分的全部内容。

本系统基于STC12C5A60S2单片机为核心处理器,用软件实现直流电机PWM调速,为了实现控制小车直立行走,我们对小车的平衡控制和速度控制进行了建模分析,设计出一套合理的控制方案。

本系统设计了相关的硬件电路和相关应用程序,硬件电路主要包括STC12C5A60S2单片机最小系统、循迹探测模块、速度检测模块、倾角检测模块、转向角速度检测模块、电机驱动模块等单元电路模块;系统程序主要包括循迹探测程序、直立运行程序、PWM调速程序等。

关键词:STC12C5A60S2单片机循迹 PWM调速平衡1.系统方案的比较与选择根据设计要求,可以有多种方法来实现系统的功能。

我们采用模块化思想,从各个单元电路选择入手进行整体方案的论证、比较与选择。

1.1 控制器方案的比较与选择方案一:采用FPGA或CPLD作为系统的控制器,可以实现复杂逻辑功能,规模大,速度快,密度高,体积小,稳定性高,容易实现仿真、调试和功能扩展。

但成本高,引脚多,PCB布线复杂。

方案二:采用增强型51系列STC12C5A60S2单片机,运算速度快,软件编程灵活,自由度大,技术成熟,体积小,成本低,容易实现仿真、调试和功能扩展。

方案三:采用嵌入式处理器(ARM),运算功能强大,速度较快,编程灵活,自由度大,外围器件少,成本适中,容易实现仿真、调试和功能扩展。

但PCB设计及焊接技术要求高。

综合考虑系统设计的需要,我们选择了方案二。

1.2 循迹探测方案的比较与选择方案一:采用热探测器,电路简单,但易受外界干扰,不灵敏。

野火平衡组站立调试指南(初级篇)

野火平衡组站立调试指南(初级篇)

野火平衡组站立调试指南——初级篇一.整体思路采集ENC-03陀螺仪角速度,和模块硬件积分之后的角度,利用PD 算法实现直立。

*教程适合新手利用模块快速入上手,实现车模直立。

注:此方法不能用在智能车比赛上,而是给大家练习使用(中级篇的方法可用在智能车比赛上,但难度比这个高,因此先用这个入门)。

二.模块引脚此例程需要用到的 模块管脚有:ENC03角速度, 角度 ,Z 轴三.搭建调试环境要实现直立,必须把单片机采集的参数发送到上位机,观察变化的趋势,才能更好的调节整个动态过程。

串口通信工具可通过无线蓝牙,或者TTL 转串口线来把单片机数据发送给电脑上位机,从而在上位机NCGyro2 Gyro1 Ang GNDNCNC X Y Z SEL 5VGyro1 为此陀螺仪输出角速度 需要加装水平陀螺仪,才可以读取Gyro2,为水平陀螺仪输出角速度MMA7361三轴加速度模块输出:X/Y/Z 轴加速度上进行处理。

A .无线蓝牙分为发送端和接收端。

可采用2个主从蓝牙模块搭配,也可通过主从模块和蓝牙适配器组合使用。

使用方法相当于“无线”的串口,分为主机和从机。

引脚接法:5v GND RXD TXD 注意:蓝牙的RXD 和单片机的TXD 对应链接,蓝牙的TXD 和单片机的RXD 对应链接。

B .USB 转UART通过USB 转TTL ,直接把单片机的数据发送给上位机。

核心板上可供使用的串口接口:UART4 的PTC14、PTC15USB转TTL,接口一般都是排针当然,也可以采用USB转RS232,但RS232信号不是单片机能识别的,因此还需要MAX3232 芯片把RS232 信号转为TTL。

MAX3232 芯片:RS232信号转TTL USB转串口线:USB转RS232通过带USB接口的RS232模块,把单片机的TTL信号(0-5v)发送电脑串口端,通过上位机程序显示和接收。

上位机调试工具Serial_Digital_Scope V2我们采用的上位机是Serial_Digital_Scope V2 。

MMA7361的加速度传感器模块

MMA7361的加速度传感器模块

基于MMA7361的加速度传感器模块
(龙丘 MMA7361 模块)
MMA7361QR 3轴小量程加速传感器是检测物件运动和方向的传感器,它根据物件运动和方向改变输出信号的电压值。

后面的图片示出了它们的关系。

各轴的信号在不运动或不被重力作用的状态下(0g ),其输出为1.65V 。

如果沿着某一个方向活动,或者受到重力作用,输出电压就会根据其运动方向以及设定的传感器灵敏度而改变其输出电压。

用单片机的A/D 转换器读取此输出信号,就可以检测其运动和方向。

1.接线端定义:
pin1、3.3V :输入电压,同时可以接到单片机AD 参考电压端; pin2、(可选)5V 电源; pin3、GND :电源地;
pin4、Xout :x 轴方向电压输出; pin5、Yout :y 轴方向电压输出; pin6、Zout :z 轴方向电压输出;
pin7、sleep :芯片休眠控制(0:休眠,1:工作);如果不接,默认为正常工作。

pin8、10、12、NC :悬空管脚; pin9、0g_dectect :0g 信号检测;
pin11、Self_test :芯片自我测试与初始化;
注:R1与R2不能同时接上,只能接其中一个,阻值可以选择1-3.3k Ω。

1g=9.8m/s 2
Z 轴输出 Y 轴输出 X 轴输出 GND 5V 电源
3.3V 电源(V REF )
sleep NC
0g_dectect
NC Self_test
NC
3.模块尺寸:
22mm
16.5m
18mm
4.运动、方向与各轴(1.5g 模式下)的输出关系:。

基于MMA7361三轴加速度计传感器与LPA550陀螺仪的融合姿态检测

基于MMA7361三轴加速度计传感器与LPA550陀螺仪的融合姿态检测

d i r f t p h e n o me n o n ma k e s me a s u in r g a t t i t u d e a n g l e a c c u r a c y i s n o t h i g h , a n d i mp r o v e t h e s t a b i l i y t o f t h e s y s t e m.
其中 A d c G y r o X Z , A d e G y r o Y Z 由A D C 读取 , 分别表示矢量 R 在x z , Y z 平面 内的转角 , V r e f 为A D C 的参 考电压 , V z e r o R a t e 为零变 化率电压 , S e n s i t i v i t y 为陀螺仪灵敏度 。
C o mp u  ̄r K n o w l e d g e a n d T e c h n o l o g y电脑 知 识 与技术
基于 MMA 7 3 6 1 三轴加速度计传感器与 L P A 5 5 0 陀螺仪 的融合姿态检测
吕 维 , 赵 万 欣, 陈 思 屹
( 西南科技大学 信息 [程学院 , 四川 绵 阳 6 2 1 0 0 0 )
LV W e i , ZH AO W a n—xi n,CH EN S i —yi
( I n f o r ma t i o n E n g i n e e r i n g , S o u t h we s t Un i v e r s i t y o f S c i e n c e a n d T e c h n o l o g y , Mi a n y a n g 6 2 1 0 0 0 , C h i n a ) Ab s t r a c t : B a s e d o n t h e a t t i t u d e a n g l e MM A 7 3 6 1 t r i a x i a l a c c e l e r o me t e r a n d yr g o s c o p e L P A5 5 0 me a s u r e d o b j e c t , t h e u s e o f b o t h

MMA7361自己总结

MMA7361自己总结

MMA7361自己总结MMA7361三轴加速度传感器概述MMA7361三轴加速度传感器是替代停产的MMA7260三轴加速度传感器,三轴加速度传感器是一种可以对物体运动过程中的加速度进行测量的电子设备,典型互动应用中的加速度传感器可以用来对物体的姿态或者运动方向进行检测,比如WII游戏机和iPhone手机中的经典应用。

MMA7361三轴加速度传感器芯片,对于普通的互动应用来讲应该是种不错的选择,可以应用到摩托车和汽车放倒报警、遥控航模、游戏手柄、人形机器人跌倒检测、硬盘冲击保护、倾斜度测量等场合。

MMA7361和MMA7260一样采用信号调理、单极低通滤波器和温度补偿技术,但只提供±1.5g /6g两个量程,用户可通过开关选择这2个灵敏度。

该器件带有低通滤波并已做0g补偿,提供休眠模式,因而是电池供电的无线数据采集的理想之选。

性能描述1. 供电电压:3.3-8V2. 可选灵敏度,±1.5g/6g;通过拨码开关选择。

3. 低功耗,工作时电流为400μA,休眠模式下为3μA;4. 高灵敏度,在1.5g量程下为800 mV/g;5. 低通滤波器具有内部信号调理功能;6. 设计稳定,防震能力强。

7. 模块尺寸:23X26mm用户指南我们已经为你提供了可供选择的示例程序用来处理这三轴加速度计陀螺仪。

我们可以测量装置和重力方向的三轴之间的角度。

平面的位置是在三维空间中唯一地描述。

模拟输出程度根据以上操作你可以按照自身的需求来设置重量监测的范围,和灵敏度。

1. 模拟值读取analog_x我们设置MMA的工作电压5v,通过在1024的串口监测下显示出来,所以我们应该将模拟电压,转换为数字量。

vol_x=analog_x*5/1024.connection diagram for Romeoconnection diagram for Romeo2. vol_x-->add_x(v)当X轴是水平的,它是1.65v.so我们需要减去这个量得到增加add_x=vol_x-1.65重量。

电赛控制类风力摆论文

电赛控制类风力摆论文

2015年全国大学生电子设计竞赛风力摆控制系统(B题)【本科组】2015年8月15日摘要本设计由MC9S12XS128MAL单片机控制模块、角度检测模块、人机交互系统以及风力摆机械结构组成的闭环控制系统。

由BTN7971驱动12V、1.2A的直流风机作为风力摆的动力源,MMA7361采集风力状态角,单片机处理状态角数据后通过PID调节直流风机控制风力摆,实现在直流风机作为动力控制下快速起摆、画线、恢复静止,画圆的功能。

为了使测控系统控制更为精确,在采集数据的过程中采用了非线性误差校正以及卡尔曼滤波等数据处理方法。

同时设计中考虑到可能存在的各种干扰因素,采用软硬件结合的抗干扰方法提高系统控制的稳定性。

经过反复的测验,该方案完全能够实现题目要求!关键字:单片机闭环风力摆控制系统卡尔曼滤波目录1.1.系统主控芯片选择 (1)1.2.风力摆动力系统方案选择 (1)1.3.角度检测方案的选择与论证 (2)1.4.电机驱动模块的选择与论证 (2)1.5.算法选择 (2)2.系统设计 (3)2.1.系统总体设计 (3)2.2.模块电路设计 (3)3.系统理论分析与计算 (5)3.1.风力摆的运动控制分析 (5)3.2.系统算法的分析 (5)4.软件设计 (6)4.1.程序功能描述与设计思路 (6)4.2.程序流程图 (6)5.系统调试与测试 (7)5.1.系统调试 (7)5.2.系统测试 (7)6.结束语 (8)7.附录 (9)7.1.附录1:参考文献 (9)7.2.附录2:主要元器件清单 (9)7.3.附录3:电路原理图 (10)7.4.附录4:部分源程序 (11)方案论证与比较系统主控芯片选择方案一:采用AT89C51系列单片机作为控制的核心。

51单片机价格便宜,应用广泛,I/O 口的设置和使用操作简单。

但是51单片机的运行速度过慢,抗静电抗干扰能力弱,内部资源和存储器功能较少,而且无ADC,还需要用外接电路实现AD转换,使硬件电路变得复杂。

基于MMA7361三轴加速度计传感器与LPA550陀螺仪的融合姿态检测[权威资料]

基于MMA7361三轴加速度计传感器与LPA550陀螺仪的融合姿态检测[权威资料]

基于MMA7361三轴加速度计传感器与LPA550陀螺仪的融合姿态检测[权威资料]基于MMA7361三轴加速度计传感器与LPA550陀螺仪的融合姿态检测本文档格式为WORD,感谢你的阅读。

摘要:基于MMA7361三轴加速度传感器与LPA550陀螺仪测目标物的姿态角,利用两者精度在频域上的互补性,采用互补滤波的方法,实现数据融合,较好的解决了陀螺仪的漂移现象使测量姿态角精度不高的问题,并提高了系统的稳定性。

关键词:三轴加速度计;陀螺仪;互补滤波;姿态检测中国分类号:TP274.2 A 1009-3044(2014)25-5996-02Integration of Gesture-Based Detection MMA7361 Triaxial Accelerometer Sensor and Gyro LPA550LV Wei, ZHAO Wan-xin, CHEN Si-yi(Information Engineering, SouthwestUniversity of Science and Technology, Mianyang621000,China)Abstract: Based on the attitude angle MMA7361 triaxial accelerometer and gyroscope LPA550 measured object, the use of both accuracy in the frequency domain complementary approach using complementary filtering,data fusion, the better solution gyro drift phenomenon makes measuring attitude angle accuracy is not high, and improve the stability of the system.Key words: three-axis accelerometer; gyroscope; complementary filtering; attitude detectionLPA550LC又称角速度传感器,用于检测角速度,角速度是单位时间内旋转角度的变化。

mma7361三轴加速度传感器

mma7361三轴加速度传感器

JYOO JYOOROBOTROBOT 杰越杰越机器人机器人MMA7361三轴加速度传感器用户手册v1.0深圳市杰越科技有限公司Jyoo Science and Technology (Shen Zhen)CO.,LTD版权声明深圳市杰越科技有限公司保留所有权利深圳市杰越科技有限公司保留在不事先通知的情况下,修改本说明书中的产品和产品规格等文件的权利。

深圳市杰越科技有限公司不承担使用本手册或本产品不当,所造成直接的,间接的,附带的或相应产生的损失或责任。

深圳市杰越科技有限公司拥有本说明书,以及本说明书描述的产品的产权。

未经授权,不得直接或者间接地复制,制造,加工,本产品及相关部件。

一、注意事项1.在未认真阅读本说明之前请勿给加电!以免错误接线造成传感器永久损坏。

2.请认真查看引脚功能说明,注意简明标识符,正确接线!切勿将电源线接反,造成电子器件烧毁。

二、产品介绍Arduino三轴加速度传感器采用Freescale(飞思卡尔)公司生产性价比高微型电容式加速度传感器MMA7361芯片。

其采用了信号调理、单级低通滤波器和温度补偿技术,并且提供了2个灵敏度量程选择的接口和休眠模式接口,该产品带有低通滤波并已作零g补偿,化金工艺加工,用料上乘,可靠保证,体积小、重量轻,标识符清晰简明,接线容易,防止接线错误造成硬件损坏,可通过7彩跳线连接,插于Mini面包板上,通过Arduino控制器编程,是制作倾角、运动、姿态检测互动作品的理想之选。

典型应用:坠落检测、人类环境学工具、游戏、文本滚动、3维动态拨打、计步器、机器人技术、虚拟现实输入设备、装运/处理监控器、点击静音、设备平衡/监控、轴承磨损监控、地震监控等。

三、MMA7260三轴加速度传感器优点与参数1.为多功能应用提供灵活的可选量程:包括1.5g和6g2.功耗低,可延长电池使用寿命3.开机响应时间短4.最适合电池供电手持设备的休眠模式5.组件数量少-节约成本和空间6.噪音低、灵敏度高7.自适应功能8.频率及解析度高,提供精确的坠落、倾斜、移动、放置、震动和摇摆感应灵敏度不同应用的建议重力加速度级别,自由落体检测:1g~2g;倾斜控制:1g~2g;摇摆:8g-10g;测震学:0.002g~2g;震动检测:2g~8g;步程计:10g~20g9.供电电压:+3.3V或者+5V10.模块尺寸:15mm×22mm11.模块重量:2g7361三轴加速度计的功能图解四、MMAMMA7361注意:GS 由单片机的I/0口输出高低电平来控制。

基于梅塞尔森极性码的角速度测量方法研究

基于梅塞尔森极性码的角速度测量方法研究

基于梅塞尔森极性码的角速度测量方法研究第一章引言近年来,随着科学技术的快速发展,对角速度测量方法的需求越来越迫切。

角速度是描述物体旋转状态的物理量,在许多领域中具有重要的应用,如航空航天、汽车工程、机器人技术等。

因此,寻找一种准确可靠的角速度测量方法对于这些领域的进一步研究和发展具有重要的意义。

第二章梅塞尔森极性码2.1 梅塞尔森极性码原理梅塞尔森极性码是一种编码方式,利用了二进制数字的极性特性来表示信息。

这种编码方法通过改变电压的极性来表示“0”和“1”,从而实现数据的传输和解码。

在角速度测量中,我们可以利用梅塞尔森极性码来编码旋转物体的角速度信息。

2.2 梅塞尔森极性码的应用梅塞尔森极性码在许多领域中有广泛的应用,如通信领域的数据传输、计算机科学中的数据存储等。

在角速度测量中,通过利用梅塞尔森极性码可以实现对旋转物体的角速度进行准确测量。

第三章角速度测量方法研究3.1 传统角速度测量方法在传统的角速度测量方法中,常用的方式是通过陀螺仪或加速度计等传感器来测量物体的旋转情况,并计算得到角速度。

这种方法虽然简单易行,但存在一定的误差,并且需要额外的传感器设备。

3.2 基于梅塞尔森极性码的角速度测量方法基于梅塞尔森极性码的角速度测量方法利用了极性码的特性来测量物体的角速度。

通过改变电压的极性来表示旋转物体的角速度,从而实现对角速度的准确测量。

该方法具有简单、准确的特点,并且无需额外的传感器设备,因此在实际应用中具有广泛的前景。

第四章实验与结果分析4.1 实验设计本实验设计了一个基于梅塞尔森极性码的角速度测量系统,并进行了实验验证。

实验中,我们选取了不同角速度的旋转物体,通过测量电压的极性变化来获取角速度数据。

4.2 实验结果分析实验结果表明,基于梅塞尔森极性码的角速度测量方法能够准确地测量物体的角速度。

通过对实验数据的分析,我们可以得到物体的角速度,并与实际值进行比较。

实验结果显示,该方法具有高精度和可靠性,并且能够满足实际应用的需求。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include <STC12C5A60S2.h>
#include <math.h>
#define lcd P0
sbit sl=P1^0;
sbit og=P1^1;
sbit st=P1^2;
sbit gs=P1^3;
sbit adcs=P2^0;
sbit adclk=P2^1;
sbit addo=P2^2;
sbit addi=P2^2;
sbit lcdrs=P1^5;
sbit lcdrw=P1^6;
sbit lcden=P1^7;
void delay(int n)
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<1000;j++);
}
void lcdwr_com(unsigned char com) //дָÁÊý
{
lcdrs=0;
delay(1);
lcd=com;
lcden=1;
lcden=0;
}
void lcdwr_data(unsigned char date) //дÊý¾Ý
{
lcdrs=1;
delay(1);
lcd=date;
lcden=1;
lcden=0;
}
void lcdinit()
//³õʼ»¯º¯Êý
{
lcdrw=0;
lcden=0;
lcdwr_com(0x38);
lcdwr_com(0x0c);
lcdwr_com(0x06);
lcdwr_com(0x01);
lcdwr_com(0x80);
}
int rd_ad(unsigned char *date,int SGL,int ODD) //¶ÁÈ¡adÊý¾Ý {
unsigned char data0=0,data1=0;
int i,j;
adcs=1;
adcs=0;
addi=1;
adclk=0;
adclk=1;
adclk=0; //µÚÒ»¸öÂö³å
addi=SGL; //ģʽѡÔñ
adclk=1;
adclk=0; //µÚ¶þ¸öÂö³å
addi=ODD;
adclk=1;
adclk=0; //µÚÈý¸öÂö³å
addo=1; //ÊÍ·ÅÊý¾Ý¶Ë¿Ú
for(i=0;i<8;i++){
data0<<=1;
adclk=1;
adclk=0;
j++;j++;j++;j++;j++;
j++;j++;j++;j++;j++; //ÑÓʱ5us
if(addo) data0|=0x01;
}
if(addo==1) data1|=0x80;
for(i=0;i<7;i++){
data1>>=1;
adclk=1;
adclk=0;
j++;j++;j++;j++;j++;
j++;j++;j++;j++;j++;
if(addo==1)data1|=0x80;
}
adcs=1;
addo=1;
adclk=1; //ÊÍ·Å×ÜÏß
if(data0==data1){
*date=data1; //ת»»³É¹¦±£´æÊý¾Ý
return 1;
}
else return 0;
}
void main()
{
unsigned char date;
double disp;
unsigned char BUF[6];
int pm; //·ûºÅλ
int i;
unsigned int angle; //½Ç¶È
sl=1;
og=1;
gs=1;
st=1;
lcdinit();
while(1){
if(rd_ad(&date,1,0)){
disp=date;
disp*=195;
if(disp>=16500){
pm=1; //Ϊ¸º
angle=5730*asin((disp-16500)/8000);//»¡¶Èת»»Îª½Ç¶È
if(angle%10>=5) angle=angle/10+1;
else angle/=10; //ËÄÉáÎåÈëËãһλСÊý
}
else {
pm=0; //ΪÕý
angle=5730*asin((16500-disp)/8000);//»¡¶Èת»»Îª½Ç¶È
if(angle%10>=5) angle=angle/10+1;
else angle/=10; //ËÄÉáÎåÈëËãһλСÊý
}
BUF[0]=angle/100%10+'0';
BUF[1]=angle/10%10+'0';
BUF[2]='.';
BUF[3]=angle%10+'0';
i=0;
while(BUF[i]=='0'&&BUF[i+1]!='.'){
BUF[i]='#';
i++;
}
lcdwr_com(0x80);
if(pm==1){
lcdwr_data('-');
delay(1);
}
for(i=0;i<4;i++)
if(BUF[i]!='#'){
lcdwr_data(BUF[i]);
delay(1);
}
lcdwr_data(0xdf);//ÏÔʾ¶È·ûºÅ
delay(1);
lcdwr_data(' ');//²¹Æ볤¶È²î
delay(1);
lcdwr_data(' ');
}
delay(300);
}
}。

相关文档
最新文档