信号发生器的设计

课程设计(论文)

题 目 名 称 信号发生器的设计

课 程 名 称 单片机原理及应用 学 生 姓 名 学 号 系 、专 业 指 导 教 师

2013 年 6 月 24 日

摘要

波形发生器在一般的电子和通信实验中使用频率很高,目前我们实验室用的较多的波形发生器主要有两种:低频正弦波发生器和通用多波形发生器,前者只能产生正弦波,调节范围不大,但是信号稳定,失真度底,主要用在对波形有很高的要求的实验中;后者能产生正弦波、方波和三角波,也有的能产生三种以上波形。这两种波形发生器都比较昂贵,而在我们很多的实验中有的要求产生更多的波形种类和它们的谐波,有很多对于波形的要求不是很高,有的只是演示一下,在本课题中将这两方面的缺点结合起来加以改进,最大限度地利用单片机及其外围设备的资源,开发出能产生正弦、三角、方波、梯形、锯齿等多种波形和它们的谐波及组合波形,并可以根据实际情况的需要在波形存储器中写入不同的形,可以随时添加,能满足一般的实验及演示的需要,并且成本很低,操作简洁方便。

关键词:信号发生器;中断;单片机

目录

第1章 设计方案及原理.....................................1 1.1设计原理及元件选型...............................1 1.2设计方案.........................................1 第2章 硬件设计..........................................2

2.1硬件原理图........................................2 2.2硬件连线图........................................2 第3章 软件设计..........................................3

3.1主程序............................................3 3.2锯齿波的产生过程..................................3 3.3三角波的产生过程..................................4 3.4方波的产生过程....................................4 3.5正弦波的产生过程..................................4 第4章 系统仿真..........................................6 第5章 总结..............................................8 参考文件.................................................9 致谢.....................................................10 附录.....................................................11

第1章 设计方案及原理

1.1 设计原理及元件选型 1.1.1 设计原理

该设计设计一个低频信号发生器,我们采用的是AT89C51 单片机用软件实现信号的输出。该单片机是一个微型计算机,包括中央处理器CPU,RAM,ROM、

I/O 接口电路、定时计数器、串行通讯等,是波形设计的核心。该信号发生器原理

框图如图1,总体原理为:利用AT89C51 单片机构造低频信号发生器,可产生正弦波,方波,三角波,锯齿波四种波形,通过汇编语言对单片机的编程即可产生相应的波形信号,并可以通过键盘进行各种功能的转换和信号频率的控制,当输出的数字信号通过数模转换成模拟信号也就得到所需要的信号波形,通过运算放大器的放大输出波形,同时让显示器显示输出的波形信息。

通过P1口和开关K0-K3相连接来控制各个波形的输出。能根据k0-k4键状态进行波形切换,当某一按键按下时,输出相对应的波形。

1.1.2 元件选型

单片机AT89C51系统,DAC0832一片,PC机一台,运算放大器

1.2 设计方案 1.2.1 总体方框图:

图1 总体设计功能图

1.2.2 设计思路

利用中断,当5个开关中有任意一个闭合时,跳转至中断程序,在中断程序中判断是哪一个按键闭合,跳转至相应的程序,执行输出波形的操作,每输出一个点之后,判断按键是否断开,如果依旧闭合,则继续输出,如果已经断开,则结束中断程序。

第2章 硬件设计

2.1 硬件原理图

波形发生器的硬件原理图如图2所示:

图2 波形发生器的硬件原理图

2.2 硬件连线图

硬件连接图如图3所示:

图3 硬件连线图

第3章 软件设计

3.1 主程序如下:

ORG 0000H LJMP MAIN ORG 1000H

MAIN:

JNB P1.0,IR0 JNB P1.1,IR1 JNB P1.2,IR2 JNB P1.3,IR3 AJMP MAIN 3.2 锯齿波的产生过程

锯齿波的实现过程是首先定义一个初值然后进行加法操作,加的步数的多少,则根据要求的频率来进行。然后加到某个数之后就再重新设置为初值,再重复执行刚刚的操作,如此循环下去。

锯齿波发生流程图图4所示:

;如果K0键闭合,则跳转至IR0输出锯齿波 ;如果K1键闭合,则跳转至IR1输出三角波 ;如果K2键闭合,则跳转至IR2输出方波 ;如果K3键闭合,则跳转至IR3输出正弦波

图4 锯齿波发生流程图 锯齿波函数图像如仿真图5所示:

3.3 三角波的产生过程

三角波的实现是设置一个初值,当加到某个值的时候,执行减一操作,减到初值时,再加一。

