目录

一、设计要求

二、设计方案及功能

三、元器件清单

四、原理图

五、代码


一、设计要求

采用8086/8088控制器和8位数/模转换芯片DAC0832设计实现波形发生器,编写软件程序。

基本要求:

(1) 该波形发生器能够产生方波、矩形波、三角波、梯形波、锯齿波和正弦波,通过示波器可以观察到相应波形;

(2) 通过按键可选择不同波形输出;

(3)使用数码管和LED灯作为波形的显示

(4)利用硬件实现波形发生器输出波形的幅度可调。

二、设计方案及功能

图1硬件系统框图

8086CPU通过控制8255的A口进行波形幅度的调控,通过B口进行对数码管数字的调控,通过C口读取按键的数据,判断是哪个按键按下,8086CPU通过控制DAC0832来制造六种波形,通过编程我们就可以实现当按下第一个按键的时候数码管显示0,第一个LED灯亮,示波器显示方波,当按下第二个按键的时候数码管显示1,第二个LED灯亮,示波器显示梯形波,当按下第三个按键的时候数码管显示2,第三个LED灯亮,示波器显示锯齿波,当按下第四个按键的时候数码管显示3,第四个LED灯亮,示波器显示三角波,当按下第五个按键的时候数码管显示4,第五个LED灯亮,示波器显示正弦波,当按下第六个按键的时候数码管显示5,第六个LED灯亮,示波器显示梯形波。可以通过调节DAC0832的VRRF端电压控制波形的幅度。

三、元器件清单

名称

数量(个)

名称

数量(个)

8086CPU芯片

1

七段共阴极数码管

1

74HC373芯片

2

开关(此处用开关代替按键)

6

DAC0832芯片

1

运算放大器

1

74ls138芯片

1

示波器

1

可调电阻

1

电源

1

LED灯

6

电阻

若干

四、原理图

 五、代码

     DAC0832  EQU       0188H         ;DAC0832的编码地址M8255_A  EQU       0180H         ;8255的A口地址M8255_B  EQU       0182H         ;8255的B口地址M8255_C  EQU       0184H         ;8255的C口地址M8255_Z  EQU       0186H         ;8255的控制寄存器地址    SIN_NUM DB 80H,8CH,98H,0A5H,0B0H,0BCH,0C7H,0D1HDB 0DAH,0E2H,0EAH,0F0H,0F6H,0FAH,0FDH,0FFHDB 0FFH,0FDH,0FAH,0F6H,0F0H,0EAH,0E2H,0DAHDB 0D1H,0C7H,0BCH,0B0H,0A5H,98H,8CH,80HDB 7FH,73H,67H,5AH,4FH,43H,38H,2EHDB 25H,1DH,15H,0FH,09H,05H,02H,00HDB 00H,02H,05H,09H,0FH,15H,1DH,25HDB 2EH,38H,43H,4FH,5AH,67H,73H,7FH    ;正弦波函数表;主程序部分 STACK  SEGMENT   STACK  'stack'DW        32 DUP(0)STACK  ENDSCODE  SEGMENTASSUME    CS:CODE,SS:STACKSTART:  MOV       DX,M8255_Z  ;初始化8255工作方式MOV       AL,89H      ;方式0,C口输入,B口输出OUT       DX,ALSTEP:  CALL      CLEAR       ;清屏CALL      BEGIN       ;调用波形选择函数JMP       STEP        ;继续循环
