车流量检测代码
- 格式:doc
- 大小:30.50 KB
- 文档页数:2
#include "ioCC2530.h"
#include "LM6059BCW.h"
#define uchar unsigned char
#define uint unsigned int
#define int16 short
#define uint16 unsigned short
uchar D1[]={"DIANY AZHI: mv"};
uchar D2[]={"shuliang: "};
uint voltage;
uchar A1,A2,A3,A4;
/****系统时钟不分频
计数时钟32 分频
**************************/
void InitClock(void)
{
CLKCONCMD = 0x28; //时器计数时钟设定为1M Hz, 系统时钟设定为32 MHz
while(CLKCONSTA & 0x40); //等晶振稳定
}
/****************************
//初始化LED 控制IO 口程序
*****************************/
void InitLEDIO(void)
{
P1DIR|=0xff;
P0DIR|=0Xfd;
}
void Init_ADInput()
{
P0SEL|=0X02; //设置P0.1外部模拟输入
P0DIR&=~0X02;//设置为输入
}
uint get_WB() //得到微波信号
{
uint16 value;
ADCCON3|=0X31; //1.25v内部参考电压,512DEC,12为有效,单通道转换源为AIN1 ADCCON1|=0X30; //ADC启动方式选择为ADCCON1.ST=1事件
ADCCON1|=0X40; //ADC启动转换
while(!ADCCON1&0X80); //等待AD转换完成
value=ADCL>>4;
value|=(((uint16)ADCH)<<4); //连接ADCH和ADCL,并将值赋给value return (uint)(value*1.25*1000/8192); //将AD转换的值变为电压值,单位为毫伏}
void data_processing()
{
A1=voltage/1000;
A2=(voltage/100)%10;
A3=(voltage/10)%10;
A4=voltage%10;
D1[10]=A1+0X30;
D1[11]=A2+0X30;
D1[12]=A3+0X30;
D1[13]=A4+0X30;
}
void main()
{
InitLEDIO();
Init_ADInput(); //端口设置
InitClock(); //时钟设置
ResetLCD();
initLCDM(); //初始化LCD
ClearRAM(); //清液晶缓存
delay_us(100);//延时
while(1)
{
voltage=get_WB();
data_processing(); //将微波信号转换成电压
Print8(15,3,D1); //显示电压值
//delay_ms(2000);
}
}