当前位置:文档之家› 信号函数发生器

信号函数发生器

RAM由128字节,30~3FH作为堆栈区,40~45H为显示缓冲区,40H存放波形编码,
42H~45H存放频率值,42H存放参考电压值,46H为设置标志区
1、人机交互模块
(1)显示子模块
片内RAM的40H~45H是显示缓冲区。采用查表方式形成显示的段码,显示码表存于ROM中。显示模块流程图如图(3)所示。R1存位选信号,R2存显示次数,R0存显示缓冲区地址。单片机先向P2口送位选信号;从显存中取数字,通过查表,得到显示段码,送P0口;延时,保持显示;修改R0;判断是否已显示6次,不满6次,转开始处执行,已执行6次,则结束显示。
由两片0832和两块LM324运放组成。0832(1)提供参考电压,单片机向0832(1)送数字编码,产生不同的输出。本函数信号发生器可输出1V、2V、3V、4V、5V五个电压。0832(1)输出电压作为的0832(2)的参考电压。也就是所本函数信号发生器的幅值是可调的。0832(2)产生各种波形,生成波形样值码,经D/A转换得到各种模拟样值点。假如N个点构成波形的一个周期,则0832(2)输出N个样值点后,样值点形成运动轨迹,即一个周期。重复输出N个点,成为第二个周期。
中断服务流程如图6所示,波形产生流程如图7所示。
五、完整程序
;-----------------------------------------------------------------------------------------
;这是一个有三种波形选择,电压幅值可调,频率可变,用键盘进行控制的函数信号发生器
地址分配如下:
0832(1):BFFFH, 0832(2):7FFFH。
(1)
四、软件结构
程序由人机交互模块和波形产生模块组成,二者如图2所示。其中(a)是主流程图,
由系统初始化和人机交互程序模块组成,(b)是定时器中断程序流程图,函数信号发
生模块作为中断服务程序,作为中断服务程序,实现系统的波形输出。单片机的片内
MOV R2,#06H ;存显示次数
MOV R3,#40H ;存显示缓存区首址
DIS: MOV A,R1
MOV P2,A
RL A
MOV R1,A
MOV A,@R3 ;取缓冲区显示数据
MOV P0,A
INC R3
LCALL DELAY1 ;调用延时
DJNZ R2,DIS
POP R3
POP R2
POP R1
DJNZ R6,$
DJNZ R7,D1
POP R7
POP R6
RET
;---------------------------------------------------------------------------------------
;按键功能处理,当按数字键,检测设置标志区,看是否是要送显示缓冲去的数,不是就返回主程序
函数信号发生器
一、函数信号发生器的技术指标
1、波形:方波、正弦波、锯齿波;
2、幅值电压:1V、2V、3V、4V、5V;
3、频率:10HZ、20HZ、50HZ、100HZ、200HZ、500HZ、1KHZ;
二、操作设计
1、上电后,系统初始化,数码显示6个‘-’,等待输入设置命令。
2、按“幅值”、“频率”、“方波”、“正弦波”、“锯齿波”键进行相应的设置,数码管显示“-”。输入相应参数,显示参数值,全部设置完毕后,按“Enter”键,数码管显示波形的编码,电压幅值,频率。
RET
DELAY1: PUSH R1 ;延时程序
PUSH R2
MOV R1,#50
D1: MOV R2,#50
DJNZ R2,$
DJNZ R1,D1
POP R2
POP R1
RET
;------------------------------------------------------------------------------------------
ACALL DELAY ;延时12ms
ACALL DELAY
ACALL KS1 ;判断有无键闭合
JZ NS ;无键闭合,放回主程序
SCAN: MOV R0,#00H ;按键初始值
MOV R1,#04H ;扫描行数
MOV R2,#FEH ;送扫描值
MOV A,R2
MOV P1,A ;扫描,并设定输入模式
3、要停止使用函数信号发生器,可按复位按钮,将系统复位,然后关闭电源。
4、输入频率值的时候,一定要输入四位数。
二、硬件组成
由单片机、键盘、显示接口电路,波形转换(D/A)电路和电源等四部分构成。
1、单片机电路
功能:形成扫描码,键值识别、键处理、参数设置;形成显示段码;产生定时中断;形成波形的数字编码,并输出到D/A接口电路。
KEY_DEAL:MOV DPTR,#TAB ;送散转表首地址
MOV A,R0
MOV A,@A+DPTR
PRO1: PUSH R7
PUSH R5
MOV A,46H ;0~9号功能键处理
MOV R7,A
MOV R5,#42H
MOV R4,#04H
CJNE R7,#01H,WAVE_V
MOV A,R0
F_SEND: MOV B,@R5 ;频率存储的一个循环
(7)“0~9”键处理
进入“PRO1”子程序,查设置标志区46H的内容,有无设置,若有设置,则进入设定操作,将数字0~9送显示缓冲区。若无设置,则返回主程序。
3、波形产生模块
(1)将一个周期T的信号分成32个点(按X轴等份),两点间的时间间隔△T由单片机的定时器产生。
(2)一个周期分成32个点,对应三种波形的32个数据存放在以FBO_TAB、XIN_TAB、JCHB_TAB为起始地址的存储器中。
KS1: MOV A,#0FH ;按键闭合判断子程序
MOV P1,A ;扫描,并设定输入模式
NOP
MOVX A,P1 ;把P1口的值读回A
CPL A
ANL A,#0FH ;A不为0,有键闭合
RET
DELAY: PUSH R6
PUSH R7
MOV R7,#40 ;延时约6ms
D1: MOV R6,#36
MOV R6,B
CJNE R6,#0AH,F_SEND1;不等于#0AH,说明已经有数字存储,转移到下一单元
MOVX @R5,A
JMP OVER
F_SEND1: INC R5
(2)“频率”键处理
进入“PRO3”子程序,将设置标志区置为01H,表示频率参数设定;42H是频率值显示缓冲区首址;向42H、43H、44H、45H单元送#0AH,使数码管显示“―――”,返回键盘主程序。
(3)“方波”键处理
进入“PRO4”程序,给40H单元送方波编码01H,使数码管显示“1”,返回键盘主程序。
;这是定时中断服务程序,通过对40单元的内容的检测,判断调用哪个波形输出
;---------------------------------------------------------------------------------------
INT_T: PUSH A
PUSH R1
MOV A,40H ;读波形设置标志位
;送0832(1);2、从42H~45H中取频率值并进入相应的程序段,实现频率与设定初值的转换,完成TMOD的
;设定和初值设定;3、开启定时中断,向R1赋样值初始编码并返回主程序
;------------------------------------------------------------------------------------------
功能:驱动6位数码管动态显示,扫描键盘。
由反向驱动器UNL2803A、6位共阴极数码管和4×4键盘组成。
P0口作为数码管的段选口,P2口作为位选口,与UNL2803A相连接。P1口的低四位作为键盘的行状态的输入,高四位作为输出扫描。
3、D/A电路
功能:将波形样值的编码转换成模拟值;完成单极性的波形输出。
;当按幅值键时,把设置标志区置为02H,表示设定参考电压,将42单元置为#0AH
;当按频率键时,把设置标志区置为01H,表示频率参数设定,42H时缓冲区首址,向42H,43H,44H,45H单元
;送#0AH,返回键盘主程序
;当按ENTER键,检查是否已全部设置完毕,是的话1、送从45H中取参考电压,查表获得电压的数字编码
(2)键盘处理子模块
键识别作为主程序,键处理作为子程序。流程图如图4、图5所示,键盘的工作过程:
1)扫描键盘,获得列扫描码和行状态码,确定键值;
2)根据键值,通过散转表,转到相应的键处理程序;
3)进入键处理,执行键功能。
2、功能键处理
(1)“幅值”键处理
进入PRO2子程序,将设置标志位区46H置为02H,表示设定参考电压;将46H单元置为#0AH,使相应的数码管显示“-”。
;这是显示程序,对显示缓冲取的数据进行扫描显示
;-----------------------------------------------------------------------------------------
LED_DISPLAY: PUSH R1
PUSH R2
PUSH R3
MOV R1,#FEH ;存位选信号
MOV R1,A
CJNE R1,#01H,XINE
CALL FANGBO
XINE: CJNE R1,#02H,JUCHI
CALL XINEW
JUCHI: CALL JUCHIBO来自POP R1POP A
RETI
;-----------------------------------------------------------------------------------------
相关主题