STC1256xxAD 系列 MCU 的 A/D 转换程序

发布者:古古斋最新更新时间:2018-02-01 来源: eefocus关键字:STC1256xxAD  MCU  转换 手机看文章 扫描二维码
随时随地手机看文章

//  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 位转换结果 


关键字:STC1256xxAD  MCU  转换 引用地址:STC1256xxAD 系列 MCU 的 A/D 转换程序

上一篇:stc单片机读片外扩展RAM,内部R/C时钟及ID号C语言程序
下一篇:STC90/89系列内部 EEPROM 放数据(C语言)

推荐阅读最新更新时间:2024-03-16 15:54

低成本隔离式3.3V到5V DC/DC转换器的分立设计
  隔离式 3.3V 到 5V 转换器通常用于远距离数据传输网络,这种网络中总线节点控制器由一个 3.3V 电源工作以节省电量,而总线电压为 5V,以保证在远距离传输过程中的信号完整性并提供高驱动能力。尽管市场上已经有了 3.3V 到 5V 转换的隔离式 DC/DC 转换器组件,但集成的 3.3V 到 5V 转换器仍然很难找到。即使找到,这些特定的转换器(特别是那些具有稳定输出的转换器)通常都有较长的产品交付时间、价格相对昂贵并且一般都有一定的隔离电压限制。   如果应用要求 2 kV 以上的隔离电压、60% 以上的转换器效率或者标准组件可靠的有效性,那么分立设计就是一种能够替代集成组件的低成本方案。分立 DC/DC 转换器设计的
[电源管理]
低成本隔离式3.3V到5V DC/DC<font color='red'>转换</font>器的分立设计
基于TMS320LF2407A DSP的PFC级电路的原理
1、引言   带A/D转换器(ADC)和脉冲宽度调制器(PWM)等集成外设的低成本高性能数字信号处理器(DSP),已在电机控制、不间断电源(UPS)和运动控制等领域获得比较广泛的应用。低成本DSP在控制电源变换功能方面,为电源设计者提供了新的工具。   与传统模拟控制比较,DSP控制器具有许多突出的优点,例如多平台标准硬件设计、对老化和环境变化的低敏感度、优异的抗噪扰性、易于履行高级控制算法、设计变更的灵活性及控制和通信功能的单芯片解决等。然而,在电源设计中使用DSP,对许多模拟设计者来说面临新的挑战,他们必须尽力改变设计,以适应新的数字环境。   本文以由德州仪器TMS320LF2407A 16位定点DSP控制的平均电流型
[模拟电子]
基于TMS320LF2407<font color='red'>A</font> DSP的PFC级电路的原理
IAR+Proteus7.6仿真MSP430单片机PORT1外部中断功能
1. Proteus电路 2. msp430程序 #include msp430x23x.h #define uint unsigned int #define uchar unsigned char / 函数:void delay_1ms(void) void delay_nms(uint n) 功能:延时1ms 延时Nms */ void Delay_1ms(void) //1ms延时函数 { uint i; for (i=0;i 80;i++); } void Delay_Nms(uint n) //N ms延时函数 { uint i=0; for (i=0;i
[单片机]
IAR+Proteus7.6仿真MSP430<font color='red'>单片机</font>PORT1外部中断功能
麦瑞半导体推出两款3MHz双输出2A高效降压稳压器MIC23158/9
Micrel今天推出了两款3MHz双输出2A高效降压稳压器MIC23158/9。得益于麦瑞半导体拥有专利的HyperLight Load®技术,这两款集成电路为当今最苛刻的应用提供了超快的瞬态响应,包括机顶盒、针对FPGA的核心和I/O电压、CPLD、ASIC、GPS/导航系统、PC卡、汽车仪表以及通用负载点(POL)直流-直流转换等应用。 MIC23158/9目前已经开始批量供应,千片订量的价格分别为0.88美元/片和0.91美元/片。用户可以通过麦瑞半导体公司官方网站 http://www.samplecomponents.com/scripts/samplecenter.dll?micrel 在线订购样品。 MIC23
[模拟电子]
麦瑞半导体推出两款3MHz双输出2<font color='red'>A</font>高效降压稳压器MIC23158/9
四位数码管动态显示2020(51单片机)
电路原理图 元件清单 程序(C语言) #include reg51.h unsigned char smg ={0x5b,0x3f,0x5b,0x3f};//2020字形码(共阳极) void delay(unsigned int time); void main() { unsigned char i,W; while(1) { W=0x01; for(i=0;i 4;i++) { P1=W; W =1; P0=smg ; delay(10); } } } void delay(unsigned int time) { unsigned int j=0
[单片机]
基于单片机的静电探针自动测量系统设计
引言   静电探针又称langrnuir探针,是一种用来进行等离子体参数测量的基本的诊断工具,通过静电探针的,I-V特性曲线可以计算出等离子体的电子温度、密度、空间电位和悬浮电位等重要参数。静电探针,I-V特性曲线如图1所示。目前,随着等离子体在对金属、微电子、聚合物改性,聚合、生物功能材料相容性处理,低温杀毒以及空间技术等诸多领域的广泛应用。开展静电探针自动测量技术的研究开发工作,对提高等离子体应用研究工作的效率具有一定的促进作用。本文介绍的自动测量系统是以单片机为核心,采用A/D和D/A技术,能够快速、准确地给出静电探针I-V特性曲线。 1 系统概述   本自动测量系统以AT89S52单片机为核心,通过D/A转换器
[安防电子]
基于<font color='red'>单片机</font>的静电探针自动测量系统设计
51单片机--外部中断1控制led亮灭
#include reg51.h typedef unsigned int u16; typedef unsigned char u8; sbit k4=P3^3;//P33是外部中断1的引脚,按键的一个引脚和中断引脚相连 sbit led1=P2^1; /******************************************************************************* * 函 数 名 : delay * 函数功能 : 延时函数,i=1时,大约延时10us ***************************************************
[单片机]
基于普通单片机的LIN协议实现方案
1 概述 LIN协议是新出现的一种新型低成本串行通信总线,其全称是Local Interconnect Network,即局部互联网络。它最开始出现于汽车行业,是为解决汽车智能化和网络化的发展要求和降低汽车制造成本的矛盾而提出来的一种串行总线协议,主要用于车门、车灯等需要简单控制但又要求智能控制的场合。它的主要特点是:采用单个主控制器/多从设备通信模式;基于普通UART/SCI接口硬件实现,协议简单;网络传输速率不高,最高可达20kb/s。由于LIN协议的突出特点是协议对硬件的依赖程度低,可以基于普通单片机的通用串口等硬件资源以软件方式实现,成本低廉,因此可广泛应用于汽车行业以外的其他领域,如智能家庭网络内部的数据传输、节点
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved