已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2008级计算机科学与技术专业微 机 接 口 课 程 设 计 报 告2010-2011学年 第一学期项目名称:任意波形发生器姓名:_ 学号: 成绩:姓名: 学号: 成绩:指导教师: 一、设计:1、设计说明:利用实验仪上的数模转换器DAC0832,将程序中的一组波形的数据转换为电压的变化曲线,并用示波器测量模数转换器的输出端,观察生成的波形2、设计目标:设计一个简易波形发生器,要求该系统能通过开关或按钮有选择性的输出正弦波、三角波、方波、及阶梯波等四种波形,并且这四种波形的频率均可通过输入电位器在一定范围内调节3、实验电路图:4、设计内容:(1)主程序(2)子程序:方波程序、正弦波程序、锯齿波、三角波、键盘扫描与处理各模块的流程图如下:A、 主程序和键盘扫描流程: YNNY主程序调用8279初始化程序键盘扫描键值处理LED显示波形号选择调用方波三角波锯齿波正弦波键盘逐行扫描8255初始化判断是否有键按下Bh行码,bl列码按键是否松开消抖延时调用键值处理主程序处理流程键盘扫描流程B、 三角波、方波、正弦波、锯齿波解析如下:三角波的产生较为简单,因为它的上升沿遵循数据加1的规律。下降沿则按数据减1的规律产生。所以在波形的上升沿只要判断上一次的数据是否为最大值FFH,如果不是最大值,将原数据加1输出;而在波形的下降沿只要判断上一次数据是否为0,如果不是0,则将原数据减1即可方波只有两个值,可以采用两个极端值0和FFH正弦波使用查表法产生查表法是事先将正弦波的数据计算出来,列表放在程序中,运行时直接调取数据锯齿波与三角波类似,只是下降时直接降至0即可。各流程图如下:延时N方波流程重复读取延时延时N延时N读取幅值参数置幅值最大读数据置为0读数据跳出返回主程序波表传值波表读数据正弦流程跳出锯齿波流程三角波流程YY读取幅值参数是否=0线性自增读取数据是否=255线性自减读取数据跳出读取参数=0读数据=255线性自减读数据跳出二、程序模块代码:.model small.stack;*定义8255有关参数*addrA EQU 200haddrB EQU 201haddrC EQU 202hCTRL EQU 203haddrDA EQU 208h;*定义8279有关的参数*Z8279 EQU 212H ; 8279的控制口地址D8279 EQU 210H ; 8279的数据口地址LEDMOD EQU 00 ;左边输入,八位显示外部译码八位显示(8279的控制字)LEDFEQ EQU 38H ;8279 扫描频率 ;*以上参数写在主程序开头*.codestart:mov al,90h;方式0,A口输入,B、C口输出mov dx,CTRLout dx,almov ax,csmov ds,axcall CSH8279 ;调用子程序CSH8279call SMXS ;调用子程序SMXSs:call KeyPress;调用子程序keyscan mov di,offset KeyNum mov si,offset XSDATA mov al,di ;波形号 mov si+6,al mov al,di+1 ;暂存值 mov si,al mov al,di+2 ;幅度 mov si+3,al call SMXS mov di,offset KeyNum mov al,di cmp al,1 jne C1 call A1 ;跳转到方波 jmp s ;无条件跳转s C1:cmp al,2 jne C2 call A2 ;跳转到锯齿波 jmp sC2:cmp al,3 jne C3 call A3 ;跳转到三角波 jmp sC3:cmp al,4 jne C4 call A4 ;跳转到正弦波C4:jmp smov ah,4chint 21hKeyNum DB 0,0,0 ;波形参数,第一个为波形号,第二个为暂存值,第三个为幅度参数DMBIAO DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H DB 5EH,79H,71H,00h ;段码表,1亮,0灭,可以根据需要再设计显示字符 ;段中已有的显示字符是0-F和全灭。数据16代表全灭。XSDATA DB 8 dup(16) ;显示缓冲区;正弦波表SIN DB 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh,0ffhDB 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h,80hDB 66h,4eh,38h,25h,15h,09h,04h,00h,04h,09hDB 15h,25h,38h,4eh,66h;*方波*A1 proc near push axpush bxpush cxmov al,KeyNum2 ;求幅值mov bl,33hmul blmov dx,addrDAmov cx,255 ;延时设定A1DL0:out dx,al ;高电平loop A1DL0mov al,0 mov cx,255 ;延时设定A1DL1:out dx,al ;低电平loop A1DL1pop cxpop bxpop axRetA1 endp;*锯齿波*A2 proc near push ax push cx push bxmov al,KeyNum2mov bl,33hmul bl ;求幅值mov ah,al ;最大幅值赋ahmov al,0mov dx,addrDAA21:out dx,al ;低电平最低点 mov cl,al mul cl mov ch,0A2DL:nop loop A2DL ;延时 inc al cmp al,ah ;是否达最大幅值点 jne A21 pop bx pop cx pop ax RetA2 endp;*三角波*A3 proc near push ax push bxmov al,KeyNum2mov bl,33hmul bl ;求最大幅值mov ah,al ;传值ahmov al,0mov dx,addrDAA31: out dx,al ;读取低电平mov cx,3 ;延时点A3DL0:noploop A3DL0inc al ;线性自增cmp al,ah ;是否达最高点jne A31 ;否循环读取A32: out dx,al ;读取最高幅值mov cx,5 ;延时点A3DL1:noploop A3DL1dec al ;线性自减cmp al,0 ;是否为0jne A32 ;否循环 pop bx pop ax RetA3 endp;*正弦波*A4 proc near push dxpush cxpush bxmov dx,addrDAmov bl,60A40: mov cx,33mov di,offset SIN ;波表首址A41: mov al,di ;赋波表内容out dx,al ;读取push cxmov cx,10 A4DL:noploop A4DL ;延时pop cxinc di ;di减1,即逐个取波表内容loop A41dec bl ;波表循环60次jnz A40pop bxpop cxpop dxRetA4 endp;*逐行扫描键盘*keyscan PROC NEAR;键盘扫描,返回行码(bh)和列码(bl)push axpush dxmov dx,addrBmov al,0 ;所有行赋0out dx,almov dx,addrAin al,dxcmp al,0ffh ;列是否全1,判断列,即是否按键je KSQmov cx,10KDL0:nop ;有按键要消抖loop KDL0 ;消抖延时in al,dxcmp al,0ffh ;重新判断是否按键je KSQmov cx,3mov bh,2ch ;00101100,进行右移求三行行号scan:SAR bh,1 ;右移一位mov dx,addrBmov al,bh out dx,almov dx,addrAin al,dxcmp al,0ffh ;是否按键jne KPloop scan ;重扫描下一行KP:mov bl,al ;列值存bl*判断是否键松开*mov dx,addrBmov al,0 ;所有行out dx,almov dx,addrAin al,dxcmp al,0ffhjne KPmov cx,10KDL1:noploop KDL1 ;消抖延时in al,dxcmp al,0ffhjne KPKSQ:and bh,07hcall KeyCtrlpop dxpop axretkeyscan Endp;*按键处理*KeyCtrl PROC NEAR ;按键处理,参数:行码(bh)和列码(bl)push axpush dxcmp bl,0ffhje KCQmov al,0 ;计数值mov cx,08h ;用作移位K2:SAR bl,1 jc ks ;是否CF为0,是跳转ksjnc p ;否,跳转pks:inc al ;自增loop K2 ;循环p:mov bl,alcmp bh,06h;第一行jne R1mov KeyNum1,bl ;键值存入数组keyNum中第二位R1:cmp bh,05h;第二行jne R2add bl,08h ;第二行键值加8mov KeyNum1,bl ;键值存入数组keyNum中第二位R2: cmp bh,03h ;第三行jne KCQ*按确定键值从数组第二位传给第一位*cmp bl,5 ;确定jne ctrl1mov al,KeyNum1 mov KeyNum,aljmp KCQ*幅值修改*ctrl1:mov al,KeyNum2 ;数组第三位cmp bl,3 ;加号jne ctrl2cmp al,5 ;幅值是否为5je KCQinc KeyNum2 ;修改幅度值jmp KCQctrl2:cmp bl,2 ;减号jne KCQmov al,KeyNum2cmp al,0 ;幅值是否为0je KCQdec KeyNum2 ;修改幅度值KCQ:mov bx,0ffffhcall SMXSpop dxpop axretKeyCtrl Endp;*CSH8279子程序是对8279初始化,在主程序的开头调用*CSH8279 PROC NEAR PUSH AX PUSH DX PUSH DS PUSH CS POP DS MOV DX,Z8279 MOV AL,LEDMOD OUT DX,AL MOV AL,LEDFEQ OUT DX,AL POP DS POP DX POP AX RETCSH8279 ENDP;*SMXS子程序是将放在显示缓冲区XSDATA的数据显示在8个数码管上*;入口条件:将要显示的数字按从右到左的顺序事先存放在XSDATA中,最右边的数据放在地址最小的单元。 SMXS PROC NEAR PUSH AX PUSH DX PUSH CX PUSH BX PUSH DI PUSH DS PUSH CS POP DS MOV DI,OFFSET XSDATA MOV CX,8DMB: MOV AL,DI ;查表,将键码放入AL中 LEA BX,DMBIAO XLAT MOV DX,D8279 ;将AL中内容写到数码管上 OUT DX,AL INC DI LOOP DMB POP DS POP DI POP BX POP CX POP DX POP AX RETSMXS ENDPend start三、小结通过这次课程设计,使我得到了一次全面的运用所学的知识分析和解决问题。加深了我对8255芯片和数模转换的了解以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步。在课程设计的一周,让我们再课堂上学习的理论能够付诸实践,在这个过程中,刚开始我们是迷茫的,不知从何做起,通脱老师的指导,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川西南航空职业学院《视传艺术考察》2023-2024学年第一学期期末试卷
- 2024年花卉产业扶贫项目合作合同协议3篇
- 二零二五年度按揭贷款房屋改造贷款合同范本2篇
- 2024影视行业人才中介服务合同
- 二零二五版户外广告牌制作、安装与维护全流程服务合同3篇
- 绍兴文理学院元培学院《影视动画海报设计》2023-2024学年第一学期期末试卷
- 个人所得税代扣代缴协议(2024年版)
- 二零二五年度水泥管行业市场竞争策略合同
- 二零二五年度专业安保公司员工劳动合同范本2篇
- 山东轻工职业学院《期货投资》2023-2024学年第一学期期末试卷
- 广东大湾区2024-2025学年度高一上学期期末统一测试英语试题(无答案)
- 《胃癌靶向治疗》课件
- 2024-2025学年辽宁省沈阳市高一上学期1月期末质量监测数学试题(含解析)
- 《少儿主持人》课件
- 北京市朝阳区2024-2025学年高二上学期期末考试生物试卷(含答案)
- 2025年西藏拉萨市柳梧新区城市投资建设发展集团有限公司招聘笔试参考题库附带答案详解
- 2025年部编版一年级语文上册期末复习计划
- 储罐维护检修施工方案
- 地理2024-2025学年人教版七年级上册地理知识点
- 2024 消化内科专业 药物临床试验GCP管理制度操作规程设计规范应急预案
- 2024-2030年中国电子邮箱行业市场运营模式及投资前景预测报告
评论
0/150
提交评论