基于单片机的函数信号发生器设计_第1页
基于单片机的函数信号发生器设计_第2页
基于单片机的函数信号发生器设计_第3页
基于单片机的函数信号发生器设计_第4页
基于单片机的函数信号发生器设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于单片机的函数信号发生器 设计作者:日期:基于单片机的函数信号发生器设计所用元器件:元器件数量(个)电阻3电容9s t c 8 9 c52 芯片1d ac 0 8 3 2 芯片1max232芯片1按键7op07运算放大器1l e d发光二极管1lcd16 0 2液晶屏幕1晶振1电位器1芯片底座4排阻1电角单电容2排针什跳线基于单片机的函数信号发生器1 .设计目的1 .学习使用k e i l编程,使用al t iu m de s ig n e r绘制原理图;2 .使用单片机产生正弦波、方波、三角波、锯齿波并可通过按键对波形切换、 幅值和频率的调整;3 .学习使用示波器显示波形;2 .设计原理基

2、于单片机的函数发生器原理以 st c 89c51为整个函数发生器的核心部分, 通过编写程序和执行程序,运用示波器显示出四种波形 ,分别是正弦波、三角波、 方波和锯齿波。本设计拥有五个按键,分别实现波形的切换,改变波形的频率和 幅值的大小。芯片dac 0 8 3 2将数字信号转换成模拟信号输出并通过外接运算 放大器op07实现电流向电压的转换,最后通过示波器显示出波形。3 .设计内容4 .1基本设计内容本次设计的主要内容是设计一个基于单片的函数信号发生器实现正弦波、三角波、方波和锯齿波。利用单片机设计程序,使其能够通过按键有效切换四种波 形,并且实现波形幅值和频率的调整满足本设计的要求,进行硬件

3、系统和软件系 统的设计,最后调试完成本次设计。lcd1 6 02液晶显示波形种类、幅值以及频率。频率的可调范围在1 1 0hz, 幅值可调范围在1 5v。显示屏上显示参数,第一行显示波形。第二行左边显示 波形频率,右边显示波形幅值。本设计由五个功能按键,分别进行波形切换,加减幅 值和加减频率。电压在示波器上显示,硬件原理示意图,如图1.1所示。图1 .1硬件原理设计图3. 2模块设计3.1.1 单片机最小系统模块本设计stc8 9 c51为整个函数发生器的核心部分,单片机、时钟电路和复位电路构成单片机的最小系统,如图 2.1所示图2. 1单片机最小系统模块原理图晶体谐振器是时钟电路的重要组成部

4、分, 将晶体谐振器放入电路,上电后它 会产生机械振荡,单片机凭借晶体谐振器的频率运行所设计出来的频率,所以说晶体谐振器的频率是单片机操作时间规律,保证单片机平稳的工作。晶体谐振器 是控制cpu的时钟频率的。频率控制运行速度。晶体谐振器虽然是振荡电路的 一部分,但是它自身不会产生震荡,它会有一个固定的频率,然后与外围电路发 生谐振。谐振的产生需要晶体谐振器固定频率和外围电路的频率一致,如果差距大,或者根本对不上则会使电路不在振荡。 单片机会根据实际所能承受的晶体谐 振器频率来选择自己的运行频率,不会因为晶体谐振器频率快单片机运行就快,频 率慢单片机运行速度就会降低。复位电路包含一个电容、两个电阻

5、包括一个接地电阻和一个复位按键,电容和电阻采用值为10和10k。复位电路让单片机回到原始工作状态,rst复位 引脚高电平有效,高电平有效的持续时间应为24个时钟周期以上,才能有效复位。 根据公式电容的充电时间为 t=r* c ,则电容的充电时间为100ms,充满使得单片 机复位。电容充满,与地相接的的电阻电压、电流都降为零,在开机上电的0 .1s 钟内,单片机系统会自动复位,在单片机工作期间,按下复位按键,电容放电,接 地电阻出现电压,单片机复位松开按键,电容充电,几个毫秒之后单片机开始工作。 3. 2. 2显示模块lcd16 0 2能同时显示32个字符。lcd1 6 02采用的是数据并行接法