;----------------------------------------------------------------------------------------------;清理子程序CLEAR  PROC      NEARMOV       DX,M8255_B  ;  清除数码管显示内容MOV       AL,00H        OUT       DX,ALMOV       DX,M8255_A  ;  关闭LED灯MOV       AL,0FFHOUT       DX,ALRETCLEAR  ENDP
;------------------------------------------------------------------------------------------------
;判断输入数据,选择波形              BEGIN  PROC      NEARMOV       DX,M8255_C  ;读c口输入数据IN        AL,DXCMP       AL,0FEH      ;当按第一个键时显示0输出方波同时第一个LED灯亮JNE       L1MOV       DX,M8255_BMOV       AL,3FH        OUT       DX,AL  MOV       DX,M8255_AMOV       AL,0FEHOUT       DX,ALCALL      FANGBO      ;调用方波子程序L1:  CMP       AL,0FBH      ;当按第三个键时显示2输出锯齿波同时第三个LED灯亮JNE       L2MOV       DX,M8255_BMOV       AL,5BHOUT       DX,ALMOV       DX,M8255_AMOV       AL,0FBHOUT       DX,ALCALL      DOG         ;调用锯齿波子程序L2:  CMP       AL,0FDH      ;当按第二个键时显示1输出阶梯波同时第二个LED灯亮JNE       L3MOV       DX,M8255_BMOV       AL,06H OUT       DX,AL MOV       DX,M8255_AMOV       AL,0FDHOUT       DX,ALCALL      CAT         ;调用阶梯波子程序L3:  CMP       AL,0F7H      ;当按第四个键时显示3输出三角波同时第四个LED灯亮JNE       L4MOV       DX,M8255_BMOV       AL,4FHOUT       DX,AL MOV       DX,M8255_AMOV       AL,0F7HOUT       DX,ALCALL      SANJIAOBO   ;调用三角波子程序    L4:  CMP       AL,0EFH   JNE       L5MOV       DX,M8255_B MOV       AL,66H      ;当按第五个键时显示4输出正弦波同时第五个LED灯亮OUT       DX,AL MOV       DX,M8255_AMOV       AL,0EFHOUT       DX,ALCALL      SINBO ;调用正弦波子程序 L5:  CMP       AL,0DFHJNE       L6MOV       DX,M8255_BMOV       AL,6DH        ;当按第六个键时显示5输出正弦波同时第六个LED灯亮OUT       DX,AL MOV       DX,M8255_AMOV       AL,0DFHOUT       DX,ALCALL      TIXING      ;调用梯形波子程序L6:  RET                   ;否则退出BEGIN  ENDP;方波信号产生程序FANGBO  PROC      NEARF1:  MOV       CX,0FFHFB:  MOV       DX,DAC0832MOV       AL,0OUT       DX,ALLOOP      FB      ;形成一个延迟的信号,每执行一次LOOP循环,CX寄存器减一,到0结束MOV       CX,0FFHFB1:  MOV       AL,0FFHMOV       DX,DAC0832OUT       DX,ALLOOP      FB1MOV       DX,M8255_C  ;判断按键是否改变IN        AL,DXCMP       AL,0FEH  ;将C口读取到的数据与0E比较   JE        F1JMP       BEGINRETFANGBO  ENDP
;锯齿波信号产生程序 DOG  PROC      NEARC1:  MOV       DX,M8255_C  ;判断按键是否改变IN        AL,DXCMP       AL,0FBHJE        CBJMP       BEGINCB:  MOV       AL,0LLL:  MOV       DX,DAC0832OUT       DX,ALINC       ALCMP       AL,0FFH     ;判断是否到顶JE        C1JMP       LLLRETDOG  ENDP
;阶梯波信号产生程序CAT  PROC      NEARD1:  MOV       DX,M8255_C  ;判断按键是否改变IN        AL,DXCMP       AL,0FDHJE        D2JMP       BEGIND2:  MOV       AL,0D3:  MOV       DX, DAC0832OUT       DX,ALMOV       CX,33HD4:  LOOP      D4CMP       AL,0FFH     ;判断是否到顶JE        D1ADD       AL,33H      ;每次信号AL加33H,形成一个阶梯JMP       D3CAT  ENDP                ;三角波信号产生程序SANJIAOBO  PROC      NEARB1:  MOV       AL,0MOV       DX,M8255_C  ;判断按键是否改变IN        AL,DXCMP       AL,0F7HJE        B2JMP       BEGIN B2:  MOV       DX,DAC0832OUT       DX,ALDEC       ALCMP       AL,0     ;判断是否到顶,到顶跳转JE        B3JMP       B2B3:  MOV       DX,DAC0832OUT       DX,ALINC       AL CMP       AL,0F7HJE        B1          ;到0转移,重新开始JMP       B3RETSANJIAOBO  ENDP;正弦波信号产生程序SINBO     PROC   NEAR    O1:  MOV CX,0040HMOV BX,OFFSET DS:[SIN_NUM]SINWLP: MOV AL,DS:[BX]MOV DX,DAC0832OUT DX,ALINC BXLOOP SINWLP O2:  MOV       AL,0MOV       DX,M8255_C  ;判断按键是否改变IN        AL,DXCMP       AL,0EFHJE        O1JMP       BEGIN        ;改变跳转RET SINBO     ENDP
;梯形波产生程序TIXING    PROC      NEART0:  MOV       DX,M8255_C  ;判断按键是否改变IN        AL,DXCMP       AL,0DFHJE        T1JMP       BEGINT1:   MOV       DX, DAC0832MOV       AL, 00H OUT       DX, AL TX0:  INC       AL         ;自加,波形成递增OUT       DX,ALCMP       AL,0FFH     ;判断是否到顶JNZ       TX0 MOV       CX,0FFH TX1:  NOP                    ;到顶延时一段时间,波形保持LOOP      TX1TX2:  DEC       AL           ;自减,波形成递减OUT       DX ,ALCMP       AL,00H JNZ        TX2         ;判断是否为0,为0跳转MOV       CX,0FFH TX3:  NOPLOOP      TX3JMP       T0 TIXING    ENDP
;子程序结束   CODE  ENDSEND       START

