历史上的今天
返回首页

历史上的今天

今天是:2025年02月01日(星期六)

2018年02月01日 | STC1256xxAD 系列 MCU 的 A/D 转换程序

2018-02-01 来源:eefocus

//  ADC DEMO_56xx 程序演示 STC1256xxAD 系列 MCU 的 A/D 转换功能。时钟 18.432MHz 
//  转换结果以 16 进制形式输出到串行口,可以用串行口调试程序观察输出结果。 
//--------------------------------------------------------------------- 

 

#include "STC12C5620AD.H" 
//--------------------------------------------------------------------- 
typedef    unsigned char   INT8U; 
typedef    unsigned int    INT16U; 
//--------------------------------------------------------------------- 
//以下选择 ADC 转换速率,只能选择其中一种 
                        //          SPEED1 SPEED0  A/D转换所需时间 
#define AD_SPEED   0x60 //0110,0000   1      1     270个时钟周期转换一次, 
                        //                         CPU工作频率27MHz时, 
                        //                         A/D转换速度约100KHz 
//#define AD_SPEED   0x40 //0100,0000   1      0     540个时钟周期转换一次 
//#define AD_SPEED   0x20 //0010,0000   0      1     810个时钟周期转换一次 
//#define AD_SPEED   0x00 //0000,0000   0      0     1080个时钟周期转换一次 
//--------------------------------------------------------------------- 
void initiate_RS232 (void);         // 串口初始化 
void Send_Byte(INT8U one_byte);     // 发送一个字节 
INT16U get_AD_result(INT8U channel); 
void delay(INT8U delay_time);       // 延时函数 
//--------------------------------------------------------------------- 
void main() 

    INT16U ADC_10bit; 

    initiate_RS232();               //波特率 = 9600 

    ADC_CONTR |= 0x80;              //1000,0000 打开 A/D 转换电源 
    while(1) 
    { 
        Send_Byte(0xAA); 
        Send_Byte(0xAA); 

        ADC_10bit = get_AD_result(2);//P1.2 为 A/D 当前通道 
        Send_Byte(ADC_10bit >> 8);  //发送高 8 位测量结果 
        delay(0x1); 

        ADC_10bit = get_AD_result(3);//P1.3 为 A/D 当前通道, 测量并发送结果 
        Send_Byte(ADC_10bit >> 8);  //发送高 8 位测量结果 
         
        delay(0x30);                //延时 
    } 

//--------------------------------------------------------------------- 
void delay(INT8U delay_time)        // 延时函数 

    INT16U n; 
    while(delay_time--)  
    {  
        n = 6000; 
        while(--n); 
    } 

//--------------------------------------------------------------------- 
void initiate_RS232 (void)          // 串口初始化 

    ES = 0;                         // 禁止串口中断 
    TMOD = 0x20;                    // 设置 T1 为波特率发生器 
    SCON = 0x50;                    // 0101,0000 8位数据位, 无奇偶校验 
    TH1 = 0xFB;                     // 18.432MHz 晶振, 波特率 = 9600 
    TL1 = 0xFB; 
    RI = 0; 
    TR1 = 1; 
    ES = 1;                         // 允许串口中断 

//--------------------------------------------------------------------- 
void Send_Byte(INT8U one_byte)      // 发送一个字节 

    TI = 0;                         // 清零串口发送中断标志 
    SBUF = one_byte; 
    while (!TI); 
    TI = 0;                         // 清零串口发送中断标志 

//--------------------------------------------------------------------- 
INT16U get_AD_result(INT8U channel) 

    ADC_DATA   = 0; 

    channel &= 0x07;                //0000,0111 清0高5位 
    ADC_CONTR = AD_SPEED; 
    ADC_CONTR = 0xE0;               //1110,0000 清 ADC_FLAG, ADC_START 位和低 3 位 
    ADC_CONTR |= channel;           //选择 A/D 当前通道 
    delay(1);                       //使输入电压达到稳定 
    ADC_CONTR |= 0x08;              //0000,1000 令 ADCS = 1, 启动A/D转换,  
    while (1)                       //等待A/D转换结束 
    { 
        if (ADC_CONTR & 0x10)       //0001,0000 测试A/D转换结束否 
        { break; } 
    } 
    ADC_CONTR &= 0xE7;              //1111,0111 清 ADC_FLAG 位, 关闭A/D转换,  

    return (ADC_DATA<<8 | ADC_LOW2); //返回 A/D 10 位转换结果 


推荐阅读

史海拾趣

灿科盟(Ckmtw)公司的发展小趣事

灿科盟电子实业有限公司成立于2003年8月,注册资金100万。公司创始人凭借在电子行业多年的积累,决定创立自有品牌“CKMTW”,专注于连接器产品的研发与生产。在初创阶段,公司面临着资金紧张、市场竞争激烈等挑战,但凭借坚定的信念和不断的技术创新,逐渐在市场中站稳脚跟。

Helicomm公司的发展小趣事