三角波发生流程图图6所示:

图6 三角波发生流程图 三角波函数图像如仿真图7所示:

3.4 方波的产生过程

方波的实现只需开始的时候设置一个初值然后直接输出这个值就行了,输出一段时间后,然后再重新置一个数据,然后再输出这个数据一段时间,但是此时的时间一定要等于前面那段时间。这样才是一个方波,如果两个时间不相同,那就相当于一个脉冲波了。

方波发生流程图如图8所示: 方波函数图像如仿真图9所示:

3.5正弦波的产生过程

正弦波的实现需要查表,每查一次表,输出一个数值,之后查下一个数值继续输出,当一个波形的256个数值全部输出之后,从头开始继续输出。 正弦波发生流程图如图10所示:

图8 方波发生流程图

图10 正弦波发生流程图

正弦波函数图像如仿真图11所示:

第4章 系统仿真

仿真结果:

图5 锯齿波函数图像

图7 三角波函数图像

图9 方波函数图像

图11 正弦波函数图像

第5章 总结

经过将近一周的单片机课程设计,终于完成了我的波形发生器的设计,基本达到设计要求,从心底里来说,还是很高兴的,毕竟这次设计把仿真做了出来。但高兴之余不得不深思呀!

在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多。对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。

在课程设计中,我们学习到了很多的东西:首先,怎么样去查阅资料,收集与课设要用的有关的知识。其次,要完成一件工作,还得专心致志才行,细心耐心。第三,遇到困难要冷静,要多想解决办法,多尝试。通过这次实验,我们也进一步熟悉单片机的设计与特点,同时也基本上掌握了如何用波形发生器来产生各种波形。而且让我们了解了程序设计的基本思路,增强了实践动手能力,理论结合实际的能力加强。除此以外,我们还深深地认识到严谨、认真的科学态度在科学实验中发挥的重要作用。波形发生器是本次课程设计中原理比较简单的一个,但是它的组成部分多,程序设计有些复杂,出现问题后分析起来比较困难,所以我们养成了完成一个部分就调试检验一个部分,确保正确才进行下一步工作,出现了问题只要在未检验的部分查寻就可以很快找出,效果很不错。在这里谢谢刘老师的耐心指导和同学们的帮助。

参考文献

[1]周航慈.单片机应用程序设计技术(修订版).北京航空大学出版社 [2]江世明、黄同成.单片机原理及应用.中国铁道出版社 [3]张志良.单片机原理与控制技术.第2版. 机械工业出版社 [4]康华光.电子技术基础(第5版). 高等教育出版社出版,2006 [5]蒋力培.单片微机系统实用教程(第1版).机械工业出版社

[6]姜志海、刘连鑫.单片微型计算机原理及应用.电子工业出版社,2011

致谢

通过这次对波形发生器的制作和设计,让我更加明白了设计电路的程序,也让我更加深入了解了波形发生器的设计理念和思路。其实这次实验做得并不是很顺利,在运行过程中碰到了很大的困难,比如出不来图形反而出现了错误,出来了图形但是严重失真等。一开始还比较迷茫,但是我没有失去信心,通过不断地改变阻值,改变接法,终于大体上算是成功了。但是有点遗憾就是波形还是有点微微失真,电压、频率等幅值误差还是较大。我想这是促使我要更加努力地学习课本知识来完善电路。在这里我要感谢老师的帮助,因为老师的提醒,让我的电路更加可行,使用。也因为老师,让我更加有信心去研究新的方法。

附录

程序:

ORG 0000H AJMP START ORG 0010H

START: MOV DPTR , #0CFFFH ;8255控制口地址

MOV A,#80H MOVX @DPTR,A

MOV SP,#70H ;指针重新定义初值

MOV R3,#08H ;数码管的初值为8

MOV R7,#10 ;改变周期的变量初值 LCALL DISPLAY ;上电数码管显示 LOOP0: JNB P1.0,JUCHI

JNB P1.1,SANJIAO JNB P1.2,NEXT0 JNB P1.3,NEXT

LCALL DISPLAY SJMP LOOP0 NEXT0: LJMP FANGBO NEXT: LJMP SINE

;************************************************************* ;锯齿波,波形号码“0”

;*************************************************************

JUCHI: MOV R3,#00H ;输出显示波形号码

LCALL DISPLAY

MOV A,#00H

LP0: MOV DPTR,#0EFFFH ;0832地址

MOVX @DPTR,A ;输出波形上一个点 MOV DPTR,#0FFFFH ;开启转换 MOVX @DPTR,A

JB P3.2,$ ;查询AD转换完成