基于8086的波形发生器(汇编语言微机课设)相关推荐

  1. 基于单片机信号波形发生器系统设计-毕设课设

    [资源下载]下载地址如下1533: https://docs.qq.com/doc/DTlRSd01BZXNpRUxl 前  言 随着电子测量技术与计算机技术的紧密结合,一种新的信号发生器-----波 ...

  2. 基于8086投票器仿真系统设计-毕设课设资料

    资料下载地址-1090(百度网盘):点击下载 使用八个按键开关,可以实现八个人同时投票,通过一位数码管显示十进制的投票数,八个led对应亮灭标志对应是否进行投票. 使用八个按键开关,可以实现八个人同时 ...

  3. 基于单片机的波形发生器设计

    单片机可以用来设计各种类型的波形发生器,下面是一种基于单片机的波形发生器设计方案. 所需材料: 单片机:可以选择常见的Atmel AVR单片机,如ATmega328P等. 调制器:可以使用AD9833 ...

  4. 基于单片机的波形发生器,可以发送正弦、三角、锯齿和方波,可以支持调频和调幅,能够提供相关设计说明。

    基于单片机的波形发生器,可以发送正弦.三角.锯齿和方波,可以支持调频和调幅,能够提供相关设计说明. :9740631428454681l***4

  5. 基于物联网的智能家居系统设计(课设)

    基于物联网的智能家居系统设计(课设) 摘 要 一.概述 二.系统分析 三.系统设计 四.系统实现 1.硬件实现 2.软件实现 五.结论与心得 六.参考文献 摘 要   科技的快速发展给人们的生活带来了 ...

  6. 基于单片机波形发生器PCB原理图报告设计资料-基于单片机比赛计时计分电路仿真设计-基于单片机报警器与旋转灯设计-基于单片机八路数据电压采集报警控制系统-基于单片机病房呼叫系统控制系统设计【毕设课设资】

    1302基于单片机波形发生器PCB原理图报告设计资料-毕设课设原理图程序资料 设计一个信号发生器,能在单片机的基础上控制并产生三角波.方波.正弦波和矩形波,且频率幅度和波形可以通过按键改变. #inc ...

  7. 【微机课设分享】基于8086和LCD12864液晶显示仿真设计-基于8086直流电机调速控制系统设计-基于8086计数器仿真系统设计-基于8086计算器系统仿真设计-基于8086家具房间灯光控制设计

    1184基于8086和LCD12864液晶显示仿真设计-设计全套资料 本设计完整的实现基于8086红外报警仿真设计,protues仿真中, 红外传感用按键模拟(红外原理也是通过高低电平来检测感知的), ...

  8. stm32锯齿波_工程师实战:基于STM32的波形发生器设计

    本文摘自21ic论坛,作者:21ic网友 一路向北lm) 为了调动大家的积极性,先开个贴,万一你们都不参加呢!哈哈侥幸心理............... 先发个波让你们看看 ,吓吓你们,快点来参赛!! ...

  9. 基于FPGA的数字时钟的设计课设(HUAT)

    目录 前言 一.数字时钟课设目标 二.部分代码 1.clock.v代码的编写 2.完整代码 3.仿真代码 总结 前言 学校黄老师的FPGA的设计课设,最后的课设为数字时钟,实现分时的计数功能,带有整点 ...

最新文章

  1. 运维自动化之zabbix (Discovery)(9)
  2. 多维数组和C#中的数组数组有什么区别?
  3. java 对象 jvm生命_JVM对象的生命周期
  4. java中引用一个文件数据_JAVA-基础-引用数据类型(类)
  5. 在python语言中下列是二进制整数_Python从菜鸟到高手(5):数字
  6. 手机端适应_不轻易透露的超强技巧!详解iVX中怎样做设备自适应
  7. java执行exe 没捕获到输出_Java程序员注意——六种异常处理的陋习
  8. 【CodeForces - 1038A 】Equality (思维水题,预处理字符串)
  9. python邮箱配置_python flask mail QQ邮箱配置
  10. 计算一棵树的深度和宽度[Treeview的深度和宽度](多题头的表格问题解决的基础)...
  11. 线性表的顺序存储C++代码实现
  12. Android 原生工程接入mPaas框架
  13. x265帧内预测模式RDO过程
  14. Python黑帽子-实现netcat基本功能(改进版)
  15. 语音信号处理-概念(三):FBank特征、MFCC特征(梅尔频率倒谱系数)【由于二者蕴含信息较少,已不适合这个大数据时代。但有些任务由于其本身的特殊性质,还是会使用到MFCC谱。如情感语音转换任务】
  16. jquery获取选中和未选中的checkbox复选框
  17. openwrt路由器打印机服务器设置_OpenWRT路由器——网络打印服务器
  18. 清华大学计算机系学术委员会,蔡懿慈
  19. 从事SQL相关工作者可以成为数据科学家吗
  20. android简易计算器

热门文章

  1. micropython 中断_ESP32 MicroPython教程:外部中断
  2. 移动端的touch事件详解
  3. Unity笔记之查找子物体
  4. 利用python写一个自动给手机发邮件程序
  5. iOS 自定义转场动画, nav的push/pop自定义动画
  6. 高标准生产车间空压站油水环保处理设备 ows.01275.00.00
  7. 未成年人保护|网络游戏直播平台审核制度与技术需求(二)
  8. iOS分享(微信、qq、微博)
  9. 一场以科学和时间为名的马拉松:荣耀和小米的技术攀爬
  10. html里table的遍历,jQuery遍历table