实验转换串行口显示第1页,共14页,星期日,2025年,2月5日实验七:A/D转换题目:用STC12C5A60S2单片机内部ADC;把模拟电压信号(电位器输出)转换为数字量;经二十转换;串口输出显示。若该数字大于512时喇叭报警。要求:画出实验电路,编写实验程序。第2页,共14页,星期日,2025年,2月5日实验七:A/D转换参考电路第3页,共14页,星期日,2025年,2月5日实验七:A/D转换参考程序主程序;----------有关A/D转换寄存器的定义---------P1ASFEQU09DH;P1模拟控制功能寄存器AUXR1EQU0A2H;辅助寄存器ADC_CONTREQU0BCH;A/D转换控制寄存器ADC_RESEQU0BDH;A/D转换结果寄存器,;为10位A/D转换结果的高8位。ADC_RESLEQU0BEH;A/D转换结果寄存器,低2位有效;为10位A/D转换结果的低2位。第4页,共14页,星期日,2025年,2月5日实验七:A/D转换参考程序主程序ORG0000HLJMPMAINORG0100HMAIN:MOVSP,#5FHMOVSCON,#00H;定义串口工作方式0MOV40H,#0MOV41H,#0MOV42H,#0MOV43H,#0MOV44H,#0LCALLDISPNOPNOPLCALLINIT_ADC;定义ADC特殊功能寄存器第5页,共14页,星期日,2025年,2月5日实验七:A/D转换参考程序主程序LOP1:MOVA,#1;选择1号通道 LCALLGET_ADC_RES;调A/D转换子程序NOP LCALLESZH;调用16位二十转换子程序 NOPLCALLDISP;调显示子程序NOPLCALLDELAY;调延时子程序NOP NOPLJMPLOP1第6页,共14页,星期日,2025年,2月5日实验七:A/D转换参考程序ADC初始化子程序INIT_ADC:MOVAUXR1,#04H;10位A/D,ADC_RES存高2位MOVP1ASF,#0FFH;定义P1口全为A/D转换口MOVADC_RES,#0;转换结果寄存器清零MOVADC_RESL,#0;转换结果寄存器清零MOVADC_CONTR,#0A0H;A/D上电,选择360时钟周期LCALLDELAY;延时等待电路稳定RET第7页,共14页,星期日,2025年,2月5日实验七:A/D转换参考程序ADC转换子程序GET_ADC_RES:;A/D转换子程序ORLA,#0A8H;启动某通道A/D转换MOVADC_CONTR,ANOPNOPNOPNOPWAIT:MOVA,ADC_CONTR;判ADC_FLAG寄存器JNBACC.4,WAIT;等待转换结束ANLADC_CONTR,#0EFH;清ADC_FLAGMOV30H,ADC_RES;读最高2位数据MOV31H,ADC_RESL;读低8位数据RET第8页,共14页,星期日,2025年,2月5日实验七:A/D转换参考程序ESZH:MOVR2,30HMOVR3,31HCLRA;A清零MOVR5,A;十进制数R5(千、百位)