PUSH ACC ;保存波形上的点 MOVX A,@DPTR

JU0: MOV R5,A ;转换完成传进单片机的值 JU1: MOV R4,#100 ;延时 JU2: DJNZ R4,JU2

DJNZ R5,JU1

POP ACC

INC A

JNB P1.1, EXIT0 ;检测新的波形输出命令 JNB P1.2, EXIT0 JNB P1.3, EXIT0 LJMP LP0

EXIT0: MOV R3,#08H

LJMP LOOP0

;************************************************************* ;三角波,波形号码“1”

;*************************************************************

MOV A,R3 LCALL DISPLAY MOV A,#00H

SANJIAO: MOV R3,#01H ;输出显示波形号码

LP1: MOV DPTR,#0EFFFH ;三角波,DAC0832地址

MOVX @DPTR,A ;三角波的上升边 MOV DPTR,#0FFFFH

MOVX @DPTR,A JB P3.2,$ PUSH ACC MOVX A,@DPTR

SAN0: MOV R5,A ;转换完成传进单片机的值

SAN1: MOV R4,#100 ;延时 SAN2: DJNZ R4,SAN2

DJNZ R5,SAN1

POP ACC INC A

JNB P1.0,EXIT1 ;检测新的波形输出命令

JNB P1.2,EXIT1 JNB P1.3,EXIT1 JNZ LP1 DOWN: DEC A

JNB P1.0,EXIT1

JNB P1.2,EXIT1 JNB P1.3,EXIT1 MOV DPTR,#0FFFFH

MOVX @DPTR,A JB P3.2,$ PUSH ACC MOVX A,@DPTR

SAN3: MOV R5,A SAN4: MOV R4,#100 SAN5: DJNZ R4,SAN5 DJNZ R5,SAN4 POP ACC

MOV DPTR,#0EFFFH MOVX @DPTR,A JNZ DOWN SJMP LP1 EXIT1: MOV R3,#08H

LJMP LOOP0

;************************************************************* ;方波,波形号码“2”

;*************************************************************

FANGBO: MOV R3,#02H ;输出显示波形号码

LCALL DISPLAY

LP2:MOV DPTR,#0EFFFH ;DAC0832地址

MOV A,#0FFH ;方波上限 MOVX @DPTR,A

MOV DPTR,#0FFFFH

MOVX @DPTR,A

JB P3.2,$

MOVX A,@DPTR

FANG0: MOV R5,A FANG1: MOV R4,#100 FANG2: DJNZ R4,FANG2 DJNZ R5,FANG1

JNB P1.0, EXIT2 JNB P1.1, EXIT2 JNB P1.3, EXIT2

MOV DPTR,#0EFFFH

MOV A,#00H MOVX @DPTR,A

MOV DPTR,#0FFFFH

MOVX @DPTR,A

JB P3.2,$

MOVX A,@DPTR

DL3: MOV R5,A DL4: MOV R4,#100 DL5: DJNZ R4,DL5 DJNZ R5,DL4

JNB P1.0, EXIT2 ;开启转换 ;检测新的波形输出命令 ;方波下限 ;开启转换 ;延时

JNB P1.3, EXIT2

SJMP LP2 RET

EXIT2: MOV R3,#08H

;************************************************************* ;正弦波,波形号码“3”

;*************************************************************

SINE: MOV R3,#03H ;输出显示波形号码

LCALL DISPLAY

MOV DPTR,#0EFFFH ;DAC0832地址 MOV DPTR,#sinTab

MOV 00H,#00H SINE_1: MOV A,00H

MOV DPTR,#sinTab MOVC A,@A+DPTR MOV DPTR,#0EFFFH

MOVX @DPTR,A MOV DPTR,#0FFFFH MOVX @DPTR,A JB P3.2,$ PUSH ACC

MOVX A,@DPTR

SINE0: MOV R5,A SINE1: MOV R4,#100 SINE2: DJNZ R4,SINE2 DJNZ R5,SINE1 POP ACC INC 00H

JNB P1.0, EXIT3 ;检测新的波形输出命令

JNB P1.1, EXIT3

AJMP SINE_1 EXIT3: MOV R3,#08H

RET

;************************************************************* ;显示子程序

;************************************************************* DISPLAY:MOV A,#07FH ;选择最后一个数码管 MOV DPTR,#0CFFDH

MOVX @DPTR,A MOV A,R3

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV DPTR,#0CFFCH ;8255pa口作为段选

MOVX @DPTR,A

RET

TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H sinTab: DB 80H,83H,86H,89H,8DH,90H,93H,96H

