武汉理工大学《单片机原理及应用》课程
说明书
课程设计任务书
学生姓名: 专业班级:
指导教师: 工作单位: 信息工程学院
题 目: 设计并实现频率可控的正弦波信号发生器
初始条件:
1. 提供单片机实验箱;
2. 使用伟福软件进行调试程序。
3. 先修课程:模拟电子技术、数字电子技术、Protues电路设计教程及单片机原理及应用等课程
要求完成的主要任务: (包括课程设计工作量及技术要求,以及说明书撰写等具体要求)
1、课程设计时间:1周;
2、要求:利用DAC0832输出正弦波信号(用示波器观察输出波形),初始频率为50Hz。
3、技术要求:
①变频采用“+”、“-”键 控制,实时测量输出信号的频率值,并
和实测输出信号的频率范围
②频率范围:0~255Hz。
③信号类型:正弦波。
④信号幅值:0~5V。
⑤误差范围:<1Hz。
⑥确定设计
,按功能模块的划分选择元、器件和中小规模集成电路,设计分电路,画出总体电路原理图,阐述基本原理。
4、查阅至少5篇参考文献。按《武汉理工大学课程设计工作
》要求撰写设计报告书。全文用A4纸打印,图纸应符合绘图规范。
时间安排:
指导教师签名: 年 月 日
系主任(或责任教师)签名: 年 月 日
设计并实现频率可控的正弦波信号发生器
目 录
1 Protues软件介绍……………………………………………3
2 设计要求
………………………………………………………4
2.1整体功能要求……………………………………………4
2.2设计所用芯片简介……………………………………………4
3系统电路设计与分析…………………………………………8
3.1 基本原理……………………………………………………8
3.2 性能指标分析………………………………………………9
3.3 资源分配表…………………………………………………9
3.4 正弦波产生电路设计……………………………………10
4 程序流程图…………………………………………………11
5 程序设计……………………………………………………12
5.1 源程序………………………………………………………12
5.2 实现功能程序说明………………………………………15
6 整体电路图与仿真图………………………………………16
6.1整机电路图………………………………………………16
6.2 仿真结果…………………………………………………17
5课程设计心得…………………………………………………19
6参考文献………………………………………………………20
7成绩评定表……………………………………………………21
1 Protues 软件介绍
Proteus 是目前最好的模拟单片机外围器件的工具,它可以仿真51 系列、AVR,PIC 等常用的MCU 及其外围电路(如LCD,RAM,ROM,键盘,马达,LED,AD/DA,部分SPI 器件,部分IIC 器件...)。本文章基于ProteusPRO6.7SP3和KEIL uVision3 软件。当然,软件仿真精度有限,而且不可能所有的器件都找得到相应的仿真模型,用开发板和仿真器当然是最好选择,可是对于单片机爱好者,或者简单的开发应该是比较好的选择。Proteus 与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU 的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。
Protues 软件与Keil uVision 的结合
对于初次使用Protues 软件的人可能还不知道如何设置,现在把设置步骤简介如下,仅供参考(本文章只讨论在单机上结合,在两个联网机器使用由于篇幅限制不在此讨论):设置步骤如下: (1) 把proteus 安装目录下 VDM51.dll ( C:\ProgramFiles\LabcenterElectronics\Proteus6\Professional\MODELS)文件复制到 Keil 安装目录的 \C51\BIN 目录中;(2) 编辑C51 里tools.ini 文件, 加入:TDRV1=BIN\VDM51.DLL("PROTEUS VSM MONITOR-51 DRIVER");(3)Keil uVision 里设置: project-->options forproject-->debug tab;(4) 选中use proteus VSM monitor 51( 如果想用两台电脑仿真,双击setting,输入IP 地址 或者DNS name);(5) 载入proteus 文件;(6)proteus 里选择DEBUG-->use remote debug monitor;进入KEIL 的project 菜单option for target '工程名'。在DEBUG 选项中右栏上部的下拉菜选中 Proteus VSMMonitor-51 Driver。 在进入seting,如果同一台机IP 名为127.0.0.1,如不是同一台机则填另一 台的IP 地址。端口号一定为8000 注意:可以在一台机器上运行keil,另一台中运行proteus 进行远程仿真.(7)打开KEIL uVision, 按F5 开始仿真.
proteus 的工作过程
运行proteus 的ISIS 程序后,进入该仿真软件的主界面。在工作前,要设置view 菜单下的捕捉对齐和system 下的颜色、图形界面大小等项目。通过工具栏中的p(从库中选择元件命令)命令,在pick devices 窗口中选择电路所需的元件,放置元件并调整其相对位置,元件参数设置,元器件间连线,编写程序;在source 菜单的Define code generation tools 菜单命令下,选择程序编译的工具、路径、扩展名等项目;在source菜单的Add/remove source files 命令下,加入单片机硬件电路的对应程序;通过debug 菜单的相应命令仿真程序和电路的运行情况。Proteus 软件所提供了30 多个元件库,数千种元件。元件涉及到数字和模拟、交流和直流等。
Proteus 软件所提供的调试手段
Proteus 提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。对于单片机硬件电路和软件的调试,Proteus 提供了两种
:一种是系统总体执行效果,一种是对软件的分步调 试以看具体的执行情况。对于总体执行效果的调试方法,只需要执行debug 菜单下的execute 菜单项或F12 快捷键启动执行,用debug 菜单下的pause animation 菜单项或pause 键暂停系统的运行;或用debug 菜单下的stop animation 菜单项或shift-break 组合键停止系统的运行。其运行方式也可以选择工具栏中的相应工具进行。对于软件的分步调试, 应先执行debug 菜单下的start/restart debugging 菜单项命令,此时可以选择stepover 、step into 和 step out 命令执行程序(可以用快捷键F10、F11 和ctrl+F11),执行的效果是单句执行、进入子程序执行和跳出子程序执行。在执行了start / restart debuging命令后,在debug 菜单的下面要出现仿真中所涉及到的软件列表和单片机的系统资源等,可供调试时分析和查看。
在教学中利用该软件,除了能教单片机的具体课程内容外,还可以教会学生应用该工具的能力,为今后的工作打下基础。
2设计要求
2.1整体功能要求
利用DAC0832输出正弦波信号(用示波器观察输出波形),初始频率为50Hz,变频采用“+”、“-”键 控制,当按下“+”键是正弦波的频率自动加1输出,当按下“—”时,正弦波频率自动减一输出,实时测量输出信号的频率值,通过数码管动态显示,并分析和实测输出信号的频率范围。
2.2设计所用芯片简介
2.2.1 DAC转换器是一种将数字量转换成模拟量的器件,其特点是接收、保持和转换的是数字信息,不存在随温度和时间的漂移问题,因此电路的抗干扰性能较好。DAC0832是8位分辨率的D/A转换集成芯片,它具有价格低廉、接口简单及转换控制容易等特点。它由8位输入锁存器、8位DAC寄存器、8位DIA转换电路及转换控制电路组成,能和CPU数据总线直接相连,属中速转换器,大约在1us内将一个数字量转换成模拟量输出。
1.1DAC0832 的结构如下:
D0~D7:8位数据输入线,TTL电平,有效时间应大于 90ns(否则锁存器的数
据会出错);
ILE:数据锁存允许控制信号输入线,高电平有效;
CS:片选信号输入线(选通数据锁存器),低电平有效;
WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由ILE、
CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据
线变换,LE1的负跳变时将输入数据锁存;
XFER:数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)
有效;
WR2:DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。由WR1、XFER
的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而
变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。
IOUT1:电流输出端1,其值随DAC寄存器的内容线性变化;
IOUT2:电流输出端2,其值与IOUT1值之和为一常数;
Rfb:反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度;
Vcc:电源输入端,Vcc的范围为+5V~+15V;
VREF:基准电压输入线,VREF的范围为-10V~+10V;
AGND:模拟信号地
DGND:数字信号地
1.2 DAC0832 的引脚图和内部结构如图1.1
图1.1 DAC0832 的引脚图和内部结构图
1.3 DAC0832 的三种工作方式
1.直通方式
直通方式就是使 DAC0832 内部的两个寄存器(输入寄存器和DAC 寄存器)
处于不锁存状态,数据一旦到达输入端DI7~DI0,就直接送入D/A 转换器,被转
换成模拟量。当ILE为高电平,CS 和WR 1﹑WR 2和XFER 端都接数字地,这时
锁存信号LE 1 ﹑LE2 均为高
电平,输入寄存器和DAC 寄存器均处于不锁存状态,即直通方式。
2.单缓冲方式
单缓冲方式就是使两个寄存器中的一个处于缓冲方式,另一个处于锁存方式,
数据只通过一级缓冲器送入D/A 转换器。通常的做法是将和XFER 均接地,使
DAC 寄存器处于直通方式,而把ILE接高电平,接端口地址译码信号,WR 1接
CPU系统总线的IOW 信号,使输入寄存器处于锁存方式。单缓冲方式只需执行
一次写操作即可完成D/A 转换。一般不需要多个模拟量同时输出时,可采用单
缓冲方式。
3.单缓冲方式
单缓冲方式就是使两个寄存器均处于锁存方式,数据要经过两级锁存(即两级
缓冲)后再送入D/A 转换器,这就是说,要执行两次写操作才能完成一次D/A 转
换。只要将ILE 接高电平,WR 1和WR 2接CPU的IOW ,CS 和XFER 分别接两
个不同的I/O 地址译码信号即可。
图中的 Rfb 是内部电阻,是为外部运算放大器提供的反馈电阻,用以提供适当
的输出电压,Vref 端是由外电路为芯片提供的参考电源,电压范围在-10V~
+10V。另外,DAC0832 为电流输出型DAC,使用时需外接运算放大器,芯片
的电源电压最好工作在+15V。
2.1.2 8952单片机
1 8952单片机的引脚图如图1.2
图1.2单片机的引脚图
VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口作为AT89C51的一些特殊功能口, 管脚 备选功能
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 /INT0(外部中断0)
P3.3 /INT1(外部中断1)
P3.4 T0(记时器0外部输入)
P3.5 T1(记时器1外部输入)
P3.6 /WR(外部数据存储器写选通)
P3.7 /RD(外部数据存储器读选通)
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两 /PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA / VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
3系统电路设计与分析 3.1基本原理 本次实验采用DC0832芯片的但缓冲方式,低频信号发生器的软件的编制主要采用的是查表法。对于正弦信号,其每一个点的值的确定方法是:选取一个正弦周期,将一个周期分为255段,取255个点,让其最大值为#FFH,因为所用的0832D/A转换为8位的,这样可以充分保证其转换的精度。正弦波幅值的计算公式如下:
A=100*sin(I*π/255) I=1…255
正弦波的幅度主要采用由主CPU控制D/A转换的参考电压来控制,正弦波频率的变化由改变输出点之间的延时来实现,根据正弦波的周期性和对称性来编制汇编程序,可以很方便地得到幅度和频率都受控的低频信号。
采用定时方式中断的方式控制正弦波抽样数值的输出,由定时计数器的装入值决定信号的频率,由于定时计数器采用计数方式1,16位计数初值。单片机采用12M晶振,定时范围0~65536us(即最大为65.536ms)
要设计初始频率为50Hz
定时时间:20ms/255us=78us
计数值:78
由于采用计数器方式一,每次需软件装入初值计数器装入初值,理论计算值减去装入初值指令的耗时,通过软件调试得到的装入初值为理论计算值减去9所以
初值:TH1:FFH ;TL1:BBH 即(78-9)的值取补
针对“+,-”键采用外部中断控制,实现频率值的加减处理,并在处理后调用子程序计算加减后的频率的计数初值
计算公式:100000/(f*255)-9的值取补
3.2性能指标分析
此次设计频率以1Hz为步进,通过“+,-”按键来改变,测量频率的误差范围小于1Hz,在设计中将频率值用一个八位寄存器存储,频率改变的范围在0~255之间,由于定时中断服务程序的执行需要一定时间,要求在服务程序中断到来前跳出中断服务程序,以便进入下次中断,软件调试得出最高输出频率为148Hz。
可输出的频率范围:0~148Hz,该频率在16位计数器定时范围内。
输出电压:由公式 Vout=-(Iout1×Rfb)=-Vref(DIGTAL INPUT)10/256 可以得到输出电压与参考电压Vref有关,由于在本设计中Vref接+5v,由第一级放大器输出的电压范围:-0~-5v.
3.3 资源分配表
在设计中只使用到一个外部设备DA0832
P0口作DC0832的数据总线
CS与XFER接到P2.0,WE1,WR2共同接到WR,0832的访问地址为:FCFFH
系统采用3个中断:IT0,IT1,ET1,优先级IT0>IT1>ET1
其中定时器1采用方式一
P1口作数码管显示输出,实时输出当前频率值
R0—R7用来处理4字节除以两字节的除法计算
同时使用到单片机内部的30H—33H,50H-53H空间
3.4 正弦波产生电路设计如下图1.3
图1.3 正弦波产生电路图
4 程序流程图
N
Y
图1.4 程序流程图
5 程序设计
5.1源程序
ORG 0000H
AJMP MAIN
ORG 0003H ;外部中断0入口
AJMP WB0
ORG 0013H ;外部中断0入口
AJMP WB1
ORG 001BH ;定时器1中断入口
AJMP IV1
ORG 0030H
MAIN: MOV TMOD,#10H ;T1工作于定时方式1
MOV R5,
#0FFH
MOV R4,
#0f6H
MOV TH1,R5
MOV TL1,R4 ;
定时0.02/256s
MOV 50H,#200
MOV 51H,#00H
SETB IT0
SETB IT1
SETB EX0
SETB EX1
SETB TR1
SETB EA
SETB ET1
LOOP: MOV A ,50H ;当前频率值显示于数码管
LCALL HEX2BCD
setb p3.0
cpl p3.1
MOV P1,52H
lcall delay
setb p3.1
cpl p3.0
mov p1,53H
lcall delay1
SJMP LOOP;等待中断
WB0:INC 50H
MOV A,50H
MOV B,#0FFH
MUL AB
MOV R3,B
MOV R2,A
MOV R4,#40H
MOV R5,#42H
MOV R6,#0FH
MOV R7,#00H
LCALL JSSZ
CLR C
MOV A,#00H
SUBB A,R4
MOV R4,A
MOV A,#00H
SUBB A,R5
MOV R5,A
CLR C
MOV A,#09H
ADD A,R4
MOV R4,A
MOV A,#00H
ADDC A,R5
MOV R5,A
CLR C
MOV TH1,R5
MOV TL1,R4
RETI
WB1:DEC 50H
MOV A,50H
MOV B,#0FFH
MUL AB
MOV R2,A
MOV R3,B
MOV R4,#40H
MOV R5,#42H
MOV R6,#0FH
MOV R7,#00H
LCALL JSSZ
CLR C
MOV A,#00H
SUBB A,R4
MOV R4,A
MOV A,#00H
SUBB A,R5
MOV R5,A
CLR C
MOV A,#09H
ADD A,R4
MOV R4,A
MOV A,#00H
ADDC A,R5
MOV R5,A
CLR C
MOV TH1,R5
MOV TL1,R4
RETI
IV1:MOV TH1,R5
MOV TL1,R4
PUSH ACC
INC 51H
MOV DPTR,#TAB
MOV A,51H
MOVC A,@A+DPTR
MOV DPTR,#0FEFFH
MOVX @DPTR,A
NOP
POP A
RETI
JSSZ: ;四字节除二字节除法程序
CLR C
MOV 30H,#0
MOV 31H,#0
MOV 32H,#0
MOV 33H,#0
_DIV_LOOP:
CLR C
MOV A,R4
SUBB A,R2
MOV R4,A
MOV A,R5
SUBB A,R3
MOV R5,A
MOV A,R6
SUBB A,#0
MOV R6,A
MOV A,R7
SUBB A,#0
MOV R7,A
JC _DIV_END
_INC_SHANG:
CLR C
MOV A,30H
ADDC A,#1
MOV 30H,A
MOV A,31H
ADDC A,#0
MOV 31H,A
MOV A,32H
ADDC A,#0
MOV 32H,A
MOV A,33H
ADDC A,#0
MOV 33H,A
LJMP _DIV_LOOP
_DIV_END:
CLR C
MOV A,R2
ADDC A,R4
MOV R0,A
MOV A,R3
ADDC A,R5
MOV R1,A
MOV R4,30H
MOV R5,31H
MOV R6,32H
MOV R7,33H
RET
DELAY:
MOV R6,#62H
LOP: MOV R7,#28H
DL1: NOP
NOP
DJNZ R7,DL1
DJNZ R6,LOP
RET
DELAY1:
MOV R6,#61H
LOP1: MOV R7,#1dH
DL11: NOP
NOP
DJNZ R7,DL11
DJNZ R6,LOP1
RET
HEX2BCD: ;二进制转BCD码
MOV B, #100
DIV AB
MOV 53H, A ;存百位数
MOV A, #10
XCH A, B
DIV AB
SWAP A ;十位数换到高四位
ADD A, B ;加上个位数
MOV 52H, A ;保存
RET
TAB:DB 80h,83h,86h,89h,8dh,90h,93h,96h,99h,9ch,9fh,0a2h,0a5h,0a8h,0abh,0aeh,0b1h,0b4h,0b7h,0bah,0bch,0bfh,0c2h,0c5h
DB 0c7h,0cah,0cch,0cfh,0d1h,0d4h,0d6h,0d8h,0dah,0ddh,0dfh,0e1h,0e3h,0e5h,0e7h,0e9h,0eah,0ech,0eeh,0efh,0f1h,0f2h,0f4h,0f5h
DB 0f6h,0f7h,0f8h,0f9h,0fah,0fbh,0fch,0fdh,0fdh,0feh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0feh,0fdh
DB 0fdh,0fch,0fbh,0fah,0f9h,0f8h,0f7h,0f6h,0f5h,0f4h,0f2h,0f1h,0efh,0eeh,0ech,0eah,0e9h,0e7h,0e5h,0e3h,0e1h,0deh,0ddh,0dah
DB 0d8h,0d6h,0d4h,0d1h,0cfh,0cch,0cah,0c7h,0c5h,0c2h,0bfh,0bch,0bah,0b7h,0b4h,0b1h,0aeh,0abh,0a8h,0a5h,0a2h,9fh,9ch,99h
DB 96h,93h,90h,8dh,89h,86h,83h,80h,80h,7ch,79h,76h,72h,6fh,6ch,69h,66h,63h,60h,5dh,5ah,57h,55h,51h
DB 4eh,4ch,48h,45h,43h,40h,3dh,3ah,38h,35h,33h,30h,2eh,2bh,29h,27h,25h,22h,20h,1eh,1ch,1ah,18h,16h
DB 15h,13h,11h,10h,0eh,0dh,0bh,0ah,09h,08h,07h,06h,05h,04h,03h,02h,02h,01h,00h,00h,00h,00h,00h,00h
DB 00h,00h,00h,00h,00h,00h,01h,02h,02h,03h,04h,05h,06h,07h,08h,09h,0ah,0bh,0dh,0eh,10h,11h,13h,15h
DB 16h,18h,1ah,1ch,1eh,20h,22h,25h,27h,29h,2bh,2eh,30h,33h,35h,38h,3ah,3dh,40h,43h,45h,48h,4ch,4eh
DB 51h,55h,57h,5ah,5dh,60h,63h,66h,69h,6ch,6fh,72h,76h,79h,7ch,80h
END
5.1实现功能程序说明
1.数码管显示
主程序不停循环执行将当前的频率值送数码管显示,通过P1口送数据,数据通过转换为BCD码,将该BCD码送BCD硬件译码电路显示
2.正弦波信号产生
由定时中断,在中断服务中,由MOV TL0,R4;MOV TH0,R5来装入初值,通过
INC 51H,使得一个周期的正弦波的256个抽样值依次输出,由MOVX @DPTR,A,DPTR中存放DC0832的地址0FCFFH。正弦波的周期就取决于每个状态的延时时间。当增加定时器的定时初值时即延长了定时时间,即降低了正弦波的频率。反之,当减少定时器的定时初值时,即增加了了正弦波的频率。
3.“+,-“按键实现频率以1Hz为步进连续变化的实现
加减按键分别由外部的两的中断控制,在中断服务程序中响应频率的加减一变化,同时在中断服务程序中调用多字节除法指令实现改变频率后的需转入的计数初值
4.产生的正弦波测量
将正弦波通过555转化为方波,使用proteus中自带的虚拟频率计进行频率测量。注意由于实际中Vref的参考电压选取正值,有第一级放大器输出电压为负极性值,在设计中可以通过一极性反相电路将负电压变换为正电压,以便进行频率的测量
6 整体电路图与仿真图
6.1整机电路图如图1.5
图1.5 整机电路图
6.2 仿真结果
1.输出1Hz正弦波仿真结果图如下图1.6
图1.6 输出1Hz正弦波的仿真图
2.输出50Hz正弦波仿真如图1.7
图1.7 输出50Hz正弦波的仿真图
3.输出145Hz正弦波仿真图如图1.8
图1.8 输出145Hz正弦波的仿真图
7课程设计心得
8参考文献
[1]
姚燕南,薛钧义.微型计算机原理与接口技术.北京:高等教育出版社.2004
[2] 李群芳,张士军,黄建.单片微型计算机与接口技术(第2版).北京:电子工业出版 社.2005
[3]
徐维祥,刘旭敏.单片微型计算机原理及应用.大连:大连理工大学出版社.2006
[4] 李广弟等 单片机基础 北京航空航天出版社, 2001.7
[5] 楼然苗等 51 系列单片机设计实例 北京航空航天出版社, 2003.3
[6] 唐俊翟等 单片机原理与应用 冶金工业出版社, 2003.9
[7] 刘瑞新等 单片机原理及应用教程 机械工业出版社, 2003.7
[8] 吴国经等 单片机应用技术 中国电力出版社, 2004.1
9成绩评定表
本科生课程设计成绩评定表
姓 名
性 别
专业、班级
课程设计题目:设计并实现频率可控的正弦波信号发生器
课程设计答辩或质疑记录:
成绩评定依据:
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
年 月 日
外部中断1
外部中断0
返回中断
返回中断
返回中断
频率值加一,计算加一后的计数初值
频率值减一,计算减一后频率计数初值
重装计数初值,依次输出正弦波的抽样值,启动DA转换
有无中断
将当前频率值送A,并转换成BCD码,将BCD码送P1口通过BCD码驱动电路输出到数码管当前频率值
设值计数器1的工作方式,
IT0,IT1的中断方式并开启中断
计数器装入产生50HZ的计数初值
开始
定时中断
- 21 -