stc-单片机adc应用

stc-单片机adc应用

ID:3908107

大小:215.12 KB

页数:5页

时间:2017-11-25

stc-单片机adc应用_第1页
stc-单片机adc应用_第2页
stc-单片机adc应用_第3页
stc-单片机adc应用_第4页
stc-单片机adc应用_第5页
资源描述:

《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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。