6、,特 点主要是使用方便,需要很多的i/o 口,函数发生器设计中i /o 口是够用的,所 以可以使用这种数据传输方式。八位的数据赋给 i/o 口。读取数据时也只要读 取整个i/o 口。lcd16 0 2显示模块,如图2.2所示。图2. 2显示模块原理图3.2.3 d/a转换电路da转换模块由dac0 8 32、o p07运算放大电路组成,d ac 0 83 2作为 函数发生器数模转换模块的核心芯片,转换时间为1 u s,工作电压为+5 v + 1 5 v, 基准电压为正负10v。它主要由两个8为寄存器和一个8位d /a转换器组成, 片内有输入数据寄存器,所以芯片可以直接与单片机相接。dac 0

7、832以电流的 形式输出信号,所以需要在iout后接一个op 0 7运算放大器,把输出电流信号 转换成电压的形式,供示波器显示,在信号输出之前opo 7输出口接一个电阻和一个电容组成一个简单的滤波电路,用来抑制其他杂波,得到正常信号。d/a转换模块,如图2 .3所示。图2.3 d/a转换模块原理图3.2.4 4提供运放电源电路da c 08 3 2输出的是电流信号,要将电流转换成电压,opo 7运算放大器需 要提供正负10 v的电压,在单片机与计算机通信时需要加电平转换芯片 ,max 232可以完成电平转换功能,因此ma x23 2芯片上可以找到正、负电压。根据 测量,max 23 2芯片的2

8、、6引脚分别输出+10v和-1 0v左右的电压,所以可以作 为运算放大器op07的电源电压,分别接在运放两端,ma x23 2芯片,如图2 . 4 所示。图2.4 max 2 32原理图4.硬件设计调试4.1测试仪器为确保硬件和软件的正确性及完善性,需要一些测试仪器进行调试,硬件调试所需仪器如表3. 1所示:表3. 1测试仪器表硬件调试所需仪器数量电脑1台万用表1个usb线1条示波器1台连接板子和示波器的探头线1条4. 2硬件调试过程硬件调试是设计是否能成功的关键,通过调试可以检查板子是否能正确运行以及检测设计功能是否按要求实现。画原理图很多细节需要注意 ,原理图的正确 性很重要,这关系到板子

9、的焊接和实现,原理图布局划线最好规整,本设计需要焊接的元器件不多,但焊接时还是需要认真检查特别注意的, 比如短距离焊点的 焊接方法,或是线与线之间很近,线与焊盘之间距离太小,线细易断等。在线密集 的地方避免焊接在一起,同时还要避免虚焊、短路、断路等现象。按照原理图有 顺序的焊接器件,从低到高焊接,芯片的焊接需要注意,不可将芯片直接焊上。在 焊接的时候看见虚断的线路,需要用焊锡补,在拉焊锡时为了避免影响其他的线 路,在拉完焊锡的路径上进行检测,检查相关电路的连通和无关电路的隔断,找出 问题电路线,并及时改正。在焊完电路以后检查电路的可实际操作性是一定需要的 ,因为在焊接的时候 芯片很容易出现问题

10、,板子上有些元件接口还加有跳线,需要检查是否有正确连 接,有无短路、断路、线的连通性,跳线有没有松动等,对照电路图按照顺序逐 一对照检查。板子实物图,如图 3. 1所示。图3. 1板子实物图上电后,板子上的最小系统的复位按键,按下是否能复位,l ed灯点亮。检 测完毕后在进行下一步的调试工作。板子通电时不要急于把重要的芯片插上,更不能将芯片或电源插反,若电路出现问题很有可能将芯片烧坏。通电后查看显示 屏能否正常显示。若板子出现异常现象,例如异常气味、出现烟雾和器件发烫等 现象,立即切断电源。如果测试没有任何问题,硬件也确定是好的,结束硬件调试下 载正确程序,并连接示波器。(1)板子上电后,通过

11、示波器显示频率为 1hz,幅值为5v的正弦波图3. 2正弦波实现图(2)通过按键,实现频率和幅值的调整,示波器上显示调整后的正弦波波形,频率为5 hz ,幅值为2v。图3 .3正弦波实现图(3)通过波形切换按键,将正弦波波形切换到三角波波形 ,并通过示波器上显示 频率为5hz,幅值为2v三角波波形。图3. 4三角波实现图(4)通过波形切换按键,将三角波波形切换到方弦波波形,并通过示波器上显示频 率为5 hz,幅值为2 v方波波形。图3.5 方波实现图(5)通过波形切换按键,将方弦波波形切换到锯齿波波形,并通过示波器上显示频 率为5hz,幅值为2 v方波波形。图3.6锯齿波实现图4.3 调试所遇

12、问题及解决办法将元器件根据原理图焊接在板子上后, 给板子上电,单片机最小系统没有异 常,液晶显示屏正常,max232芯片在上电几分钟后芯片发烫,立刻切断电源,并 检查原理图各个引脚是否焊接正确,地和电源是否焊接错误,检查有无短路现象, 发现无误,再次上电,其他模块正常运作,max232芯片仍然发烫,断电后将芯片取下,给板子供电,用万用表测量dac0832输出引脚,万用表显示有电流输出, 可以确定d ac 0 8 3 2芯片正常运作。这时将max232换下,换成一个升压模块 电路,对o p 0 7运放提供正负电压,将模块接入后,上电,发现几分钟后升压模块也 迅速发烫,切断电源将模块取下,这时通过

13、查找资料后发现op07正负10v引脚接反,这时将op07运放的正负电源输入端口引脚反过来,将max 2 32芯片的6 引脚与运放op0 7的4引脚相接,之后再将max2 3 2芯片的2引脚与运放op0 7的7引脚相接。4 .4调试结果通过对软件和硬件的检查,反复的修改和调试,上电后,电源指示灯正常亮,l cd 160 2液晶显示屏可以正常显示波形种类、幅值和频率大小,按下按键后,相应的显示屏显示的内容会有所改变, 示波器显示正确的波形,本设计可以手动 复位。5软件调试基于单片机函数信号发生器是由硬件和软件来相互结合实现的,任一部分存在问题都会影响总体功能,达不到预期效果。在本设计确定硬件电路没

14、有问题以 后,就开始对软件的调试了。由于软硬件相互结合,根据题目要求设计硬件电路, 查看相关资料以及整合相关电路功能及性能,将硬件电路设计出来,确定好硬件 电路后,根据要实现的硬件功能,软件设计也会逐步确定下来。根据函数发生器 所要实现的具体功能设计出合理的程序结构。单片机的软件设计调试主要有两种 一是使用软件仿真进行调试,运用计算机软件区模拟单片机环境的指令执行,并 虚拟单片机内部资源从而实现功能演示。另外一种就是通过软硬件结合来进行程 序的调试,使用k ei 1软件编译好程序下载到单片机中,然后在系统中观察软 件功能是否实现。在本次设计中我们先使用prot eus对本设计进行仿真,之后再运

15、用软硬结合下载进单片机的方式完成本次设计。6.心得体会为期两周的单片机实训结束了,我们小组学到了很多东西。随着电子技术的 发展,特别是随着大规模集成电路的产生,给人们的生活带来了根本性的变化, 我们学习了单片机这门课程,感觉是有点难,不过在学习中,我才发现学习单片 机不仅仅需要软件的知识,还需要硬件的知识。单片机是一门很好的学问,需要我们去钻研它。说起本次设计,我认为最重要的就是做好设计的预习,认真的研 究老师给的题目,选一个小组成员都感兴趣的题目。其次,老师在实验课上的讲解要认真的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明 白,就迷迷糊糊的去选题目做设计,到头来一点收获也没

