以下为《stc12c5a60s2单片机模数转换编程要点》的无排版文字预览,完整内容请下载
1、 STC12C5A60S2 单片机 A/D 编程要点 ⑴ 打开电源。第一次使用 A/D 时要打开单片机内部模拟电源(设置 ADC_CONTR 寄存 器); ⑵ 适当延时,等单片机内部 A/D 转换器电源稳定,一般延时 1mS 即可; ⑶ 设置 P1 口中的相应端口作为 A/D 转换通道(设置 P1ASF 寄存器相应位); ⑷选择 ADC 通道(设置 ADC_CONTR 中的 CHS2~CHS0);如果是对多通道模拟量进行转 换,则更换通道后要适当延时,使输入模拟电压稳定,延时量取 20μS~200μS 。 ⑸根据需要,设置 A/D 转换结果存储格式(设置 AUXR1 寄存器中的 ADRJ 位); ⑹设置 A/D 转换速度(设置 ADC_CONTR 寄存器中 SPEED1、SPEED0 相应的值); ⑺查询 A/D 转换结果标志 ADC_FLAG(该标志位在 ADC_CONTR 寄存器中),判断一次 A/D 转换是否结束:当 ADC_FLAG=1 时,一次转换完成;当 ADC_FLAG=0 时,一次转换未完 成。由于 A/D 转换结束时,ADC_FLAG 自动置 1,因此当因此转换完成后,要用软件将 ADC_FLAG 置为 0。 ⑻ 读取 A/D 转换结果,结果保存在 ADC_RES 和 ADC_RESL 寄存器中,然后进行数据处 理。 ⑼ 若采用中断方式,还需要进行中断设置(EADC 置 1,EA 置 1),在中断服务程序中 读取 ADC 转换结果,并将 ADC 中断请求标志 ADC_FLAG 清零。 2、 与 A/D 转换相关的寄存器 P1ASF:P1 口模拟功能控制寄存器,该寄存器是只写寄存器,读无效。 ADC_CONTR:ADC 控制寄存器。 ADC_RES:A/D 转换结果寄存器(寄存 A/D 转换结果高位)。 ADC_RESL:A/D 转换结果寄存器(寄存 A/D 转换结果低位)。 AUXR1:辅助寄存器,其中 ADRJ 位某某 A/D 转换结果寄存器(ADC_RES、ADC_RESL)的数据 格式调整控制位。 IE:中断允许寄存器。 IP:中断优先级控制寄存器低(可位寻址); IPH:中断优先级控制寄存器高(不可位寻址); 3、 与 A/D 转换相关寄存器的格式与说明 ⑴ P1 口模拟功能控制寄存器 P1ASF 格式与说明 当 P1 口中某个端口作为 A/D 使用时,只要先将 P1ASF 寄存器中相应位置为 1,即设置 为模拟功能。 P1ASF 寄存器格式 D7 D6 D5 D4 D3 D2 D1 D0 P17ASF P16ASF P15ASF P14ASF P13ASF P12ASF P11ASF P10ASF 当 P1 口中相应端口作为 A/D 使用时,要将 P1ASF 中的相应位置为 1。即 P1ASF.0=1:P1.0 口作为 A/D 使用; P1ASF.1=1:P1.1 口作为 A/D 使用; P1ASF.2=1:P1.2 口作为 A/D 使用; P1ASF.3=1:P1.3 口作为 A/D 使用; P1ASF.4=1:P1.4 口作为 A/D 使用; P1ASF.5=1:P1.5 口作为 A/D 使用; P1ASF.6=1:P1.6 口作为 A/D 使用; P1ASF.7=1:P1.7 口作为 A/D 使用; (2)ADC 控制寄存器 ADC_CONTR 格式与说明 D7 D6 D5 D4 D3 D2 D1 D0 ADC_POWER SPEED1 SPEED0 ADC_FLAG 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 tage/N; } (4)主程序 #include "head.h" float voltage; void main(void) { voltage=0.0; display_init(); AD_Init(); while(1){ AD_Convert(); voltage=voltage*V/1024; data_display(voltage); } } void delay(unsigned int n) { unsigned int i,j; for(i = 0;i < n;i++){ for(j = 0;j < 110;j++){ ; } } } [文章尾部最后300字内容到此结束,中间部分内容请查看底下的图片预览]
以上为《stc12c5a60s2单片机模数转换编程要点》的无排版文字预览,完整内容请下载
stc12c5a60s2单片机模数转换编程要点由用户“lcbdgj”分享发布,转载请注明出处