DB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH DB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H DB 0C7H,0CAH,0CCH,0CFH,0D1H, 0D4H,0D6H,0D8H DB 0DAH,0DDH,0DFH,0E1H,0E3H, 0E5H,0E7H,0E9H DB 0EAH,0ECH,0EEH,0EFH,0F1H, 0F2H,0F4H,0F5H DB 0F6H,0F7H,0F8H,0F9H,0FAH, 0FBH,0FCH,0FDH DB 0FDH,0FEH,0FFH,0FFH,0FFH, 0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH,0FEH,0FDH DB 0FDH,0FCH,0FBH,0FAH,0F9H, 0F8H,0F7H,0F6H DB 0F5H,0F4H,0F2H,0F1H,0EFH, 0EEH,0ECH,0EAH DB 0E9H,0E7H,0E5H,0E3H,0E1H, 0DEH,0DDH,0DAH DB 0D8H,0D6H,0D4H,0D1H,0CFH, 0CCH,0CAH,0C7H DB 0C5H,0C2H,0BFH,0BCH,0BAH, 0B7H,0B4H,0B1H

DB 0AEH,0ABH,0A8H,0A5H,0A2H, 9FH, 9CH, 99H DB 96H, 93H, 90H, 8DH, 89H, 86H, 83H, 80H DB 80H, 7CH, 79H, 78H, 72H, 6FH, 6CH, 69H DB 66H, 63H, 60H, 5DH, 5AH, 57H, 55H, 51H DB 4EH, 4CH, 48H, 45H, 43H, 40H, 3DH, 3AH DB 38H, 35H, 33H, 30H, 2EH, 2BH, 29H, 27H DB 25H, 22H, 20H, 1EH, 1CH, 1AH, 18H, 16H DB 15H, 13H, 11H, 10H, 0EH, 0DH, 0BH, 0AH DB 09H, 08H, 07H, 06H, 05H, 04H, 03H, 02H DB 02H, 01H, 00H, 00H, 00H, 00H, 00H, 00H DB 00H, 00H, 00H, 00H, 00H, 00H, 01H, 02H DB 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09H DB 0AH, 0BH, 0DH, 0EH, 10H, 11H, 13H, 15H DB 16H, 18H, 1AH, 1CH, 1EH, 20H, 22H, 25H DB 27H, 29H, 2BH, 2EH, 30H, 33H, 35H, 38H DB 3AH, 3DH, 40H, 43H, 45H, 48H, 4CH, 4EH DB 51H, 55H, 57H, 5AH, 5DH, 60H, 63H, 66H DB 69H, 6CH, 6FH, 72H, 76H, 79H, 7CH, 80H

END

课程设计(论文)

题 目 名 称 信号发生器的设计

课 程 名 称 单片机原理及应用 学 生 姓 名 学 号 系 、专 业 指 导 教 师

2013 年 6 月 24 日

摘要

波形发生器在一般的电子和通信实验中使用频率很高,目前我们实验室用的较多的波形发生器主要有两种:低频正弦波发生器和通用多波形发生器,前者只能产生正弦波,调节范围不大,但是信号稳定,失真度底,主要用在对波形有很高的要求的实验中;后者能产生正弦波、方波和三角波,也有的能产生三种以上波形。这两种波形发生器都比较昂贵,而在我们很多的实验中有的要求产生更多的波形种类和它们的谐波,有很多对于波形的要求不是很高,有的只是演示一下,在本课题中将这两方面的缺点结合起来加以改进,最大限度地利用单片机及其外围设备的资源,开发出能产生正弦、三角、方波、梯形、锯齿等多种波形和它们的谐波及组合波形,并可以根据实际情况的需要在波形存储器中写入不同的形,可以随时添加,能满足一般的实验及演示的需要,并且成本很低,操作简洁方便。

关键词:信号发生器;中断;单片机

目录

第1章 设计方案及原理.....................................1 1.1设计原理及元件选型...............................1 1.2设计方案.........................................1 第2章 硬件设计..........................................2

2.1硬件原理图........................................2 2.2硬件连线图........................................2 第3章 软件设计..........................................3

3.1主程序............................................3 3.2锯齿波的产生过程..................................3 3.3三角波的产生过程..................................4 3.4方波的产生过程....................................4 3.5正弦波的产生过程..................................4 第4章 系统仿真..........................................6 第5章 总结..............................................8 参考文件.................................................9 致谢.....................................................10 附录.....................................................11

第1章 设计方案及原理

1.1 设计原理及元件选型 1.1.1 设计原理

