资源描述
采用微机的可编程增益放大器电路及程序设计.doc【完整版】
(文档可以直接使用,也可根据实际需要修订后使用,可编辑放心下载)
Huaqiao university
微 机 测 控 电 路 课 程 设 计
题目:采用微机的可编程增益放大器电路及程序设计——方案D49
院 〔系〕 机电及自动化学院
专 业 测控技术与仪器〔2〕
学 号 0811212021
姓 名 洪 荣 宪
级 别 2 0 0 8
指导老师 孙 炳 阳
2021年6月
采用微机的可编程增益放大器电路及程序设计
一、任务设计:
1.设计任务:通过选择运算放大器的增益电阻实现放大倍数的可编程。
2.设计要求:利用现成的可编程运算放大器芯片〔AD8250〕,通过微机的IO口直接控制或通信信令控制实现,根据不同的设计方案与具体电路给出功能参数及程序框图。
二、方案选择:
1.CPU的选用:
在单片机应用中,MCS-51系列单片机应用广泛,认可度高,资料齐全,由此衍生出来的一系列以8051单片机为内核的内含Flash程序存储器的兼容系列单片机,不仅有MCS-51的所有优点,更兼具其自身独具特色的性能,如运算速度提高,内部功能部件也有所增加等。本设计采用AT89系列的标准型单片机89C51作为CPU。
2.可编程运算放大器芯片:
题目所给的运算放大器AD8250芯片具备多种优点,其经由编程能实现1、2、5、10倍的增益,较低的零点漂移和温度漂移以及较低的信噪比,输入电压可在+5V到+10V间,并且增设数据选通端引脚用以切换工作模式。
3.软件局部:
本设计依照题目所给运放芯片参数设置了1X、2X、5X、10X四个增益档位,并采用数字键盘来选择不同增益档位的调节。采用汇编语言编程,proteus软件绘图〔因软件及互联网上均无AD8250相关模块,故本设计电子线路图局部仅从运放引脚功能考虑接线,而不涉及也无法涉及仿真,望老师见谅〕。
三、工作原理:
本设计中采用89C51单片机作为控制模块。单片机的P1.0、P1.1、P1.2、P1.3与开关相连作为输入口,控制P0.0与P0.1的输出,而P0.0与P0.1的输出相应控制AD8250可编程运算放大器的A0,A1输入口,并经由A0,A1不同上下电平的组合实现用户指定的不同倍数的增益放大后输出。用户可由键盘键入相应增益值。
四、系统硬件设计:
1.AT89C51单片机最小系统:
最小系统包括晶体振荡电路、复位开关和电源局部。下列图所示为AT89C51单片机的最小系统。
2.运算放大器模块:
根据对AD8250可编程运算放大器英文说明书的研读,可知其有两种工作模式,即直通增益模式〔Transparent Mode〕与闭锁增益模式〔Latched Mode〕,模式的切换在于端的输出,当端输出为恒定的负值电源电压信号时,运放工作在直通增益模式,其关于A1,A0的真值表如下Table 5〔表格5〕所示;当端输出为其他时,运放工作在闭锁增益模式,其关于A1,A0的真值表如下Table 6〔表格6〕图所示。
当运放工作在闭锁增益模式时,由其真值表可知,运放仅在端输出信号为“高电平-低电平〞时有效〔进行放大增益〕,其他情况运放并不对信号进行放大。
其根本电路图如下图。
3.增益输入模块:
增益输入模块采用小键盘输入,数字键NUM1——4对应相应增益值1X、2X、5X、10X。其接线电路如下图,并且存在如下对应关系:
Sbit KEY1=P1^1;//放大一倍,Sbit KEY2=P1^2;//放大两倍
Sbit KEY3=P1^3;//放大五倍,Sbit KEY4=P1^4;//放大十倍
4.整体电路:
五、系统软件设计流程图:
六、程序清单:
;**********************声明*********************************
include reg52.h
sbit A0=P0^0;
sbit A1=P0^1;
sbit KEY1=P1^1; //放大一倍
sbit KEY2=P1^2; //放大两倍
sbit KEY3=P1^3; //放大五倍
sbit KEY4=P1^4; //放大十倍
KeyPort equ P1
DataPort equ P0
;************************************************************
data segment
KeyPort dw ?
DataPort dw ?
data ends
;*************************************************************
stack segment para stack'stack'
db 150 dup(?)
stack ends
;**************************************************************
code segment
assume cs:code,ds:data
;***********************延时局部*******************************
DlayMs proc near
jmp testT
delay: push ax
push 245
call DelayUs2x
pop ax
testT: dec ax
jnz delay
DlayMs endp
;**********************子程序局部********************************
KeyScan proc near
cmp KeyPort,0ffh
jz outp
mov ax,10
call DelayMs
cmp KeyPort,0ffh
jz outp
mov ax,KeyPort
again: cmp KeyPort,0ffh
jnz again
sub ax,0f7h
jz case1
sub ax,4
jz case2
sub ax,2
jz case3
sub ax,1
jz case4
mov ax,0
ret
case1: mov ax,4
ret
case2: mov ax,3
ret
case3: mov ax,2
ret
case4: mov ax,1
ret
outp: xor ax,ax
ret
KeyScan endp
;****************************主程序局部**************************
start proc far
push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax
mov KeyPort,0ffh
mov DataPort,0ffh
loopn: call KeyScan
cmp ax,0
jz loopn
dec ax
jz case1
dec ax
jz case2
dec ax
jz case3
case4: mov A0,1
mov A1,1
jmp loopn
case1: mov A0,0
mov A1,0
jmp loopn
case2: mov A0,1
mov A1,0
jmp loopn
case3: mov A0,0
mov A1,1
jmp loopn
start endp
code ends
end start
八、设计心得体会:
经过这些日子的努力,学到了不少东西,这也更加印证了“实践是检验真理唯一标准〞这一论断,许多从书本上看起来枯燥无味的知识在这几天的实践中变得生动有趣,也让曾经对这单片机不感兴趣的我逐渐喜欢上了这门课程。Proteus是一个实用性很强的软件,尽管全英文界面对我们来说有一定障碍,但在逐步的探索过程中我发现其可学性相当大,学好它也是极为必要的。而编程那么是最难的一局部,汇编语言因为偏向硬件,学起来也比拟难,我感觉比C语言的学习要难上许多,我的编程过程也主要是与同学的探讨以及借鉴参考书上的资料,进展极不顺利。虽然这次课题没方法仿真,但经过了多天困难重重的摸索和自学,我还是从中学习了不少新的知识和解决困难的方法。这一次因为所选课题资料稀缺,设计的最终完成不少都是依靠对课本及老师所给的有限资料的反复研读以及与同学的探讨中一步一步慢慢定稿的,我也为对书本知识的一知半解付出了代价,走了不少弯路,也想起来老师曾经课上的谆谆教诲,心中懊悔不已。但我相信,只要肯往这个方向努力,以后假设是能有更多这样的实践时机,也一定能慢慢掌握它。在这里谨向老师,以及同学们致以衷心的感谢!
九、参考资料:
[1]?单片机原理及应用系统设计?,毛谦敏,国防工业出版社,2021.7
[2]?单片微型机原理及应用?,徐淑华,哈尔滨工业大学出版社,2005.1
[3]?单片机课程设计指导书?,皮大能,北京理工大学出版社,2021.7
[4]?单片机控制工程实践技术?,付家才,化学工业出版社,2004.5
[5]?AT24C02数据手册?
展开阅读全文