波形发生器按键控制波形课程设计.docx
《波形发生器按键控制波形课程设计.docx》由会员分享,可在线阅读,更多相关《波形发生器按键控制波形课程设计.docx(11页珍藏版)》请在冰点文库上搜索。
波形发生器按键控制波形课程设计
波形发生器—按键控制波形课程设计
(一)设计任务和要求-------------------------------------------2
(二)系统方案(设计思路,用到的芯片及作用),画出系统框图及说明-------------------------------------------------------------2
(三)设计方法——硬件设计,画出电路原理图及说明-3
(四)设计方法——软件设计,画出程序流程图及说明,源程序清单和注释---------------------------------------------------------------4
(五)系统调试----------------------------------------------------5
1.使用的主要仪器和仪表
2.实验步骤
3.整理性能测试数据和波形,并与设计要求比较分析
4调试中出现的故障、原因及排除方法
(六)设计结论----------------------------------------------------11
(七)收获和体会-------------------------------------------------13
(一)设计任务和要求
利用DAC0832产生锯齿波、三角波和方波。
按“1”键产生锯齿波;按“2”键产生三角波;按“3”键产生方波。
(二)系统方案
1.DAC0832的内部结构和外部引脚
DAC0832的作用是将从CPU发来的数字信号转化为模拟信号
2.8086CPU
8086CPU主要用于产生数字信号。
设计思路:
通过DAC0832的数模转化功能实现将离散信号转化为模拟信号,然后利用扫描法实现按键控制。
(三)设计方法——硬件设计,画出电路原理图及说明
各个模块及其连接说明:
主要分成两部分,输入部分和输出部分。
输入部分由8255和8个常开型开关来完成。
通过键盘输入数字赋给8086,然后根据8086的程序,调用不同的波形发生函数,输出离散信号给DAC0832进行数模转换。
(四)设计方法——软件设计,画出程序流程图及说明,源程序清单和注释
CODESEGMENT
ASSUMECS:
CODE
CONTROLequ43h
COUNT0equ40h
COUNT1equ41h
COUNT2equ42h
IOCONPTEQU0FF2BH;扩展8255命令口
IOBPTEQU0FF29H;扩展8255PB口
IOAPTEQU0FF28H;扩展8255PA口
PAEQU0FF20H;字位口
PBEQU0FF21H;字形口
PCEQU0FF22H;键入口
ORG18F0H
START:
JMPREDIKEY
BUFDB?
KZDB?
ltimedb?
;定时单元
lkeydb?
ZPDW?
REDIKEY:
callDISKEY;调用显示键扫
CMPKZ,01H
JZSTART1
CMPKZ,02H
JZSTART2
CMPKZ,03H
JZSTART3
JMPREDIKEY
START1:
产生锯齿波
MOVCX,100h
AGAIN1:
MOVDX,0FF80H
MOVAL,0FFH
DON1:
INCAL
OUTDX,AL
LOOPDON1
JMPREDIKEY
START2:
产生三角波
MOVCX,100H
AGAIN2:
MOVDX,0FF80H
MOVAL,0FFH
DON2:
INCAL
OUTDX,AL
CMPAL,0FFH
JNZDON2
DAC:
DECAL
OUTDX,AL
CMPAl,00H
JNZDAC
LOOPDON2
JMPREDIKEY
START3:
产生方波
MOVCX,100H
AGAIN3:
MOVDX,0FF80H
DON3:
MOVAL,0FFH
OUTDX,AL
CALLDELAY
MOVAL,00H
OUTDX,AL
CALLDELAY
LOOPDON3
JMPREDIKEY
DELAY:
PUSHCX方波的延时函数
MOVCX,100
X:
LOOPX
POPCX
RET
DISKEY:
callkey;键扫子程序
movah,al;newkey
movbl,ltime;ltime
movbh,lkey;lkey
moval,01h
movdx,PA;0ff21h
outdx,al
cmpah,bh
movbh,ah;bh=newkey
movah,bl;al=time
jzdisk4
movbl,88h
movah,88h
disk4:
decah
cmpah,82h
jzdisk6
cmpah,0eh
jzdisk6
cmpah,00h
jzdisk5
movah,20h
decbl
jmpdisk7
disk5:
movah,0fh
disk6:
movbl,ah
movah,bh
disk7:
movltime,bl
movlkey,bh
movKZ,bh
moval,ah
ret
key:
moval,0ffh
movdx,PB
outdx,al
movbl,00h
movah,0feh
movcx,08h
key1:
moval,ah
movdx,PA
outdx,al
rolal,01h
movah,al
nop
nop
nop
nop
nop
nop
movdx,PC
inal,dx
notal
nop
nop
andal,0fh
jnzkey2
incbl
loopkey1
jmpnkey
key2:
testal,01h
jekey3
moval,00h
jmpkey6
key3:
testal,02h
jekey4
moval,08h
jmpkey6
key4:
testal,04h
jekey5
moval,10h
jmpkey6
key5:
testal,08h
jenkey
moval,18h
key6:
addal,bl
cmpal,10h
jncfkey
movbl,al
movbh,0h
movsi,offsetdata2
moval,[bx+si]
ret
nkey:
moval,20h
fkey:
ret
data2:
db07h,04h,08h,05h,09h,06h,0ah,0bh
DB01h,00h,02h,0fh,03h,0eh,0ch,0dh
CODEENDS
ENDSTART
(五)系统调试
1.使用的主要仪器和仪表
试验箱,示波器,计算机,
2.实验步骤
⒈0832片选信号CS5插孔和译码输出FF80H插孔相连。
2运行实验程序
3用示波器测量0832左侧AOUT插孔,按1产生锯齿波,按2产生三角波,按3产生方波。
3.整理性能测试数据和波形,并与设计要求比较分析
(1)
锯齿波
(2)
三角波
(3)
方波
4调试中出现的故障、原因及排除方法
故障:
1.方波子函数无法跳出,原因是CX重复使用,应该要入栈出栈。
2.离散信号采样太过于密集,示波器无法显示。
3.主函数与子函数不能相配,函数调用的不对。
4.遇到未定义的变量。
(六)设计结论
D/A转换器将从CPU得到的数字量转化成模拟量输出。
输出的模拟量严格的说不是连续的,而是以D/A转换器的绝对分辨率为量化单位进行变化的D/A转换器的绝对分辨率由数字量的位数决,位数越多,分辨率越高。
(七)收获和体会
开始的时候由于没有经验,不知如何下手,所以就上网搜了很多关于波形发生器的资料,并翻阅了一些相关书籍。
我们小组经过此课程设计我们积累了一点设计经验,最后成功运行出结果的时候也有些小小的成就感。