电子工程设计实验报告美图.docx
《电子工程设计实验报告美图.docx》由会员分享,可在线阅读,更多相关《电子工程设计实验报告美图.docx(22页珍藏版)》请在冰豆网上搜索。
电子工程设计实验报告美图
北京工业大学耿丹学院
电子工程设计实验报告
系部:
信息工程系
专业:
电子信息工程
班级:
09-2
姓名:
任萌萌周晟浩
学号:
090202230090202224
指导教师姓名:
曹艳丽
第一部分电子工程设计介绍
一、目的和意义
电子工程设计是在学生学习电子技术和单片机技术的基础上,以单片机系统设计为主要内容的实践课程。
通过该课程的学习和训练,使学生熟悉单片机应用系统的基本组成原理,结构和实现过程。
学会应用系统的设计,制作和调试的基本技能,学会基本应用程序的编制和调试。
从而在实际动手能力方面得到训练,高分析问题和解决问题的能力,培养良好的科学作风和与其他人合作的团队精神。
主要任务
电子工程设计
(二)工64学时。
分为两个阶段工作:
综合实验部分和应用系统设计部分。
两部分相互关联,从简单到复杂,循序渐进。
(1)综合实验部分:
以EL-MUT-III单片机实验系统为硬件环境,每组完成4个综合实验中的2个,涉及电路的设计、实现(插接线)、编程和调试。
包括了显示电路、键盘电路、开关量的输入、输出电路。
(2)应用系统设计部分:
要求自己设计电路,并且在网孔板上通过布线、焊接、安装,实现系统的硬件结构,并通过开发系统进行编程和调试,实现系统功能。
1、电子工程设计课题的技术指标与功能要求
(1)综合实验部分:
通过熟练的掌握EL型微处理器教学实验系统的使用方法与单片机汇编语言的编程方法,实现在数码管上显示0循环和模拟交通灯信号。
(2)应用系统设计部分:
根据模块的要求设计接口和辅助电路,有详细的电路连接图,图纸规范,详细,正确,电路焊接牢固,布局合理,接线整齐,程序设计结构合理,易读性较好,有功能性注释,最终通过A/D转换对0-5V输入信号进行采样,将0-255H显示在LED显示块上,通过D/A转换能够用3个键盘控制三角波、方波、正弦波的输出。
第二部分综合实验部分
一、循环程序设计
1、循环程序方案说明
用LED显示块一次显示0,1,2,3,4,5,6,每次显示停留3s,然后显示1,2,3,4,5,6,。
。
。
即每次每位数字向左移一位,数字在0,1,2,。
。
。
8,9间循环显示。
显示块的链接:
将74LS273的输出端Q0——Q7分别接LED显示块的LED-A,LED-B,......,LED-DP,CS273接CS1,作为字形控制,P1.0---P1.5分别接LED1—LED6,作为字位控制。
2、循环程序结构方框图
编程:
实现上述功能。
画出程序流程图,编程,写出程序清单。
在试验箱上进行调试。
3、循环程序
#definedataXBYTE[0xcfa0]
unsignedchart[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsignedchara[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
voiddisplay()
{inti;
for(i=0;i<500;i++);
}
voiddisplay2()
{inti;
for(i=0;i<10;i++);
}
voidmain()
{
inti,b,c,d,k;
while
(1)
{b=0;
for(b=0;b<10;b++)
{for(i=0;i<12000;i++)
{
for(c=0;c<7;c++)
{
P1=a[c];
k=b+c;
if(k>9)
{
k=k-10;
}
data=a[k];
display2();
}
}
display();
}
}
}
二、实时时钟的显示程序设计
1、时钟显示序方案说明
应用单片机内部的定时器,在LED显示块上显示时、分、秒,各占两位。
设定4个键盘,可对显示时间进行修改。
修改键(A)、加1键(B)、减1键(C)、取消键(D)。
按第一次A键,修改分,分显示闪烁;按第二次A键,修改时,时显示闪烁。
按D键,退出修改。
按B键,修改内容加1,按C键,修改内容减1。
B、C键仅在A键有效时起作用。
接线:
将74LS273的输出端Q0——Q7分别接LED显示块的LED-A,LED-B,......,LED-DP,CS273接CS1,作为字形控制,P1.0---P1.5分别接LED1—LED6,作为字位控制。
键盘的连接:
将KA10接GND,选择RL10------RL17中的4个接74LS244的输入,CS244接CS2。
2、时钟显示结构方框图
编程:
实现上述功能。
画出程序流程图,写出程序清单。
在试验箱上进
行调试。
3、时钟显示程序
PORTEQU0CFA0H
INPORTEQU0CFA8H
BUFEQU23H
SBFEQU22H
MBFEQU21H
HBFEQU20H
CSEGAT0000H
LJMPSTART
CSEGAT401BH
LJMPCLOCK
CSEGAT4100H
START:
MOVR0,#40H
MOVA,#00H
MOV@R0,A
INCR0
MOV@R0,A
INCR0
MOVA,#00H
MOV@R0,A
INCR0
MOV@R0,A
INCR0
MOVA,#00H
MOV@R0,A
INCR0
MOV@R0,A
MOV30H,#00
MOVTMOD,#10H
MOVTH1,#3CH
MOVTL1,#0AFH
MOVBUF,#00H
MOVSBF,#00H
MOVMBF,#00H
MOVHBF,#00H
SETBET1
SETBEA
SETBTR1
DISP:
LCALLDS1
LCALLSCANKEY
AJMPDISP
DS1:
MOVR0,#40H
MOVR2,#20H
DS2:
MOVDPTR,#PORT
MOVA,@R0
ACALLTABLE
MOVX@DPTR,A
MOVA,R2
CPLA
MOVP1,A
MOVR3,#0FFH
DEL:
NOP
DJNZR3,DEL
INCR0
CLRC
MOVA,R2
RRCA
MOVR2,A
JNZDS2
MOVR0,#45H
MOVA,SBF
ACALLGET
MOVA,MBF;把分值分别放入40H,41H中
ACALLGET
MOVA,HBF
ACALLGET
RET
TABLE:
INCA;取与数字对应的段码
MOVCA,@A+PC
RET
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H
GET:
MOVR1,A;把从分或秒字节中取来的值的高
ANLA,#0FH;位屏蔽掉,并送入缓冲区
MOV@R0,A
DECR0
MOVA,R1;把从分或秒字节中取来的值的低
SWAPA;位屏蔽掉,并送入缓冲区
ANLA,#0FH
MOV@R0,A
DECR0;R0指针下移一位
RET
CLOCK:
MOVTL1,#0AFH;置时间常数
MOVTH1,#3CH
PUSHPSW
PUSHACC
INCBUF;计数加一
MOVA,BUF;计到10否?
没有则转到QUIT退出中断
CJNEA,#0AH,QUIT
MOVBUF,#00H;置初值
MOVA,SBF
INCA;秒值加一,经十进制调整后放入
DAA;秒字节
MOVSBF,A
CJNEA,#60H,QUIT;计到60否?
没有则转到QUIT退出中断
MOVSBF,#00H;是,秒字节清零
MOVA,MBF
INCA;分值加一,经十进制调整后放入
DAA;分字节
MOVMBF,A
CJNEA,#60H,QUIT;分值为60否?
不是则退出中断
MOVMBF,#00H;是,清零
MOVA,HBF
INCA
DAA
MOVHBF,A
CJNEA,#24H,QUIT;时值为24否?
不是则退出中断
MOVHBF,#00H
QUIT:
POPACC
POPPSW
RETI;中断返回
SCANKEY:
MOVDPTR,#INPORT
MOVXA,@DPTR
JNBACC.0,LOOP1
JNBACC.1,LOOP2
JNBACC.2,LOOP3
JNBACC.3,LOOP4
AJMPOUTT1
LOOP1:
INC30H
MOVA,30H
CJNEA,#01H,LPP1
MOVR7,#03
DSSS:
MOVR6,#02
MOVR0,#42H
MOVR2,#08H
DSS2:
MOVDPTR,#PORT
MOVA,@R0;得到的段显码输出到段数据口
ACALLTABLE
MOVX@DPTR,A
MOVA,R2;向位数据口P1输出位显码
CPLA
MOVP1,A
MOVR3,#80H
ACALLDEL0
INCR0;显示缓冲字节加一
CLRC
MOVA,R2
RRCA;显码右移一位
MOVR2,A;最末一位是否显示完毕?
如无则
DJNZR6,DSS2
ACALLDS1
DJNZR7,DSSS
LJMPOUTT1
LOOP2:
LJMPLOOP5
LOOP3:
LJMPLOOP6
LOOP4:
LJMPLOOP7
LPP1:
MOVA,30H
CJNEA,#02H,LPP4
MOVR7,#03
DSSS1:
MOVR6,#02
MOVR0,#40H
MOVR2,#20H
DSS3:
MOVDPTR,#PORT
MOVA,@R0;得到的段显码输出到段数据口
ACALLTABLE
MOVX@DPTR,A
MOVA,R2;向位数据口P1输出位显码
CPLA
MOVP1,A
MOVR3,#80H
ACALLDEL0
INCR0;显示缓冲字节加一
CLRC
MOVA,R2
RRCA;显码右移一位
MOVR2,A;最末一位是否显示完毕?
如无则
DJNZR6,DSS3
ACALLDS1
DJNZR7,DSSS1
LJMPOUTT1
LPP4:
MOV30H,#00H
MOVR3,#0FFH
ACALLDEL0
LJMPOUTT1
LOOP5:
MOVA,30H
CJNEA,#01H,LPP2
MOVA,MBF
INCA;分值加一,经十进制调整后放入
DAA;分字节
MOVMBF,A
CJNEA,#60H,LPP5;分值为60否?
不是则退出中断
MOVMBF,#00H;是,清零
MOVA,HBF
INCA
DAA
MOVHBF,A
LCALLDS1
LJMPLPP5
LPP2:
CJNEA,#02H,LPP5
MOVA,HBF
INCA
DAA
MOVHBF,A
CJNEA,#24H,LPP5
MOVHBF,#00H
LCALLDS1
LPP5:
MOVR3,#0FFH
ACALLDEL0
LCALLDS1
LJMPOUTT1
LOOP6:
MOVA,30H
CJNEA,#01H,LPP3
MOVA,MBF
DECA
DAA
MOVMBF,A
ACALLDS1
LPP3:
CJNEA,#02H,LPP6
MOVA,HBF
DECA
MOVHBF,A
LCALLDS1
LPP6:
MOVR3,#0FFH
ACALLDEL0
ACALLDS1
AJMPOUTT1
LOOP7:
MOV30H,#00H
RET
OUTT1:
RET
DEL0:
MOVR4,#0FFH;延时一小段时间
DEL1:
NOP
DJNZR4,DEL1
DJNZR3,DEL0
RET
END
第三部分应用系统设计部分
1、应用系统设计实验要求
1)使用DA0832作为简易波形发生器,产生三角波,锯齿波,方波和正弦波4中波形。
通过4个键盘(或开关)进行波形选择。
2)使用AD0809,设计一个数据采集系统,对0——5V输入信号进行采样,将结果显示在LED显示快上。
LED显示块3块。
3)4个键盘(开关)的选择功能:
K1选择波形发生器或数据采集。
选择波形发生器时,K2、K3、K4选择输出波形类型,最左边显示块显示波形代码(123);选择数据采集时,显示块显示采集结果。
4)控制器使用ATM89C51,提供最小系统版。
2、应用系统设计图形
三、A/D转换部分设计
1、结构方框图
A/D程序流程图调用BCD码流程图
2、A/D模块设计图
3、A/D转换程序
ORG0000H
START:
MOVDPTR,#7FFFH;指向控制口
MOVX@DPTR,A
MOVR7,#05H
ACALLDELAY
MOVXA,@DPTR
MOV20H,A
MOVA,20H
MOVB,#100;B100
DIVAB;A除以B商在A中,余数在B中
MOV51H,A;百位存到51H
MOVA,#10;A除以10
XCHA,B
DIVAB
MOV52H,A;十位存到52H
MOV53H,B;个位存到53H
DIS:
MOVR0,#51H
MOVR2,#03H
MOVR3,#04H
LOOP:
MOVA,R3
MOVP3,A
MOVA,@R0
MOVDPTR,#TABLE;调用TABLE表
MOVCA,@A+DPTR
MOVP1,A
ACALLDELAY
MOVA,R3
RRA
MOVR3,A
INCR0
DJNZR2,LOOP
SJMPSTART
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
DELAY:
MOVR7,#100
LOOP1:
NOP
DJNZR7,LOOP1
RET
END
4、A/D转换功能说明
使用ADC0809,对0—5V输入信号进行采样,通过BCD码转换将0—255结果显示在LED显示块上。
LED显示块为3块。
ADC0809概述:
ADC0809是采样分辨率为8位的、以逐次逼近原理进行模—数转换的器件。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
ADC0809芯片有28条引脚,采用双列直插式封装。
IN0~IN7:
8路模拟量输入端。
2-1~2-8:
8位数字量输出端。
ADDA、ADDB、ADDC:
3位地址输入线,用于选通8路模拟输入中的一路
ALE:
地址锁存允许信号,输入,高电平有效。
START:
A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
EOC:
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
REF(+)、REF(-):
基准电压。
Vcc:
电源,单一+5V。
GND:
地。
4、D/A转换设计部分
1、结构方框图
2、D/A模块转换图
3、D/A转换程序
ORG0000H
START:
JNBP2.0,PRG1;设置按键
JNBP2.1,PRG2
JNBP2.2,PRG3
LJMPSTART
PRG1:
MOVDPTR,#7FFFH;端口地址送DPTR
MOVA,#0;初值送A
MOVX@DPTR,A
ACALLDLY
MOVA,#0FFH
MOVX@DPTR,A
ACALLDLY
LJMPSTART
DLY:
MOVR5,#100
LOOP:
NOP
NOP
DJNZR5,LOOP
RET;产生方波
PRG2:
MOVDPTR,#07FFFH
MOVA,#0
LOOP2:
MOVX@DPTR,A;循环产生三角波前半周期
INCA;数据加一
CJNEA,0FFH,LOOP2
ACALLDLE
LOOP3:
MOVX@DPTR,A;循环产生三角波后半周期
DECA
CJNEA,00H,LOOP3
ACALLDLE
LJMPSTART
DLE:
MOVR5,#100
RET;产生三角波
PRG3:
MOVR1,#00H
LOOP7:
MOVA,R1
MOVDPTR,#SETTAB;从表中取数据
MOVCA,@A+DPTR
MOVDPTR,#07FFFH
MOVX@DPTR,A
INCR1
AJMPLOOP7
RET;产生正弦波
SETTAB:
DB80H,83H,86H,89H,8DH,90H,93H,96H
DB99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH
DB0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H
DB0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8H
DB0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9H
DB0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5H
DB0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDH
DB0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDH
DB0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6H
DB0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAH
DB0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAH
DB0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7H
DB0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1H
DB0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CH,99H
DB96H,93H,90H,8DH,89H,86H,83H,80H
DB80H,7CH,79H,76H,72H,6FH,6CH,69H
DB66H,63H,60H,5DH,5AH,57H,55H,51H
DB4EH,4CH,48H,45H,43H,40H,3DH,3AH
DB38H,35H,33H,30H,2EH,2BH,29H,27H
DB25H,22H,20H,1EH,1CH,1AH,18H,16H
DB15H,13H,11H,10H,0EH,0DH,0BH,0AH
DB09H,8H,7H,6H,5H,4H,3H,2H
DB02H,1H,0H,0H,0H,0H,0H,0H
DB00H,0H,0H,0H,0H,0H,1H,2H
DB02H,3H,4H,5H,6H,7H,8H,9H
DB0AH,0BH,0DH,0EH,10H,11H,13H,15H
DB16H,18H,1AH,1CH,1EH,20H,22H,25H
DB27H,29H,2BH,2EH,30H,33H,35H,38H
DB3AH,3DH,40H,43H,45H,48H,4CH,4EH
DB51H,51H,55H,57H,5AH,5DH,60H,63H
DB69H,6CH,6FH,72H,76H,79H,7CH,80H
END
4、D/A转换功能说明
1)使用DA0832作为简易波形发生器,产生三角波、方波、正弦波3种波形。
通过3个键盘进行选择。
2)3个键盘的选择功能:
K1、K2、K3选择输出波形类型,最左边显示块显示波形代码。
DA0832概述:
DAC0832是8分辨率的D/A转换集成芯片。
与微处理器完全兼容。
这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。
D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。
D0~D7:
8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错);
ILE:
数据锁存允许控制信号输入线,高电平有效;
CS:
片选信号输入线(选通数据锁存器),低电平有效;
WR1:
数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。
由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存;
XFER:
数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效;
WR2:
DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。
由WR1、XFER的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。
IOUT1:
电流输出端1,其值随DAC寄存器的内容线性变化;
IOUT2:
电流输出端2,其值与IOUT1值之和为一常数;
Rfb:
反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度;
Vcc:
电源输入端,Vcc的范围为+5V~+15V;
VREF:
基准电压输入线,VREF的范围为-10V~