用单片机进行方波发生器的设计_第1页
用单片机进行方波发生器的设计_第2页
用单片机进行方波发生器的设计_第3页
用单片机进行方波发生器的设计_第4页
用单片机进行方波发生器的设计_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、湖南文理学院课程设计报告课程名称:单片机课程设计报告院部:电信学院专业班级:自动化05101班学生姓名:刘明彪指导教师:杨民生完成时间:2008年06月17日报告成绩:评阅意见:评阅教师日期2目录一、 概述31.1、 设计内容31.2、 设计的基本要求3二、方波发生器设计方案 42.1、 方案介绍42.2、 方波发生器的原理与功能 4三、系统的硬件设计63.1、单片机最小系统63.2、小键盘接口电路73.3、LED显示电路7四、系统的软件设计84.1、主程序84.2、 系统初始化子程序 94.3、显示子程序 94.4、键盘扫描程序104.5、 定时器中断子程序 11五、调试与性能分析 125.

2、1硬件调试125.2软件调试12六、 设计体会13参考文献14附录A:基于单片机方波发生器的原理图 15附录B:基于单片机方波发生器的程序清单 163方波发生器设计一、概述单片机集成度高、功能强、可靠性高、体积小、功耗地、使用方便、价格低廉等一系列优点,目前已经渗入到人们工作和生活的方方面面,几乎“无处不在,无所不为”。单片机的应用领域已从面向工业控制、通讯、交通、智能仪表等迅速发展到家用消费产品、 办公自动化、汽车电子、PC机外围以及网络通讯等广大领域。单片机有两种基本结构形式:一种是在通用微型计算机中广泛采用的, 将程序存储器 和数据存储器合用一个存储器空间的结构,称为普林斯顿结构。另一种

3、是将程序存储器 和数据存储器截然分开,分别寻址的结构,一般需要较大的程序存储器,目前的单片机 以采用程序存储器和数据存储器截然分开的结构为多。本课题讨论的方波发生器的核心是目前应用极为广泛的51系列单片机。1.1、设计内容本课程设计是设计一个方波发生器,用 4位数码管显示方波的频率。1.2、设计的基本要求频率可调,用一个变阻器来调整波形的频率,频率调节范围为20Hz2000Hz;占空比可调,采用两个按键来实现增加、减小波形的占空比作用,占空比调节步长 为1%,即每按键一次,占空比增加或减少 1%。占空比用另外两位数码管显示。系统上电时频率依变阻器的阻值设定,占空比设定为50%。而我们在此设计的

4、方波发生器与要求要设计的有点区别,所设计的频率调节范围为 1Hz15000Hz,以调节变阻器的阻值来实现频率的调节相对来说要麻烦些。因此,频率 也使用按键来进行调节,不同的频率及占空比可以使用不同的按键来实现,而以键盘扫 描来实现各键的不同功能;显示部分可以使用ZLG7290芯片及数码管来实现。由此即可构成一个最小单片机应用系统。、方波发生器设计方案在电子技术领域中,实现万波发生器的万法有很多种,可以采用不同的原理及器件 构成不同的电路,但可以实现相同的功能。在此次设计中,有些地方与课题原本的具体 要求有点不同。如实现频率调节时,不是按要求利用调整变阻器的阻值来完成的,而是 用按键来实现的。2

5、.1、方案介绍微处理器模块AT89S52,频率与占空比信息显示模块,2X 4矩阵键盘模块,74LS164 移位寄存器显示驱动模块。本设计中用到两个定时器,定时器0和定时器1,其中定时器 0工作在定时方式下,决定方波的频率;定时器1同样工作在定时方式下,用于设定占空比。用LED显示器来显示频率与占空比,键盘的操作是通过外中断与单片机共同来控 制的,键盘操作来完成按要求对频率与占空比进行调节。2.2、方波发生器的原理与功能方波发生器的原理方框图如图1所示频率与占 空比数据单片机89S52频率与占空比数据LED显示图1方波发生器原理框图由于系统的要求不高,比较单一的,再加上我们是通过定时器来调节频率

