#include "iocc2530.h"
unsigned char AD_data[]="0000"; //存放AD值
unsigned char V_data[]="00000000"; //存放电压值
unsigned int adcvalue=0; //ADC值
unsigned int result=0; //电压值
unsigned int count=0;
void uart_senString(unsigned char *str); //发送字符串
void uart_senbit(unsigned char bit); //发送字符
void delay(unsigned int tt);
void uart_init();
void Timeinit();
void initial_AD();
void main()
{
CLKCONCMD &=~0x40; //切换系统时钟源为32M晶振
while(CLKCONSTA & 0x40);//等待32M外部晶振稳定
CLKCONCMD &=~0x47; //设置系统主时钟频率为32M
Timeinit(); //初始化定时器
uart_init(); //初始化串口
initial_AD(); //初始化AD
while(1)
{
if(count == 15 )
{
while(!(ADCCON1&0x80));//等待转换完成
//获取AD值
adcvalue=ADCL>>3;
adcvalue|=(unsigned int)(ADCH<<1>>1) <<5;
AD_data[0]=adcvalue/1000%10+0x30;
AD_data[1]=adcvalue/100%10+0x30;
AD_data[2]=adcvalue/10%10+0x30;
AD_data[3]=adcvalue%10+0x30;
//获取电压值
result=33000*adcvalue/40950; //AD值转换成电压 为了方便计算增大1000倍
V_data[0]=(result/1000%10)+0x30;
V_data[1]='.';
V_data[2]=(result/100%10)+0x30;
V_data[3]=(result/10%10)+0x30;
V_data[4]=(result%10)+0x30;
V_data[5]='V';
V_data[6]='\r';
V_data[7]='\n';
uart_senString("ADC值:");
uart_senString(AD_data); //ADC值发送到PC端
uart_senString("\r");
uart_senString("电压值:");
uart_senString(V_data);
ADCCON3=0xB0; //再次启动转换
count = 0 ;
}
}
}
//中断服务函数
#pragma vector=T1_VECTOR
__interrupt void Time1()
{
T1STAT &= ~0x01;
count ++ ;
}
//串口接收服务函数
#pragma vector=URX0_VECTOR
__interrupt void uartIE()
{
}
void initial_AD()
{
//设置IO口
P0SEL|=(1<<0); //外设功能
P0DIR&=~(1<<0); //输入
APCFG|=0x01; //配置模拟IO
ADCCON3=0xB0; //1011 0000 通道0 512抽取率 参考电压AVDD5(3.3V)
//ADCCON1=0x20; //启动定时器1和通道0比较事件
}
void Timeinit()
{
T1CC0H =0xC3;
T1CC0L =0x50; //定时0.2秒
T1CTL =0x0E; //分频系数是128,模模式
T1CCTL0 |=0x04; //通道0比较模式
T1IE=1; //使能定时器中断
T1OVFIM=1; //使能定时器溢出中断
EA=1; //总中断使能
}
void uart_init()
{
P0SEL |=0x0C; //串口外设
U0BAUD =216;
U0GCR =11;//设置串口波特率
U0UCR |=0x80; //清除和控制
U0CSR |=0xC0; //串口状态和使能
URX0IF =0;//清除中断标志位
UTX0IF =0;
URX0IE =1; //串口接收中断
EA=1;
}
void uart_senbit(unsigned char bit)
{
U0DBUF=bit;
while(!UTX0IF);
UTX0IF=0;
}
void uart_senString(unsigned char *str)
{
while(*str !='\0')
{
uart_senbit(*str++);
}
}
void delay(unsigned int tt)
{
while(tt--);
while(tt--);
while(tt--);
while(tt--);
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
实验内容:CC2530 模拟量与信号量的转换 ADC 的使用,并利用 UART 实现 CC2530 芯片与 PC 机的数据传输,把电压模拟量转变为数字信号。 zigbee硬件实验,用的是CC2530,包含实验代码code一个文件夹和实验报告。 硬件开发语言:C语言 !!实验报告包括: 1、实验目的:实现的需求ADC信号量的转换 2、实验环境:CC2530 ZigBee节点模块系列实验平台 3、实验原理:原理图解释、输入输出引脚的选择 4、超详细实验步骤:从0开始搭建硬件zigbee开发平台、查找CC253X用户开发手册 需要开发手册的在另外的资源包里面,中文版本和英文版本都有。 5、实验代码:完整的代码以及清晰的注释,包括每个模块的功能和编写代码的逻辑 6、实验现象:自己在学校硬件实验室把代码烧进单片机获得的现象,不存在与网上其他的相同或相似。
资源推荐
资源详情
资源评论
收起资源包目录
06.ADC.zip (3个子文件)
code
06.ADC(含代码).txt 3KB
ADC.c 3KB
实验六 ADC.docx 1.94MB
共 3 条
- 1
傲娇味的草莓
- 粉丝: 360
- 资源: 31
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页