单片机课设波形发生器结题报告Word格式文档下载.docx
- 文档编号:17161698
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:35
- 大小:662.17KB
单片机课设波形发生器结题报告Word格式文档下载.docx
《单片机课设波形发生器结题报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机课设波形发生器结题报告Word格式文档下载.docx(35页珍藏版)》请在冰豆网上搜索。
(2)三角波低频表容量R1:
100,三角波高频表容量R1:
19,R1为三角波表容量-1,-1是由算法决定的。
程序通过查表描点输出近似连贯的三角波形。
(3)通过对P3.1~P3.4的按键控制可以实现调频、调幅。
锯齿波:
(1)给R3赋值#06H,代表每调用一次,就输出六个周期后返回,这样在最低频时也能保证每秒钟检测六次按键,确保了键盘的灵敏度。
(2)锯齿波低频表容量R1:
50,正弦波高频表容量R1:
10,R1为锯齿波表容量-1,-1是由算法决定的。
程序通过查表描点输出近似连贯的锯齿波形。
3、频率调节:
在21H单元中赋值#13H,频率加、减子程序中变化范围:
01H~14H(十进制为20),通过按键P3.1和P3.2可以实现频率加和频率减,步长为1.
4、幅度调节:
在22H单元中赋值#01H,幅度加、减子程序中变化范围:
00H~0AH(十进制为10),通过按键P3.3和P3.4可以实现幅度加和幅度减,步长为1.
五、系统电路板接线图:
接线:
(1)由P2.7控制DAC0832的CS端(所以其DPTR的地址最高位应该是0);
(2)P3.0、P3.1、P3.2、P3.3、P3.4分别接至开关K1、K2、K3、K4、K5;
(3)运放输出端接示波器输入端,示波器另一端接地。
六、各个模块程序流程图及程序:
1.主程序流程图:
1.主程序:
ORG0000H
LJMPMAIN
;
****************0.初始化*********************电阻选用10k,电容120nf,电容最好不要超过200nf
MAIN:
MOV20H,#01H;
a.波形标号,0-2分别为正弦波,三角波,锯齿波
MOV21H,#13H;
b.频率参数,变化范围1-20
MOV22H,#01H;
c.幅值参数,变化范围1-10本程序幅值的变化是通过查表实现的
***************主程序************************本段的作用是处理各种参数,并判断该执行哪种波形子程序
START:
LCALLREADKEY;
调用检测按键程序
MOVA,20H;
判断波形
CJNEA,#00H,NEXT0;
载入波形标号,根据不同的变量值调用不同的子程序
LCALLSIFUNC;
然后再跳回主程序,根据READKEY刷新后的各种参数重新计算数据
LJMPSTART;
循环
NEXT0:
MOVA,20H
CJNEA,#01H,NEXT1
LCALLTRFUNC
LJMPSTART
NEXT1:
LCALLSAFUNC
2.按键检测子程序流程图:
2.按键检测子程序:
READKEY:
MOVA,P3;
判断按键状态
JNBACC.0,RP10
JNBACC.1,RP11
JNBACC.2,RP12
JNBACC.3,RP13
JNBACC.4,RP14
DONE:
RET
RP10:
LJMPPROM0
RP11:
LJMPPROM1
RP12:
LJMPPROM2
RP13:
LJMPPROM3
RP14:
LJMPPROM4
PROM0:
;
/改变各种参数,调用延时DELAY
INC20H
MOVA,20H
CJNEA,#03H,DELAY
MOVA,#00H
MOV20H,A
LJMPDELAY
PROM1:
INC21H
MOVA,21H
CJNEA,#14H,DELAY
MOVA,#01H
MOV21H,A
PROM2:
DEC21H
CJNEA,#00H,DELAY
MOVA,#13H
PROM3:
INC22H
MOVA,22H
CJNEA,#0BH,DELAY
MOV22H,#01H
PROM4:
DEC22H
MOV22H,#0AH
3.延时子程序流程图:
延时时间计算步骤:
T=8*250*250*2us=1s
8:
6个NOP指令+DJNZ2字节指令
2个250:
双层DJNZ循环嵌套,每一层都是十进制250个
2us:
8051机械周期
3.延时子程序:
DELAY:
延时防抖,防止重复输入,执行500000个机器周期,1秒
MOV30H,#0FAH
MOV31H,#0FAH
DLLP:
NOP
DJNZ30H,DLLP
DJNZ31H,DLLP
LJMPREADKEY
4.正弦波子程序流程图:
4.正弦波子程序:
SIFUNC:
*正弦波
MOVA,21H
CJNEA,#10,LOOP
LOOP:
JNCSIFUNC1
LJMPSIFUNC2
SIFUNC1:
MOVR3,#03H;
R3代表每调用一次,就输出三个周期后返回,这样在最低频时也能保证每秒钟检测三次按键,确保了键盘的灵敏度.再低的话由各程序初始化带来的误差会更明显
MOVR1,#100;
R1为正弦表容量-1,-1是由算法决定的
MOVR2,#00H;
载入表容量
SLP:
*输出下降段波形,这里SLP中的P只代表查得的值是上升段,输出的波形自然就是下降段
MOVDPTR,#SINE
MOVA,R2;
载入表内指针
MOVCA,@A+DPTR;
查表
MOVB,#10
DIVAB
MOV24H,B
MOVB,22H
MULAB
MOV25H,A
MOVB,24H
ADDA,25H
MOVDPTR,#0000H
MOVX@DPTR,A
LCALLFREQ2;
调用频率函数(在此函数中描点)
INCR2;
调整指针
DJNZR1,SLP;
判断表是否查完
MOVR1,#80;
重新初始化,准备反向查表
MOVR2,#00H
DJNZR3,SLP
RET
SINE:
;
低频段表
DB080H,08aH,094H,09dH,0a7H,0b0H,0baH,0c2H
DB0cbH,0d3H,0daH,0e1H,0e7H,0edH,0f2H,0f6H
DB0f9H,0fcH,0feH,0ffH,0ffH,0ffH,0feH,0fcH
DB0f9H,0f6H,0f2H,0edH,0e7H,0e1H,0daH,0d3H
DB0cbH,0c3H,0baH,0b1H,0a7H,09eH,094H,08aH
DB080H,076H,06cH,062H,058H,04fH,046H,03dH
DB034H,02dH,025H,01eH,018H,013H,0eH,09H
DB06H,03H,01H,00H,00H,00H,01H,03H
DB06H,09H,0dH,012H,018H,01eH,025H,02cH
DB034H,03cH,045H,04eH,058H,061H,06bH,075H,07CH
SIFUNC2:
MOVR1,#10H;
MOVR2,#00H
SLP1:
MOVDPTR,#SINE1
LCALLFREQ1;
DJNZR1,SLP1;
DJNZR3,SLP1
SINE1:
高频段表
DB080H,0b0H,0daH,0f6H,0ffH,0f6H,0daH,0b1H
DB080H,04fH,025H,09H,00H,09H,025H,04eH,05FH
5.三角波子程序流程图:
5.三角波子程序:
TRFUNC:
*三角波
CJNEA,#10,LOOP1
LOOP1:
JNCTRFUNC1
LJMPTRFUNC2
TRFUNC1:
TLP:
MOVDPTR,#TRAN
MOVA,R2
MOVX@DPTR,A
INCR2
DJNZR1,TLP
MOVR1,#100
DJNZR3,TLP
TRAN:
DB0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110,115,120,125,130,135,140,145,150,155,160,165,170,175,180,185,190,195,200,205,210,215,220,225,230,235,240,245,250,245,240,235,230,225
DB220,215,210,205,200,195,190,185,180,175,170,165,160,155,150,145,140,135,130,125,120,115,110,105,100,95,90,85,80,75,70,65,60,55,50,45,40,35,30,25,20,15,10,5,0
TRFUNC2:
MOVR1,#19;
TLP1:
MOVDPTR,#TRAN1
DJNZR1,TLP1
MOVR1,#19
DJNZR3,TLP1
TRAN1:
DB0,24,48,72,96,120,144,168,192,216,240,216,192,168,144,120,96,72,48,24
6.锯齿波子程序流程图:
6.锯齿波子程序:
SAFUNC:
*锯齿波
CJNEA,#10,LOOP2
LOOP2:
JNCSAFUNC1
LJMPSAFUNC2
SAFUNC1:
MOVR3,#06H;
R3代表每调用一次,就输出六个周期后返回,这样在最低频时也能保证每秒钟检测六次按键,确保了键盘的灵敏度.再低的话由各程序初始化带来的误差会更明显
MOVR1,#50;
MOVA,#00H
MOVR2,A;
R2为表内指针,此程序幅值的调整是通过查不同的表实现的
MOV29H,A;
锯齿波会将R2的表内指针起始地址额外存入29H,这样输出一个周期后就不需要重复计算R2的值了
ALP:
锯齿波只使用一个循环,输出结束后从29H再载入当初R2的值,其他的波形会逐次将R2改回原来的值,所以只有锯齿波需要额外的29H地址
MOVDPTR,#TRAN;
锯齿波用的是三角波的表
MOVCA,@A+DPTR
LCALLFREQ2
DJNZR1,ALP
MOVR1,#50
MOVR2,29H
DJNZR3,ALP
SAFUNC2:
R3代表每调用一次,就输出三个周期后返回,这样在最低频时也能保证每秒钟检测三次按键,确保了键盘的灵敏度.再低的话由各程序初始化带来的误差会更明显,仿真证明每次调用波形子程序都会产生一个小毛刺
MOVR1,#10;
MOVA,#00H;
|载入表容量=19
|*R2为表内指针,此程序幅值的调整是通过查不同的表实现的,所以改变幅值意味着表指针跳跃19个
ALP1:
MOVDPTR,#TRAN1;
LCALLFREQ1
DJNZR1,ALP1
MOVR1,#10
DJNZR3,ALP1
7.频率子程序流程图:
7.频率子程序:
*******************频率函数***********************
FREQ1:
MOVR5,21H
DELAY1:
DJNZR5,DELAY1
FREQ2:
SUBBA,#9
MOVB,#10H
MOVR5,A
DELAY2:
DJNZR5,DELAY2
RET
END
七、总实验程序:
***********按键判断************************本段的作用是检测各键位的状态,并改变相应参数,同时自带延时防抖功能
DELAY:
*****************波形子程序**********************
调用频率
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 波形 发生器 报告