STC单片机串口输出ADXL335角度值
STC单片机串口输出ADXL335角度值:
//*****************************************************
//名称:单片机串口输出ADXL335角度值
//使用单片机:stc12c5a60s2
//供电:电压5v
//晶振:11.0592m
//X轴->(ADC0)P1.0
//Y轴->(ADC1)P1.1
//Z轴->(ADC1)P1.2
//用pc串口助手显示时,选择字符显示
//参考宏晶网址例程
//*****************************************************
#include "reg51.h"
#include "intrins.h"
#include <math.h> //Keil library
#include <stdio.h> //Keil library //#define FOSC 18432000L
#define FOSC 11059200L //晶振11.0592M
#define BAUD 9600 typedef unsigned char BYTE;
typedef unsigned int WORD; #define uchar unsigned char
#define uint unsigned int /*Declare SFR associated with the ADC */
sfr AUXR1 = 0XA2;
sfr ADC_CONTR = 0xBC; //ADC control register
sfr ADC_RES = 0xBD; //ADC high 8-bit result register
sfr ADC_RESL = 0xBE;
sfr ADC_LOW2 = 0xBE; //ADC low 2-bit result register
sfr P1ASF = 0x9D; //P1 secondary function control register /*Define ADC operation const for ADC_CONTR*/
#define ADC_POWER 0x80 //ADC power control bit
#define ADC_FLAG 0x10 //ADC complete flag
#define ADC_START 0x08 //ADC start control bit
#define ADC_SPEEDLL 0x00 //420 clocks
#define ADC_SPEEDL 0x20 //280 clocks
#define ADC_SPEEDH 0x40 //140 clocks
#define ADC_SPEEDHH 0x60 //70 clocks void InitUart();
void InitADC();
void SendData(BYTE dat);
int GetADCResult(BYTE ch);
void Delay(WORD n);
uchar ge,shi,bai,qian,wan; //显示变量 void conversion(uint temp_data)
{
wan=temp_data/+0x30 ;
temp_data=temp_data%; //取余运算
qian=temp_data/+0x30 ;
temp_data=temp_data%; //取余运算
bai=temp_data/+0x30 ;
temp_data=temp_data%; //取余运算
shi=temp_data/+0x30 ;
temp_data=temp_data%; //取余运算
ge=temp_data+0x30;
} /*----------------------------
Get ADC result
----------------------------*/
int GetADCResult(BYTE ch)
{ int AD10bitResult;
ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
_nop_(); //Must wait before inquiry
_nop_();
_nop_();
_nop_();
while (!(ADC_CONTR & ADC_FLAG));//Wait complete flag
ADC_CONTR &= ~ADC_FLAG; //Close ADC AD10bitResult=ADC_RES;
AD10bitResult<<=;
AD10bitResult|=ADC_RESL;
return AD10bitResult; //Return 10BIT ADC result
}
/*----------------------------
Initial UART
----------------------------*/
void InitUart()
{
SCON = 0x5a; //8 bit data ,no parity bit
TMOD = 0x20; //T1 as 8-bit auto reload
TH1 = TL1 = -(FOSC///BAUD); //Set Uart baudrate
TR1 = ; //T1 start running
} /*----------------------------
Initial ADC sfr
----------------------------*/
void InitADC()
{
P1ASF = 0xff; //Open 8 channels ADC function AUXR1=AUXR1|0X04; //ad值左对齐
ADC_RES = ; //Clear previous result
ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
Delay(); //ADC power-on and delay
} /*----------------------------
Send one byte data to PC
Input: dat (UART data)
Output:-
----------------------------*/
void SendData(BYTE dat)
{
while (!TI); //Wait for the previous data is sent
TI = ; //Clear TI flag
SBUF = dat; //Send current data
} /*----------------------------
Software delay function
----------------------------*/
void Delay(WORD n)
{
WORD x; while (n--)
{
x = ;
while (x--);
}
} //****************************************************************************** void main()
{ int x,y,z;
float Q,T,K,Roll,Pitch;
InitUart(); //Init UART, use to show ADC result
InitADC(); //Init ADC sfr
while ()
{
x=GetADCResult();
y=GetADCResult();
z=GetADCResult();
// 0-5v 对应 0-1024
// 3.3v/2 = 1.65v(0g时候值)
// 1.65v ->= 338 (AD值即0X0152)
x-=0X0152; //
y-=0X0152;
z-=0X0152;
Q=x;
T=y;
K=z;
Q=-Q;
Roll=(float)(((atan2(K,Q)*)/3.14159265)+);
Pitch=(float)(((atan2(K,T)*)/3.14159265)+);
conversion(Roll); //横滚角0-360度
//conversion(Pitch); //俯仰角0-360度
SendData(bai);
SendData(shi);
SendData(ge); SendData(0x0d);
SendData(0x0a);//换行,回车 Delay();
}
}
STC单片机串口输出ADXL335角度值的更多相关文章
- 单片机成长之路(51基础篇) - 002 STC单片机冷启动和复位有什么区别
STC单片机简介 STC单片机是一款增强型51单片机,完全兼容MCS-51,还增加了新的功能,比如新增两级中断优先级,多一个外中断,内置EEPROM,硬件看门狗,具有掉电模式,512B内存等.还支持I ...
- STC单片机控制28BYJ-48步进电机
STC单片机4*4按键控制步进电机旋转 28BYJ-48型步进电机说明 四相永磁式的含义 28BYJ-48工作原理 让电机转起来 最简单的电机转动程序 电机转速缓慢的原因分析 便于控制转过圈数的改进程 ...
- STC 单片机ADC实现原理
模数转换器原理 数模转换器( analog to digitI converter,ADC),简称为A/D,ADC是链接模拟世界和数字世界的桥梁.它用于将连续的模拟信号转换为数字形式离散信号.典型的, ...
- STC单片机Flash做EEPROM的代码
STC官方给出的建议: /***************************************************************Author:Liming*** * @brie ...
- STC单片机 IAP(EEPROM)的使用
STC89C51.52内部都自带有2K字节的EEPROM,54.55和58都自带有16K字节的EEPROM,STC单片机是利用IAP技术实现的EEPROM,内部Flash擦写次数可达100,000 次 ...
- STC15系列通用-STC15F2K60S2/STCW4K32S4读取DHT11温湿度传感器数据串口输出代码实例工程免费下载
//为了方便大家调试,另附程序工程共大家下载,下载地址:https://www.90pan.com/b1908750 //************************** //程序说明:stc ...
- TI CC2541的串口输出.
http://blog.csdn.net/feilusia/article/details/47431659 基本上看上面这个博客的. 重点是: 1. 关闭流控, 在npi.h里面, 将 #defin ...
- c++ 弧度值与角度值的转换
Rad_to_deg --- 弧度_到_角度 的 比率Rad_to_deg = 45.0 / atan(1.0): 弧度值到角度值的转换 用 角度 = 弧度值* Rad_to_deg 角度值到弧度值的 ...
- verilog实验3:AD转换后串口输出到PC端
一.实验任务 通过tcl549AD转换芯片将模拟电压信号转换为数字信号,并通过串口显示到电脑上.此AD转换芯片为串行转换芯片,且转换速率要和串口选择的速率匹配.等待串口发送完后,再进行下一次AD转换. ...
随机推荐
- 微信小程序通过api接口将json数据展现到小程序示例
这篇文章主要介绍了微信小程序通过api接口将json数据展现到小程序示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧实现知乎客户端的一个重要知识前提就是,要知道怎么通过 ...
- Thinkphp5 使用odbc连接到sqlserver
在PHP中访问mssql有两个方式 1.安装相应的驱动,如sqlsrv 2.直接使用PHP自带的ODBC驱动(不需要安装) 本文直接使用自带的ODBC驱动 在使用前请确定PHP开启了php_pdo ...
- 利用NATAPP隧道解决微信公众号开发之本地调试难题
一.问题 众所周知,微信公众号开发需要公网的有效域名和80端口,本机当然互联网是访问不了的.那么我们难道去一个公网的服务器去开发吗?那样是不是太土了. 答案当然是,NO 当然我们在做微信支付的时候,有 ...
- js获取对象值的方式
js获取对象值的方式 var obj = {abc:"ss",nn:90}; var v1 = obj.abc;//使用点的方式 var v2 = obj["abc&qu ...
- asp.net给文件分配自己主动编号,如【20140710-1】
在开发办公软件的时候,须要给非常多文件什么的东西分配一个编号.是依照日期来的,比方2014.07.10的第一个文件编号就为20140710-1,这一天的第二个文件编号就为20140710-2,以此类推 ...
- iOS SDK 从配置文件里读SDK。转化成class 可同时加载多个SDK
首先在工程中加入XXX plist 配置文件. 然后在key 输入名字比如allsdk value 里填写.a 文件的名字 NSString *plistPath = [[NSBundle mai ...
- Xcode missing file or .png is missing from working copy
当不小心在工程文件中删掉文件时.有可能会提示 .xxx is missing from working copy 有可能是SVN引起的.删掉这个文件就好了 如果是单个文件.进入Terminal 相 ...
- 【树莓派】使用VNC进行远程控制
之前有进行过VNC以及xrdp连接树莓派,并成功了. 这里看到一篇比较新的,基于mac的连接,文章转载收藏,实践可参考. 这一课里我们将学习如何在树莓派上安装和使用VNC.它可以使你通过图形界面的方式 ...
- ExtJs4.2中Tab选项卡的右击关闭其它和关闭当前功能不准确的解决方法
一.ExtJs4.2中Tab选项卡的右击关闭其它和关闭当前功能不准确的解决方法 二.找到ux目录下的TabCloseMenu.js文件,将内容替换成下面代码. 三.代码: /** * Plugin f ...
- Additional information: 对 COM 组件的调用返回了错误 HRESULT E_FAIL
1:Winform应用通过mshtml操作IE浏览器DOM时,第一次运行正常,点击第二次时错误信息如下 A first chance exception of type 'System.Runtime ...