该设计设计一个低频信号发生器,我们采用的是AT89C51 单片机用软件实现信号的输出。该单片机是一个微型计算机,包括中央处理器CPU,RAM,ROM、

I/O 接口电路、定时计数器、串行通讯等,是波形设计的核心。该信号发生器原理

框图如图1,总体原理为:利用AT89C51 单片机构造低频信号发生器,可产生正弦波,方波,三角波,锯齿波四种波形,通过汇编语言对单片机的编程即可产生相应的波形信号,并可以通过键盘进行各种功能的转换和信号频率的控制,当输出的数字信号通过数模转换成模拟信号也就得到所需要的信号波形,通过运算放大器的放大输出波形,同时让显示器显示输出的波形信息。

通过P1口和开关K0-K3相连接来控制各个波形的输出。能根据k0-k4键状态进行波形切换,当某一按键按下时,输出相对应的波形。

1.1.2 元件选型

单片机AT89C51系统,DAC0832一片,PC机一台,运算放大器

1.2 设计方案 1.2.1 总体方框图:

图1 总体设计功能图

1.2.2 设计思路

利用中断,当5个开关中有任意一个闭合时,跳转至中断程序,在中断程序中判断是哪一个按键闭合,跳转至相应的程序,执行输出波形的操作,每输出一个点之后,判断按键是否断开,如果依旧闭合,则继续输出,如果已经断开,则结束中断程序。

第2章 硬件设计

2.1 硬件原理图

波形发生器的硬件原理图如图2所示:

图2 波形发生器的硬件原理图

2.2 硬件连线图

硬件连接图如图3所示:

图3 硬件连线图

第3章 软件设计

3.1 主程序如下:

ORG 0000H LJMP MAIN ORG 1000H

MAIN:

JNB P1.0,IR0 JNB P1.1,IR1 JNB P1.2,IR2 JNB P1.3,IR3 AJMP MAIN 3.2 锯齿波的产生过程

锯齿波的实现过程是首先定义一个初值然后进行加法操作,加的步数的多少,则根据要求的频率来进行。然后加到某个数之后就再重新设置为初值,再重复执行刚刚的操作,如此循环下去。

锯齿波发生流程图图4所示:

;如果K0键闭合,则跳转至IR0输出锯齿波 ;如果K1键闭合,则跳转至IR1输出三角波 ;如果K2键闭合,则跳转至IR2输出方波 ;如果K3键闭合,则跳转至IR3输出正弦波

图4 锯齿波发生流程图 锯齿波函数图像如仿真图5所示:

3.3 三角波的产生过程

三角波的实现是设置一个初值,当加到某个值的时候,执行减一操作,减到初值时,再加一。

三角波发生流程图图6所示:

图6 三角波发生流程图 三角波函数图像如仿真图7所示:

3.4 方波的产生过程

方波的实现只需开始的时候设置一个初值然后直接输出这个值就行了,输出一段时间后,然后再重新置一个数据,然后再输出这个数据一段时间,但是此时的时间一定要等于前面那段时间。这样才是一个方波,如果两个时间不相同,那就相当于一个脉冲波了。

方波发生流程图如图8所示: 方波函数图像如仿真图9所示:

3.5正弦波的产生过程

正弦波的实现需要查表,每查一次表,输出一个数值,之后查下一个数值继续输出,当一个波形的256个数值全部输出之后,从头开始继续输出。 正弦波发生流程图如图10所示:

图8 方波发生流程图

图10 正弦波发生流程图

正弦波函数图像如仿真图11所示:

第4章 系统仿真

仿真结果:

图5 锯齿波函数图像

图7 三角波函数图像

图9 方波函数图像

图11 正弦波函数图像

第5章 总结

经过将近一周的单片机课程设计,终于完成了我的波形发生器的设计,基本达到设计要求,从心底里来说,还是很高兴的,毕竟这次设计把仿真做了出来。但高兴之余不得不深思呀!

在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多。对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。

在课程设计中,我们学习到了很多的东西:首先,怎么样去查阅资料,收集与课设要用的有关的知识。其次,要完成一件工作,还得专心致志才行,细心耐心。第三,遇到困难要冷静,要多想解决办法,多尝试。通过这次实验,我们也进一步熟悉单片机的设计与特点,同时也基本上掌握了如何用波形发生器来产生各种波形。而且让我们了解了程序设计的基本思路,增强了实践动手能力,理论结合实际的能力加强。除此以外,我们还深深地认识到严谨、认真的科学态度在科学实验中发挥的重要作用。波形发生器是本次课程设计中原理比较简单的一个,但是它的组成部分多,程序设计有些复杂,出现问题后分析起来比较困难,所以我们养成了完成一个部分就调试检验一个部分,确保正确才进行下一步工作,出现了问题只要在未检验的部分查寻就可以很快找出,效果很不错。在这里谢谢刘老师的耐心指导和同学们的帮助。