16、有。最后,要重视程序 的规范,便于修改,也要注重程序的调试,掌握其方法。在全组人竭尽全力,程序 编写成功,这是我们共同努力的结果,在享受我们成果之时,不得不感慨单片机 的重要性,所以为期两周的单片机课程设计没有浪费我们学到了很多知识,本次 设计和课堂上老师所讲的内容有所相似,需要我们在结合所学只是上进一步开 华。也让我们对单片机有了更深一步的了解,虽然最后结果是出来了,可这与老师的精心指导是分不开的她引导我们的思路,所以老师是功不可没的。总而言之, 单片机课程设计对于我们有很大的帮助,我们从中受益匪浅。附录1原理图l好”inufx 】mumh* kh0jti?lt tl隔u-lch.-r i

17、ilk1 2c h./i i j-jhk.mhi fl n icdl|-jciii|ii,皿 i.yhbhri iifxami tj litktili 再 jlml) f7 4itj- 则划 f5加51lvft 眼m、irauxeliirviw x附录2源程序# i ncludereg52.h#d e f i ne u char unsign e d char#defin e u i n t u n signed i n tsb i t k ey1=p1a0 ;sbit k e y2=pl 1;sbi t k e y 3 =p 1 人2;sbi t key 4= p 1 人 3;sbit ke

18、y 5 = p1 a 4;sb i t lcden=p3 人 4;s b it icdr s =p 3 人5;sbit dacw r =p3a6;uch ar flag , freq, s iz e ;/分别用来标记波的种类、频率 hz、幅值vuchar num,key;定义数组元素、以及是否有按键按下ui n t va 1 ue;/定时器装初值uch ar l c d_ ta b l e = wave:;uch a r lcd_tab 1 el 口 =fre :;uch ar lcd_ta b le2口 = amp:;uchar 1 c d _t a ble3= sin; /lc d 波形种

19、类数组 u char code sin_table 6 4=0 x 00,0x03,0x06,0x0a, 0 x10,0x17,0x1e,0 x 27, 0 x30,0x3 b ,0x46,0x5 1,0x5d , 0 x 6 9, 0 x 76, 0x 8 3 ,0x 8 f,0x9c,0xa8,0x b 3 ,0xbf,0xc9, 0 x d 3,0 xdc, 0 x e 4 , 0 x e c, 0 xf2 , 0 x f 7, 0xfb , 0xfe,0x f f,0xff,0x f f,0 x f c,0 x f 9,0x f 5,0xef,0x e 8,0x e 1,0xd8,0x

20、c e,0xc4, 0xb9, 0xa e,0xa2,0x96,0x89, 0x7 d ,0x 70,0x 6 4,0x58, 0x4c,0x 4 1, 0 x36,0x2 c , ox 23,0x1b,0 x 1 4, 0 x0d,0x08 ,0x0 4,0x01,0x 0 0 ,0 x 00 ;/正弦波uchar code tr i _ tab le64 = 0 x 0 0,0 x 0 8 ,0x1 0 ,0 x18,0 x 20, 0 x 28, 0 x30,0 x38,ox4o,0 x48 ,0x50, 0 x58, 0 x60,0x68,0 x 70,0x78,0x80,0x 8 8

21、, 0x90,0 x 98, 0 xao ,0 x a8, 0xb0,0xb 8 ,0xc0,0xc 8 ,0xd0, 0 xd 8,0x e 0,0 x e8,0xf 0 , 0 xf8,0 x fe,0xf6 ,0xee,0xe6,0xde,0xd6 ,0xce,0 x c6,0 x be, 0 xb6,0xae,0 x a6, 0 x 9 e, 0 x9 6 ,0x8e,0 x 86, 0x7e ,0x76,0x6 e , 0 x66,0 x 5e,0x56,0x4e, 0 x46, 0x3e,0x36,0x2e,0x26,0x1e,0x1 6 ,0x 0 e , 0 x 06;三角波u

22、cha r cod e z i g_ t able 64= 0x0 0 ,0x04,0 x 08,0 x 0 c , 0 x1 0 ,0x 1 4 ,0x 1 8,0x1 c ,0x20,0 x 24, 0 x 2 8, 0 x2c, 0 x30,0x 3 4,0x38,0x3c,0x40,0x44 , 0 x4 8 , 0x4c, 0 x 5 0 , 0 x 54, 0 x5 8 ,0 x 5 c ,0 x 60,0 x 6 4 ,0 x 68,0x6 c , 0x7 0 ,0x 74,0 x78, 0 x 7 c, 0 x80,0 x 84,0x 8 8, 0 x8 c , 0 x9 0

