设计并实现占空比可调的信号发生器_第1页
设计并实现占空比可调的信号发生器_第2页
设计并实现占空比可调的信号发生器_第3页
设计并实现占空比可调的信号发生器_第4页
设计并实现占空比可调的信号发生器_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、武汉理工大学单片机原理与应用课程设计说明书目录1 仿真软件介绍11.1 Proteus软件介绍11.2 Keil软件介绍12 设计原理和方案12.1方案的选择和设计12.2 设计原理22.3 系统硬件线路图设计图3 2.3.1 51单片机介绍32.3.2 LCD1602简介42.3.3 系统硬件电路简介5 3系统软件设计6 3.1 主程序6 3.2 系统初始化子程序6 3.3 键盘扫描程序73.4 系统的资源分配表73.5 源程序84 系统软件仿真135 性能分析155.1定时器中断分析155.2系统性能分析155.3误差分析156 心得体会167 参考文献171 仿真软件介绍1.1 Prot

2、eus软件介绍Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设

3、计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。1.2 Keil软件介绍Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开

4、发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。2 设计原理和方案2.1方案的选择和设计方案一:采用分立器件实现非稳态的多谐振荡器,然后根据具体需要加入积分电路等构成矩形等波形发生器。这种信号发生器输出频率范围窄而且电路参数设定较繁琐,其频率大小的测量往往需要通过硬件电路的切换来实现,操作不方便。方案二:用集成芯片实现函数信号发生器。这种信号发生器。这种信号发生器能产生

5、多种波形信号,可以达到较高频率,但电路复杂并且不易调试。方案三:采用单片机编程的方法实现。该方法可以通过编程,来控制方波信号输出的频率和幅度,并且只要改变程序的相关参数,便可以改变输出波形的频率和占空比。由于编程的方法产生的是数字信号,所以信号的精度可以做到很高。并且电路简单。方案四:利用专用直接数字合成DDS芯片实现函数信号发生器。这种信号发生器能产生任意波形并且达到很高的频率,但成本较高。综合成本和性能等多方面因素,本例采用第三种方法,即采用单片机编程的方法实现占空比可调,频率可调的方波信号发生器。2.2 设计原理在此次课程设计中,利用AT89C51单片机,软硬件结合,实现占空比和频率可调

6、,案件的操作是通过数字电路跟外部中断0来控制的。可以输出占空比在1%到99%可调,精度为1%,频率范围在50HZ到500HZ可调,精度为10HZ的方波。AT89C51单片机是整个波形信号发生器的核心,通过程序的编写和执行,可以产生可以调节的方波,并受到按键的控制,增减频率和占空比。并且在液晶上显示出来。定时器0工作再方式1下,决定输出信号的频率,定时器1工作再方式1下,决定输出信号的占空比。按键1和2决定信号的输出频率,按键1用于增大信号的频 率,按一下就增加10HZ,当增减大500HZ时,就归为50HZ。按键2用于减小输出信号的频率,按一次键,输出信号的频率减少10HZ,当减少到 50HZ时

7、,频率就归于500.按键3和4决定信号的占空比,按键3用于增加信号的占空比,按下一次键,占空比就增加1,上限值为99,当在此按键是,就 让占空比归1.按键4用于减小信号的占空比,按下一次键,占空比就减1,下限值为1,当再次按键时,就让占空比回归到99.通过上面的步骤,可以实现占空比和频率的可调。液晶则选用LCD032L,可直观的看到频率和占空比。信号发生器原理框图如图1 :单片机AT89C51LCD显示按键或按钮频率与占空比数据频率与占空比数据图1信号发生器原理框图2.3 系统硬件线路图设计图2.3.1 51单片机介绍51单片机是对目前所有兼容Intel 8031指令系统的单片机的统称。该系列

8、单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是52系列的单片机一般不具备自编程能力。 当前常用的51系列单片机主要产品有: *Intel的:80C31、80C51、87C51,80C32、80C52、87C52等; *ATMEL的:89C51、89C52、89C2051等

9、; *Philips、华邦、Dallas、Siemens(Infineon)等公司的许多产品 目前,国产宏晶STC单片机以其低功耗、廉价、稳定性能,占据着国内51单片机较大市场。主要功能有:8位CPU·4kbytes 程序存储器(ROM) (52为8K) 图2 51单片机的引脚图256bytes的数据存储器(RAM) (52有384bytes的RAM) 32条I/O口线111条指令,大部分为单字节指令 21个专用寄存器 2个可编程定时/计数器5个中断源,2个优先级(52有6个) 一个全双工串行通信口 外部数据存储器寻址空间为64kB 外部程序存储器寻址空间为64kB 逻辑操作位寻址功

10、能·双列直插40PinDIP封装 单一+5V电源供电 CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器; RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据; ROM:用以存放程序、一些原始数据和表格; I/O口:四个8位并行I/O口,既可用作输入,也可用作输出; T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式; 五个中断源的中断控制系统; 一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信; 片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率为1

11、2M。2.3.2 LCD1602简介工业字符型液晶,能够同时显示16x02即32个字符。(16列2行)1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于

12、市面上大部分的字符型液晶。 图3 LCD1602引脚图1602采用标准的16脚接口,其中: 第1脚:VSS为电源地 第2脚:VDD接5V电源正极 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。 第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 第6脚:E(或EN)端为使能(enable)端。 第714脚:D0D7为8位双向数据端。 第1516脚:空脚或背灯电源。15脚背光正极

13、,16脚背光负极1602LCD的特性:+5V电压,对比度可调,内含复位电路提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能。有80字节显示数据存储器DDRAM,内建有192个5X7点阵的字型的字符发生器CGROM,8个可由用户自定义的5X7的字符发生器CGRAM。2.3.3 系统硬件电路简介系统硬件电路原理图如下图2所示:四个独立按键分别与单片机P1.0,P1.1,P1.2,P1.3相连接,并且通过一个四输入的与门,将与门的输出当做单片机外部中断0的触发信号。当有按键按下时,就会进入外部中断程序。P1.4口输出信号连接到示波器,检测输出波形。通过单片机的PO口连接到LCD01

14、6L的数据段,用以显示波形信号发生器的频率和占空比。图4系统硬件电路原理图3 系统软件设计软件是该LCD显示控制系统的重要组成部分,在软件的设计中,我们采用了模块了设计,将各部分功能编写为子模块的形式,这样增加了程序的可读性。3.1 主程序主程序用于控制整个系统,先对系统初始化,然后通过一个空循环等待中断程序,当中断到来时候,就进入中断程序,执行中断程序。中断程序执行完成之后,就返回主程序,继续等待。3.2 系统初始化子程序在此程序中,给所有变量赋初值,特别是T0,T1的初始值使产生方波的频率为50Hz,占空比为50%,且在LCD016L上显示出来。3.3 键盘扫描程序键盘扫描用外部中断0实现

15、,用以分析是哪个键盘被按下,然后在实现所要的功能。关于键盘扫描程序的说明:频率可调时,占空比保持原状不变,反之亦然。(1)频率调节当按下键1的时候,会转到外部中断0子程序,判断之后,会改变其中变量fre的值,然后分别将T0,T1按要求重新赋初始值,然后再在液晶上实时刷新。即可改变即加10Hz,当加到最大值500Hz时,继续按下键1,将会回到最小值50Hz上。同理按下键2,频率值将会减10Hz,当减到最小值50Hz,会回到最大值500Hz上。(2)占空比调节当按下键3,进入到外部中断0子程序,判断却是按下后,改变zkb(即占空比),然后改变定时器的初值。实时刷新,同频率调节,占空比也需要进行限制

16、。要注意的是频率和占空比的初始值都为50,我们定义的占空比为百分比的分子部分。键盘处理子程序,当有按键按下时,进入到外部中断,然后暂时关闭外部中断,启动延时程序,以消除抖动。然后检测是哪个按键被按下,然后对频率跟占空比的变量做出相应的赋 值,并且将占空比的值送到数码管显示。并且对定时器0和定时器1分别赋新的初值,开启外部中断,定时器0和1中断,中断程序结束。3.4 系统的资源分配表系统的资源分配表如表1所示:表1系统资源分配P0P1.0P1.3P1.4P3.2液晶数据线按键接口方波信号输出口外部中断0触发引脚3.5 源程序#include <reg51.h>#define ucha

17、r unsigned char#define uint unsigned intfloat fosc=12000000; /系统时钟频率sbit key1=P10; /控制频率的增加sbit key2=P11; /控制频率的减少sbit key3=P12; /控制占空比的增加sbit key4=P13; /控制占空比的减少sbit LCDEN=P34;sbit RS=P35;sbit clk=P14;uchar num;uchar code table1="FRE(Hz):"uchar code table2="DUT(%):"uint zkb=50;

18、/占空比初值,取值范围为0到100uint fre=50; /频率初值,取值范围为50到500uint time0_H,time0_L,time1_H,time1_L;void delay(uint z) uint i,j;for(i=z;i-;i>0)for(j=110;j-;j>0);void write_com(uchar com)RS=0;P0=com;delay(5);LCDEN=1;delay(5);LCDEN=0;void write_data(uchar date)RS=1;P0=date;delay(5);LCDEN=1;delay(5);LCDEN=0;void