参考文献

[1]周航慈.单片机应用程序设计技术(修订版).北京航空大学出版社 [2]江世明、黄同成.单片机原理及应用.中国铁道出版社 [3]张志良.单片机原理与控制技术.第2版. 机械工业出版社 [4]康华光.电子技术基础(第5版). 高等教育出版社出版,2006 [5]蒋力培.单片微机系统实用教程(第1版).机械工业出版社

[6]姜志海、刘连鑫.单片微型计算机原理及应用.电子工业出版社,2011

致谢

通过这次对波形发生器的制作和设计,让我更加明白了设计电路的程序,也让我更加深入了解了波形发生器的设计理念和思路。其实这次实验做得并不是很顺利,在运行过程中碰到了很大的困难,比如出不来图形反而出现了错误,出来了图形但是严重失真等。一开始还比较迷茫,但是我没有失去信心,通过不断地改变阻值,改变接法,终于大体上算是成功了。但是有点遗憾就是波形还是有点微微失真,电压、频率等幅值误差还是较大。我想这是促使我要更加努力地学习课本知识来完善电路。在这里我要感谢老师的帮助,因为老师的提醒,让我的电路更加可行,使用。也因为老师,让我更加有信心去研究新的方法。

附录

程序:

ORG 0000H AJMP START ORG 0010H

START: MOV DPTR , #0CFFFH ;8255控制口地址

MOV A,#80H MOVX @DPTR,A

MOV SP,#70H ;指针重新定义初值

MOV R3,#08H ;数码管的初值为8

MOV R7,#10 ;改变周期的变量初值 LCALL DISPLAY ;上电数码管显示 LOOP0: JNB P1.0,JUCHI

JNB P1.1,SANJIAO JNB P1.2,NEXT0 JNB P1.3,NEXT

LCALL DISPLAY SJMP LOOP0 NEXT0: LJMP FANGBO NEXT: LJMP SINE

;************************************************************* ;锯齿波,波形号码“0”

;*************************************************************

JUCHI: MOV R3,#00H ;输出显示波形号码

LCALL DISPLAY

MOV A,#00H

LP0: MOV DPTR,#0EFFFH ;0832地址

MOVX @DPTR,A ;输出波形上一个点 MOV DPTR,#0FFFFH ;开启转换 MOVX @DPTR,A

JB P3.2,$ ;查询AD转换完成

PUSH ACC ;保存波形上的点 MOVX A,@DPTR

JU0: MOV R5,A ;转换完成传进单片机的值 JU1: MOV R4,#100 ;延时 JU2: DJNZ R4,JU2

DJNZ R5,JU1

POP ACC

INC A

JNB P1.1, EXIT0 ;检测新的波形输出命令 JNB P1.2, EXIT0 JNB P1.3, EXIT0 LJMP LP0

EXIT0: MOV R3,#08H

LJMP LOOP0

;************************************************************* ;三角波,波形号码“1”

;*************************************************************

MOV A,R3 LCALL DISPLAY MOV A,#00H

SANJIAO: MOV R3,#01H ;输出显示波形号码

LP1: MOV DPTR,#0EFFFH ;三角波,DAC0832地址

MOVX @DPTR,A ;三角波的上升边 MOV DPTR,#0FFFFH

MOVX @DPTR,A JB P3.2,$ PUSH ACC MOVX A,@DPTR

SAN0: MOV R5,A ;转换完成传进单片机的值

SAN1: MOV R4,#100 ;延时 SAN2: DJNZ R4,SAN2

DJNZ R5,SAN1

POP ACC INC A

JNB P1.0,EXIT1 ;检测新的波形输出命令

JNB P1.2,EXIT1 JNB P1.3,EXIT1 JNZ LP1 DOWN: DEC A

JNB P1.0,EXIT1

JNB P1.2,EXIT1 JNB P1.3,EXIT1 MOV DPTR,#0FFFFH

MOVX @DPTR,A JB P3.2,$ PUSH ACC MOVX A,@DPTR

SAN3: MOV R5,A SAN4: MOV R4,#100 SAN5: DJNZ R4,SAN5 DJNZ R5,SAN4 POP ACC

MOV DPTR,#0EFFFH MOVX @DPTR,A JNZ DOWN SJMP LP1 EXIT1: MOV R3,#08H

LJMP LOOP0

;************************************************************* ;方波,波形号码“2”