灿科盟电子实业有限公司成立于2003年8月,注册资金100万。公司创始人凭借在电子行业多年的积累,决定创立自有品牌“CKMTW”,专注于连接器产品的研发与生产。在初创阶段,公司面临着资金紧张、市场竞争激烈等挑战,但凭借坚定的信念和不断的技术创新,逐渐在市场中站稳脚跟。

南晶电子(DGNJDZ)公司的发展小趣事

在发展过程中,南晶电子始终秉持合作共赢的理念。公司与上下游企业建立了紧密的合作关系,共同推动产业链的发展。同时,南晶电子还积极参与社会公益事业,为社会进步和发展贡献自己的力量。通过与各方的共同努力,南晶电子在电子行业树立了良好的企业形象和口碑。

广州奥松公司的发展小趣事

为了满足市场对于芯片的日益增长的需求,奥松电子决定启动建设8英寸MEMS特色芯片IDM产业基地。这一项目的实施,不仅提升了公司的产能规模,也进一步巩固了公司在电子行业中的地位。通过引进先进的生产设备和技术,奥松电子成功打造了一个集研发、生产、销售于一体的产业基地,为公司的长远发展奠定了坚实的基础。

High Tech Chips Inc公司的发展小趣事

随着公司的不断发展,奥松电子陆续获得了多项荣誉资质,如“国家专精特新‘小巨人’企业”、“国家高新技术企业”等。这些荣誉的获得,不仅证明了公司在电子行业中的实力与地位,也为公司的品牌建设提供了有力的支撑。同时,这些荣誉也为公司的市场拓展和业务发展提供了更多的机遇和可能。

Eureka Microelectronics Inc公司的发展小趣事

Eureka公司自1995年成立以来,一直致力于电子技术的研发和创新。在早期阶段,公司凭借一款具有创新性的液晶显示驱动IC产品,成功打入市场。随着技术的不断进步,Eureka逐步拓展了产品线,推出了包括类比-数位混合信号处理器、系统应用完整方案等一系列产品。这些产品的推出,不仅丰富了Eureka的产品线,也提升了公司在行业内的竞争力。

问答坊 | AI 解惑

FTTH的黎明并非静悄悄5

四、适合FTTH建设的光缆光纤    多模耦合光纤     多模耦合光纤广泛用于光纤通信与光纤传感领域。随着光通信器件的发展,对用于器件之间信号能量传输耦合的光纤需求量不断增加,对光纤性能也有更高的要求。多模耦合光纤有良好 ...…

查看全部问答>

求高手帮忙设计一个导通测试装置

一个导通测试装配,用于测试产品的两端是否导通。当产品两端的电阻值小于80欧时,通过蜂鸣器报警导通,当电阻大于80欧时则蜂鸣器不报警,表求不通。…

查看全部问答>

求助51单片机采集频率

用51的普通IO,采集5KHz到8KHz的可变频率,需要用几个定时器?我用一个定时器做,可采回来的频率跟示波器显示的频率相差一个数量级,急需帮助!请大侠出来指点。…

查看全部问答>

文件系统概念解答

文件系统概念解答 DRV\\FileSystem\\Fastfat    ---------DEV (unamed)                   -------- MED \\Device\\HarddiskVolume1         ...…

查看全部问答>

如何关闭来电铃声

请问有没有办法关闭来电铃声,同时可以听见播放视频的音乐,并且不拒接或接听来电。 我就是想来电的时候插入一段视频,但听不见视频音乐,只能听见来电铃声,我想把来电铃声关了,可以播放视频声音。 各位大侠,有什么好的解决办法吗?…

查看全部问答>

如何获取磁盘IO的运行效率

如何监视磁盘IO的当前运行效率(百分比或速度)。 有没有什么可以提示一下的? 3x…

查看全部问答>

怎样写同时驱动两个相同网卡的驱动?

在windows中,通常一个驱动只能驱动一个网卡,网卡的主要参数有  1. IRQ 2. I/O地址 3. Base Memory 4. DMA, 我现在在写vista下的网卡驱动,要求能够同时驱动两个相同的网卡,怎样才能做到呢? 我对windows设备管理不是很熟悉,希望大家能给点思路 ...…

查看全部问答>

IC卡读卡器

求IC卡读卡器,可以读写 1。公司门卡数据 2。大食代餐饮卡数据 3。公交卡数据 还有怎么看IC卡使用什么芯片 本人纯属好奇,没有不良企图 …

查看全部问答>

请高手编写一个c程序

下图是(51)单片机的2个端口P0和P1。P0的每个输出管脚连接一个三态门的输入端,共8个三态门。每个三态(门的)控制端分别由P1的8个输出控制。 请用c语言写一段程序:三态门(延时)输出的所有组合   感谢!  …

查看全部问答>

PIC16f877中文资料

本帖最后由 Hugo801122 于 2014-3-14 02:35 编辑 Microchip就不用介绍了吧,前20大fabless原厂之一,做嵌入式开发的用单片机经常会和Microchip打交道,当然ateml也是其强力对手。这里把我之前用的pic16给大家分享。。。。。 PIC16F877原理简介 ...…

查看全部问答>