微机原理课程设计报告文档格式.docx
《微机原理课程设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计报告文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
电路原理图(设计连接图):
3.汇编源程序代码
;
***********************功能说明*****************************
题目二利用D/A设计波形发生器
利用D/A设计一个波形发生器,能分别产生三角波、正弦波、锯齿波和方波,
至少设计一种波形切换方式。
;
功能:
本项目用到8255,DAC0832芯片
1产生四种波形
2键盘切换波形
3数码管显示波形号(1-三角波,2-正弦波,3-锯齿波,4-方波)
************************主程序******************************
io3EQU600h;
8255
io4EQU800h;
DAC0832
********************************数据段定义
datasegment
sin_wavedb200,195,181,159,131
db100,69,41,19,5,0,0;
正弦波幅值
LEDDB06H,5BH,4FH,66H;
共阴极段码表
dataends
********************************
codesegment
assumecs:
code,ds:
data
start:
movax,data;
建立DS段地址
movds,ax
calljian
********************************三角波
san:
movBx,255
SAN3:
MOVCX,BX
moval,0
movdx,io4
san1:
outdx,al;
三角波形上升段
calldelay
incal
loopsan1
movcx,BX
moval,BL
san2:
三角波形下降段
decal
loopsan2
************************************正弦波
sin:
movcx,11
movbx,0
leasi,sin_wave
sin1:
moval,[si][bx];
正弦波下降段
outdx,al
calldelay1
incbx
loopsin1
movcx,11
sin2:
正弦波上升段
outdx,al
decbx
loopsin2
***************************************锯齿波
juchi:
movBx,255
juchi1:
movcx,bx
moval,bl
juchi2:
下降沿
loopjuchi2
***************************************方波
fang:
fang1:
moval,bl;
高电平段
MOVal,0;
低电平段
****************************************延时
delayproc;
延时子程序一
pushax
pushbx
pushcx
pushdx
movcx,50
lp0:
nop
looplp0
popdx
popcx
popbx
popax
ret
delayendp
delay1proc;
延时子程序二
movcx,1250
lp1:
looplp1
delay1endp
****************************************键盘选波形
jianprocnear
jian1:
moval,10001000B;
c口高四位输入
MOVDX,io3+6H
OUTDX,AL;
送控制字
MOVAL,0
MOVDX,io3+4H
c口低四位为0即行输出为0
nokey:
inal,dx;
读c口高四位
andal,0f0H;
屏蔽c口低四位
cmpal,0f0H
jznokey;
无键按下则循环
calldelay1;
延时
inal,dx
shral,1;
列信息存于al低四位
shral,1
movbl,0;
初始列变量BL为0
movcx,4
jian2:
shral,1;
逐列检测,找出为0信号
jncjian3
incbl
loopjian2
jian3:
moval,10010001b;
c口低四位输入
movdx,io3+6h
outdx,al;
movdx,io3+4h
c口高四位为0即列输出为0
andal,0fh;
屏蔽高四位
cmpal,0fh
jzjian1;
出错从头来
movbh,0;
初始行变量为0
jian4:
jncjian5
incbh;
初始行变量BH为0
loopjian4
jian5:
shlbh,1
addbh,bl;
BH为键号
MOVCH,BH;
保存键号在ch中
MOVAL,BH;
数码管显示波行号
LEABX,LED;
1三角波2正弦波3锯齿波4方波
XLAT
MOVDX,IO3+2
OUTDX,AL
MOVBX,155;
幅值一
MOVDX,IO3
INAL,DX
cmpch,0
jzsan
cmpch,1
jzsin
cmpch,2
jzjuchi
cmpch,3
jzfang
ret
jianendp
codeends
endstart
4.实施结果
(1)键盘选择1——三角波
(2)键盘选择2——正弦波
(3)键盘选择3——锯齿波:
(4)键盘选择4——矩形波
5.课程设计体会
在为期近两周的微机原理课程设计中,我们小组利用所学微机的理论知识进行软硬件整体设计,同时锻炼了我们理论联系实际,提高我们的综合应用能力。
我们这次的课程设计是以微机为基础,设计并开发能输出多种波形(如三角波,正弦波,锯齿波,方波等)的发生器,同时能够通过8255A实现共阴极数码管数字的显示。
我们掌握了各个芯片(如0832,8255A等)的功能特性及接口方法,并能运用其实现一个简单的微机应用系统功能器件。
在平时的学习中,我们所学的知识都是课本上的,再机房的练习大家也都是分散对各个章节的内容进行练习。
因此,缺乏一种系统的设计锻炼。
在课程结束之后,这样的课程设计有助于我们将知识系统的总结在一起。
在这次的软件设计中,程序设计采用的是汇编语言。
同时运用Proteus软件进行芯片的连接与组合,进行调试仿真。
汇编语言具有速度快,可以直接对硬件进行操作的优点,它可以极好地发挥硬件的功能。
但是,汇编语言也存在编写的代码非常难懂,不好维护,难于调试的缺点。
因此,在大型的程序设计中,多采用C语言进行程序编译。
C语言简洁高效,是最贴近硬件的高级汇编语言,经过多年的发展,现已成为专业水平的高级语言。
由于真正意义上的程序设计还不多,因此还不是很得心应手,所以再设计中遇到一些问题和难点。
比如:
在程序设计中如何实现程序结构的最优化,以达到较高的质量,这是以后设计中要注意的问题。
这次课程设计,是我的动手能力得到了很大的提高,更使我们懂得理论知识的重要性,没有理论的指导一切实际行动都是盲目的,且实际操作使我们得到的理论知识得到很好的验证,增加对理论知识的理解。
6.参考文献
[1].陈继红,徐晨,王春明,徐慧。
《微机原理及应用》(第2版)[M]北京:
高等教育出版社2011.1,270-347