;*************************************************************

FANGBO: MOV R3,#02H ;输出显示波形号码

LCALL DISPLAY

LP2:MOV DPTR,#0EFFFH ;DAC0832地址

MOV A,#0FFH ;方波上限 MOVX @DPTR,A

MOV DPTR,#0FFFFH

MOVX @DPTR,A

JB P3.2,$

MOVX A,@DPTR

FANG0: MOV R5,A FANG1: MOV R4,#100 FANG2: DJNZ R4,FANG2 DJNZ R5,FANG1

JNB P1.0, EXIT2 JNB P1.1, EXIT2 JNB P1.3, EXIT2

MOV DPTR,#0EFFFH

MOV A,#00H MOVX @DPTR,A

MOV DPTR,#0FFFFH

MOVX @DPTR,A

JB P3.2,$

MOVX A,@DPTR

DL3: MOV R5,A DL4: MOV R4,#100 DL5: DJNZ R4,DL5 DJNZ R5,DL4

JNB P1.0, EXIT2 ;开启转换 ;检测新的波形输出命令 ;方波下限 ;开启转换 ;延时

JNB P1.3, EXIT2

SJMP LP2 RET

EXIT2: MOV R3,#08H

;************************************************************* ;正弦波,波形号码“3”

;*************************************************************

SINE: MOV R3,#03H ;输出显示波形号码

LCALL DISPLAY

MOV DPTR,#0EFFFH ;DAC0832地址 MOV DPTR,#sinTab

MOV 00H,#00H SINE_1: MOV A,00H

MOV DPTR,#sinTab MOVC A,@A+DPTR MOV DPTR,#0EFFFH

MOVX @DPTR,A MOV DPTR,#0FFFFH MOVX @DPTR,A JB P3.2,$ PUSH ACC

MOVX A,@DPTR

SINE0: MOV R5,A SINE1: MOV R4,#100 SINE2: DJNZ R4,SINE2 DJNZ R5,SINE1 POP ACC INC 00H

JNB P1.0, EXIT3 ;检测新的波形输出命令

JNB P1.1, EXIT3

AJMP SINE_1 EXIT3: MOV R3,#08H

RET

;************************************************************* ;显示子程序

;************************************************************* DISPLAY:MOV A,#07FH ;选择最后一个数码管 MOV DPTR,#0CFFDH

MOVX @DPTR,A MOV A,R3

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV DPTR,#0CFFCH ;8255pa口作为段选

MOVX @DPTR,A

RET

TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H sinTab: DB 80H,83H,86H,89H,8DH,90H,93H,96H

DB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH DB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H DB 0C7H,0CAH,0CCH,0CFH,0D1H, 0D4H,0D6H,0D8H DB 0DAH,0DDH,0DFH,0E1H,0E3H, 0E5H,0E7H,0E9H DB 0EAH,0ECH,0EEH,0EFH,0F1H, 0F2H,0F4H,0F5H DB 0F6H,0F7H,0F8H,0F9H,0FAH, 0FBH,0FCH,0FDH DB 0FDH,0FEH,0FFH,0FFH,0FFH, 0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH,0FEH,0FDH DB 0FDH,0FCH,0FBH,0FAH,0F9H, 0F8H,0F7H,0F6H DB 0F5H,0F4H,0F2H,0F1H,0EFH, 0EEH,0ECH,0EAH DB 0E9H,0E7H,0E5H,0E3H,0E1H, 0DEH,0DDH,0DAH DB 0D8H,0D6H,0D4H,0D1H,0CFH, 0CCH,0CAH,0C7H DB 0C5H,0C2H,0BFH,0BCH,0BAH, 0B7H,0B4H,0B1H

DB 0AEH,0ABH,0A8H,0A5H,0A2H, 9FH, 9CH, 99H DB 96H, 93H, 90H, 8DH, 89H, 86H, 83H, 80H DB 80H, 7CH, 79H, 78H, 72H, 6FH, 6CH, 69H DB 66H, 63H, 60H, 5DH, 5AH, 57H, 55H, 51H DB 4EH, 4CH, 48H, 45H, 43H, 40H, 3DH, 3AH DB 38H, 35H, 33H, 30H, 2EH, 2BH, 29H, 27H DB 25H, 22H, 20H, 1EH, 1CH, 1AH, 18H, 16H DB 15H, 13H, 11H, 10H, 0EH, 0DH, 0BH, 0AH DB 09H, 08H, 07H, 06H, 05H, 04H, 03H, 02H DB 02H, 01H, 00H, 00H, 00H, 00H, 00H, 00H DB 00H, 00H, 00H, 00H, 00H, 00H, 01H, 02H DB 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09H DB 0AH, 0BH, 0DH, 0EH, 10H, 11H, 13H, 15H DB 16H, 18H, 1AH, 1CH, 1EH, 20H, 22H, 25H DB 27H, 29H, 2BH, 2EH, 30H, 33H, 35H, 38H DB 3AH, 3DH, 40H, 43H, 45H, 48H, 4CH, 4EH DB 51H, 55H, 57H, 5AH, 5DH, 60H, 63H, 66H DB 69H, 6CH, 6FH, 72H, 76H, 79H, 7CH, 80H