19、 init() /方波产生TMOD=0x11; /定时器0和1都工作在方式1(高8位与低8位)time0_H=0xB1;time0_L=0xE0;time1_H=0xD8;time1_L=0xF0;TH0=0xB1; /定时器0装入初值,计数器计数20000次,20msTL0=0xE0;TH1=0xD8; /定时器1装入初值,计数器计数10000次,10msTL1=0xF0;IT0=1; /外部中断1为低电平触发EX0=1; /开外部中断1ET0=1; /定时器T0中断允许ET1=1; /定时器T1中断允许EA=1; /开启总中断TR0=1; /开启定时器0TR1=1; /开启定时器1LCDE

20、N=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);void main()init();write_com(0x80);for(num=0;num<8;num+)write_data(table1num);delay(5);write_data(0x30+5);delay(5);write_data(0x30+0);delay(5);write_com(0x80+0x40);for(num=0;num<7;num+)write_data(table2num);delay(5);delay(5);wr

21、ite_data(0x30+5);delay(5);write_data(0x30+0);while(1);void T0_time() interrupt 1TR1=1; /开定时器1TH0=time0_H;TL0=time0_L;clk=1;void T1_time() interrupt 3TR1=0; /关定时器1TH1=time1_H;TL1=time1_L;clk=0;void keyscan() interrupt 0 /外部中断0uchar fre_bai,fre_shi,fre_ge,zkb_shi,zkb_ge;float TX,TZ;EX0=0; /关中断delay(10

22、); /延时消抖if(P1!=0x0F)if(key1=0)fre=fre+10;if(fre>500)fre=50;if(key2=0)fre=fre-10;if(fre<50)fre=500;if(key3=0)zkb=zkb+1;if(zkb>99)zkb=1;if(key4=0)zkb=zkb-1;if(zkb<1)zkb=99;TX=(65536-fosc/(12.0*fre);TZ=(65536-(fosc*zkb)/(12.0*100*fre);time0_H=(uint)TX/256; /十进制转化为十六进制高八位time0_L=(uint)TX%256

23、;time1_H=(uint)TZ/256;time1_L=(uint)TZ%256;P1=0x0f;EX0=1;TR0=1;TR1=1;fre_bai=fre/100;fre_shi=fre/10%10;fre_ge=fre%10;write_com(0x80+0x08);write_data(0x30+fre_bai);delay(5);write_data(0x30+fre_shi);delay(5);write_data(0x30+fre_ge);delay(5);zkb_shi=zkb/10;zkb_ge=zkb%10;write_com(0x80+0x07+0x40);write_

24、data(0x30+zkb_shi);delay(5);write_data(0x30+zkb_ge);delay(5);4 系统软件仿真下载KEIL的HEX文件在单片机中。仿真如下图。图5初始仿真图 调节频率后仿真图如图6示:图6调频后仿真图 再调占空比后仿真如图7所示:图7 调占空比后仿真图5 性能分析5.1定时器中断分析本次占空比可调的信号发生器的设计采用了定时器0和定时器1中断,定时器0中断用于控制信号的频率,定时器1用于控制信号的占空比。当调节输出信号的占空 比时,信号的频率就不变;如果调节信号的频率,占空比就不变。设fre表示输出的频率,zkb表示输出的占空比,TX为定时器0的计数

25、次数,TZ为定时器 1的计数次数。给TX装入初值为:TX=(65536-fosc/(12.0*fre);给TZ装入初值为TZ=(65536-(fosc*zkb) /(12.0*100*fre);当定时器0计数到时,开启定时器1,定时器1开始计数,并且P1.4口输出高电平。当经过一个周期中高电平持续的时间后,定时器1计数时间就到了,程序进 入到定时器1中断执行,然后关掉定时器1,并且输出低电平。因为定时器0中断是一直开着的,当经过一个周期中低电平持续的时间后,定时器0计数又到了,进 入定时器0中断执行,如此循环。当改变fre或者zkb的时候,就可以相应改变输出信号的占空比跟频率。5.2系统性能分析该系统实现占空比跟频率可调的信号发生器。占空比的调节范围是1%到99%,精度是1%,当达到上限值时,再次增加时,占空比归于1%,达到下限时,再次 减少,占空比自动归于99%。频率的调节范围是50HZ到500HZ,精度是10HZ,当达到上限值时,再次增加时,频率自动归于50HZ,当达到下限值 时,再次减少时,频率自动归于500HZ。5.3误差分析本设计中主要的参数有设定的频率值和占空比,示波器上测得的频率值和占空比,以及LCD显示的频率值和占空比,可以看到

温馨提示

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

评论

0/150

提交评论