历史上的今天
返回首页

历史上的今天

今天是:2024年10月15日(星期二)

正在发生

2019年10月15日 | MSP430学习笔记11-八路ADC采集诺基亚5110液晶显示

2019-10-15 来源:eefocus

本程序采用的是八路ADC单次采集的模式,根据配置,在单次的模式下转换完成后ADC12SC会自动复位,因此需要在循环中进行ADC12CTL0 |= ADC12SC;操作,而如果配置成连续采集的模式,只需要在程序开始将ADC12SC置位一次就可以,但是就需要注意当进入中断后如果不手动禁止中断会一直停留在循环中,因此在采集到需要的数据后需要将ADC关闭或者中断使能禁止才能重新回到主函数,这一点需要注意。


八路单次采集的程序如下:


/***************************************

八路AD多路单次采集基亚5110液晶显示

采集模式:多路单次

****************************************/


#include

#include "LCD5110.h"

#define   uint  unsigned int

#define   uchar unsigned char


unsigned char ad0[]="1:0.0V";

unsigned char ad1[]="2:0.0V";

unsigned char ad2[]="3:0.0V";

unsigned char ad3[]="4:0.0V";

unsigned char ad4[]="5:0.0V";

unsigned char ad5[]="6:0.0V";

unsigned char ad6[]="7:0.0V";

unsigned char ad7[]="8:0.0V";

uchar flag=1;


uint temp0,temp1,temp2,temp3,temp4,temp5,temp6,temp7;


void Init_Clk()

{

    uchar i;

    BCSCTL1&=~XT2OFF;  //打开XT振荡器    

    do

{

        IFG1 &= ~OFIFG;                 //清除振荡错误标志 

        for(i = 0; i < 100; i++)

  _NOP(); //延时等待

        }

    while ((IFG1 & OFIFG) != 0); //如果标志为1继续循环等待

    IFG1&=~OFIFG;

    BCSCTL2|=SELM1+SELS;//MCLK 8M and SMCLK 1M 

}

void Init_ADC()

