多功能信号发生器课程设计Word文档格式.docx
《多功能信号发生器课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《多功能信号发生器课程设计Word文档格式.docx(25页珍藏版)》请在冰点文库上搜索。
第四步:
波形的形式显示,在波形生成的同时在液晶显示器上显示波形当前形式的拼写。
3流程图
4各部分波形设计及参数计算:
在这里我将分别对两个方块作详细的称述:
4.1多种波形设计
4.1.1正弦波如图4-1
4.1.2三角波如图4-2
4.1.3方波如图4-3
4.1.4锯齿波如图4-4
图4-1图4-2
正弦波流程图三角波流程图
图4-3图4-4
方波流程图锯齿波流程图
4.2参数计算
4.2.1正弦波参数计算
由于单片机是12位电压输出数/模转换器,所以将其分为两部分,高四位用来调节幅度,低八位用来显示正弦波形,由Vi/VREF=VD/FF可知VD正弦变化则Vi正弦变化,令VD=FF/2*(sinx+1),一个正弦周期取181个点,最后加一个点129判断一个周期是否执行完,所以可得每点间隔为2×
3.14/181≈0.04,所以可以算出正弦波数值表,如下:
sintab:
DB128,132,137,141,146,150,154,159,163,167
DB171,176,180,184,188,191,195,199,203,206
DB210,213,216,219,222,225,228,231,233,236
DB238,240,242,244,246,247,249,250,251,252
DB253,254,254,255,255,255,255,255,254,254
DB253,252,251,250,249,247,246,244,242,240
DB238,236,233,231,228,225,222,219,216,213
DB210,206,203,198,195,192,188,184,180,176
DB172,167,163,159,155,150,146,141,137,133
DB128,124,119,115,111,106,102,97,93,89,85
DB81,77,73,69,65,61,57,54,50,47,43,40,37
DB34,31,28,25,23,20,18,16,14,12,10,9,7
DB6,5,4,3,2,2,1,1,1,1,1,2,2,3,4,5,6
DB7,9,10,12,14,16,18,20,23,25,28,30,33,36
DB40,43,46,50,53,57,60,64,68,72,76,80,84
DB88,93,97,101,106,110,114,119,123,128,129
4.2.2LCD显示器的参数计算
LCD显示数值就是将所要显示字母的ASCII码值填入表中:
zhengxianbodata:
DB2EH,7AH,68H,65H,6EH,67H,78H,69H,61H,6EH,62H,6FH
sanjiaobodata:
DB2EH,73H,61H,6EH,6AH,69H,61H,6FH,62H,6FH
fangbodata:
DB2EH,66H,61H,6EH,67H,62H,6FH
juchibodata:
DB2EH,6aH,75H,63H,68H,69h,62H,6FH
5工作过程分析
5.1正弦波:
若R7等于4,则LCD显示程序显示“zhengxianbo”,LED显示完后再查正弦波波形表,将所查得的数据进行DA转换并输出正弦波,按下key3可以调节幅值,将表最后一个数据定为129用来判断正弦波一个周期的数据是否调用完,若调用完则让此程序循环执行。
5.2三角波:
若R7等于1,则LCD显示程序显示“sanjiaobo”,显示完后将00送到DAC0L再逐次加1送到DAC0L待到低位值增到FF时,给DAC0H加1,依次循环,直至DAC0的值为FFF,锯齿波最高点的值为FFF,再用同样的方法让DAC0的值从最大值FFF减到000,以此循环则显示三角波。
5.3方波:
若R7等于2,则LCD显示程序显示“fangbo”,显示完后将FF送到DAC0L,将F送到DAC0H,再调用延时程序,待延时程序执行完将00送到DAC0L,将0送到DAC0H,再调用延时程序,以此循环,则示波器上输出方波。
5.4锯齿波:
若R7等于3,则LCD显示程序显示“juchibo”,显示完后将00送到DAC0L再逐次加1送到DAC0L待到低位值增到FF时,给DAC0H加1,依次循环,直至DAC0的值为FFF,锯齿波最高点的值为FFF,再循环执行上述过程。
6元器件清单
器件名称
器件型号
器件数量
计算机
1
波形发生器
GDS-1022
单片机
C8051f020
表6-1
7主要元器件介绍
7.1计算机:
用于编写源程序
7.2示波器:
用于显示各种波形
7.3单片机:
如果按功能划分,它由8个部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、I/O口(P0口、P1口、P2口、P3口)、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)的集中控制方式。
各功能部件的介绍:
1、数据存储器(RAM):
片内为128个字节单元,片外最多可扩展至64K字节。
2、程序存储器(ROM/EPROM):
ROM为4K,片外最多可扩展至64K。
3、中断系统:
具有5个中断源,2级中断优先权。
4、定时器/计数器:
2个16位的定时器/计数器,具有四种工作方式。
5、串行口:
1个全双工的串行口,具有四种工作方式。
6、特殊功能寄存器(SFR)共有21个,用于对片内各功能模块进行管理、监控、监视。
7、微处理器:
为8位CPU,且内含一个1位CPU(位处理器),不仅可处理字节数据,还可以进行位变量的处理。
8、四个8位双向并行的I/O端口,每个端口都包括一个锁存器、一个输出驱动器和一个输入缓冲器。
这四个端口的功能不完全相同。
小结
在这次设计中,我超额完成了这次任务,作好了多功能信号发生器,能够输出正弦波,三角波,方波,锯齿波;
各种波形之间可以相互转换;
也可以调节幅值;
可以用LCD显示出来,我很高兴,同时也感谢老师和同学的帮助。
回忆起这次课程设计,至今我仍然感触颇多。
我的题目是多功能信号发生器,刚刚看到这个题目时感到非常难,无从下手,没有一个具体的设计思路,最后,我制定了这样的计划:
先查阅相关资料,再进行方案论证,源程序设计,最后再写设计报告,进行答辩。
总体思路有了,但实现起来还是很难,只设计一个简单的方波子程序我就遇到了问题。
还有每个程序作好后,调试时也遇到了许多困难,比如:
正弦波调试没错误就是不出波形。
每个程序思路都不同,发现有些无法组合,我们不得不放弃一些已经作好的程序,从头做起。
其中我遇到了很多问题:
比如再用中断六进行转换时跳的很快,加了延时好像也不太好使。
但是我从不知道做什么,到不知怎么做,到后来的不知怎么完善程序,一个一个问题不断地出现,但值得高兴的是我们一起克服了。
虽然在这次课程设计中我们所设计的程序仍有很多漏洞,。
还有一些没解决的问题,但我们已经很满足了,至少我们努力了。
通过课程设计我收获很多,不仅对这个课程有了更深的理解,而且也学会了团队精神的重要性,个人的能力是有限的,团结才能有力量,我们都尽自己所能来完成这次课程设计。
通过这次课程设计,我懂得了理论与实际结合是很必要的。
只有理论知识是远远不够的,只有把所学的理论知识与实际结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考能力。
在设计的过程中,虽然我们遇到了重重困难,但我们都一一把困难克服了。
可贵的是,我们在设计过程中发现了自己的不足,对前面学过的知识理解的不够深刻,掌握的不够牢固。
通过这次课程设计,我们相当于把前面所学过的知识又重新温故了一遍。
善于总结,也是学习能力的一种体现。
每次完成一个程序,都应随时总结,找到自己的不足,这样一来所设计的程序才能逐步提高。
生活就是这样,汗水预示着结果也见证着收获。
有些事情并不是因为它难而使我们不能做,而是因为我们不去做而使它看起来很难,就像是这次课程设计,刚开始看起来很难,但当我们真正做的时候一步一步也走过来了,所以我相信,没有什么我们做不到的,只要我们肯为此而付出努力!
致谢
关于课程设计的学习,我深深体会到了同学之间团结互助的重要性。
在此,我要特别对帮助我的老师表示感谢。
在刚开始时,我们拿到这个课程设计,真的是一头雾水。
时间过得真快,转眼间,两周的程序设计课程就要结束了。
短短的两周之内,我有很多都不知道从何开始,是老师的耐心指导帮我明确了方向,是同学的相互帮助给我作了导航,让我们知道了课程设计的基本步骤,开始着手设计。
每天,老师都会帮助我们解答一些我们想不明白的问题。
在老师的悉心指导下,我们的源程序终于做完了。
本来以为一切都快结束了,没想到在真正参透,调试时,问题百出,让我们都失去了信心,这时候,老师给予我们无私的帮助,教育我们要有耐心,慢慢检查,并告诉我们,不是每个人都能一次就把源程序设计好,一个完整的源程序总是在不断的修改过程中,一点一滴的完善的。
在我们的努力和老师的帮助下,我们终于把源程序给完善了。
面对完善后的源程序,我们就开始写论文。
最后一刻,我们终于成功的完成了。
真的很感谢老师们,是他们使我们尝到了成功的喜悦。
在这次课程设计中我们不仅完成了老师交给的各项任务,还增加了很多知识。
对单片机这门课程也有了更深的了解和更大的兴趣,使我们的知识更加巩固和完善了。
另外,我要感谢我亲爱的同学们。
是他们一直陪在我身边,和我并肩奋斗,使我有信心完成自己的工作。
虽然这一周遇到了很多的困难,但感觉仍然是快乐的,当我的源程序设计出来时,觉得非常有成就感,可以说这次的成绩不只属于我自己,更多属于老师和同学的帮助。
程序属于大家共同合作的结果,没有你们就没有这样一个完整的课程设计,我也尝不到这份成功的喜悦。
最后,我要再次感谢老师和那些给予我帮助的同学们,是你们让我顺利完成了课程设计,增长了许多实践的经验,更体验到了大家团结互助的温暖。
真的很感谢你们,希望在以后的生活中,大家能事事顺心,希望我们这个大家庭永远温暖如春。
参考文献
[1]张俊谟.SoC单片机原理与应用——基于C8051系列.北京:
北京航空航天大学出版社,2007.5
[2]周立功.单片机实验与实践.北京:
北京航空航天大学出版社,2004.8
[3]袁启昌,王宏宇.单片机应用实训教程.北京:
科学出版社,2006.2
[4]张迎辉,贡雪梅.单片机实训教程.北京:
北京大学出版社,2005.9
附录
A1总流程图
图六
总流程图
A2源程序
多功能信号发生器的程序如下:
$include(c8051f020.inc)
org00h
ljmpmain
org0093h
ljmpintt6_isr
org009bh
ljmpintt7_isr
org100h
int6_init:
orleie2,#30h
movp3if,#00h
setbea
ret
intt6_isr:
movp3if,#3fh
djnzr7,z
movr7,#4
lcalldelay1
z:
reti
intt7_isr:
movp3if,#00h
movr5,#03h
reti
main:
movwdtcn,#0deh
movwdtcn,#0adh
movxbr2,#40h;
打开交叉开关
movref0cn,#03h;
DA转换初始化
movdac0cn,#80h
movR7,#1
movr5,#15
clrea
lcallint6_init
Q1:
CJNER7,#1,Q2
lcallrepzhengxianbo
lcallzhengxianbo
ljmpQ1
Q2:
CJNER7,#02,Q3
lcallrepsanjiaobo
lcallsanjiaobo
ljmpQ2
Q3:
CJNER7,#03,Q4
lcallrepfangbo
lcallfangbo
ljmpQ3
Q4:
CJNER7,#04,Q1
lcallrepjuchibo
lcalljuchibo
ljmpQ4
zhengxianbo:
//正弦波
movdptr,#sintab
zloop0:
clra
movca,@a+dptr
cjnea,#129,zloop1
ajmpzhengxianbo
zloop1:
movb,r5
mulab
movdac0l,a
movdac0h,b
incdptr
CJNER7,#01H,DD1
ljmpzloop0
DD1:
RET
sanjiaobo:
//三角波
sloop1:
mov30h,#00h
mov31h,#00h
sloop2:
mova,30h
adda,#05h
movdac0l,a
mov30h,a
jncsloop4
mova,31h
inca
mov31h,a
cjnea,#05h,sloop3
ljmpsloop5
sloop3:
mova,31h
ajmpsloop2
sloop4:
movdac0h,a
CJNER7,#02,DD2
sloop5:
mov30h,#0ffh
mov31h,#04h
sloop6:
mova,30h
clrcy
subba,#05h
jncsloop8
deca
cjnea,#0ffh,sloop7
ljmpsloop2
sloop7:
movdac0h,a
ajmpsloop6
sloop8:
DD2:
ret
fangbo:
//方波
movdac0cn,#80h
movdac0l,#0ffh
movdac0h,#0fh
lcalldelay
CJNER7,#03,floop0
movdac0l,#00h
movdac0h,#0h
ljmpfangbo
floop0:
ret
delay:
movr0,#10
de1:
movr1,#10
de2:
movr2,#10
djnzr2,$
djnzr1,de2
djnzr0,de1
juchibo:
//锯齿波
jloop0:
mov30h,#00h
mov31h,#00h
jloop1:
movA,30h
addA,#01h
mov30h,A
movdac0l,A
jncjloop3
movA,31h
incA
mov31h,A
cjneA,#10h,jloop2
ljmpjloop1
jloop2:
movdac0h,A
ajmpjloop1
jloop3:
movA,31h
CJNER7,#04,jloop4
ajmpjloop1
jloop4:
repzhengxianbo:
LCALLDELAY2
LCALLLCD_Init
MOVDPTR,#zhengxianbodata
MOVR3,#0CH
Line1:
CLRA
MOVCA,@A+DPTR
INCDPTR
MOVP7,A
MOVP6,#05H
MOVP6,#04H
LCALLDELAY
DJNZR3,Line1
MOVP7,#0C0H
MOVP6,#01H
MOVP6,#0H
SYSCLK_Init:
MOVOSCICN,#05H
PORT_Init:
MOVXBR0,A
MOVP74OUT,#0F0H
LCD_Init:
MOVP7,#38H
MOVP7,#0EH
MOVP7,#06H
MOVP7,#01H
MOVP6,#00H
repsanjiaobo:
MOVDPTR,#sanjiaobodata
MOVR3,#0AH
Line2:
DJNZR3,Line2
repfangbo:
MOVDPTR,#fangbodata
MOVR3,#07H
Line3:
MOV