23、, 0x94,0 x 98, 0 x9c,0 x a0,0xa4,0x a 8,0x a c, 0xb0 , 0x b 4,0 xb8 , 0xbc, 0 xc0,0 x c4, ox c8, 0 x cc,0 x d0, 0 xd4,0 x d8, 0 x dc, 0 x e 0 , 0xe 4 ,0x e8,0x e c , 0xf0,0xf 4 , 0 xf8 , 0 x f c ;/锯齿波u c har code squ _tab 1 e64 =0x00,0x00, 0 x0 0,0 x 00,0x 0 0 ,0x00,0x0 0 ,0 x 0 0,0x 0 0,0 x0 0,0 x

24、0 0, 0 x00, 0 x00,0x00,0x 0 0, 0 x 00, 0x00 ,0x00,0x 00, 0 x00,0x 0 0,0 x 00,0x00,0x00,0x00, 0 x0 0 , 0 x 00,0 x 0 0 ,0 x00,0x00,0x00,0 x 00, 0xff,0x ff,0x ff, 0 x f f,0xff,0xff,0 x f f ,0xff , 0xff, 0 x f f,0xff , 0xff, 0xff , 0xf f ,0x f f, 0 xff,0x f f,0xff,0xf f , 0 xff,0 x f f ,0xff,0 x f f,0xf

25、 f ,0xff,0xf f,0x f f,0 x f f,0xff,0x f f ,0xff,0 x ff ;/方波v oid delayms( ucha r xms)u char i,j;for(i=xms;i 0;i-)fo r ( j =11 0; j 0;j-);void writ e _ com (ucha r com)/液晶写指令lcdrs=0;p0=com;del a yms(2);1cde n=1;d e laym s ( 2);lcde n =0;v o id wri t e _data(uc har date)液晶写数据lc d r s = 1 ;p 0=da t e;d

26、el a yms(2);lcd e n=1;delaym s ( 2 );l c d e n= 0;v oid l c d_init()液晶初始化1 cd e n=0;w rit e _com(0 x 3 8 );writ e _com(0 x 0c);wr i t e _com (0 x 06);write_com(0x 0 1);void init()key =1;value=15625;按键标志位、定时初值 (1450微秒为人工减小误差值)初始化fl a g = 1 ; f re q=1;siz e = 5; 变量初始化,初始产生正弦波,频率为 1hz,幅值为5 vd acw r= 0

27、;/0832 初始化tm o d= 0 x0 1 ;定时器t0初始化th 0 =(65 5 36-value + 1 4 00 ) /2 56;频率为 1 hz 时,每点之间隔 1 5625 微秒tl0=(65536 v a 1 ue+1 4 0 0 )% 256;ea=1;et0 = 1;tr 0 = 1 ;void keyscan ()i f( key 1 = = 0)/kc y1 选择波形delayms (5);if(k e y 1 =0)whi 1 e(!key1);key= 1 ;f 1 ag + +;?/fl a g为1、2、3、4时,分别对应正弦方波、三角方波、锯齿方波、方波if

28、 (fl a g = 5) f lag = 1;i f(key2= = 0) 频率增大d elaym s(5);i f( k ey2= 0 )w hile(!key2 );k e y= 1;f req+ +;if(freq 10)f req=l;valu e = 1 0 00000/(freq * 64);if ( k ey3 = = 0)/频率减小d elaym s (5);if(ke y 3 =0)whil e (!k e y3);k ey= 1;fr e q-;i f (freq5) s ize=1;if ( k ey5=0)/幅值减小d elay m s (1 0 );i f(key 5 =0)while(!key5);key = 1;siz c ;i f (siz e 1)si z e= 5;v o idg ene_w a ve()s w i t ch( f la g )c ase 1 :p2 =sin_tablenum * s ize/5;lcd_t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论