多种波形发生器设计报告

时间:2024.4.20

石家庄经济学院信息工程学院

电子信息工程与通信工程专业

电子技术课程设计报告

题目:多种波形发生器       

姓    名  朱慧娟       

学    号  41010060325  

班    级 4101090603   

指导教师  曹海燕       

20##年 7 月4 日


课程设计任务书

课程设计报告

注:此表可加附页

注:此表可加附页


课程设计验收

要求:

1.指导教师按照课程设计大纲要求完成学生课程设计指导工作。

2.课程设计任务书由指导教师照大纲要求填写,内容要全面。

3.课程设计报告由参加本学生填写。课程设计结束时交指导教师。(打印稿一份,电子稿一份)

4.指导教师要根据每一位学生课程设计任务完成情况,认真审核设计报告,并在课程设计结束时,给出客观、准确的评语和成绩。

5.课程设计任务书和报告要语言流畅,图表正确规范。

6.本表要用钢笔、圆柱笔填写或打印,字迹工整。


第二篇:任意波形发生器设计报告


2008级计算机科学与技术专业

微 机 接 口

课 程 设 计 报 告

2010-2011学年 第一学期

项目名称:任意波形发生器

姓名: 学号: 姓名: 学号: 成绩:

指导教师:

一、设计:

1、设计说明:

利用实验仪上的数模转换器DAC0832,将程序中的一组波形的数据转换为电压的变化曲线,并用示波器测量模数转换器的输出端,观察生成的波形

2、设计目标:

设计一个简易波形发生器,要求该系统能通过开关或按钮有选择性的输出正弦波、三角波、方波、及阶梯波等四种波形,并且这四种波形的频率均可通过输入电位器在一定范围内调节

3、实验电路图:

任意波形发生器设计报告

任意波形发生器设计报告

4、设计内容:

(1)主程序

(2)子程序:方波程序、正弦波程序、锯齿波、三角波、键盘扫描与处理 各模块的流程图如下:

A、 主程序和键盘扫描流程:

主程序处理流程 键盘扫描流程

B、 三角波、方波、正弦波、锯齿波解析如下:

三角波的产生较为简单,因为它的上升沿遵循数据加1的规律。下降沿则按数据减1的规律产生。所以在波形的上升沿只要判断上一次的数据是否为最大值FFH,如果不是最大值,将原数据加1输出;而在波形的下降沿只要判断上一次数据是否为0,如果不是0,则将原数据减1即可

方波只有两个值,可以采用两个极端值0和FFH

正弦波使用查表法产生查表法是事先将正弦波的数据计算出来,列表放在程序中,运行时直接调取数据

锯齿波与三角波类似,只是下降时直接降至0即可。各流程图如下:

延时N

任意波形发生器设计报告

任意波形发生器设计报告

方波流程

三角波流程

锯齿波流程

任意波形发生器设计报告

任意波形发生器设计报告

任意波形发生器设计报告

任意波形发生器设计报告

二、程序模块代码: .model small .stack

;***********定义8255有关参数****************** addrA EQU 200h addrB EQU 201h addrC EQU 202h CTRL EQU 203h addrDA EQU 208h

;*******************定义8279有关的参数*******************

Z8279 EQU 212H ; 8279的控制口地址

D8279 EQU 210H ; 8279的数据口地址

LEDMOD EQU 00 ;左边输入,八位显示外部译码八位显示(8279的控制字) LEDFEQ EQU 38H ;8279 扫描频率

;*************以上参数写在主程序开头*****************

.code

start:mov al,90h ;方式0,A口输入,B、C口输出

mov dx,CTRL

out dx,al

mov ax,cs

mov ds,ax

call CSH8279 ;调用子程序CSH8279

call SMXS ;调用子程序SMXS

s: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 s

C2:cmp al,3

jne C3

call A3 ;跳转到三角波

jmp s

C3:cmp al,4

jne C4

call A4 ;跳转到正弦波

C4:jmp s

mov ah,4ch

int 21h

KeyNum 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,0ffh

DB 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h,80h

DB 66h,4eh,38h,25h,15h,09h,04h,00h,04h,09h

DB 15h,25h,38h,4eh,66h

;*************方波*****************

A1 proc near

push ax

push bx

push cx

mov al,KeyNum[2] ;求幅值 mov bl,33h

mul bl

mov dx,addrDA

mov cx,255 ;延时设定 A1DL0: out dx,al ;高电平 loop A1DL0

mov al,0

mov cx,255 ;延时设定 A1DL1: out dx,al ;低电平 loop A1DL1

pop cx

pop bx

pop ax

Ret

A1 endp

;*************锯齿波***************** A2 proc near