6、的,而非电阻,因此实现起来就相对简化了。仅用键盘、AT89S52及串行显示便可完成设计,达到所要求 实现的功能 方波发生器工作原理与功能:简单的流程为:主程序扫描键盘,将设置信息输入,处理后,输出到LED显示器显示。单片机的晶振为11.0592MHz,用到了两个定时器,即定时器 0与定时器1,分别进 行频率与占空比的定时,两个定时器都是工作在方式1。根据计算定时器初值的公式:TC =2lOSC12计算出定时器0与定时器1所要装入的初值。频率及占空比的显示电路由74LS164构成的驱动电路和LED数码显示管组成,利用 八个数码管来显示,有五位是用来显示频率的,有两位是显示占空比的,在频率与占空

7、比显示管中间有一个LED数码管是用来显示“一一”的,用以区分频率显示与占空比显 示的。此电路的键盘是由一个状态键,四个功能键(调节频率与占空比的增减)组成,其 特殊之处在于利用外部中断实现键盘扫描。状态键有三种状态,当其处于状态0时,则其它的键会处于无用状态,当其处于状态 1时,可通过按四个调节键来调节频率,处于 第三种状态时,按四个调节键中的前两个便可对占空比进行调节了。三、系统的硬件设计3.1、单片机最小系统单片机各功能部件的运行都是以时钟频率为基准的,有条不紊地进行工作。因而时 钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用 的时钟电路方式有两种:一种是内部

8、时钟方式,一种是外部时钟方式,这里采用的是内 部时钟方式,外接晶振。时钟电路由片外晶体、微调电容和单片机的内部电路组成。选 取频率为11.0592MHz的晶振,微调电容是瓷片电容。89S52单片机的P0.7 口作为波形输出口,若接示波器,则可通过示波器来观察波形, 是一个矩形波。此单元电路包括时钟电路、复位电路,具体电路如图2所示:Ub15810111314151617181920GND34图2单片机最小系统XP1波形输出3.2、小键盘接口电路小键盘如图3所示。它包括8个键,系统中用到的键只有5个,分别为0号、1号、2号、3号、4号键。其中0号键是状态键,采用外部中断控制,用它来确定其它几个键

9、 的按键功能,具体作用在前述的系统功能中已做介绍了;另外4个键为功能键,调节频率与占空比的。小键盘中引出的 6根线依次分别接单片机的 P1.0、P1.1、P1.2、P1.3、P1.4、P1.5 口。图3小键盘接口电路3.3、LED显示电路采用静态显示来实现显示功能,如图 4所示。移位寄存器74LS164,实现串行输入, 并行输出。串行数据由RXD俞出,从74LS164的A、B端口输入寄存器,移位时钟由TXD 提供。在移位时钟作用下,存放显示器段码的串行发送缓冲器数据逐位由A、B端移入到74LS164中,再由Q0到Q7并行输出到显示数码管相应的 LED上。8片74LS164首尾相串, 而时钟端则

10、接在一起。这部分的最终功能是显示频率与占空比。显示部分具体电路如图4所示:m oa1ii=a1mgH器led i.jm e qP牡ao A2 j cJ>qjj榊a q 3 袒 AOUQ I r E V74 4J u< P3 O |o玄 S 0 0 ycyc/cy 74 開y8A口m一VecGN号 60 6 jDVc加tGNDE COJ t Jcn doLED-0蛊?mqtjp cdj3jz!£D30黔Jo/o,o,c3/o,o,o,J IS a8< fu o |o >cHc74 54 c-dziircn 寸gw yc/cxicxc/ccHO .S IS u8i

11、 ca <_> |r_i >OtjJ/ 74liedi卄rM g &-Kr| II i-lVecGND1 C5pi 闪 6| 巴4 二 |VecGNr D图4 LED显示电路四、系统的软件设计方波发生器的软件设计包括主程序、延时子程序、系统初始化程序、显示子程序、 键盘扫描程序、定时器中断子程序。其中主程序用来控制整个程序的执行,它与各子程 序紧密相联,共同实现方波发生器各种功能的执行。4.1、主程序主程序包括系统初始化及显示程序,是一个死循环系统。其流程图如图5所示:9#图5主程序流程图#4.2、系统初始化子程序在此程序中,给所有变量赋初值,有键盘扫描口、选择串行口

