STC单片机内置ADC的使用方法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
STC单片机内置ADC的使用方法

STC单片机内置ADC的使用方法 STC系列单片机中的STC89LE516AD/X2提供了8路8位精度的高速A/D转换器,位于P1口上,从而省去了片外ADC的麻烦。这8路ADC为电压输入型,可做按键扫描,电池电压检测,频谱检测等。ADC转换过程需要17个机器周期。通过对相关功能寄存器的适当配置,就可以控制其工作。下面就对相关功能寄存器进行介绍。 A/D转换寄存器总表: 寄存器 地址 名称 7 6 5 4 3 2 1 0 初始初 P1_ADC_EN 97H 允许P1.x 成为A/D口 P17 P16 P15 P14 P13 P12 P11 P10 0000 0000 ADC_ CONTR C5H A/D转换 控制寄存器 - - - ADC_FLAG ADC_START CHS2 CHS1 CHS0 xxx0 0000 ADC_DATA C6H A/D转换 结果寄存器 - - - - - - - - 0000 0000 (1) P1_ADC_EN:特殊功能寄存器 P1.x作为A/D转换输入通道来用允许特殊功能寄存器。相应位为“1”时,对应的P1.x口作为A/D转换使用,内部上拉电阻自动断开。 (2) ADC_CONTR:特殊功能寄存器 CHS2/CHS1/CHS0是模拟输入通道选择,CHS2/CHS1/CHS0的取值如下表所示: CHS2 CHS1 CHS0 模拟输入通道选择 0 0 0 选择P1.0为A/D输入 0 0 1 选择P1.1为A/D输入 0 1 0 选择P1.2为A/D输入 0 1 1 选择P1.3为A/D输入 1 0 0 选择P1.4为A/D输入 1 0 1 选择P1.5为A/D输入 1 1 0 选择P1.6为A/D输入 1 1 1 选择P1.7为A/D输入 ADC_START是模拟/数字转换(ADC)启动控制位,设置为1时,开始转换。 ADC_FLAG是模拟/数字转换结束标志位,当A/D转换完成后,ADC_FLAG=1。 (3) ADC_DATA: A/D转换结果特殊功能寄存器 模拟/数字转换结果计算公式为 结果=256×Vin/Vcc Vin是模拟输入通道输入电压,Vcc为单片机实际工作电压,用单片机工作电压作为模拟参考电压。 内置ADC的使用例程: STC_ADC.h: sfr P1_ADC_EN=0x97; sfr ADC_CONTR=0xc5; sfr ADC_DATA=0xc6; int GetAD(unsigned char channel)//channel为要取的通道号(0~7) { unsigned char AD_finished=0; ADC_DATA=0; ADC_CONTR=channel; ADC_CONTR|=0x08; while(!AD_finished) AD_finished=(ADC_CONTR0x10); ADC_CONTR=0xF7; return (ADC_DATA); } void AD_Init(unsigned char ADin)// ADC 初始化,ADin为八位2进制数,分别对应AD7~0,置1代表打开此路 { P1=P1|ADin;//要设置为A/D转换的P1.x口,先设为高 P1_ADC_EN=ADin; } _main.c: #include reg51.h #include stc_adc.h /* ------------------------------------------------- 此程序用以说明STC单片机ADC的使用方法 ------------------------------------------------- */ void delay(unsigned time) { while(time--); } void main() { AD_Init(0x63);//0110,0011,要设置为A/D转换的P1.x口,先设置为高 //0110,0011,P1的P1.0,P1.1,P1.5,P1.6设置为A/D转换输入脚 //断开P1.0,P1.1,P1.5,P1.6内部上拉电阻 while(1) { P2=GetAD(0); delay(10000); P2=GetAD(1); delay(10000); P2=GetAD(5

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档