push ax

push cx

push bx

mov al,KeyNum[2]

mov bl,33h

mul bl ;求幅值

mov ah,al ;最大幅值赋ah mov al,0

mov dx,addrDA

A21:out dx,al ;低电平最低点 mov cl,al

mul cl

mov ch,0

A2DL:nop

loop A2DL ;延时

inc al

cmp al,ah ;是否达最大幅值点 jne A21

pop bx

pop cx

pop ax

Ret

A2 endp

;*************三角波***************** A3 proc near

push ax

push bx

mov al,KeyNum[2]

mov bl,33h

mul bl ;求最大幅值

mov ah,al ;传值ah mov al,0

mov dx,addrDA

A31: out dx,al ;读取低电平

mov cx,3 ;延时点

A3DL0: nop

loop A3DL0

inc al ;线性自增

cmp al,ah ;是否达最高点

jne A31 ;否循环读取

A32: out dx,al ;读取最高幅值

mov cx,5 ;延时点

A3DL1: nop

loop A3DL1

dec al ;线性自减

cmp al,0 ;是否为0

jne A32 ;否循环

pop bx

pop ax

Ret

A3 endp

;*************正弦波*****************

A4 proc near

push dx

push cx

push bx

mov dx,addrDA

mov bl,60

A40: mov cx,33

mov di,offset SIN ;波表首址

A41: mov al,[di] ;赋波表内容

out dx,al ;读取

push cx

mov cx,10

A4DL: nop

loop A4DL ;延时

pop cx

inc di ;di减1,即逐个取波表内容 loop A41

dec bl ;波表循环60次

jnz A40

pop bx

pop cx

pop dx

Ret

A4 endp

;*************逐行扫描键盘*****************

keyscan PROC NEAR;键盘扫描,返回行码(bh)和列码(bl)

push ax

push dx

mov dx,addrB

mov al,0 ;所有行赋0

out dx,al

mov dx,addrA

in al,dx

cmp al,0ffh ;列是否全1,判断列,即是否按键 je KSQ

mov cx,10

KDL0: nop ;有按键要消抖

loop KDL0 ;消抖延时

in al,dx

cmp al,0ffh ;重新判断是否按键

je KSQ

mov cx,3

mov bh,2ch ;00101100,进行右移求三行行号

scan: SAR bh,1 ;右移一位

mov dx,addrB

mov al,bh

out dx,al

mov dx,addrA

in al,dx

cmp al,0ffh ;是否按键

jne KP

loop scan ;重扫描下一行

KP: mov bl,al ;列值存bl

********判断是否键松开*******

mov dx,addrB

mov al,0 ;所有行

out dx,al

mov dx,addrA

in al,dx

cmp al,0ffh

jne KP

mov cx,10

KDL1: nop

loop KDL1 ;消抖延时

in al,dx

cmp al,0ffh

jne KP

KSQ:and bh,07h

call KeyCtrl

pop dx

pop ax

ret

keyscan Endp

;***********************************按键处理********************************* KeyCtrl PROC NEAR ;按键处理,参数:行码(bh)和列码(bl)

push ax

push dx

cmp bl,0ffh

je KCQ

mov al,0 ;计数值

mov cx,08h ;用作移位

K2:SAR bl,1

jc ks ;是否CF为0,是跳转ks

jnc p ;否,跳转p

ks:inc al ;自增

loop K2 ;循环

p:mov bl,al

cmp bh,06h;第一行

jne R1

mov KeyNum[1],bl ;键值存入数组keyNum中第二位

R1:cmp bh,05h;第二行

jne R2

add bl,08h ;第二行键值加8

mov KeyNum[1],bl ;键值存入数组keyNum中第二位

R2: cmp bh,03h ;第三行

jne KCQ

*****按确定键值从数组第二位传给第一位********

cmp bl,5 ;确定

jne ctrl1

mov al,KeyNum[1]

mov KeyNum,al

jmp KCQ

********幅值修改*********

ctrl1:mov al,KeyNum[2] ;数组第三位

cmp bl,3 ;加号

jne ctrl2

cmp al,5 ;幅值是否为5

je KCQ

inc KeyNum[2] ;修改幅度值

jmp KCQ

ctrl2:cmp bl,2 ;减号

jne KCQ

mov al,KeyNum[2]

cmp al,0 ;幅值是否为0

je KCQ

dec KeyNum[2] ;修改幅度值

KCQ:mov bx,0ffffh

call SMXS

pop dx

pop ax

ret

KeyCtrl 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

RET

CSH8279 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,8

DMB: 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

RET

SMXS ENDP

end start

三、小结

