单片机课程设计报告电压表附程序资料文档格式.docx
《单片机课程设计报告电压表附程序资料文档格式.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告电压表附程序资料文档格式.docx(12页珍藏版)》请在冰点文库上搜索。
对于一个模拟输入,现将其放大2.4倍,然后由AD输入并相应转化,如果它的输出要是小于0.5V,也就是19H,则选择此档位是不精确的,也说明此时的输入电压介于0~200mV之间。
那么我们就需要让P1.2置低电平,将相应的放大倍数改成25以提高转换精度。
若其满足相应的条件则直接将其转换成BCD码并直接送数显示即可。
实验中用到了模数转换器ADC0832,其引脚图如右图所示,ADC0832是8位逐次逼近型A/D转换器,单一正5V电源供电,
为片选,CLK提供串行输入/输出时钟信号,DO用于串行数字输出,CHO和CHl为双通道模拟输入端,它可用软件设定为单端或差分输人。
在差分方式中,通道口地址的选择由DI逐位输入,GND是数字、模拟公共地,
(
)为芯片电源、参考电压公共端。
为低电平时启动转换,使所有逻辑电路使能,此时DO端为高阻,DI端等待指令,
在整个转换过程中必须置为低。
然后使DI端输入第一个逻辑高电平表示起始位,ADC0832的输入配置在多路器寻址时序中进行,多路器地址通过DI端移入转换器,多路器地址选择模拟输入通道。
DI端的数据移入多路器地址移位寄存器是在每个时钟的上升跳变时发生的,因此每次向DI端置入一位数据时,在CLK端输出一个从0到1的跳变。
然后CLK端输入第2个、第3个脉冲进行通道选择,第3个脉冲的下降沿开始转换,DI端转为高阻状态,DO端脱离高阻状态,CLK端输入第4个脉冲的下降沿开始读取DO端的一位数据,依次类推,从第4个到第11个脉冲共读取8位数。
ADCO832在输出端以最高位(MSB)开头的数据流后,又以最低位(LSB)开头重输出一遍数据流,最低位共用。
这样便实现了AD转换,其转换后的数字量输入到8951。
ADC0832工作时序图如下所示:
3、程序流程图
4、程序
ORG0000H
MAIN:
CLRP1.2;
初始化
SETBP1.4;
P1.4置1,使74HC573工作
TEST:
MOVSP,#60H
ACALLDELAY;
调用延时程序
ACALLCONV;
调用AD转换程序
ACALLJUDGE;
调用BCD转换程序
ACALLDISPLAY;
调用显示程序
LJMPTEST
CONV:
SETBP3.0;
初始化通道选择
CLRP3.2
NOP
CLRP3.3;
拉低/CS端
SETBP3.2;
拉高CLK端
CLRP3.2;
拉低CLK端,形成下降沿
SETBP3.0
SETBP3.2;
拉低CLK端,形成下降沿2
CLRP3.0;
1-0选择1通道
拉低CLK端,形成下降沿3
MOVR7,#8;
准备送下后8个时钟脉冲
RECEIVE:
MOVC,P3.1;
接收数据
MOVACC.0,C
RLA;
左移一次
SETBP3.2
形成一次时钟脉冲
DJNZR7,RECEIVE;
循环7次
SETBP3.3;
拉高/CS端
拉低CLK端
SETBP3.1;
拉高数据端,回到初始状态
MOV30H,A;
转换后的数字量存入30H
RET
JUDGE:
CJNEA,#19H,LOOP;
判断电压是否等于200mV
SJMPBCDCON1;
等于200mV时采用小量程显示程序
LOOP:
JCBCDCON1;
小于200mV时采用小量程显示
SJMPBCDCON2;
大于2200mV时采用大量程显示
DONE:
RET
BCDCON2:
;
大量程
SETBP1.2
MOVA,30H
MOVB,#7FH
DIVAB
ADDA,#0AH;
调整地址偏移量
MOV40H,A;
BCD码最高位送40H
MOVA,B;
低位送A
MOVB,#0DH
MOV41H,A;
BCD码次高位送41H
MOVA,B
CJNEA,#0AH,LOOP1;
余数大于10时,将其调整为9,避免取到带小数点的字型码
MOVA,#09H
SJMPX
LOOP1:
JCX
X:
MOV42H,A;
BCD码低位送R3
BCDCON1:
小量程
CLRP1.2
MOVB,#0AH
MULAB;
将其数字量扩大十倍,之后采用跟大量程时相似的算法
MOV31H,B
ORLA,31H
BCD码高位送40H
MOVB,#0CH
CJNEA,#0AH,LOOP2
SJMPY
LOOP2:
JCY
Y:
MOV41H,A;
MOV42H,B;
BCD码低位送42H
DISPLAY:
SETBP1.5
SETBP1.6
SETBP1.7
MOVDPTR,#TAB1
MOVA,40H
MOVCA,@A+DPTR;
查字形表
MOVP0,A;
P0口送字形
CLRP1.4
SETBP1.4
CLRP1.5
ACALLDELAY
MOVDPTR,#TAB1
MOVA,41H
MOVP0,A
CLRP1.4;
P0口作字形
CLRP1.6
MOVA,42H
CLRP1.7
RET
TAB1:
DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H
DB0FDH,61H,0DBH,0F3H,67H,0B7H,0BFH,0E1H,0FFH,0F7H
DELAY:
MOVR3,#03H
DELAY1:
MOVR4,#0FFH
DELAY2:
DJNZR4,DELAY2
DJNZR3,DELAY1
END
5、扩展
将示波器接在ADC0832的DO端从波形可看出转换之后的数字量,波形如图所示,上图为DO端输出量,下图为时钟脉冲。
由图可以看出,第四个时钟脉冲开始读取准换后的数字量,则对应的数字量为01101110