12、工作方式 SCON状态 标志位flag、初始频率与占空比及其定时、定时器 0与定时器1的工作方式等。初始化 时启动了定时器0与定时器1。4.3、显示子程序利用分离频率的各位数值,将各位数值分别显示出来。在程序中利用了频率显示的 高位灭零的方法以致最高位为 0时就不显示,以致显示效果美观化。一共有五位是显示 频率的,若频率小于10000时,则万位不显示;若频率小于1000时,则万位与千位都不 显示,依次类推。占空比的显示规律与频率的一样。显示子程序流程图如图6所示:图6显示子程序流程图4.4、键盘扫描程序键盘扫描用外中断0实现,采用的是线反法,键盘扫描码采用逐行扫描的方法。关于键盘扫描程序的说明

13、:频率可调时,占空比保持原状不变,反之亦然,只能进行单一变量的调节,状态标志flag的初始值为0。(1)频率调节:i=0 时,按键为状态键,此时flag加1,即flag=1,此时进行频率的调节。可以进 行加1Hz、减1Hz、加100Hz减100Hz操作,分别由1号键、2号键、3号键、4号键控 制。如果按住某个键不放,便会执行连续加值或减值操作。这里的频率的最大值为 15000Hz当频率增至最大值时,还按增值键,此时频率会自动跳到1Hz开始继续增加。同理,频率的最小值为 1Hz,当减频率减至最小值时,再按减频率键,则频率会跳到 15000Hz(2)占空比调节:当状态值flag= = 2时,此时频

14、率保持不变,进行占空比调节。只可进行加1与减1操作,分别由1号键、2号键控制。要注意的是占空比的初值是50%,我们定义的ZKB为50 (百分比的分子部分,为一 整数),故调节占空比时,ZKB会进行加1,减1操作。ZKB的最大值为99,当增到最大 值时,便会返回到值1,如此循环。(3)为了减轻单片机的工作量,在软件设计中采取了这样的措施,在修改参数确定 后才进行定时器初值TC0 TC1的计算。键盘中断处理子程序流程图与键处理流程图分别如图7、图8所示:EA=O外部中断0入口i=0?软件延时消抖YN是否为抖YNFlag=1NFlag+=1 4i=1 PL+ih-边;O DIfc-界i 2 PL-i

15、-3 PL+-100处W理!4i=4 PL-100%IF边界处理11 ri-1 ZKB+T查表取,键值iFiag-2?ri-2 ZKB-1'键盘扫描,得到键码NYNFlag=0,计算定时器0和1的初值Flag=3?实时显示1r键盘口初始化1fEA-11r键处理5结束键处理结束图8键处理流程图图7键盘中断处理子程序流程图4.5、定时器中断子程序定时器中断子程序中有定时器 0与定时器1中断,频率定时器0中断流程图与占空比 定时器1流程图分别如图9、图10所示。(1) 定时器0遇中断执行的操作有复位,启动自身进行频率定时,同时启动定时器1, 进行占空比定时,输出高电平。(2) 定时器1遇中断

16、,停止自身的计时,输出低电平。图9频率定时器0中断流程图10占空比定时器1中断流程五、调试与性能分析5.1硬件调试硬件的测试首先是检查电路的逻辑线路是否正确,如果正确再检查原理图的线路连接是否正确,电路的布局安排是否合理等等。软件的测试只要是检查程序的语法是否正 确,数据结构安排是否妥当,时序是否正确,整体流程安排是否合理。上面两部检查妥 当后,就到了系统调试最关键的一步,软硬件的协同调试,问题往往在此才能被发现。5.2软件调试在软硬件协同调试时,硬件问题比较少,主要体现在上拉电阻的使用,滤波电容的 使用等,极少发生逻辑上的错误。硬件的问题往往是致命的问题,其不易察觉,发现之 后电路更改也不容