通过这次课程设计,使我得到了一次全面的运用所学的知识分析和解决问题。加深了我对8255芯片和数模转换的了解以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步。

在课程设计的一周,让我们再课堂上学习的理论能够付诸实践,在这个过程中,刚开始我们是迷茫的,不知从何做起,通脱老师的指导,同学间的互相学习帮助,逐渐有了清晰的概念,也对自己的课题有了全面系统 的了解。逐渐由被动转为主动,能够自己去实现一些局部功能,到完成整个课题的设计。也使我们再课堂学习到的模糊的概念也转化为清晰的认识。

正所谓纸上得来终觉浅,绝知此事要躬行。学会了如何把理论应用于实际,如何用我们所学的知识去解决正常生活中的问题。

在当今科技发展如此迅速的时代,计算机已经成为了必不可少的工具,它无处不在,学习掌握计算机的技能已成为一项必修课,想要在这个社会有一立足之处,就必须学好计算机,能准确的掌握计算机知识,并熟练的贯彻到生活之中。

更多相关推荐:
简易波形发生器课程设计报告

课程设计报告设计题目简易波形发生器学院理学院专业班级08电子信息科学与技术1班学号20xx31120xx220xx31120xx220xx31120xx1姓名陈建泽纪婧如蔡国英电子邮件811781675qqco...

单片机课程设计报告书波形发生器

目录1课程设计目的12课程设计题目和实现目标13设计方案14Proteus仿真原理图15程序流程图16程序代码17调试总结18设计心得体会19参考文献11课程设计目的单片机原理及应用课程设计是与单片机原理及应用...

电子课程设计-多种波形发生器报告

课题名称多种波形发生器课题代码院系专业电气工程及其自动化班级学生时间指导教师签名教研室主任系主任签名一设计目的1了解并掌握电子电路的一般设计方法具备初步的独立设计能力2通过查阅手册和文献资料进一步熟悉常用电子器...

波形发生器课程设计报告

单片机及DSP课程设计报告专业电子信息工程班级信息101姓名史延凯学号指导教师何香铃时间20xx061728通信与电子工程学院1目录一设计目的及意义311设计目的312设计意义3二方案论证321设计要求错误未定...

波形发生器课设报告

西北工业大学课程设计报告题学专班日目波形发生器院自动化学院业自动化级09031201期20xx年1月15日摘要21题目本次实验主要是以FPGA作为基础制作一个简易波形发生器不仅可以显示学号同时可以通过按键输入产...

模电课程设计报告(波形发生器)

课程设计课程名称模拟电子技术基础课程设计题目名称波形发生电路学生学院物理与光电工程学院专业班级电子科学与技术5班学号学生姓名指导教师20xx12171摘要和关键词摘要用RC桥式正弦波振荡电路产生正弦波正弦波频率...

波形发生器设计报告2

电子技术课程设计报告课题名称学院专业班级姓名学号时间波形发生器昆明学院自机学院机械设计制造及自动化3班李飞飞王祥武20xx1401011120xx0410012620xx年7月10日摘要本文主要介绍能产生正弦波...

(波形发生器) 单片机课程设计报告

单片机原理及系统课程设计专业自动控制班级姓名学号指导教师兰州交通大学自动化与电气工程学院年月日单片机原理及系统课程设计报告波形发生器1引言本系统是基于STC89C51单片机的波形发生器采用STC89C51单片机...

北京交通大学模电设计实验多种波形发生器实验报告

国家电工电子实验教学中心模拟电子技术实验报告实验题目多种波形发生器学院电子信息工程学院专业自动化1103学生姓名高帅学号112120xx20xx年6月7日国家电工电子实验教学中心模拟电子技术实验实验报告目录1设...

DAC0832波形发生器课程设计实验报告1

微机原理与接口技术课程设计报告书DAC0832波形发生器目录一引言1二设计目的2三原理说明2四硬件设计4五设计原理6六程序编译71输出方波子程序72输出三角波子程序83输出锯齿波子程序84输出正弦波子程序95输...

模电设计报告_波形发生器

模拟电子技术课程设计了可看看扬州大学能源与动力工程学院本科生课程设计题目函数发生器的设计课程模拟电子技术基础专业班级学号姓名指导教师纪晓华蒋步军完成日期20xx年11月模拟电子技术课程设计第一部分任务及指导书含...

函数信号发生器课程设计报告

漳州师范学院模拟电子技术课程设计函数信号发生器姓名学号系别专业年级指导教师20xx年4月3日1函数信号发生器摘要利用集成电路LM324设计并实现所需技术参数的各种波形发生电路根据电压比较器可以产生方波方波再继续...

波形发生器课程设计报告(19篇)