电子制作课程设计报告书.docx
《电子制作课程设计报告书.docx》由会员分享,可在线阅读,更多相关《电子制作课程设计报告书.docx(23页珍藏版)》请在冰豆网上搜索。
![电子制作课程设计报告书.docx](https://file1.bdocx.com/fileroot1/2023-2/5/f3d3ec64-f7fa-4c81-9167-1e2940faba49/f3d3ec64-f7fa-4c81-9167-1e2940faba491.gif)
电子制作课程设计报告书
电子制作课程设计
一、设计目的
通过上机操作,掌握利用ProteusISIS进行电路原理图设计的方法;掌握利用原理图元件库编辑器创建新元件的方法;了解利用ProteusARES进行印刷电路板图设计的方法;了解利用PCB元件库编辑器创建新的PCB元件的方法;掌握利用Proteus进行模拟电子实验和数字电子仿真实验的方法,利用其中自带的虚拟仪器进行电路的仿真。
学习掌握MCS-51单片机的结构和原理,KeilC51的编程,Keil和Proteus的联合调试,利用Proteus和KeilC实现AD和DA部分的电子及编程设计。
利用Proteus实现6个电子制作课程设计项目:
●555定时器;
●比例运算放大器;
●波形发生器;
●显示译码器和数码管的应用;
●ADC0808和DAC0832的应用设计
●串/并行数据转换器;
二、设计内容、要求及组织形式
1.555定时器:
设计原理
NE555触发器内部含有两个电压比较器,一个分压器,一个RS触发器,一个放电晶体管和一个功率输出级。
在它的各个引脚功能为:
1脚:
接地
2脚:
低端触发控制输入端
3脚:
输出端
4脚:
双稳态触发器复位段。
当此端接低电平,则时基电路不工作,此时不论TR、TH处于何电平,时基电路输出为“0”,该端不用时应接高电平。
5脚:
VC为控制电压端。
若此端外接电压,则可改变内部两个比较器的基准电压,当该端不用时,应将该端串入一只0.01μF电容接地,以防引入干扰。
6脚:
TH高触发端。
7脚:
放电开关端。
该端与放电管集电极相连,用做定时器时电容的放电。
8脚:
外接电源VCC,双极型时基电路VCC的范围是4.5~16V,CMOS型时基电路VCC的范围为3~18V。
一般用5V。
A.555定时器外接一个电容充放电电路即可构成一个无稳态多谐振荡器;
在起始状态时,电压比较器C1输出1,C2输出0,Td截止;电容在不断地充电,当充电为2/3Vcc时,C1输出跳为0,RS触发器反转为0,Td饱和导通;电容放电下降为1/3Vcc时,比较器C2输出跳为0,RS触发器翻转为1,Td截止。
之后反复循环。
B.555定时器单稳态电路实现;
没有触发信号时电路工作在稳态,当U下降沿到来时,电路被触发,比较器C2输出跳为0,RS触发器被置为1,由稳态翻转到暂稳态,随着C充电过程的进行,C1输出0,RS触发器被复位到0,T饱和导通,暂稳态结束。
C.555定时器救护车变音警笛电路的实现。
左边的555定时器控制振幅,右边的555定时器控制频率,由振幅控制频率,由频率控制声音的高低。
Proteus绘制电路图
555多谐稳态电路图
示波器波形
555单稳态电路
按钮闭合时得波形图
555警笛电路
仿真结论
多谐振荡电路的计算
电容C充电时间:
Tw1=0.7(R1+R2)C1=0.2303
电容C放电时间:
Tw2=0.7R2C=0.329
电路震荡频率:
f=1.43/(R1+2R2)C1=1.014
小结体会
通过对NE555定时器的应用,初步了解了proteus的基本操作,对于555定时器有了更进一步的认识。
2.比例运算放大器
设计原理
LM324是四运放集成电路,它采用14脚双列直插塑料封装。
它的内部包含四组形式完全相同的运算放大器,除电源共用外,四组运放相互独立。
每一组运算放大器有5个引出脚,其中“+”、“-”为两个信号输入端,“V+”、“V-”为正、负电源端,“Vo”为输出端。
两个信号输入端中,Vi-(-)为反相输入端,表示运放输出端Vo的信号与该输入端的相位相反;Vi+(+)为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同。
同相:
Au=1+Rf/R1=1+50k/10k=6
反相:
Au=-Rf/R1=-50k/10k=-5
Proteus绘制电路图
同向比例运算电路
波形图
反相比例运算电路
波形图
仿真结论
反相:
反相比例放大电路中的反馈组态为电压并联负反馈,集成运放的反相输入端与同相输入端两点的电位不仅相等且都等于零,电路输入电阻不高,输出电阻很低。
同相:
同相比例放大电路中的反馈组态为电压串联负反馈,电路的比例系数总是大于或等于1,电路的输入电阻很高,输出电阻很低。
小结体会
通过对比例运算放大电路的绘制,对比例运算放大电路有了进一步的了解,同时也认识了LM324放大器。
3.波形发生器
设计原理
RC桥式正弦振荡器
RC串、并联电路构成正反馈支路,同时兼作选频网络,R1、R2、RW及二极管等元件构成负反馈和稳幅环节。
调节电位器RW,可以改变负反馈深度,以满足振荡的振幅条件和改善波形。
利用两个反向并联二极管D1、D2正向电阻的非线性特性来实现稳幅。
D1、D2采用硅管(温度稳定性好),且要求特性匹配,才能保证输出波形正、负半周对称。
R3的接入是为了削弱二极管非线性的影响,以改善波形失真
三角波方波发生器
由集成运放构成的方波发生器和三角波发生器,一般均包括比较器和RC积分器两大部分。
此电路为由滞回比较器及简单RC积分电路组成的方波—三角波发生器。
它的特点是线路简单,但三角波的线性度较差。
主要用于产生方波,或对三角波要求不高的场合。
Proteus绘制电路图
三角波方波发生器
波形图
RC桥式正弦波震荡
波形图
仿真结论
D1,D2,R3,R4,RW所组成的电路的总电阻大于R5的2倍的时候,电路才会产生震荡波,调节滑动变阻器从而产生震荡波,然后再调节滑动变阻器,出现正弦波。
RC振荡器的振幅条件:
,二极管D1、D2的稳幅作用是为了使振荡电流的方向保持一致,三角波的输出幅度为Uom=R1/R2Uz,振荡周期为:
T=4R1Rv1C/R2;频率f=1/T,三角波的输出幅度与稳压管的Uz以及电阻值之比R1/R2成正比。
小结体会
通过运用集成运放合成正弦波、方波和三角波的波形。
4.显示译码器和数码管的应用
设计原理
74LS47是BCD-7段译码器/驱动器,是数字集成电路,用于将BCD码转化成数码块中的数字,然后我们就能看到从0-9的数字。
译码器原理:
译码为编码的逆过程。
它将编码时赋予代码的含义“翻译”过来。
实现译码的逻辑电路成为译码器。
译码器输出与输入代码有唯一的对应关系。
74LS47是输出低电平有效的七段字形译码器,它在这里与数码管配合使用。
(1)LT(——):
试灯输入,是为了检查数码管各段是否能正常发光而设置的。
当LT(——)=0时,无论输入A3 ,A2 ,A1 ,A0为何种状态,译码器输出均为低电平,若驱动的数码管正常,是显示8。
(2)BI(—):
灭灯输入,是为控制多位数码显示的灭灯所设置的。
BI(—)=0时。
不论LT(——)和输入A3 ,A2 ,A1,A0为何种状态,译码器输出均为高电平,使共阳极数码管熄灭。
(3)RBI(——-):
灭零输入,它是为使不希望显示的0熄灭而设定的。
当对每一位A3= A2 =A1 =A0=0时,本应显示0,但是在RBI(——-)=0作用下,使译码器输出全为高电平。
其结果和加入灭灯信号的结果一样,将0熄灭。
(4)RBO(———):
灭零输出,它和灭灯输入BI(—)共用一端,两者配合使用,可以实现多位数码显示的灭零控制。
七段LED数码管:
将七个输入分别控制对应的发光二极管亮灭。
Proteus绘制电路图
译码数码管显示01
显示译码器02
小结体会
通过本次对显示译码器和数码管的应用,对74LS47有了进一步的认识,知道了其各引脚的功能。
5.ADC0808和DAC0832的应用设计
设计原理
ADC0808工作原理:
ADC0808集成了一个8位的A/D转换器、一个8路通道和一个兼容控制逻辑的微处理器。
其中,8位的A/D转换器采用了连续逼近的转换技术,具有高阻抗稳定的断续比较器特性,包括一个带模拟开关树的256R的分压器和一个逐次逼近寄存器;而由ADC0808中的8路通道,可直接从8个单一模拟信号中获取任何一个作为输入信号。
DAC0832工作原理:
DAC0832是常用的8位电流输出型并行低速数模转换芯片,当需要转换为电压输出时,可外接运算放大器,运放的反馈电阻可通过RFB端引用片内固有电阻,也可外接。
内部集成两级输入寄存器,使得数据输入可采用双缓冲、单缓冲或直通方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)
MCS-51单片机基本原理:
单片机是将中央处理器CPU、存储器、输入输出(I/O)接口电路以及定时器/计数器等部件制作在一块集成电路芯片中,构成一个完整的微型计算机——单片微型计算机。
Keil和Proteus联调的方法:
1.先从网上下载Proteus与Keil联调使用的VDM51.dll文件
2.打开Keil文件下的Tools文件,并把TDRV8=BIN\VDM51.DLL(ProteusVSMMonitor-51Driver")写入Tools。
3.打开Keil软件编写好源程序并生成目标程序。
4.进入Project菜单选择Optionsfortarget,弹出对话框,在“调试”项选中U使用ProteusVSMMonitor-51……
5.按“设置”,令端口号为8000.
6.打开proteus,画出相应电路图,在tools菜单中选择useremote
Debugmonitor,双击电路中的单片机,在Programfile里导入在Keil里生成的目标文件,扩展名为hex。
然后在Keil里按下开始调试按钮,进行联调仿真。
Proteus绘制电路图
ADC0808
DAC0832锯齿波
锯齿波波形
小结体会
学习和掌握了ADC0808和DAC0832的应用设计,了解了KeilC51类C语言的编程,Keil和Proteus联调的方法。
6.串/并行数据转换器
设计原理
1.74LS164是8位寄存器,当清除端(CLEAR)为低电平时,输出端(QA-QH)均为低电平。
串行数据输入端(A,B)可控制数据。
当A、B任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下Q0为低电平。
当A、B有一个为高电平,则另一个就允许输入数据,并在CLOCK上升沿作用下决定Q0的状态。
引脚功能:
CLOCK:
时钟输入端;CLEAR:
同步清除输入端(低电平有效)
2.JK触发器的特性方程为:
Qn+1=J/Qn+/KQn
3.74LS194:
是一个所存的代码能在移位脉冲的作用下依次移位的寄存器,它是一可以用二进制形式保存数据的双稳器件。
既能左移又能右移的寄存器称为双向移位寄存器。
4.74LS161是常用的四位二进制可预置的同步加法计数器,他可以灵活的运用在各种数字电路,以及单片机系统种实现分频器等很多重要的功能。
Proteus绘制电路图
串并转化
仿真结论
小结体会
该电路是由八进制的定时器来控制显示器的刷新时间,由74LS164来进行输入的存储并输出,了解了74LS164的运行原理。
KeilC51类C语言的程序
ADC0808编程:
LED_0EQU30H;个位
LED_1EQU31H;十位
LED_2EQU32H;百位
LED_3EQU33H;存放千位段码
ADCEQU35H
CLOCKBITP1.4;定义0809时钟位
STBITP1.5
EOCBITP1.6
OEBITP1.7
ORG00H
SJMPSTART
ORG0BH
LJMPINT_T0
ORG30H
START:
MOVLED_0,#00H
MOVLED_1,#00H
MOVLED_2,#00H
MOVDPTR,#TABLE;段码表首地址
MOVTMOD,#02H
MOVTH0,#245
MOVTL0,#00H
MOVIE,#82H
SETBTR0
WAIT:
CLRST
SETBST
CLRST;启动AD转换
JNBEOC,$;等待转换结果
SETBOE
MOVADC,P2;读取AD转换结果
CLROE
MOVA,ADC;AD转换结果转换成BCD码
MOVR7,A
MOVLED_3,#00H
MOVLED_2,#00H
MOVA,#00H
LOOP1:
ADDA,#20H;一位二进制码对应20mV电压值
DAA
JNCLOOP2
MOVR4,A
INCLED_2
MOVA,LED_2
CJNEA,#0AH,LOOP4
MOVLED_2,#00H
INCLED_3
LOOP4:
MOVA,R4
LOOP2:
DJNZR7,LOOP1
ACALLBTOD1
LCALLDISP
SJMPWAIT
ORG200H
BTOD1:
MOVR6,A
ANLA,#0F0H
MOVR5,#4
LOOP3:
RRA
DJNZR5,LOOP3
MOVLED_1,A
MOVA,R6
ANLA,#0FH
MOVLED_0,A
RET
INT_T0:
CPLCLOCK;提供0809时钟信号
RETI
DISP:
MOVA,LED_0;显示子程序
MOVCA,@A+DPTR
CLRP1.3
MOVP0,A
LCALLDELAY
SETBP1.3
MOVA,LED_1
MOVCA,@A+DPTR
CLRP1.2
MOVP0,A
LCALLDELAY
SETBP1.2
MOVA,LED_2
MOVCA,@A+DPTR
CLRP1.1
MOVP0,A
LCALLDELAY
SETBP1.1
MOVA,LED_3
MOVCA,@A+DPTR
CLRP1.0
MOVP0,A
LCALLDELAY
SETBP1.0
RET
DELAY:
MOVR6,#10;延时5ms
D1:
MOVR7,#250
DJNZR7,$
DJNZR6,D1
RET
TABLE:
DB3FH,06H,5BH,4FH,66H;共阴数码管7段值
DB6DH,7DH,07H,7FH,6FH
END
DAC0832的编程:
#include
#defineDACRXBYTE[0xfffe]
#defineucharunsignedchar
voidjuchi(ucharsdata,uchartime);
voidfangbo(ucharsdata,uchartime);
voidsanjiao(ucharsdata,uchartime);
main()
{
while
(1){
//juchi(255,100);
//sanjiao(255,100);
fangbo(254,80);//数字不可为255,输出为0
}
}
voidjuchi(ucharsdata,uchartime)//锯齿
{
uchari,j;
for(i=0;i<=sdata;i++)
for(j=0;j