- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
STC-单片机ADC应用
第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 (STC15F2K60S2. INC )
;包含STC15F2K60S2 单片机寄存器定义文件,若无现成的STC15F2K60S2. INC 文件,
;则可以用 “EQU ”和“DATA ”直接对A/D 转换用到的新增特殊功能寄存器进行定义
ADC_DATA EQU 30H ;定义A D 转换结果保存单元
ORG 0000H
LJMP MAIN
ORG 0000H
MAIN :
MOV SP,#70H ;设置堆栈
MOV P 1ASF ,#02H ;设置Pl.1 为模拟量输入功能
MOV ADC_CONTR,#81H ;打开A /D 转换电源,设置输入通道
MOV A, #20H
LCALL DELAY ;打开A /D 转换电源后,延时1 ms 即可
LOOP :
MOV ADC_ CONTR , ; 启动A/D 转换
NOP ;适当延时,确保设置有效
NOP
NOP
NOP
WAIT_AD :
MOV A,ADC_CONTR
JNB ACC.4, WAIT_AD ;判断A/D 转换是否完成
MOV ADC_ CONTR , #81H ; 将ADC_FLAG 清零
MOV A, ADC_RES ;读取A /D 转换结果
1
MOV ADC_ DATA, A ;保存A /D 转换结果
CPL A
MOV P2, A ;送P2 口LED 灯显示
LJMP LOOP ;循环检测
DELAΥ:
PUSH 02 ;将寄存器组0 的R2 、R3 、R4 入栈
PUSH 03
PUSH 04
MOV R4 , A ;取最外循环的循环次数
DELAY_LOOP0 :
MOV R3, #200
DELAY_LOOP1 :
MOV R2, #249
DELAY_LOOP :
DJNZ R2 ,DELAY_ LOOP
DJNZ R3 ,DELAY_LOOP1
DJNZ R4 ,DELAY_LOOP0
POP 04 ;恢复现场
POP 03
POP 02
RET
END
C51 语言参考程序如下:
# inclu
文档评论(0)