END


相关内容

  • 城市轨道交通信号平面布置图设计
  • 信号 技术 城市轨道交通信号平面布置图设计 ■ 郑生全 1 概述 铁路信号平面布置图包括车站信号平面布置图和区间信号平面布置图,车站设有进站信号机和出发信号机.城市轨道交通线路及车站的布置与铁路有所区别,多数车站没有咽喉区,也无到发线,因此信号平面布置与铁路也有区别. 城市轨道交通信号系统几乎都采用 ...

  • DSB的调制与解调
  • 通信系统课程设计报告 题目:DSB 信号的调制与解调 系 别 专业班级 学生姓名 指导教师 提交日期 通信系统课程设计报告 目 录 1.设计目的 ............................................................................. ...

  • 任意波形信号发生器
  • 一. 题目要求及分析 1.1题目要求 任意波形信号发生器 利用FPGA器件产生控制信号及数据信号,经DAC0832和TL082转换产生以下波形: 1) 2) 3) 4) 正斜率斜波: 正弦波: 锯齿波: 任意波形. 用示波器观察输出波形. 硬件电路内容和要求:用DAC0832实现数模转换电路,用TL ...

  • 南京邮电大学课程设计报告-简易数字频率计(步骤详细)
  • 目录 第一章 技术指标 1.1整体功能要求 1.2系统结构要求 1.3电气指标 1.4扩展指标 1.5设计条件 第二章 整体方案设计 2.1 算法设计 2.2 整体方框图及原理 第三章 单元电路设计 3.1 时基电路设计 3.2闸门电路设计 3.3控制电路设计 3.4 小数点显示电路设计 3.5整体 ...

  • 简易函数信号发生器设计
  • 单片机原理及接口技术课程设计(论文) 题目: 简易函数信号发生器设计 院(系): 专业班级: 学 号: 学生姓名: 指导教师: (签字) 起止时间: 2015.6.22-2015.7.3 课程设计(论文)任务及评语 院(系):电气工程学院 教研室:自动化 注:成绩:平时20% 论文质量60% 答辩2 ...

  • 简易数字频率计数器的课程设计报告
  • 总分=实物*50%+课程设计报告书*50%. 目录 第一章 引言.................................................................................................................. 1 1 ...

  • 信号与系统课程设计报告.
  • 信号与系统课程设计报告 --频分复用通信系统的仿真设计 指导老师:XXX 小组成员: 摘要: 通过对信号与系统这门课程第八章通信系统学习,我们对频分复用(FDMA )技术产生了浓厚的兴趣,于是决定自己利用MATLAB 强大的仿真功能来对频分复用系统进行仿真.本文首先录制三段不同的语音信号.然后通过推 ...

  • 基带传输系统实验报告
  • 数字基带传输系统 实验名称:数字基带传输系统systemview 仿真 实验条件:systemview 仿真软件破解版, 电脑 实验原则:力求条理清晰, 结构分明, 层次紧致, 尽量将应有的模块打包放入子 系统, 方便以后的模块修改, 每个模块对其余模块全部是透明的, 定义每个模块的需要设置的参数, ...

  • 数字频率计毕业论文
  • 南昌大学 毕业论文 题目名称: 简易数字频率计的设计 年 级: 89应电一班 层次:□本科 ■专科 学生学号: ZD08015566 指导教师: 天使 学生姓名: 哈啊哈 技术职称: 讲师 学生专业: 应用电子技术 所在系: 电子工程系 上饶职业技术学院 2010年制 2 毕业设计(论文)要求 2. ...

  • 水位控制电路
  • 河南科技学院新科学院 电子课程设计报告 题目: 水位控制电路设计 专业班级:电气工程及其自动化082 姓 名: 姜水龙 时 间:2010.06.06- 2010.06.12 指导教师: 张 伟 邵 锋 李晓敏 完成日期:2010年06月 12 日 水位控制电路设计任务书 1.设计目的与要求 设计一个 ...