基于单片机的压力测试仪设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在工业生产控制过程中,压力是一个很重要的参数。

比如利用测量大气压力来间接测量海拔高度,在工业生产中测量压力参数来判断反应的过程,在气象预测中,也需要测量大气压力来判断阴雨天气等等。

所有这些都需要掌握测量压力,所以压力表的设计拥有广阔的市场前景。

本课题就是基于此原因设计的一个简单压力计。

本课程设计用MPX4115专感器来检测压力参数,ADC0808进行模数转换后,利用AT89C524行数据处理后,由键盘设置测量量程,用发光二级管显示当前测量量程送液晶显示压力值。

本系统可根据需要进行功能扩展。

由于ADC0808支持8路信号采集,可以对8个压力点参数进行检测。

可以手动设置采集哪一路,或者循环采集。

还可以进行压力上下限报警。

在设计系统的时候,立足于界面友好性、性价比,可以在简单压力检测的时候使用。

关键词:压力测试;单片机;ADC ;传感器
1•设计要求 (3)
2.设计方案与设计原理 (4)
2.1系统总体设计 (4)
2.2功能介绍 (4)
3•元器件的识别与检测 (5)
3.1 AT89C52 简介 (5)
3.2 ADC0808 简介 (5)
4制作与调试 (6)
4.1系统软件设计 (6)
4.2系统程序整体流程图 (7)
4.3 T0中断服务程序流程图 (8)
4.4外部中断INTO流程图 (8)
4.5系统总体框图 (9)
4.6系统总体仿真电路 (9)
4.7软硬件仿真调试及性能分析 (10)
4.8程序代码 (11)
5.设计心得 (17)
6参考文献 (18)
1 .设计要求
本课程设计用MPX4115传感器来检测压力参数,ADC0808进行模数转换后,利用AT89C52进行数据处理后,由键盘设置测量量程,用发光二级管显示当量量程送液晶显示压力值。

数字压力传感器是工业实践中最为常用的一种传感器,其广泛应用于各种工业自控环境,涉及水利水电、铁路交通、智能建筑、生产自控、航空航天、军工、石化、油井、电力、船舶、机床、管道等众多行业,下面就简单介绍一些常用传感器原理及其应用。

本课程设计的数字压力传感器以单片机为主要部件,利用全桥测量原理,通过对电路输出电压和标准压强的线性关系,建立具体的数学模型,将电压量纲(V)改为压强纲(pa)即成为一台原始电子称。

其中测量电路中最主要的元器件就是电阻应变式传感器。

电阻应变式传感器是传感器中应用最多的一种,本设计采用全桥测量电路,使系统产生的误差更小,输出的数据更精确。

而三运放大电路的作用就是把传感器输出的微弱的模拟信号进行一定倍数的放大,以满足A/D转换器对输入信号电平的要求。

ADC0809的A/D 转换作用是把模拟信号转变成数字信号,进行模数转换,然后把数字信号输送到显示电路中去,最后由显示电路显示出测量结果。

并且能实现数字传感器之间的通讯,达到数据共享的目的。

从而更好的满足当今社会的要求。

2. 设计方案与设计原理
2.1系统总体设计
压力计以AT89C52为核心,进行数据的处理和显示,并进行显示量程的切换。

压力测量采用MPX4115利用ADC0808实现A/D转换,由键盘设置量程转换,并且用发光二极管显示当前的量程。

2.2功能介绍
压力计的测量量程在10KPA~100KP,精度在0.5级。

利用16X1字符型LCD
显示和提示操作。

利用按键进行量程转换。

具体为XX XX KPA和XXX X KPA。

压力测量使用摩托罗拉公司的MPX4115传感器,采集电路以此为核心,为了
克服干扰,在MPX4115输出电路中增加了RC滤波电路。

MPX4115压力传感器检测的范围是10KPA-100KPA输出电压信号0.2V-4.8V。

ADC0808的参考电压VREF+=5WREF-=0V则0V-5V)对应(0-255),(0.2V-4.8V )对应(10-246 )。

本课程设计是基于AT89C52的压力测量装置。

