1、微机原理课程设计之函数发生器2微机原理课程设计报告题 目: 函数发生器的设计(二) 专业班级: 电子信息科学与技术0810 班 设计学生: 邓 完成时间: 2010年 12 月 15 日 湖南文理学院物理与电子科学学院设计题目函数发生器的设计(二)设计要求要求:设计一个三角波发生器,可利用键盘改变其输出波形的幅值。例如,可利用1-5这5个数字键改变其输出波形的幅值,当按下1-5数字键时使D/A输出幅值从1V增加到5V。通过D/A课程设计,使学生了解在现有的实验装置上的硬件线路连接,正确地掌握汇编语言程序的编辑、编译、链接、下载、调试,学会从硬件到软件设计步骤的全过程,综合提高设计与运用微机测控
2、系统的能力。按设计要求制订方案;并正确地实现系统功能。理解设计方案后再自己动手修改程序,并正确联线、构成硬件电路,通过独立调试实现设计方案。写出实践报告设计思路(1) 硬件设计思路一级输入按题意采用单缓冲方式,即经寄存器锁存,假设第一级有锁存,第二级直通,那么第二级的控制端和处于有效电平状态,使二级锁存寄存器一直处于打开状态,第二级寄存器具有锁存功能的条件是ILE,都要满足有效电平时,第二级寄存器才开放,为减少控制线条数,是ALE一直处于高电平状态,控制和端,电路连接如原理图。(2)软件设计思路首先单缓冲方式下,输出数据的指令仅需要一条输出指令即可。原理图中,端经与译码电路的输出端相连,器地址
3、既是选中该0832芯片的片选信号,也是第一级寄存器打开的控制信号。另外由于CPU的控制信号与0832的写信号相连,当执行OUT指令时,CPU的写信号有效,与信号一起打开第一级寄存器,输入数据被锁存。系统设计原理图 D0 D7CPUA0A15D0 D7译码器 0832+12V7651 10K-12V23121194VoutIout1I out2Rfb程序流程图 源程序:code segmenthc db ?assume cs:codeorg 1000hstart:call dispkey ;键扫 mov al,byte ptr ds:0752h cmp al,20h jnz y1 jmp y2y
4、1:mov hc,al;hc缓存键值 mov bh,aly2:mov bh,hc mov al,bh mov ah,32h mul ah mov bh,al mov bl,0hbegin:mov cx,55h;掩盖波形直线部分 up:inc bl;上升部分 mov dx,20h mov al,bl out dx,al cmp bl,bh jc updown:mov dx,20h;下降部分 mov al,bl out dx,al dec bl cmp bl,0h jnz down loop up jmp startdispkey:call disp;键盘扫描程序call keymov ah,al
5、mov bl,ds:0748hmov bh,ds:0749hmov al,01hmov dx,0ff21hout dx,alcmp ah,bhmov bh,ahmov ah,bljz disk4mov bl,88hmov ah,88hdisk4: dec ah cmp ah,82h jz disk6 cmp ah,0eh jz disk6 cmp ah,00h jz disk5 mov ah,20h dec bl jmp disk7disk5: mov ah,0fhdisk6: mov bl,ah mov ah,bh disk7: mov byte ptr ds:0748h,bl mov by
6、te ptr ds:0749h,bh mov byte ptr ds:0752h,bh mov al,ah retdisp: push cx mov dx,077fh mov ah,20hdisp0: mov cx,00ffh mov bx,dx mov bl,ds:bx mov bh,0h push dx mov dx,0ff22h mov al,BYTE PTR cs:bx+OFFSET data1 out dx,al mov dx,0ff21h mov al,ah out dx,aldisp1: loop disp1 pop dx dec dx shr ah,01h jnz disp0
7、pop cx ret data1: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8hdb 80h,90h,88h,83h,0c6h,0a1h,86h,8ehdb 0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfhdb 90h,0a3h,0a1h,86h,8fhkey: mov al,0ffh mov dx,0ff22h out dx,al mov bl,00h mov ah,0feh mov cx,08hkey1: mov al,ah mov dx,0ff21h out dx,al shl al,01h mov ah,al nop nop n
8、op nop nop nop mov dx,0ff23h in al,dx not al nop nop and al,0fh jnz key2 inc bl loop key1 jmp nkeykey2: test al,01h je key3 mov al,00h jmp key6key3: test al,02h je key4 mov al,08h jmp key6key4: test al,04h je key5 mov al,10h jmp key6key5: test al,08h je nkey mov al,18hkey6: add al,bl cmp al,10h jnc
9、fkey mov bl,al mov bh,0h mov al,BYTE PTR cs:bx+OFFSET data2 ret nkey: mov al,20h fkey: retdata2: db 07h,04h,08h,05h,09h,06h,0ah,0bhDB 01h,00h,02h,0fh,03h,0eh,0ch,0dh CODE ENDS END START设计总结:回顾起此次课程设计,我学到很多很多的东西,不仅巩固了以前所学过的知识, 加深了对微机原理的理解, 而且学到了很多在书本上所没有学到过的内容。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,
10、只有把所学的理论知识与实践相结合起来,从理论中得出结论 ,才是真正的知识,才能提高自己的实际动手能力和独立思考的能力。而且在做课程设计的过程中,不仅是考验自己所学的微机原理知识,更是要锻炼自己的分析问题的能力和解决实际问题的能力,而在在此次课程设计过程中得到了充分的体现。例如在改变频率的设计过程中,由于数据的出栈、入栈的混乱,导致程序没有波形输出,还好在师兄的指点下,才发现了问题,主要是由于在程序的跳转过程中,PUSH 和 POP 指令并没有成对的使用,导致入栈、出栈混乱。最后修改时,只能不用 PUSH 和 POP 指令,改用寄存器来暂存数据,特别是在调用延迟的程序段时,由于 AX 的混乱使用,导致延迟改变,波形无法正常输出。最后才修改好,能正常的输出波形,并且能完成频率三级调节。虽然 在设计的过程遇到了各种各样的问题, 但 同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通 过这次课程设计,把以前所学过的知识重新温故,巩固了所学的知识。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1