资源描述
课程设计单片机波形发生器
1
2020年4月19日
文档仅供参考,不当之处,请联系改正。
课 程 设 计
课 程 单片机课程设计
题 目 波形发生器设计
院 系 电气信息工程学院测控系
专业班级
学生姓名
学生学号
指导教师
4月 6日
任务书
课程 单片机课程设计
题目 波形发生器设计
专业 测控技术与仪器 姓名 学号
一、任务
设计制作一个波形发生器,该波形发生器能产生正弦波、方波、三角波和锯齿波信号能够在以上基础上任意发挥。
二、设计要求
[1] 设计制作一个波形发生器,该波形发生器能产生正弦波、方波、三角波等。
[2] 经过对AT89S51单片机的编程,了解不同波形的产生原理和设计方案,画出硬件电路图,编程完成软件部分,最后调试观察产生不同类型的波形信号。
[3] 写出详细的设计报告。
[4] 附有电路原理图及程序流程图,以及程序清单。
三、参考资料
[1] 杜华.任意波形发生器及应用[J].国外电子测量技术, .1:38~40.
[2] 程全.基于AT89C52实现的多种波形发生器的设计[J]. .22(5):57~58.
[3] 胡鸿豪,李世红.基于单片机和DDS的信号发生器设[J].设计参考, (12)
[4] 徐建军.MCS-51系列单片机应用及接口技术[M ].人民邮电出版社, .
[5] 高峰.单片机应用系统设计及实用设计[J].北京:机械工业出版社, :96-100
完成期限 .3.28至 .4.8
指导教师
专业负责人
3月 28 日
目录
第1章 绪论 3
1.1 波形发生器的概述 3
1.2 本设计任务 3
第2章 总体方案论证与设计 4
2.1 总体方案选择与论证 4
2.2 系统设计基本原理图与分析 5
第3章 系统硬件电路的设计 6
3.1 单片机最小系统的设计 6
3.2资源分配 6
3.3各模块电路的设计 7
3.4按键和波形指示灯电路 8
3.5电流电压转换电路 9
第4章 系统的软件设计 10
4.1主程序模块 10
4.2锯齿波程序模块 11
4.3三角波程序模块 11
第5章 系统调试与测试结果分析 13
5.1软件仿真 13
5.2仿真结论分析 14
5.3硬件测试结果分析 14
结 论 15
参考文献 16
附录1 程序 17
附录2 整体电路原理图 24
附录3 仿真效果图 25
第1章 绪论
波形发生器也称函数发生器,作为实验信号源,是现今各种电子电路实验设计应用中必不可少的仪器设备之一。当前,市场上常见的波形发生器多为纯硬件的搭接而成,且波形种类有限,多为锯齿波,正弦波,方波,三角波等波形。作为一种常见的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。函数信号发生器是一种能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路。经过对函数波形发生器的原理以及构成分析,可设计一个能变换出三角波、正弦波、方波的函数波形发生器。
1.1 波形发生器的概述
波形发生器作为一种常见的信号源,是现代测试领域内应用最为广泛的通用仪器之一。在研制、生产、测试和维修各种电子元件、部件以及整机设备时,都学要有信号源,由它产生不同频率不同波形的电压、电流信号并加到被测器件或设备上,用其它仪器观察、测量被测仪器的输出响应,以分析确定它们的性能参数。信号发生器是电子测量领域中最基本、应用最广泛的一类电子仪器。它能够产生多种波形信号,如正弦波,三角波,方波等,因而广泛用于通信、雷达、导航、宇航等领域。随着集成电路的迅速发展,用集成电路可很方便地构成各种信号波形发生器。用集成电路实现的信号波形发生器与其它信号波形发生器相比,其波形质量、幅度和频率稳定性等性能指标,都有了很大的提高。
1.2 本设计任务
本设计经过分析比较后采用传统的方法来实现多功能波形发生器。借助高性能单片机运算速度高,系统集成度强的优势,设计的这种信号发生器,比以前的数字式信号发生器具有硬件简单,理解及实现起来较容易,该方案的设计思路较为清晰,且容易对频率和幅值进行控制等优点。
第2 章 总体方案论证与设计
依据应用场合.需要实现的波形种类,波形发生器的具体指标要求会有所不同。依据不同的设计要求选取不同的设计方案。一般,波形发生器需要实现的波形有正弦波、方波、三角波和锯齿波。有些场合可能还需要任意波形的产生。各种波形共有的指标有:波形的频率、幅度要求,频率稳定度,准确度等。
2.1 总体方案选择与论证
对于不同波形,具体的指标要求也会有所差异,例如,占空比是脉冲波形特有的指标。波形发生器的设计方案多种多样,大致能够分为几大类:纯硬件设计法、纯软件设计法和软硬件结合设计法。
2.1.1方案一:
波形发生器设计的纯硬件法早期,波形发生器的设计主要是采用运算放大器加分立元件来实现。实现的波形比较单一,主要为正弦波、方波和三角波。工作原理也相对简单:首先是产生正弦波,然后经过波形变换(正弦波经过比较器产生方波,方波经过积分器变为三角波)实现方波和三角波。在各种波形后加上一级放大电路,能够使输出波形的幅度达到要求,经过开关电路实现不同输出波形的切换,改变电路的具体参数能够实现频率、幅度和占空比的改变。经过对电路结构的优化及所用元器件的严格选取能够提高电路的频率稳定性和准确度。经过调整外部元件的参数实现频率,幅值,占空比的调整,可是由于元件太过分散,即使使用单片压控函数发生器,参数与外部条件有关。因而产生的波形稳定性差,精度低,抗干扰能力差,价格高,且灵活性差。
2.1.2 方案二:
软硬件结合法软硬件结合的波形发生器设计方法同时兼具软硬件设计的优势:既具有纯硬件设计的快速、高性能,同时又具有软件控制的灵活性、智能性。如以单片机和单片集成函数发生器为核心。辅以键盘控制、液晶显示等电路,设计出智能型函数波形发生器,采用软硬件结合的方法能够实现功能较全、性能更优的波形发生器,同时还能够扩展波形发生器的功能,采用单片机(AT89S51)和数模转换芯片(DAC0832)实现波形的产生,波形的产生由程序控制,向D/A的输入端按一定的规律发送数据,经过D/A和MC1458产生100Hz频率波形,经过查询键盘或中断控制不同波形的产生。此方案经过编程简化了外部电路,原理简单,容易实现。
方案选择:经比较,方案二明显更适合实现课程设计题目的要求。经过编程实现不同波型的产生,而且能够经过按键实现波形的切换。该方案线路简单,结构紧凑,系统稳定,易控制,容易调试等优点,综上分析,选择方案二实现课题要求。
2.2 系统设计基本原理图与分析
2.2.1系统原理框图如图2-1
波形指示
电流
/电压
转换
AT89S51
输
出
键盘
A/D转换
电源
基准电压
图2-1波形发生器系统框图
2.2.2原理框图分析:
该波形发生器主要由单片机(AT89S51),数模转换电路(DAC0832),电流/电压转换电路(MC1458),按键和波形指示灯电路,ISP接口等组成。其工作原理为当按下四个按键当中的任何一个按键,就会产生相对应的波形,而且四个LED灯作为不同波形的指示。
第3章 系统硬件电路的设计
3.1 单片机最小系统的设计
AT89S51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单﹑可靠。用AT89S51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图3-1 AT89S51单片机最小系统所示。由于集成度的限制,最小应用系统只能用作一些小型的控制单元。其应用特点:有可供用户使用的大量I/O口线;内部存储器容量有限;应用系统开发具有特殊性。
图3-1 AT89S51单片机最小系统
3.2资源分配
软硬件设计是设计中为了满足功能和指标要求,现分配资源如下:
晶振采用12MHz,内存分配:P0口与DAC0832的DI0-DI7数据输入;P1口的P1.0~P1.3分别与四个按键相连,分别控制相应波形的输出,每输出一个波形,点亮对应的LED灯端相连;P2口与DAC0832的输入寄存器选择信号CS,输入寄存器写选通信号WR1及DAC寄存器写选通WR2和数据传送信号XFER
使CPU开始工作的方法就是给CPU一个复位信号,复位信号结束后,CPU从程序存储器“0000H”开始执行程序。AT89S51高电平复位,采取手动复位。设置一个复位按钮,当操作者按下按钮时产生一个复位信号。
3.3各模块电路的设计
3.3.1 D/A转换电路
DAC0832是双列直插式8位D/A转换器。能完成数字量输入到模拟量(电流)输出的转换。其主要参数如下:分辨率为8位,转换时间为1μs,满量程误差为±1LSB,参考电压为(+10~-10)V,供电电源为(+5~+15)V,逻辑电平输入与TTL兼容。
图3-2 DAC0832引脚图
3.3.2 DAC0832工作原理
DAC0832主要由8位输入寄存器、8位DAC寄存器、8位D/A转换器以及输入控制电路四部分组成。8 位输入寄存器用于存放主机送来的数字量,使输入数字量得到缓冲和锁存,由加以控制;8位DAC寄存器用于存放待转换的数字量,由加以控制;8位D/A转换器输出与数字量成正比的模拟电流;由与门、非与门组成的输入控制电路来控制2个寄存器的选通或锁存状态。
DAC0832与反相比例放大器相连,实现电流到电压的转换,因此输出模拟信号的极性与参考电压的极性相反。
图3-3 D/A转换器双极性输出电路
图3-3中,运算放大器U3B的作用是把运算放大器U3A的单向输出电压转换成双向输出电压。DAC0832主要是用于波形的数据的传送,是本题目电路中的主要芯片。
3.4按键和波形指示灯电路
原理图如下
图3-4 采用中断的方式对波形的切换
对于查询方式对波形的切换,当按键按下时,输出相应波形,并点亮相应的LED灯,对于中断方式,利用两个外部中断实现对波形的切换。中断与查询相结合的方式能够进行扩展,查询方式不是实时的,而中断时实时的。
3.5电流电压转换电路
原理图如下:
图3-5 I/V转换电路
实现I/V转换最简单的方法就是直接在1out1和Iout2之间跨界一电阻,这样就很容易的实现了I/V转换,可是这种方法忽略了一个阻抗问题。对于DAC0832来说,R的取值应尽可能大,能够保证获得更多的电压,对于与输出电压相连的后续电路来说,R的取值应尽可能的小,以降低输出阻抗,这两方面是矛盾的,因此这种方式欠合理。而合理的方式是应用运算放大器实现I/V转换,也解决了阻抗的问题。
第4章 系统的软件设计
根据功能,系统软件设计分成几个模块编程:主程序模块,锯齿波程序模块,三角波程序模块,正弦波程序模块,方波程序模块,延时程序模块。
4.1主程序模块
主程序流程图
开始
KEY1按下了?
输出锯齿波
KEY3按下了?
KEY2按下了?
KEY4按下了?
N
N
N
N
N
Y
Y
Y
Y
输出三角波
输出正弦波
输出方波
图4-1主程序流程图
主程序中主要实现利用按键来控制不同波形的输出,当按键KEY1(P1.0)按下时波形发生器就输出锯齿波,对应的LED(P1.4)点亮;当按键KEY2(P1.1)按下时,波形发生器就输出三角波,对应的LED(P1.5)点亮;当按键KEY3(P1.2)按下时,波形发生器就输出正弦波,对应的LED(P1.6)点亮;当按键KEY4(P1.3)按下时,波形发生器就输出方波,对应的LED(P1.7)点亮。经过按键能够以任意循环方式输出不同波形。
4.2锯齿波程序模块
程序流程图
图4-2锯齿波程序流程图
锯齿波产生首先将DAC0832口地址至为2FFFH,然后将00H送入寄存器A中,DAC0832输出A中的内容,当A中的内容等于FFH返回开始,当A中的内容不为FFH时,A中的内容累加,从而输出波形。
4.3三角波程序模块
程序流程图
图4-3 三角波程序流程图
三角波产生首先将DAC0832口地址至为2FFFH,经过A中数值的加一递升,当A中的内容为0时,与0FFH相比,相等时A中的内容减一递减,从而循环产生三角波。
4.4正弦波程序模块和方波程序模块
程序流程图
图4-4正弦波程序流程图 图4-5方波程序流程图
正弦波波形经过查表指令得出。
方波产生首先将DAC0832口地址至为2FFFH,当A中的内容为0时,输出对应模拟量,然后延时,当A中的内容为0FFH时,同样输出对应模拟量,再延时相同时间,从而得到方波。
第5章 系统调试与测试结果分析
5.1软件仿真
图5-1锯齿波仿真图
图5-2三角波仿真图
图5-3正弦波仿真图
图5-4方波仿真图
5.2仿真结论分析
从软件仿真的结果上看,波形存在一定的的失真,这主要跟程序的设计有关,没有做到那么精确,再者,我认为仿真软件本身也会给测试结果一定的误差。
5.3硬件测试结果分析
硬件测试结果显示,示波器显示的波形比仿真软件模拟甚至还标准,而且对按键的响应比仿真响应快。这在一定程度上,告诉我们,仿真软件只是一个我们研究的工具,我们不能完全依赖于于仿真软件。
结 论
本次的设计中利用AT89S51和DAC0832以及放大器完成电路的设计,用开关来控制各种波形的发生及转换,用单片机输出后,经过模数转换器生成波形,最终能够经过示波器观察。在这次的软件设计中,程序设计采用的是汇编语言。汇编语言具有速度快,能够直接对硬件进行操作的优点,它能够极好的发挥硬件的功能。
经过这次课程设计使我对课程所学理论知识的深化和提高。而且本次课程设计,使我了解和掌握单片机应用系统的软硬件设计过程、方法及实现,培养了我分析问题和解决问题的能力,为以后设计和实现更难的应用系统打下良好基础。
在本次设计的过程中,我发现很多的问题,虽然以前还做过其它的课程设计但这次设计真的让我长进了很多。对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是能够借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。因此能够说单片机的设计是软件和硬件的结合,二者是密不可分的。
要设计一个成功的电路,必须要有耐心,要有坚持的毅力。在整个电路的设计过程中,花费时间最多的是各个单元电路的连接及电路的细节设计上,如在多种方案的选择中,我们仔细比较分析其原理以及可行的原因。这就要求我们对硬件系统中各组件部分有充分透彻的理解和研究,并能对之灵活应用。完成这次设计后,我在书本理论知识的基础上又有了更深层次的理解。
同时在本次设计的过程中,我还学会了高效率的查阅资料、运用工具书、利用网络查找资料。我发现,在我们所使用的书籍上有一些知识在实际应用中其实并不是十分理想,各种参数都需要自己去调整。在实践中应用的深刻理解,经过把波形在计算机上实现,知道和理解该理论在计算机中怎样执行的,对该理论在实践中的应用更深刻的理解,这次课程设计,我进一步了解了波形发生器的原理,在实际动手操作过程中,使我学得了许多知识,使我获益匪浅。
参考文献
[1] 朱定华,马爱梅,林卫. 微机应用系统设计[M]. 武汉:华中科技大学出版社.1999:130-133.
[2] 顾德英,张健,马淑华. 计算机控制技术[M]. 北京:北京邮电大学出版社. :64-70.
[3] 夏扬. 计算机控制技术[M]. 北京:机械工业出版社. :11-92
[4] 刘国钧,陈绍业,王凤翥.图书馆目录[M].北京:高等教育出版社.1957.15-18.
[5] 刘润华,刘立山.模拟电子技术[J].山东:石油大学出版社. .
[6] 潘永雄,沙河,刘向阳.电子线路CAD实用教程[M].西安:西安电子科技大学出版社. .13-118.
[7] 朱定华,戴汝平等.单片微机原理与应用[M].北京交通大学出版社.清华大学出版社.
[8] 彭介华.电子技术课程设计指导[J].北京:高等教育出版社.1997.
[9]张毅刚,彭喜源,谭晓昀,曲春波.MCS-51单片机应用设计[M].哈尔滨:
哈尔滨工业大学出版社.1997.53-61.
[10](美)Richard Blum著,马朝晖等译.汇编语言程序设计[M] 北京市:机械工业出版社.
[11]杜华.任意波形发生器及应用[J].国外电子测量技术. .1:38-40.
[12] 程全.基于AT89C52实现的多种波形发生器的设计[J]. .22(5):57-58.
[13] 胡鸿豪,李世红.基于单片机和DDS的信号发生器设[J].设计参考. (12)
[14] 徐建军.MCS-51系列单片机应用及接口技术[M].人民邮电出版社. .
[15] 高峰.单片机应用系统设计及实用设计[J].北京:机械工业出版社. :96-100.
[16]江思敏,陈明. Protel电路设计教程[M]. 北京:清华大学出版社.
附录1 程序
源程序
;**********************************************************
;课程设计题目:波形发生器设计
;实 现 功 能:能产生正弦波,三角波,锯齿波,方波
; 可经过按键能对各波形的切换,频率为:100HZ
; 按键查询方式
;**********************************************************
;*******************************
;对按键进行设定
;*******************************
KEY1 EQU P1.0
KEY2 EQU P1.1
KEY3 EQU P1.2
KEY4 EQU P1.3
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:MOV SP,#60H ;设置堆栈区
;******************************
;按下KEY1生成锯齿波程序
;******************************
B1:MOV A,#00H
LP1:CLR P1.4
SETB P1.5
SETB P1.6
SETB P1.7
MOV DPTR,#2FFFH;对
MOVX @DPTR,A
LCALL DELYB1
CJNE A,#0FFH,ADD1
JNB KEY2,B2
JNB KEY3,B3
JB KEY4,D0
LJMP B4
D0: SJMP B1
ADD1: INC A ;
SJMP LP1
;********************************
;按下KEY2生成三角波程序
;********************************
B2: MOV A,#00H
UP1:CLR P1.5
SETB P1.4
SETB P1.6
SETB P1.7
MOV DPTR,#2FFFH
MOVX @DPTR,A
LCALL DELYB2
INC A
JNZ UP1
DOWN1:
DEC A
MOVX @DPTR, A
LCALL DELYB2
JNZ DOWN1
JNB KEY1,B1
JNB KEY3,B3
JB KEY4,C0
LJMP B4
C0: SJMP UP1
;******************************
;KEY3按下生成正弦波
;******************************
B3: MOV R1,#00H
LOOP1:
CLR P1.6
SETB P1.5
SETB P1.4
SETB P1.7
MOV A,R1
MOV DPTR,#SETTAB
MOVC A,@A+DPTR
MOV DPTR,#2FFFH
MOVX @DPTR,A
LCALL DELYB3
INC R1
JNB KEY1,B1
JNB KEY2,B2
JB KEY4,E0
LJMP B4
E0:AJMP LOOP1
SETTAB: ;正弦表格
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
RET
;********************************
;按下KEY4生成方波
;********************************
B4: MOV A,#00H
LP2:CLR P1.7
SETB P1.4
SETB P1.5
SETB P1.6
MOV DPTR,#2FFFH
MOVX @DPTR,A
LCALL DELYB4
MOV A,#0FFH
MOVX @DPTR,A
LCALL DELYB4
JB KEY1,J0
LJMP B1
J0: JB KEY2,J1
LJMP B2
J1: JB KEY3,J2
LJMP B3
J2: LJMP B4
;************************************
;下面为延时程序的编写
;************************************
;延时26us
DELYB1:
MOV R3,#01H
DL0:
MOV R2,#0AH
DJNZ R2,$
DJNZ R3,DL0
RET
;延时10us
DELYB2:
MOV R5,#01H
DL1:
MOV R4,#02H
DJNZ R4,$
DJNZ R5,DL0
RET
;延时17us
DELYB3:
MOV R5,#07H
DJNZ R5,$
RET
;延时5ms
DELYB4:
MOV R6,#13H
DL3:
MOV R5,#82H
DJNZ R5,$
DJNZ R6,DL0
RET
END
;********************************
;采用中断方式实现波形的切换
;*******************************
ORG 0000H
AJMP MAIN
ORG 0003H; 外部中断0入口地址
AJMP JUCHIBO; 方波,对应P3.2口
ORG 0013H; 外部中断1入口地址
AJMP SANJIAO; 三角波对应P3.3口
ORG 0030H
MAIN: SETB EX0; 开外部中断0
SETB EX1; 开外部中断1
MOV IP,#04H;外部中断1优先,P3.3
CLR IT0; 外部中断0触发方式(电平触发)
CLR IT1; 外部中断1触发方式(电平触发)
SETB EA; 开总中断
LCALL ZHENGXUAN
SJMP MAIN
SANJIAO:
MOV DPTR,#2FFFH ; 设置D/A口地址
MOV A,#00H;
LOOP1:
MOVX @DPTR,A ; 输出对应于A内容的模拟量,2个机器周期
LCALL DELAY3; 2个机器周期,应该延时11us
INC A; 1个机器周期
JNZ LOOP1; 2个机器周期
LOOP2:
DEC A ;1个机器周期
MOVX @DPTR,A;2个机器周期
LCALL DELAY3;2个机器周期,延时11us
JNZ LOOP2;2个机器周期
SJMP LOOP1
RETI
JUCHIBO:
LOOP3:MOV DPTR,#2FFFH;设置D/A口地址
MOV A,#00H
LOOP4:
MOVX @DPTR,A
LCALL DELAY1;26us
CJNE A,#0FFH,ADD1
SJMP LOOP3
ADD1: INC A
SJMP LOOP4
RETI
ZHENGXUAN: MOV R3,#00H ;取表格初值
LOOP5:
MOV A,R3;1个周期
MOV DPTR,#SETTAB;2个周期
MOVC A,@A+DPTR;查表指令,2个周期
MOVX @DPTR,A; 输出对应于A内容的模拟量,2个周期
LCALL DELAY1;2个周期,延时26us
INC R3;1个周期
SJMP LOOP5;2个周期
;相邻两点之间指令占据时间为13us,这个时间应该要计算进去
SETTAB: ;正弦表格
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
RET
;延时26us
DELAY1:
MOV R6,#01H
DL0:
MOV R5,#0AH
DJNZ R5,$
DJNZ R6,DL0
RET
;延时11us
DELAY3:
SETB RS0
SETB RS1
MOV R7,#01H
DL3:
MOV R6,#01H
DL2:
MOV R5,#01H
DJNZ R5,$
DJNZ R6,DL2
DJNZ R7,DL3
RET
END
附录2 整体电路原理图
附录3 仿真效果图
展开阅读全文