17、易。这就需要我们不断的实验,在实战中摸索出规律,吸取经验教训,在以后的电路设计中能设计出稳定的抗干扰能力强的电路。软件问题是调试中遇到问题 最多的,此系统中出现过的问题有以下几处:1、键盘中断处理程序中中断入口后,没有关掉外部中断,出现键值读取不正确, 不能正确操作键盘。解决方法,在中断入口处关掉外中断,并在出口时再开外中断;2、键盘扫描前没有软件延时消抖,出现键值读取不准确。解决方法,在键盘中断 入口后在键值扫描前软件延时5ms消去键盘抖动所带来的误操作;3、程序中有个别地方将“=”与“=”混淆,造成结果不准确,解决办法,仔细查 找,将混淆出更正。再把到计时设定时子程序加进来,看是否能通过菜

18、单正确调用,返回。能否修改到 计时。整个调试完毕。六、设计体会在单片机课程设计中,我不仅加深了对单片机理论的理解,将理论很好地应用到实 际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自 己。更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。设计过程,也 好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢 过,也战胜了,胜利的钟声也就一定会为我们而敲响。但是,由于平时对单片机知识学习得不够扎实,理解得不够透彻、一知半解,致使 在运用是不能贯通,导致在设计过程中困难重重,往往无从下手,但是通过和同组的同 学一起探讨,最后还是一步一步的

19、把所有的问题给一一解决了。在这次设计过程中,我 也对word、protel、画图板等软件有了更进一步的了解,这使我在以后的学习中更加熟 练。总之,本次单片机课程设计让我悟出了许多东西:第一,就是对资料的搜索、整理、 归类、总结、保存的能力是一个至关重要的个人能力。如果没有这种能力,在大学学习 阶段,那么我们的学习将会是一种负担;今后我们走出校门,甚至在整个人生阶段,也 将会碌禄无为;第二,我们要学会坚持不懈,不轻易言弃,这对于我们非常的重要。如 果我们没有这种精神,一旦我们遇到一点挫折,我们也许就会被打败,以后进入社会就会没有我们的立足之地。因此,我们要珍惜大学时光,循序渐进的培养这些能力,这

20、样 才不会被瞬息万变的时代所淘汰。参考文献1 何立民.MCS51单片机应用系统设计M.北京:北京航空航天大学出版社,2003.2 徐君毅.单片微型机原理与应用M.上海:上海科技出版社,19953 公茂法.单片机人机接口实例集M.北京:航空航天大学出版社,1998.沈红卫.基于单片机的智能系统设计与实现M.北京:电子工业出版社,2005. 李广弟,朱月秀等.单片机基础M.北京:北京航空航天大学出版社,2003.15附录A:基于单片机方波发生器的原理图J8LED1LED2LED3deDf3LED4DN Gcc VdaLED5DN Ge L -cdLED6LED7DN GecdXP2XP;电源输入1

21、 2 3 4 5 6 7 Q Q Q Q Q Q QKRcDLLcNACBCVG1 2 3 4 5 6 7 Q Q Q Q Q Q QK RcDL LcNACB CVG891 2c c Vc c Vg hg ha b cdeEa b c d e fD N Gc c Vg he fa b ca b c)1 2 3 4 5 6 7 Q Q Q Q Q Q Q Qc c Vg hh)1 2D N G cc V rlcB klcAQ Q Q Q Q Q QVcc GND1289'l !_JVccGNDKRcDLLCNACBCVGVcc0GNDccwU10B44.w s - s -3S s- w

22、Bs<W1s W1B7-W1 ; ssVcc :C14 _1A1Y1B2A1C2B1D2CVcc2DNCNCGND2Y8 XP21211109GND CD4012INTO01 234567QQ QQQQQQKRD1LcNACBCVGc Vg hgGa b c def7 Q6 Q5 Q4 QD NGcc V3 Q2 Q1 QD Qrlc klhA80 1 23456 7Q Q QQQQQ QKRcDLLcNACBCG8164IU974164U62122GNDMAX708 C133627P1.0VccP1.1P0.0P1.2P0.1P1.3P0.2P1.4P0.3P1.5P0.4P1.6P0

