基于8086的波形发生器(汇编语言微机课设)
目录
一、设计要求
二、设计方案及功能
三、元器件清单
四、原理图
五、代码
一、设计要求
采用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的波形发生器(汇编语言微机课设)相关推荐
- 基于单片机信号波形发生器系统设计-毕设课设
[资源下载]下载地址如下1533: https://docs.qq.com/doc/DTlRSd01BZXNpRUxl 前 言 随着电子测量技术与计算机技术的紧密结合,一种新的信号发生器-----波 ...
- 基于8086投票器仿真系统设计-毕设课设资料
资料下载地址-1090(百度网盘):点击下载 使用八个按键开关,可以实现八个人同时投票,通过一位数码管显示十进制的投票数,八个led对应亮灭标志对应是否进行投票. 使用八个按键开关,可以实现八个人同时 ...
- 基于单片机的波形发生器设计
单片机可以用来设计各种类型的波形发生器,下面是一种基于单片机的波形发生器设计方案. 所需材料: 单片机:可以选择常见的Atmel AVR单片机,如ATmega328P等. 调制器:可以使用AD9833 ...
- 基于单片机的波形发生器,可以发送正弦、三角、锯齿和方波,可以支持调频和调幅,能够提供相关设计说明。
基于单片机的波形发生器,可以发送正弦.三角.锯齿和方波,可以支持调频和调幅,能够提供相关设计说明. :9740631428454681l***4
- 基于物联网的智能家居系统设计(课设)
基于物联网的智能家居系统设计(课设) 摘 要 一.概述 二.系统分析 三.系统设计 四.系统实现 1.硬件实现 2.软件实现 五.结论与心得 六.参考文献 摘 要 科技的快速发展给人们的生活带来了 ...
- 基于单片机波形发生器PCB原理图报告设计资料-基于单片机比赛计时计分电路仿真设计-基于单片机报警器与旋转灯设计-基于单片机八路数据电压采集报警控制系统-基于单片机病房呼叫系统控制系统设计【毕设课设资】
1302基于单片机波形发生器PCB原理图报告设计资料-毕设课设原理图程序资料 设计一个信号发生器,能在单片机的基础上控制并产生三角波.方波.正弦波和矩形波,且频率幅度和波形可以通过按键改变. #inc ...
- 【微机课设分享】基于8086和LCD12864液晶显示仿真设计-基于8086直流电机调速控制系统设计-基于8086计数器仿真系统设计-基于8086计算器系统仿真设计-基于8086家具房间灯光控制设计
1184基于8086和LCD12864液晶显示仿真设计-设计全套资料 本设计完整的实现基于8086红外报警仿真设计,protues仿真中, 红外传感用按键模拟(红外原理也是通过高低电平来检测感知的), ...
- stm32锯齿波_工程师实战:基于STM32的波形发生器设计
本文摘自21ic论坛,作者:21ic网友 一路向北lm) 为了调动大家的积极性,先开个贴,万一你们都不参加呢!哈哈侥幸心理............... 先发个波让你们看看 ,吓吓你们,快点来参赛!! ...
- 基于FPGA的数字时钟的设计课设(HUAT)
目录 前言 一.数字时钟课设目标 二.部分代码 1.clock.v代码的编写 2.完整代码 3.仿真代码 总结 前言 学校黄老师的FPGA的设计课设,最后的课设为数字时钟,实现分时的计数功能,带有整点 ...
最新文章
- 运维自动化之zabbix (Discovery)(9)
- 多维数组和C#中的数组数组有什么区别?
- java 对象 jvm生命_JVM对象的生命周期
- java中引用一个文件数据_JAVA-基础-引用数据类型(类)
- 在python语言中下列是二进制整数_Python从菜鸟到高手(5):数字
- 手机端适应_不轻易透露的超强技巧!详解iVX中怎样做设备自适应
- java执行exe 没捕获到输出_Java程序员注意——六种异常处理的陋习
- 【CodeForces - 1038A 】Equality (思维水题,预处理字符串)
- python邮箱配置_python flask mail QQ邮箱配置
- 计算一棵树的深度和宽度[Treeview的深度和宽度](多题头的表格问题解决的基础)...
- 线性表的顺序存储C++代码实现
- Android 原生工程接入mPaas框架
- x265帧内预测模式RDO过程
- Python黑帽子-实现netcat基本功能(改进版)
- 语音信号处理-概念(三):FBank特征、MFCC特征(梅尔频率倒谱系数)【由于二者蕴含信息较少,已不适合这个大数据时代。但有些任务由于其本身的特殊性质,还是会使用到MFCC谱。如情感语音转换任务】
- jquery获取选中和未选中的checkbox复选框
- openwrt路由器打印机服务器设置_OpenWRT路由器——网络打印服务器
- 清华大学计算机系学术委员会,蔡懿慈
- 从事SQL相关工作者可以成为数据科学家吗
- android简易计算器
热门文章
- micropython 中断_ESP32 MicroPython教程:外部中断
- 移动端的touch事件详解
- Unity笔记之查找子物体
- 利用python写一个自动给手机发邮件程序
- iOS 自定义转场动画, nav的push/pop自定义动画
- 高标准生产车间空压站油水环保处理设备 ows.01275.00.00
- 未成年人保护|网络游戏直播平台审核制度与技术需求(二)
- iOS分享(微信、qq、微博)
- 一场以科学和时间为名的马拉松:荣耀和小米的技术攀爬
- html里table的遍历,jQuery遍历table