本程序采用的是八路ADC单次采集的模式,根据配置,在单次的模式下转换完成后ADC12SC会自动复位,因此需要在循环中进行ADC12CTL0 |= ADC12SC;操作,而如果配置成连续采集的模式,只需要在程序开始将ADC12SC置位一次就可以,但是就需要注意当进入中断后如果不手动禁止中断会一直停留在循环中,因此在采集到需要的数据后需要将ADC关闭或者中断使能禁止才能重新回到主函数,这一点需要注意。
八路单次采集的程序如下:
八路AD多路单次采集诺基亚5110液晶显示
采集模式:多路单次
#include
#include“LCD5110.h”
#defineuintunsignedint
#defineucharunsignedchar
unsignedcharad0[]=“1:0.0V”;
unsignedcharad1[]=“2:0.0V”;
unsignedcharad2[]=“3:0.0V”;
unsignedcharad3[]=“4:0.0V”;
unsignedcharad4[]=“5:0.0V”;
unsignedcharad5[]=“6:0.0V”;
unsignedcharad6[]=“7:0.0V”;
unsignedcharad7[]=“8:0.0V”;
ucharflag=1;
uinttemp0,temp1,temp2,temp3,temp4,temp5,temp6,temp7;
voidInit_Clk()
{
uchari;
BCSCTL1&=~XT2OFF;//打开XT振荡器
do
{
IFG1&=~OFIFG;//清除振荡错误标志
for(i=0;i《100;i++)
_NOP();//延时等待
}
while((IFG1&OFIFG)!=0);//如果标志为1继续循环等待
IFG1&=~OFIFG;
BCSCTL2|=SELM1+SELS;//MCLK8MandSMCLK1M
}
voidInit_ADC()
{
P6SEL|=0XFF;//信号采集端口选择第二功能
ADC12CTL0=ADC12ON+SHT0_8+MSC;//打开ADC+设置采样时间
ADC12CTL1=SHP+CONSEQ_1;//使用采样时序电路信号+多路单次模式
//上面的寄存器配置采样保持触发源选择时ADC12SC,采集信号使用采样时序电路产生的信号
//转换模式为多路单次复转换上面的设置必须在ENC=0的情况下设置
//设置每个通道的输入端口和参考电压,参考电压默认为AVCC3.3V
ADC12MCTL0=INCH_0;
ADC12MCTL1=INCH_1;
ADC12MCTL2=INCH_2;
ADC12MCTL3=INCH_3;
ADC12MCTL4=INCH_4;
ADC12MCTL5=INCH_5;
ADC12MCTL6=INCH_10;
ADC12MCTL7=INCH_11+EOS;//最后一个通道
ADC12IE=BIT7;//最后一个通道转换完成后使能ADC中断
ADC12CTL0|=ENC;//使能转换
}
/*******************************************
函数名称:Trans_val
功能:将16进制ADC转换数据变换成三位10进制
真实的模拟电压数据,并在液晶上显示
参数:Hex_Val--16进制数据
n--变换时的分母等于2的n次方
返回值:无
********************************************/
voidTrans_val(ucharptr[6],uintHex_Val)
{
unsignedlongcaltmp;
uintCurr_Volt;
caltmp=Hex_Val;
caltmp=(caltmp《《5)+Hex_Val;//caltmp=Hex_Val*3
Curr_Volt=caltmp》》12;//Curr_Volt=caltmp/2^n
//参考电压为3.3V,所以计算公式应该为Hex_val*3.3/2^n
//乘除计算通过移位来进行可以有效的提高程序运行效率
ptr[2]=(Curr_Volt/10)+0x30;//个位
ptr[4]=(Curr_Volt%10)+0x30;//小数位
}
voidmain()
{
Init_Clk();
Init_ADC();
WDTCTL=WDTPW+WDTHOLD;
LCD_init();
LCD_showsh(0,0,“电压采集:”);
_EINT();//开启全局中断
P5DIR|=BIT5;
P3OUT|=~BIT5;
while(1)
{
ADC12CTL0|=ADC12SC;
LCD_prints(0,2,ad0);
LCD_prints(8,2,ad1);
LCD_prints(0,3,ad2);
LCD_prints(8,3,ad3);
LCD_prints(0,4,ad4);
LCD_prints(8,4,ad5);
LCD_prints(0,5,ad6);
LCD_prints(8,5,ad7);
}
}
/*******************************************
函数名称:ADC12ISR
功能:ADC中断服务函数
参数:无
返回值:无
********************************************/
#pragmavector=ADC_VECTOR
__interruptvoidADC12ISR(void)
{
temp0=ADC12MEM0;
Trans_val(ad0,temp0);
temp1=ADC12MEM1;
Trans_val(ad1,temp1);
temp2=ADC12MEM2;
Trans_val(ad2,temp2);
temp3=ADC12MEM3;
Trans_val(ad3,temp3);
temp4=ADC12MEM4;
Trans_val(ad4,temp4);
temp5=ADC12MEM5;
Trans_val(ad5,temp5);
temp6=ADC12MEM6;
Trans_val(ad6,temp6);
temp7 = ADC12MEM7;
上一篇:基于MSP430单片机实现ARINC429总线通讯的硬件设计
下一篇:MSP430单片机实现PWM控制LED灯的设计
推荐阅读
史海拾趣
随着公司技术的不断进步和产品质量的提升,AMOTECH在1996年被政府通讯部评为“光明前途企业”。这是对公司技术实力和市场潜力的认可,也为公司的后续发展提供了有力支持。同年,公司还获得了ISO9000认证,这标志着公司的质量管理体系达到了国际标准,为公司进一步拓展国际市场打下了坚实基础。
1994年,在韩国这片科技热土上,AMOTECH公司应运而生。创立之初,公司便立志于在电子行业中占据一席之地。创始团队凭借对技术的深刻理解和敏锐的市场洞察,决定专注于金属氧化物压敏电阻(MOV)的研发与生产。初期的发展并非一帆风顺,但团队凭借坚定的信念和不懈的努力,逐步在市场中建立了良好的口碑。
在快速发展的过程中,启攀微电子(CHIPHOM)始终注重与产业链上下游企业的合作。公司与多家知名芯片制造商、封装测试厂商和终端产品厂商建立了紧密的合作关系,共同推动产品的研发和市场推广。通过合作共赢的模式,启攀微电子(CHIPHOM)不仅提升了自身的技术水平和市场竞争力,还为整个电子行业的发展做出了积极贡献。
为了进一步提升公司的竞争力,Aromat Corp开始实施国际化战略。公司积极拓展海外市场,通过设立海外分支机构、与当地企业合作等方式,将产品推向全球。同时,Aromat Corp还加强了与国际同行的交流与合作,学习借鉴先进的经验和技术,不断提升自身的综合实力。
Cybernetic Micro Systems(简称CMS)的创始人李华,是一位热衷于电子技术的天才工程师。他在大学期间就研发出了一款高效能、低功耗的微处理器原型,这一成果引起了业界的广泛关注。毕业后,李华决定创业,将他的研究成果商业化。于是,Cybernetic Micro Systems应运而生,专注于研发和生产高性能的微处理器和配套设备。凭借独特的技术优势,CMS很快在电子行业中崭露头角。
为了进一步扩大市场份额和影响力,CNC Tech公司积极实施全球化战略。公司通过参加国际展会、设立海外分支机构等方式,加强与全球客户的交流与合作。同时,CNC Tech还积极引进国际先进的技术和管理经验,不断提升自身的竞争力。在全球化战略的推动下,CNC Tech的产品和服务逐渐打入国际市场,赢得了全球客户的认可和信赖。
(1)MMS手机本身的局限性问题:目前有少数厂商推出了支持MMS业务的彩屏手机,但价格高且可供选择的款式较少。 解决方法:终端厂家尽量推出大多数手机用户能够接收的尽量多种类的MMS终端。 (2)不同品牌手机的兼容性问题:不同品牌的手机之间 ...… 查看全部问答∨ |
|
虽然不是我自己整理的,但是我是综合很多的相关资料整理的,发出来不为别的,只为养家糊口,大家看着有用的话就收藏吧! 算了 还是不卖了,来这的新手也不容易,大家实惠才是真的!… 查看全部问答∨ |
电池技术发展到今天,已经走过了铅 酸电池和镍镉电池时代。目前正处于镍氢电池和锂离子电池的绿色电池时代。镍氢电池VS锂电池,谁才是真命天子?周末了解一些动态,分享出来。 2009年6月25日,工信部出台的《新能源汽车生产企业及产品准入管理规则 ...… 查看全部问答∨ |
是这样的,我最近在弄socket编程方面的东西。基uC/TCPIP 的,连接是建立好了,就是收发数据有问题:我将收发函数放在循环while(1)里面,发端开始一直发,发了一会就不发了,收端只能接收一次数据,第二次循环到recv时就卡死了…… 想 ...… 查看全部问答∨ |
VS2005中用vc写入的文件,为什么分别用记事本和写字板打开时格式不一致? 在VS2005中用vc开发wince上的应用程序,在OnTimer中定时向文件逐行写入字符串,部分代码如下: tempstr1.Insert(wcslen(tempstr1),_T("\\n")); CStdioFile file1; CFileException mExcept1; file1.Open ...… 查看全部问答∨ |
哪位大虾能发给我个串口通信的实例呀??最好用EVC写的。。感激涕零。\\ 我的邮箱6094189ye@163.com 我看到书上有CSerial 这个类,但STANDARDSDK下面没有这个类呀。。。???… 查看全部问答∨ |
我的是DELL1501本本,要实现纯DOS下使用串口(RS232)通信,在市场上买了个prolific USB转串口,不知是否可行?之前试过在DOS下可以使用USB鼠标,和读取USB软驱(B:)里的资料!… 查看全部问答∨ |
也是偶然看到一个节目,当初算是有炒作的因素在里面,是北大才子卖猪肉。好像是广州那边的,某人在九几年的时候从政府辞职下海,前后做过房地产、醋饮料等。让我感兴趣的是,当其瞅准猪肉市场时,带着自己手下千来口子,一齐转型。于是那些人一齐跨 ...… 查看全部问答∨ |
设计资源 培训 开发板 精华推荐
- 【EEWORLD第三十八届】2012年05月社区明星人物揭晓!
- 力源&安森美有奖直播:RSL15 - 安森美更高效更智能更安全的 BLE 5.2 蓝牙芯片
- 下载有礼|终于找到秘籍,示波器探头的选择和使用就靠它了!
- 阅读瑞萨电子电源模块系列白皮书,赢双重好礼:提升能量有礼&推荐100%有礼 !
- 证明自己,VICOR技术问题测试问卷,等您来挑战!好礼等您拿!
- 干货下载|ADI 系统方案精选 第6辑
- MicroPython抢鲜玩 Python遇上MCU=? 由你定
- 有奖直播:低功耗、小尺寸&高温环境、带触摸功能——瑞萨电子最新16位RL78/G系列单片机介绍
- 有奖直播|基于Source-down技术的全新英飞凌MOSFET,有效提升功率密度,肉眼可见