首页 > 应用 > 单片机应用
[导读]
//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位转换结果
}


换一批

延伸阅读

[新鲜事] MCU内核多元化发展 ARM核会不会一统天下?

MCU内核多元化发展 ARM核会不会一统天下?

核是微控制器(MCU)的关键部分,随着ARM核在MCU领域的广泛使用,有关MCU核的话题也越来越多。ARM核会不会一统天下?新的架构是否还有机会?如何把握才能成功?围绕这些问题,约请了来自全球MCU核心企业的代表深入探讨,共......

关键字:MCU ARM 内核 多元化

[趣科技] AMD 发表 R 系列芯片,将被使用在赌场、监视、支付等领域

AMD 发表 R 系列芯片,将被使用在赌场、监视、支付等领域

当其他处理器都在越做越小,并以物联网(InternetofThings)为目标的时候,AMD全新的R系列芯片却另辟蹊径,将重点放在了为已连接网络的设备升级图像品质上。这批嵌入式处理器和之前的Trinity系列一样,采用了Piledri......

关键字:AMD 系列芯片 监视

[单片机新闻] 缺货不用愁 完美替代ST MCU的芯科小蜜蜂单片机EFM8世强海量现货供应

缺货不用愁 完美替代ST MCU的芯科小蜜蜂单片机EFM8世强海量现货供应

去年7月,ST MCU即将封单的消息一出,引起了业内的普遍关注。如此一来,从小家电、健康量测到车用、物联网等相关市场,企业不得不找到好的替代。虽然ST是大陆第二大通用MCU供应商,但实际上ST的MCU替代方案很多。比......

关键字:ST MCU 单片机

[消费类电子新闻] 告别缺货烦恼 Silicon Labs CP2102全系列USB MCU世强元件电商十万库存保障供货

告别缺货烦恼 Silicon Labs CP2102全系列USB MCU世强元件电商十万库存保障供货

自2017年以来,以存储芯片、被动元件、功率器件为主的缺货涨价潮给电子产业带来了超乎以往的影响。目前市场上有的低压MOSFET的交期超过40周,而IGBT的最长交期达50周。而第二季度又是半导体生产链的旺季,各产品需求旺盛,缺货也更加恶化。......

关键字:USB MCU CP2102 USB转串口芯片 IGBT

[消费类电子新闻] Littelfuse高电流881系列SMD保险丝荣获《Electronic Products》北美和亚洲奖项

Littelfuse高电流881系列SMD保险丝荣获《Electronic Products》北美和亚洲奖项

Littelfuse公司,近日宣布荣获《Electronic Products》杂志编辑评选的2017“年度最佳产品”奖。 Littelfuse还荣获了《Electronic Products China》杂志的2017年度最佳产品奖。 作......

关键字:881系列 SMD保险丝 PCB

[真心话] 如何完成从一个“电子爱好者”到电子工程师的蜕变?

如何完成从一个“电子爱好者”到电子工程师的蜕变?

毕竟兴趣是最好的老师,许多优秀的电子工程师都是从小作为电子爱好者的。爱好不仅要体现在行动中更要深入内心甚至深入骨髓。......

关键字:电子工程师
条评论

我 要 评 论

网友评论

技术子站

更多

项目外包

更多

推荐博客