{

    P6SEL|=0XFF;                                //信号采集端口选择第二功能

    ADC12CTL0 = ADC12ON+SHT0_8+MSC;            // 打开ADC+设置采样时间

    ADC12CTL1 = SHP+CONSEQ_1;                  // 使用采样时序电路信号+多路单次模式

    //上面的寄存器配置采样保持触发源选择时ADC12SC,采集信号使用采样时序电路产生的信号

    // 转换模式为多路单次复转换 上面的设置必须在ENC=0的情况下设置

    //设置每个通道的输入端口和参考电压,参考电压默认为AVCC 3.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次方       

返回值  :无

********************************************/

void Trans_val(uchar ptr[6],uint Hex_Val)

{

    unsigned long caltmp;

    uint Curr_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;             //小数位 

}


void main()

{

    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中断服务函数

参    数:无       

返回值  :无

********************************************/

#pragma vector=ADC_VECTOR

__interrupt void ADC12ISR (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;

    Trans_val(ad7,temp7);

}

推荐阅读

史海拾趣

极海半导体(Geehy)公司的发展小趣事

机顶盒,这一在现代家庭娱乐中占据重要地位的设备,全称为数字视频变换盒,它不仅是连接电视机与外部信号源的桥梁,更是数字电视技术与互联网融合创新的结晶。从广义上讲,机顶盒泛指所有与电视机连接的网络终端设备,它们能够接收来自有线电缆、卫星天线、宽带网络及地面广播的数字信号,并将其转换为适合电视播放的格式。

从功能划分上,机顶盒可分为数字机顶盒和网络机顶盒两大类。数字机顶盒主要负责数模转换,使模拟电视机也能收看数字电视节目;而网络机顶盒则进一步融入了互联网功能,提供更为丰富的互动娱乐体验,如在线视频、网络购物、社交媒体浏览等。近年来,随着技术的发展,网络机顶盒不断升级,支持高清、超高清视频播放,并集成人工智能技术,实现语音控制、智能推荐等功能,为用户带来更为便捷、智能的观影体验。

在技术层面,机顶盒的发展深受高清、超高清、云计算、边缘计算以及5G等新兴技术的推动。这些技术的应用不仅提升了机顶盒的性能,还为其内容的创新提供了强有力的支持。同时,随着市场竞争的加剧,机顶盒厂商不断优化产品设计,提升用户体验,以满足用户对高质量娱乐内容日益增长的需求。

综上所述,机顶盒作为家庭娱乐的重要组成部分,正通过技术的不断创新和市场的持续发展,为用户提供更加丰富、便捷、智能的观影体验。

爱浦电子(AIPULNION)公司的发展小趣事

在产品质量得到保障的同时,爱浦电子也积极开展市场拓展和品牌建设工作。公司积极参加国内外电子展会和技术交流活动,与众多行业伙伴建立了紧密的合作关系。此外,爱浦电子还注重品牌形象的塑造,通过统一的对外标识和全新的VI企业形象,提升了公司整体形象。这些努力使得爱浦电子在市场上逐渐树立起了良好的口碑和品牌形象。

COMPUTAR公司的发展小趣事

COMPUTAR公司的前身是日本CBC株式会社,成立于1925年,总部设立在繁华的东京。自创立之初,CBC便致力于光学技术的研究与应用,为后续的镜头制造奠定了坚实的基础。在随后的几十年里,CBC不断积累技术经验,逐步在光学领域建立起自己的声誉。

CDIL[Continental Device India Pvt. Ltd.]公司的发展小趣事

CDIL采用无晶圆厂模式生产分立半导体器件,专注于功率半导体和高可靠性组件的研发与生产。这一模式使CDIL能够更加灵活地应对市场变化,降低生产成本,提高产品竞争力。同时,公司还采用自己的封装技术,确保产品能够满足太空应用等严苛环境的严格标准。

启珑(CHIPLON)公司的发展小趣事

自1964年起,CDIL便踏上了半导体制造的先驱之路。当时,电子产业正处于蓬勃发展的初期,CDIL凭借对技术的敏锐洞察和不懈追求,迅速成为印度乃至全球半导体制造领域的佼佼者。其硅芯片和器件的制造质量和技术水平均达到了世界级标准,为印度电子产业的发展奠定了坚实基础。

ALPS公司的发展小趣事

自1964年起,CDIL便踏上了半导体制造的先驱之路。当时,电子产业正处于蓬勃发展的初期,CDIL凭借对技术的敏锐洞察和不懈追求,迅速成为印度乃至全球半导体制造领域的佼佼者。其硅芯片和器件的制造质量和技术水平均达到了世界级标准,为印度电子产业的发展奠定了坚实基础。

问答坊 | AI 解惑

数控电源资料

数控电源精度在ad/da的选择上占很大因素欢迎回帖咨询…

查看全部问答>

FPGA/CPLD初学者应该如何入手?

作为一个有电子基本理论基础的新手,应该如何入手? 是应该先学习verilog&vhdl语言,还是其他什么? 我有听说过ilinx,altera和quartus,modelsim谁能帮忙具体解释下是什么?…

查看全部问答>

关于F28027功耗问题

刚用F28027,PCB做好以后,通上电发现电流就有60MA,很奇怪,烧入程序后发现电流有90MA,不知道为什么耗那么多电流,这个正常吗,根据芯片资料,我只给3.3V供电,那个VREGENZ我用电阻下拉到地了,在没烧程序前拿掉电阻,电流就没了,但是烧好程序后那个电阻有无 ...…

查看全部问答>

电子大赛试练 宽带放大器设计求助

最近在做一个宽带放大器 0-8M输入 要求放大1万倍 考虑三运放的仪表放大电路 找不到合适的放大器 买了ad846放大倍数不行啊 哪位高人能给推荐个合适的啊 或者换个电路用三极管场效应管也行  实在是在这方便没什么思路啊  给点指 ...…

查看全部问答>

华为硬件工程师手册..pdf免费!!!

.华为硬件工程师手册..pdf免费!!!…

查看全部问答>

【xilinx技术问答】FPGA能够实际工作的频率?

ISE软件中给出的综合报告和静态时序分析报告都有工作频率,请问哪一个是FPGA能够实际工作的频率? 答:经过映射和布线的频率值才是FPGA可以真正跑到的频率值看静态时序分析报告,基本上是这个数值。通过查看ISE9.103的 implement Design>Place ...…

查看全部问答>

SQLCE3.0问题

1、智能设备平台WINCE5.0、PC编程VS2005 C# 2、我想在WINCE5.0上操作数据库。运行我我自己的应用软件时提示:报错:无法加载 DLL“SQLCEME30.DLL”: 3、我重新编译内核,现在运行wince5.0时,WINGDOWS目录下已经有了所需的7个*。DLL文件,注册表 ...…

查看全部问答>

音频驱动某函数代码看不太懂,救助。

PBYTE OutputStreamContextM16::Render2(PBYTE pBuffer, PBYTE pBufferEnd, PBYTE pBufferLast) {     LONG CurrT = m_CurrT;     LONG DeltaT = m_DeltaT;     LONG CurrSamp0 = m_CurrSamp[0];     ...…

查看全部问答>

SQLServer CE 3.1

哪位大哥有SQLServer CE 3.1在WinCE6.0下应用的例子啊,以及如何详细部署的 资料,有的请指教,问题解决在送分.谢谢~…

查看全部问答>

CortexM0_IAP示例代码程序下载

CortexM0_IAP示例代码程序下载…

查看全部问答>