欢迎来到天天文库
浏览记录
ID:3908107
大小:215.12 KB
页数:5页
时间:2017-11-25
《stc-单片机adc应用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第4章STC15F2K60S2单片机的A/D转换例题例4.l编程实现利用STC15F2K60S2单片机ADC通道1采集外部模拟电压信号,8位精度,采用查询方式循环进行转换,并将转换结果保存于30H单元中,并送P2口LED灯显示(低电平驱动)。假设时钟频率为18.432MHz。解:取8位精度时.可设置ADRJ=0.直接使用转换结果寄存器ADC_RES的值。选择通道1,则(CHS2~CHS0)=001B。按照ADC的编程要点进行初始化后,直接判断ADC_FLAG标志是否为l?若为l,则读出ADC_RES寄存器的值;若为0,则继续查询。汇编语语言参考程序如下:$INCLUDE
2、(STC15F2K60S2.INC);包含STC15F2K60S2单片机寄存器定义文件,若无现成的STC15F2K60S2.INC文件,;则可以用“EQU”和“DATA”直接对A/D转换用到的新增特殊功能寄存器进行定义ADC_DATAEQU30H;定义AD转换结果保存单元ORG0000HLJMPMAINORG0000HMAIN:MOVSP,#70H;设置堆栈MOVP1ASF,#02H;设置Pl.1为模拟量输入功能MOVADC_CONTR,#81H;打开A/D转换电源,设置输入通道MOVA,#20HLCALLDELAY;打开A/D转换电源后,延时1ms即可LOOP:MOV
3、ADC_CONTR,#10001001B;启动A/D转换NOP;适当延时,确保设置有效NOPNOPNOPWAIT_AD:MOVA,ADC_CONTRJNBACC.4,WAIT_AD;判断A/D转换是否完成MOVADC_CONTR,#81H;将ADC_FLAG清零MOVA,ADC_RES;读取A/D转换结果1MOVADC_DATA,A;保存A/D转换结果CPLAMOVP2,A;送P2口LED灯显示LJMPLOOP;循环检测DELAΥ:PUSH02;将寄存器组0的R2、R3、R4入栈PUSH03PUSH04MOVR4,A;取最外循环的循环次数DELAY_LOOP0:MOVR
4、3,#200DELAY_LOOP1:MOVR2,#249DELAY_LOOP:DJNZR2,DELAY_LOOPDJNZR3,DELAY_LOOP1DJNZR4,DELAY_LOOP0POP04;恢复现场POP03POP02RETENDC51语言参考程序如下:#include"STC15F2K60S2.h"//包含STC15F2K60S2单片机寄存器定义文件unsignedchardataadc_data_at_0x30;//定义(保存A/D转换结果)绝对地址变量voidmain(void){unsignedlongi;unsignedcharstatus;P1ASF=
5、0x02;//设置Pl..1为模拟量输入功能ADC_CONTR=0x81;//打开A/D转换电源,设置输入通道for(i=0;i<10000;i++);while(l){ADC_CONTR=0x89;//启动A/D转换_NOP_();_NOP_();2_NOP_();_NOP_();status=0;while(status==0)//等待A/D转换结束{status=ADC_CONTR&0x10;}ADC_CONTR=0x81;//清A/D转换结束标志位adc_data=ADC_RES;//保存A/D转换结果P2=~ADC_RES;//送P2口LED灯显示}}例4.2
6、编程实现利用STC15F2K60S2单片机ADC通道1采集外部模拟电压信号,10位精度,·采用中断方式进行转换,并将转换结果保存于30H和31H单元中,并送P3和P2口LED灯显示(低电平驱动),P3口LED灯显示最高2位,P2口LED灯显示低8位。设时钟频率为18.432MHz。解:设置ADRJ=1,转换结束后,ADC_RES的低2位为转换结果的最高2位,ADC_RESL为转换结果的低8位。汇编语言参考程序如下:$INCLUDE(STC152K60S2.INC)ADC_DATAHEQU31H;定义A/D转换结果高2位存储变量ADC_DATALEQU30H;定义A/D转
7、换结果低8位存储变量ORG0000HLJMPMAINORG002BHLJMPADC_ISR;ADC中断矢量入口ORG0050HMAIN:MOVSP,#70H;设置堆栈MOVP1ASF,#02H;设置Pl.1为模拟量输入功能MOVADC_CONTR,#81H;打开A/D转换电源,设置输入通道MOVA,#20HLCALLDELAY;开A/D转换电源后要加适当延时,1ms即可ORLCLK_DIV,#20H;设置A/D转换结果存储格式(ADR为1)SETBEADC;开放ADC中断SETBEA;开放CPU总中断3MOVADC_CONTR,#1000
此文档下载收益归作者所有