当前位置:首页 > 单片机 > 单片机
[导读] //ADCDEMO_56xx程序演示STC1256xxAD系列MCU的A/D转换功能。时钟18.432MHz//转换结果以16进制形式输出到串行口,可以用串行口调试程序观察输出结果。//-----------------------------------------------

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

#include"STC12C5620AD.H"
//---------------------------------------------------------------------
typedefunsignedcharINT8U;
typedefunsignedintINT16U;
//---------------------------------------------------------------------
//以下选择ADC转换速率,只能选择其中一种
//SPEED1SPEED0A/D转换所需时间
#defineAD_SPEED0x60//0110,000011270个时钟周期转换一次,
//CPU工作频率27MHz时,
//A/D转换速度约100KHz
//#defineAD_SPEED0x40//0100,000010540个时钟周期转换一次
//#defineAD_SPEED0x20//0010,000001810个时钟周期转换一次
//#defineAD_SPEED0x00//0000,0000001080个时钟周期转换一次
//---------------------------------------------------------------------
voidinitiate_RS232(void);//串口初始化
voidSend_Byte(INT8Uone_byte);//发送一个字节
INT16Uget_AD_result(INT8Uchannel);
voiddelay(INT8Udelay_time);//延时函数
//---------------------------------------------------------------------
voidmain()
{
INT16UADC_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);//延时
}
}
//---------------------------------------------------------------------
voiddelay(INT8Udelay_time)//延时函数
{
INT16Un;
while(delay_time--)
{
n=6000;
while(--n);
}
}
//---------------------------------------------------------------------
voidinitiate_RS232(void)//串口初始化
{
ES=0;//禁止串口中断
TMOD=0x20;//设置T1为波特率发生器
SCON=0x50;//0101,00008位数据位,无奇偶校验
TH1=0xFB;//18.432MHz晶振,波特率=9600
TL1=0xFB;
RI=0;
TR1=1;
ES=1;//允许串口中断
}
//---------------------------------------------------------------------
voidSend_Byte(INT8Uone_byte)//发送一个字节
{
TI=0;//清零串口发送中断标志
SBUF=one_byte;
while(!TI);
TI=0;//清零串口发送中断标志
}
//---------------------------------------------------------------------
INT16Uget_AD_result(INT8Uchannel)
{
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/D10位转换结果
}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

【2024年4月16日,德国慕尼黑讯】英飞凌科技股份公司(FSE代码:IFX / OTCQX代码:IFNNY)在2023年持续扩大其在汽车半导体市场的领先地位。TechInsights的最新研究显示,2023年全球汽车半...

关键字: MCU 半导体 电池管理系统

从世界上第一颗DSP诞生至今30年来,国际一线老牌芯片厂商长期占据领先技术和市场地位,国内芯片厂商在DSP上的声量很小。然而经过了6年的沉心打磨之后,湖南进芯电子开始在这一领域崭露头角。凭借着更贴近中国本土特色的差异化产...

关键字: DSP MCU 电机控制 进芯电子

· Ceva-Waves™ Links™ IP系列提供完全集成的多协议连接解决方案,包括Wi-Fi、蓝牙、UWB、Thread、Zigbee和Matter,为下一代连接协议丰富的MCU和SoC简化开发工作并加快上市时间

关键字: 人工智能 MCU SoC

单片机,全称为“单片微型计算机”或“微控制器”(Microcontroller Unit,简称MCU),是一种高度集成化的电子器件,它是现代科技领域的关键组件,尤其在自动化控制、物联网、消费电子、汽车电子、工业控制等领域...

关键字: 单片机 MCU

嵌入式开发板是嵌入式系统开发的重要硬件平台,它集成了微处理器(或微控制器)、存储器、输入输出接口以及其他必要的外围电路,主要用于开发、测试、验证嵌入式软件和硬件设计方案。本文将详细介绍嵌入式开发板的基本构造原理、核心组件...

关键字: 嵌入式开发板 MCU

波特率9600的传输速率为每秒9600个比特,而波特率115200的传输速率为每秒115200个比特,因此,115200的传输速度比9600快得多。

关键字: 波特率 传输速度 MCU

STM32与51单片机之间有什么差异呢?两者可以说是一场科技与性能的较量了。在科技飞速发展的今天,微控制器(MCU)已广泛应用于各类电子设备和系统中,发挥着举足轻重的作用。其中,STM32和51单片机作为两种常见的微控制...

关键字: STM32 51单片机 MCU

以前微处理器(MPU)与微控制器(MCU)是截然不同的两种设备,MPU支持丰富的软件系统,如Linux和相关的软件堆栈,而MCU通常将专注于裸机和RTOS。近年来,随着MCU的性能越来越高,MCU和MPU之间的区别变得越...

关键字: MCU MPU 开发板

该产品线提供了并行SRAM的低成本替代方案,容量高达 4 Mb,具有143 MHz SPI/SQI™通信功能

关键字: SRAM 存储器 MCU

瑞典乌普萨拉,2024年3月27日 – 全球领先的嵌入式系统开发软件解决方案供应商IAR自豪地宣布:公司备受全球数百万开发者青睐的开发环境再次升级,已率先支持瑞萨首款通用32位RISC-V MCU,该 MCU 搭载了瑞萨...

关键字: MCU RISC-V CPU
关闭
关闭