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

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

本文引用地址: http://www.21ic.com/app/mcu/201806/761572.htm

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


换一批

延伸阅读

[智能硬件] 韩媒:中国供应商为明年三星Galaxy A系列提供屏幕指纹技术传感器

韩媒:中国供应商为明年三星Galaxy A系列提供屏幕指纹技术传感器

报道称中国的Aegis科技将为三星明年发布的Galaxy A系列提供屏幕指纹技术的传感器,只不过Galaxy A系列用的是光学屏幕指纹技术,而不是Galaxy S10搭载的超声波屏幕指纹技术。 ......

关键字:三星 Galaxy A系列 屏幕指纹技术传感器

[单片机新品] 意法半导体STM32CubeMX MCU引入多面板GUI 更新配置软件以改善开发者体验

意法半导体STM32CubeMX MCU引入多面板GUI 更新配置软件以改善开发者体验

使用意法半导体最新版的STM32CubeMX配置工具创建STM32 微控制器(MCU)项目,将会更直观,更高效。STM32CubeMX v.5.0的最新设计的多面板GUI界面在不改变屏幕视图的情况下,能够让用户查看更多参数,完成更多任务,从......

关键字:意法半导体 STM32CubeMX MCU

[单片机应用] STM32系列第29篇--DS18B20

STM32系列第29篇--DS18B20

特点:独特的单总线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。大大提高了系统的抗干扰性。测温范围 -55℃~+125℃,精度为±0.5℃。支持多点组网功能,多个DS18B20......

关键字:STM32系列 DS18B20

[通信网络] 赛普拉斯拓展物联网产品组合,以满足不断增长的边缘计算需求

赛普拉斯拓展物联网产品组合,以满足不断增长的边缘计算需求

赛普拉斯半导体公司(Cypress Semiconductor Corp.)(纳斯达克代码:CY)日前宣布,进一步扩充其物联网产品组合,为超低功耗的PSoC® 6 MCU产品系列再添新成员。全新的PSoC 6 MCU专为物联网设备......

关键字:赛普拉斯 物联网 MCU PSoC

[单片机应用] STM32系列第12篇--电容触摸按键原理

STM32系列第12篇--电容触摸按键原理

原理:R:外接电容充放电电阻。Cs:TPAD和PCB间的杂散电容。Cx:手指按下时,手指和TPAD之间的电容。开关:电容放电开关,由STM32IO口代替。没有按下的时候,充电时间为T1(default)。按下TPAD,电容变大,所以充电时......

关键字:STM32系列 电容触摸 按键原理

[单片机应用] 基于ADE7758 和MCU的多相多功能电能测量电表

基于ADE7758 和MCU的多相多功能电能测量电表

0引言 我国与发达国家一样, 随着电力供应市场化的逐步深入和计算机网络的快速普及和发展,为了缓解电力供应紧张的现状,正在大力推广分时电价,双费率电子电能表成为电能表新的发展趋势和需求热点。仅......

关键字:电表 电能 测量 MCU

[单片机应用] LPC2XXX系列ARM带CAN的波特率计算

LPC2XXX系列ARM带CAN的波特率计算

最近正在学习ARM的CAN部分,发现CAN的波特率计算方法网上竟然查不到,我就自己推到一个吧,有什么不对的地方大家指正啊。 当VPB时钟为4*11059200Hz时,常用波特率与总线时序器对照表(周立功给的,11059200kHz的......

关键字:LPC2XXX系列 ARM CAN 波特率计算

[单片机应用] STM32代码存储位置与MCUISP下载注意事项

STM32代码存储位置与MCUISP下载注意事项

最近做一个项目,在stm32内部一部分用来存储自己的代码,开辟出一段空间来用来存储FPGA代码。每次开机实现stm32往FPGA写入代码的功能。向stm32某段空间写入代码的方法:(1)ST_LINK Utility软件通过JTAG,连接后......

关键字:STM32 代码存储位置 MCU ISP下载 注意事项

[单片机应用] ARM Cortex M3系列GPIO口介绍(工作方式探讨)

ARM Cortex M3系列GPIO口介绍(工作方式探讨)

一、Cortex M3的GPIO口特性 在介绍GPIO口功能前,有必要先说明一下M3的结构框图,这样能够更好理解总线结构和GPIO所处的位置。Cortex M3结构框图 从图中可以看出,GPIO口都是接在APB总线上的,而且M3具有两个......

关键字:ARM Cortex M3系列 GPIO口 工作方式

[消费类电子新闻] 三星即将复活Galaxy R系列产品,搭载骁龙450处理器!

三星即将复活Galaxy R系列产品,搭载骁龙450处理器!

三星手机今年动作比较多,看来华为给三星带来的压力不小,今年三星发布了中端产品Galaxy A系列,而且还大胆地采用了后置四摄的配置。不过,看来这些还不足以抵抗华为地快速崛起,三星又要发布全新系列手机Galaxy R系列。 ......

关键字:三星 骁龙450 处理器 Galaxy R系列

[单片机应用] MCS-51系列单片机方式寄存器TMOD(89H)

MCS-51系列单片机方式寄存器TMOD(89H)

特殊功能寄存器TMOD为T0、T1的工作方式寄存器,其格式如下:  TMOD的低4位为T0的方式字段,高4位为T1的方式字段,它们的含义是完全相同的。    工作方式选择位M1、M0(方式 0~3)    定时方式......

关键字:寄存器 单片机 方式 系列

我 要 评 论

网友评论

芯闻号

技术子站

更多

项目外包

更多

推荐博客