23、.5P1.7P0.6RSTP0.7RXDEATXDALEINT0PSENINT1P2.7T0P2.6T1P2.5WRP2.4RDP2.3XTAL2P2.2XTAL1P2.1VssP2.0262523241234567891011121314151617181920XP1波形输出89S52GND17附录B:基于单片机方波发生器的程序清单#in clude<reg51.h>#in clude< intrin s.h> #defi ne uchar un sig ned charc=10;#defi ne uint un sig ned int#defi ne KEY_POR

24、T P1 sbit OutPut=P0A7;/*设全局变量*/float fosc=11059200; / float len gth=65536; / uchar flag;/uchar ZKB;/uint PL;IIP1口为键盘扫描口矩形波输出口系统时钟频率方式1计数长度状态键标志占空比频率c=10;#uchar TIMER0_L,TIMER0_H,TIMER1_L,TIMER1_H; II 定时器 0 和 1 的定时初值uchar code tabl12=0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0x00; IILED共阴极代码u

25、char code tabl218=0x11,0x12,0x14,0x18,0x21,0x22,0x24,0x28,0x41,0x42,0x44,0x48,0x81,0x82,0x84,0x88;II键值表I*延时子程序*Ivoid delay1ms(uchar n)II 延时 n msuchar j;while( n-)for(j=0;j<122;j+) ; I*系统初始化*Ivoid systemn it(void )KEY_PORT=0x0f;SCON=0x00;flag=0;PL=1000;ZKB=50;TL0=0x66;II 初始频率1KHz定时1msTH0=0xfc;TL1=

26、0x33;/ 初始占空比50定时0.5msTH1=0xfe;TMOD=Ox11;/定时器1和定时器0工作在方式1,的定时模式IT0=0;/选择INTO为低电平触发方式EX0=1;/外部中断0允许ET0=1;/定时器1和定时器0中断允许ET1=1;EA=1;/系统中断允许TR0=1;/定时器1和定时器0开始定时TR1=1;/*发送数据*/void sen d(uchar d)SBUF=d;while(!TI);TI=0; /*显示子程序*/void display(ui nt PL,uchar ZKB)uchar a,b,c,d,e,m, n;a=PL/10000;II分离频率的各位数值b=PL

27、/1OOO;b=b%10;c=PL/100;c=c%10;d=PL%1OO;d=d/10;e=PL%10;if(a=0)/ 频率显示的高位灭零a=10;if(b=0)b=10;if(c=0)c=10;19if(d=O)d=10;if(e=0)e=10;m=ZKB/10;II分离占空比各位数值n=ZKB%10;if(m=0)m=10;/if(n=0 )n=10;占空比显示的高位灭零sen d(tabla); sen d(tablb); sen d(tablc); sen d(tabld); sen d(table);sen d(0x02); sen d(tablm); sen d(tabl n)

28、; delay1ms(200); delay1ms(200);/频率和占空比中间加一横线“-”以示区别/延时开键盘中断,处理好(避免又利用)连击问题2021/* 键盘扫描(线反法)*/void Key_Sca n() in terrupt 0/uchar sca ncode,keycode,i;float TC0,TC1;EX0=0;/delay1ms(5);sca ncode=0xef;/while(sca ncode!=0xff)KEY_PORT=sca ncode;/keycode=KEY_PORT;/if(keycode&0x0f)!=0x0f) break; / sca nc

29、ode=(keycode<<1)|0x0f; / keycode=keycode;for(i=0;i<8;i+)if(tabl2i=keycode)break; /键盘扫描用外中断 0 关中断键盘扫描码,采用逐行扫描的方法输入扫描码,扫描 P1.4对应的行读出数据,看是否在此行上的某列键盘被按下扫描到按下的键,则退出否则,更新扫描码继续扫描取得键号#TC1=(le ngth-(fosc*ZKB)/(12*100*PL)+0.5); /if(i=O) flag+;if(flag=1)if(i=1)PL+;if(PL>15000) PL=15;if(i=2)PL-;if(PL<15

温馨提示

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

评论

0/150

提交评论