历史上的今天
今天是:2024年10月12日(星期六)
2019年10月12日 | MSP430 ADC模数例程
2019-10-12 来源:eefocus
下面以路灯控制器的设计为例说明 ADC12 的使用方法。路灯在一定的亮度值以上将熄
灭,而在亮度低于某个数值时亮起来。下面是简图。当亮度较大、光线较强时,光敏电阻的电阻值比较小,这时它与下面 10K 分压,则送达 ADC12 的电压比较高;而当亮度较小、光线较弱时,光敏电阻的电阻值比较大,这时它与下面 10K 分压,则送达 ADC12 的电压比较低。通过 ADC12 模块转换出具体的表示光强度的数值(光线越强,转换后的数值越大,但不成正比例),再设定一个开启路灯的阀值数据,则可以通过实际测量的光强度数据与阀值数据比较得到是否开启路灯的目的。
下面是具体示例程序:(使用单通道单次定时转换)。
#include "msp430x44x.h" //使用 MSP430F447
void main(void)
{
WDTCTL = WDTPW+WDTHOLD; // 停止看门狗
P6SEL |= 0x01; //定义 P6.0 为模拟输入通道 0
ADC12CTL0 = ADC12ON+SHT0_2; // 打开 ADC12 电源,并设置采样时间
ADC12CTL1 = SHP;
ADC12CTL0 |= ENC; //使能转换
while (1)
{
delay(60000) //延时 1 秒(大致,相当于定时器的作用)
ADC12CTL0 |= ADC12SC; // 开始启动转换
while ((ADC12IFG & ADC12BUSY)==0); //等待转换的完成
if(ADC12MEM0<1234) //读取转换结果并比较以得到结论
P1OUT |= BIT0; //当亮度低于阀值时打开路灯
else P1OUT ^= BIT0; //当亮度高于或等于阀值时关闭路灯
}
}
史海拾趣
|
在XXX.bat,XXX.reg和source文件中经常会遇见;,@,#这三种符号。 ;应该是注释掉的意思。 @应该怎么理解? 比如:set BSP_NOUSBFN= set BSP_USBFNCLASS=SERIAL @REM set BSP_USBFNCLASS=MAS ...… 查看全部问答> |
|
ATMEL AT91SAM9263开发板 技术交流QQ群 欢迎加入 性价比最高的工业级ARM9开发板 TE9263,现仅售980元 TE9263开发板采用ATMEL AT91SAM9263微控制器,其内部嵌入了一个ARM926EJ-S处理器。该处理器的并行总线架构采 ...… 查看全部问答> |
|
一 为什么学Access 为什么学Access? 很多朋友要奇怪的问了,你不是在讲Lm3sxxxx的网络开发吗?咋个讲起Access数据库来了,这不是牛头不对马嘴,挂羊头买狗肉了吗? 不,一点也不,首先既然你也是在学习, ...… 查看全部问答> |
|
在STVD建立工程后,有一个stm8_interrupt_vector.c的文件,我在里面建立了中断向量和中断服务函数, 但是问题来了,在main函数中怎么使能中断和关中断啊?还是已经是默认启动了? 我以前做过飞思卡尔的,建立完工程,就有个使能中断的头文件 ...… 查看全部问答> |
|
void uart_irq(void *context,unsigned long id){ IOWR_ALTERA_AVALON_UART_STATUS(UART_232_BASE,0x0); //本想清标志位,状态寄存器的部分位写0可以清零,但接收标志位和发送标志位写0无作用,只有发送完或读 ...… 查看全部问答> |