有压力传感器测量当前施加在传
感器上的压力,并通过ADC0808芯片将电压信号转换为数字信号传递给单片机,
通过单片机将当前的压力值传递给LCD并且正确显示。

本系统可根据需要进行功能扩展。

由于ADC0808支持8路信号采集,可以对
8个压力点参数进行检测。

可以手动设置采集哪一路,或者循环采集。

还可以进行压力上下限报警。

在设计系统的时候,立足于界面友好性、性价比,可以在简单压力检测的时
候使用。

3. 元器件的识别与检测
管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。

功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。

主要管脚有:XTAL1 (19脚)和XTAL2 (18脚)为振荡器输入
输出端口,外接12MHz晶振。

RST/Vpd (9脚)为复位输入端口,外接电阻电容组成的复位电路。

VCC( 40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。

P0~P3为可编程通用I/O脚,其功能用途由软件定义。

3.2 ADC0808 简介
ADC080是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。


内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。

ADC080是ADC080的简化版本,功能基本相同。

一般在硬件仿真时采用ADC080进行A/D转换,实际使用时采用ADC0809
进行A/D转换。

ADC080芯片有28条引脚,采用双列直插式封装,如右图所示。

各引脚功能如下:
1〜5和26〜28 (IN0〜IN7): 8路模拟量输入端。

8、14、15和17〜21: 8位数字量输出端。

22 (ALE :地址锁存允许信号,输入,高电平有效。

IN0ClOCK < 1N1SWT
IH2
IM3EOC IN4
IN5CXH1 INC
INT0VT3
A
OOT4
0(JT5越02cm ACOC0UT7 ALE WTS
VREF{*}
T RETW OE
3.1 AT89C52 简介
AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。

AT89C52为40脚双列直插封装的8位通用微
处理器,采用工业标准的C51内核,在内部功能及
T2/P1 0
T2EK/?!. 1
P1. 2
P1. 3
P1.4
P1. 5
P1. £
P1. 7 HST
RXDZP3. 0
TXDZP3. 1
faro/ra, 2
T0/F3. + d
T1/P3. 5 C
^P3. 6 C
MZP3 7匚
XTAL2 C
XTAL1 匚pjj jp
GHT 匚
1
2
3
k-J4o
39
38
437
536
35
24
$3
32
1031
1130
1229
1329
1427
1526
IE25
1724
IS23
1922
2D21
□¥cc
□P0. Q /ADO
3 FQ.1/AD1
3 P0, 2/AD2
□P0. 3/AD3
□PO.4/AD4
□PO. 5/AD5
□PC.6/AD&
□PC. ?/iD?
□EA/VPF
□ALE^FEO&
□FESW
J F2 7/A15 J
P2,6/A14
□P2. 5/A13
□P2. 4/A12
□P2. 3/111
□P2. 2/A10
□P2. l/k3
□P2. O/AS

LILT










J
(


1


6 (START:A / D转换启动脉冲输入端,输入一个正脉冲(至少100 ns宽) 使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。

7( EOC : A/ D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。

9 (OE :数据输出允许信号,输入,高电平有效。

当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。

10 (CLK :时钟脉冲输入端。

要求时钟频率不高于640KHZ
12 (VREF( +))和16 (VREF(-)):参考电压输入端。

11 (Vcc):主电源输入端。

13 (GND :地。

4. 制作与调试
4.1系统软件设计
系统主程序在初始化后只进行按键扫描,
转化,即采样周期是5S 。

当AD 转换完 成后进入外部中断INTO 服务程序,进 行
数据的处理,刷新显示的压力值;当 采用两位量程时,若检测到压力值大 于等于
100,提示超过量程“ OVER ”,需要 转换量程。

4.2系统程序整体流程图
系统的整体程序流程图如下所示:
主程序在完成开机LOGC 显示、压力值初始化显示、TO 及INTO 中断初始化 后进入死循环,在循环中进行按键扫描,切换量程。

等待
T0中断启动AD 转换;
转换完成后进入外部中断INT0进行数据的处理、分析、显示。

按键子程序流程图
按键扫捲程序流程图
按键子程序进入后首先对显示模式进行修改,即在两位整数和三位整数显示 之间进行切换。

若是两位整数模式则先判断是否超过量程(压力值是三位数整 数),超过量程则显示“ OVER ”提示转换量程。

若是三位整数模式则直接刷新 数据后显示。

利用定时器 T0定时5S 启动AD
主程序流程图
4.3 TO中断服务程序流程图
TO定时器定时50MS即每50MS进入TO中断,在中断中增加TIME5S_COUNT
计时器,每次进入TO中断后TIME5S_COUN加1,当加到100后表示5S至叽清零同时启动AD转换。

4.4外部中断INT0流程图
外部中断INT0服务程序流程图如下所示:
INTO中断服务程序流程圍
当ADC0808完成AD转换后,EOC变高,经反相器后接单片机INT0 口,下降沿启动INT0中断。

在中断中首先读取转换后的数字量,再进行标度换算成压力值,完成数据的刷新。

4.5系统总体框图
以AT89C52为核心,外围电路有信号采集MPX4115AD转换电路ADC0808 按键和显示液晶模块。

总体框图如下:
系统


压力测量电路压力测量
使用摩托罗拉公司的
MPX4115传感器,采集
电路以此为核心,为了
克服干扰,在MPX4115输出电路中增加了RC滤波电路。

如下图所示:
4.6系统总体仿真电路
压力计检测系统在PROTUES仿真的硬件电路如下所示:
mpx4115信号处理电

MPX4115的输出的电压信号 0.2V-0.5V 送至ADC0808的0通道,AD 转化后
8位数字信号送给单片机P1 口,经单片机分析处理数据后经 P0 口送液晶显示。

按键控制量程的转换,00.00-10.00KPA 和10.0-100.0KPA 两个量程,显然 整数是两位时的现实精度高。

红色 LED 亮表示此时的量程为00.00-10.0KPA 黄 色LED 亮表示此时的量程为10.0-100.0KPA 。

显示界面利用16X1的字符型液晶LM020L 进行显示,相比LED 显示能显示更 多的内容,人机界面更友好,而且节省单片机硬件资源。

4.7软硬件仿真调试及性能分析
1.数字量到压力值的标度变换
MPX4115压力传感器检测的范围是10KPA-100KPA 输出电压信号0.2V-4.8V 。

ADC0808的参考电压 VREF+=5WREF-=0V 则(0V-5V )对应(0-255),(0.2V-4.8V ) 对应(10-246 )。

LCDt u.mjL 七TEC
?XTAL1
XTAI2
pnn'Ara pn.WADi F«
口 Z I '.H .DZ
pnj'H.ra
pn.^'AD* pn
A 'H .K PCI
ja*AD6 H.!=T
Pn7^AD?
FZiy/G
pz.ir.^
PZ^i'.H-D
P23A11
ALE PZ.^AE
E H
RZSAQ PZ.S'AH
PZ.7^.15 pimz
PIH'RXD P1.1CW ::
P3.1iT :-:H
P13
puTim P1.H- pa+nn P1S P35T1 P1J S paMTH P1.7
pa.Ti'PT
RV1
:TE >:n
4UKK HTSflT
7+LS&- • ♦TEg -
H .[I [i A AD [i B AD [i C
VREF(+Jl VREFH
R1 STI =L :1 5Q1. v T 皿44"匸
I:
A
D1
U2
~rr
OE
Mt
HPX+11S •=T 白:沧'
官円 LE[i-ilELl£MAh-E-^
5 百
T
"3~ I ED I IEDZ~ 1J1
2Z
3J ~
~IT 只]、m
37DBS # □E~LI
MJ 5 ■3 L'H^ S
3+~DEE T
■3~DHS S
~D EH 9
2•系统最小分辨率
△ 115-15
I
1
246-10
检测到。

4.8程序代码
#INCLUDE<REG52.H> #INCLUDE<MATH.H>
#DEFINE UCHAR UNSIGNED CHAR #DEFINE UINT UNSIGNED INT #DEFINE DATAPORT P0 数据端口 SBIT BUSY=P0A 7; SBIT ADC_CS=P2A0; SBIT LCD_RS=P2A1; SBIT LCD_RW=P2A2; SBIT LCD_E=P2A3;
SBIT LED1=P2A4;//两位数,XX.XX,默认两位数 SBIT LED2=P2A5;// 三位数,XXX.X
SBIT KEY=P2A6; // 量程转换 SBIT ADC_OE=P2A7;
BIT KEY_COUNT;〃量程表示,0两位,1三位 UCHAR TIME5S_COUNT; UCHAR PRESS_BAI; UCHAR PRESS_SHI;
y-15 115-15 B-10
_
246-10
115-15
亦3 2
所以 /、= 0.424 kpa
即当压力值变换了 0.424KPA 系统便能
UCHAR PRESS_GE;
UCHAR PRESS_D0T1十分位
UCHAR PRESS_D0T2百分位
UCHAR K;〃量程转换的放大倍数,两位10,三位100
UINT TEMP;
FLOAT PRESS;
UCHAR CODE STRO_O[]="WELCOME! GOOD开机LOGO(15)
UCHAR CODE STR0_1[]="PRESS: KPA!";/正常显示检测(14)
UCHAR CODE STR1[]="OVER!";/超过了满量程
VOID DELAY(UCHAR X)
UCHAR Y,Z;
FOR(丫二X;Y>0;Y--)
FOR(Z=11O;Z>O;Z--);
}
/*======注意:后8个字符的地址是从80+40开始的======*/ //检测LCD忙函数VOID CHECK_BUSY()
{
DO
{
DATAPORT=0XFF;
LCD_RS=0;
LCD_RW=1;
LCD_E=0;
LCD_E=0;// 相当于_NOP_()
LCD_E=1;
}WHILE(BUSY==1);
}
//LCD写命令
VOID WRITE_COM(UCHAR COM)
{
DATAPORT=COM;
LCD_RS=0;〃命令
LCD_RW=0;/写
LCD_E=0;
CHECK_BUSY();/判断LCD 是否忙碌
LCD_E=1;
DELAY(1);
//LCD_E=0;
}
//LCD写数据
VOID WRITE_DATA(UCHAR DATE)
{
DATAPORT=DATE;
LCD_RS=1; 〃数据
LCD_RW=O;/写
LCD_E=0;
CHECK_BUSY();
LCD_E=1;
DELAY(1);
}
//写显示一个字符函数
VOID WRITE_NUMBER(UCHAR DAT,UCHAR A形参〃显示数据,显示地址WRITE_COM(0X80+ADD)显示数据的地址
WRITE_DATA(0X30+DAT); /送数字ASCII 码
}
VOID DISP_INIT()
{
UCHAR I;
ADC_OE=0;
WRITE_COM(0X01);/清屏并光标复位
WRITE_COM(0X30);/设置8 位、2 行、5*7 点阵
//WRITE_COM(0X0F);//显示开,允许闪烁
WRITE_COM(0X0C);光标不显示,不闪烁
WRITE_COM(0X14);/文字不动,光标自动右移
WRITE_COM(0X80);/显示起始地址
FOR(I=0;|V15;I++)// 开机LOGO
WRITE_DATA(STR0_0[l]);〃显示"WELCOME! GOOD!"
FOR(I=0;I<100;I++)// 开机LOGO延时时间
DELAY(100);
WRITE_COM(0X01);/清屏并光标复位
WRITE_COM(0X80);/显示的起始地址
FOR(I=0;I<15;I++)
WRITE_DATA(STR0_1[I]);〃正常显示准备"PRESS:XXXXXKPA!"
//默认两位数显示
LED1=0;
LED2=1;
WRITE_NUMBER(PRESS_SHI,6);
WRITE_NUMBER(PRESS_GE,7);
WRITE_COM(0X80+8);
WRITE_DATA('.');
WRITE_NUMBER(PRESS_DOT1,9);
WRITE_NUMBER(PRESS_DOT1,10);
/*****************************************/
//定时器T0初始化,外部中断INT0初始化
//不用设置INT0优先于T0,因为默认是这样
TMOD=0X01;/定时器TO方式1
TH0=(65536-50000)/256;〃定时50MS
TL0=(65536-50000)%256;
IT0=1;//INT0 负边沿触发中断
EA=1;〃开总中断
ET0=1;// 开T0 中断
EX0=1;// 开INT0 中断
TR0=1;// 启T0 计数
}
VOID KEY_SCAN()
UCHAR I;
IF(KEY==0)
{
DELAY(5);
IF(KEY==0)
{
WHILE(!KEY);〃松手检测
KEY_COUNT=~KEY_COUNT;
IF(KEY_COUNT==0)/两位显示模式
{
IF(PRESS>=100)〃超过了满量程,显示OVER!
{
WRITE_COM(0X80+6);/显示的起始地址
FOR(I=0;I<5;I++)
WRITE_DATA(STR1[I]);〃“OVER”
}
ELSE
{
K=100;//转换结果放大倍数,便于求小数
LED1=0;// 点亮
LED2=1;// 熄灭
TEMP=(UINT)(PRESS*K); 〃放大100 倍,便于求小数
PRESS_SHI=(UCHAR)(TEMP/1000); /取压力值百位
PRESS_GE=(UCHAR)((TEMP%1000)/100);取压力值十位
PRESS_DOT1=(UCHAR)(((TEMP%1000)%100)/10 );取压力值十分位PRESS_DOT2=(UCHAR)(((TEMP%1000)%100)%10)取压力值百分位WRITE_NUMBER(PRESS_SHI,6)3/力值
WRITE_NUMBER(PRESS_GE,7);
WRITE_COM(0X80+8);
WRITE_DATA('.');
WRITE_NUMBER(PRESS_DOT1,9);
WRITE_NUMBER(PRESS_DOT2,10);
}
ELSE// KEY_COUNT=£ 位
{
K=10;
LED1=1;
LED2=0;〃点亮
TEMP=(UINT)(PRESS*K); 〃放大10 倍,便于求小数
PRESS_BAI=(UCHAR)(TEMP/1000); /取压力值百位
PRESS_SHI=(UCHAR)((TEMP%1000)/100); /取压力值十位PRESS_GE=(UCHAR)(((TEMP%1000)%100)/10);取压力值个位PRESS_DOT1=(UCHAR)(((TEMP%1000)%100)%1取压力值十分位WRITE_NUMBER(PRESS_BAI,6)压力值
WRITE_NUMBER(PRESS_SHI,7);
WRITE_NUMBER(PRESS_GE,8);
WRITE_COM(0X80+9);
WRITE_DATA('.');
WRITE_NUMBER(PRESS_DOT1,10);
}
}
}
}
VOID MAIN()
{
DISP_INIT();
WHILE(1)
{
KEY_SCAN();
}
}
VOID T0_SEVERCE() INTERRUPT 1//T0中断服务子函数
{
TH0=(65536-50000)/256;〃定时50MS
TL0=(65536-50000)%256;
TR0=0;
TIME5S_COUNT++;
IF(TIME5S_COUNT==100)/定时5S到,每5S进行AD转换检测{
TIME5S_COUNT=0;
ADC_CS=0;〃启动AD转换
ADC_CS=1;
ADC_CS=0;
}
TR0=1;
VOID INT0_SERVICE() INTERRUPT 0
{
UCHAR AD_DATA,I;
P1=0XFF;〃数据准备,读入的时候先置1
1=0;1=0;1=0;1=0;
ADC_0E=1;/允许输入
I=0;I=0;I=0;I=0;
〃AD_DATA=P3;〃准许转换的结果
AD_DATA=P1;
I=0;I=0;I=0;I=0;
ADC_OE=0;//禁止输入
I=0;I=0;I=0;I=0;
PRESS=(10.0/23.6)*(AD_DATA-10)+15;
IF(KEY_COUNT==0)/两位数模式
{
IF(PRESS>=100)// 超过了满量程,显示OVER!
{
WRITE_COM(0X80+6);/显示的起始地址
FOR(I=0;I<5;I++)
WRITE_DATA(STR1[I]);〃“OVER”
}
ELSE
{
TEMP=(UINT)(PRESS*K); 〃放大100 倍,便于求小数
PRESS_SHI=(UCHAR)(TEMP/1000); /取压力值百位
PRESS_GE=(UCHAR)((TEMP%1000)/100);取压力值十位
PRESS_DOT1=(UCHAR)(((TEMP%1000)%100)/10);取压力值十分位
PRESS_DOT2=(UCHAR)(((TEMP%1000)%100)%10)取压力值百分位
//刷新显示的压力数据
WRITE_NUMBER(PRESS_SHI,6)3/力值WRITE_NUMBER(PRESS_GE,7); WRITE_NUMBER(PRESS_DOT1,9);
WRITE_NUMBER(PRESS_DOT2,10);
}
}
ELSE//KEY_COUNT=5 位显示
{
TEMP=(UINT)(PRESS*K); 〃放大10 倍,便于求小数
PRESS_BAI=(UCHAR)(TEMP/1000); /取压力值百位
PRESS_SHI=(UCHAR)((TEMP%1000)/100); /取压力值十位
PRESS_GE=(UCHAR)(((TEMP%1000)%100)/10);取压力值个位
PRESS_DOT1=(UCHAR)(((TEMP%1000)%100)%1取压力值十分位//刷新显示的压力数据
WRITE_NUMBER(PRESS_BAI,6)压力值WRITE_NUMBER(PRESS_SHI,7); WRITE_NUMBER(PRESS_GE,8);
WRITE_NUMBER(PRESS_DOT1,10);
}
5. 设计心得
这次课程设计经历了一周的时间,其中遇到了许多的麻烦和困难,但是都一一解决
了,通过发现问题、分析问题、解决问题,我又学到了许多新的知识,而且这些知识都是在书本中的抽象理论中很难明白的,必须在工程实际应用才能够有切身
的体会。

在确定课题后,设计有要求量程切换,这是在以前书本中都不曾提过的应用,我们根据现实生活中,和在实验室接触的仪表中,将量程切换定义为:小量程
(XX • Xx)现实到小数点百分位,大量程(XXX.X ),虽然整数可以显示到百位,但是只能够显示到小数点十分位,这样就没有小量程显示准确了。

在按键子程序中要达到量程转换的目的,定义一个位变量,key_count,每次按键后,key_count 先取反,再判断key_count的值,若是0表示的是两位整数显示模式,1则表示三位整数显示的模式。

显示环节中,我们也犯了很大的错误,小数点一直显示A,显示不正确。


们一直在排查,前几天都没有成功。

最后还是发现在写小数点的时候用的是
write_number ‘. ' ,8 ),而write_number (uchar dat ,uchar add )是用来显示数字的,dat即十进制数字0~9,在函数中,首先将0x30+dat即得数字的ASCII 码,我们原先在写小数点的时候用write_number ‘. ' ,8)显然得到的是小数点的ASCII码+0X30后的ASCII码,这个码刚好是A的码值。

我们就改成write_com(0x80+8); write_data('.'); 两条语句,显示正确。

所以
做事还是要细心。

在ad转换后数据怎么读取上我们小组也存在着很大分歧。

我的同学说ad转换需要100us,那么我们就在启动转换后延时几ms去读就ok 了,简单方便;也有同学说用查询法,eoc在转换期间一直是低电平,转换完成后变高,那么我们就在启动转换后用while (! eoc)等待转换完成,这样也省事;也有的说用外部中断。

最后
大家经过讨论,本着节省cpu时间资源和学习的目的,决定使用中断法。

通过这次课程设计,我学到了许多知识,这些知识都是在实践中才能够点滴积累的。

通过调试BUG才能够发现问题、解决问题,并在解决问题中我新的收获。

同时,尤其是做技术性的事情,一定的有团队合作的精神,一个人的力量是有限的,而且许多时候会进入死胡同,或许别人一看就能发现问题的本质。

大家一起学习。

6参考文献
1. 陈汝全.电子技术常用器件应用手册.北京:机械工业出版社,2005
2. 毕满清.电子技术实验与课程设计.北京:机械工业出版社,2005
3. 潘永雄.电子线路CAD实用教程.西安:西安电子科技大学出版社,2002
4. 张亚华.电子电路计算机辅助分析和辅助设计. 北京:航空工业出版社,2004。

相关文档
最新文档