设计并实现占空比可调的信号发生器.doc

上传人:仙人指路1688 文档编号:4143489 上传时间:2023-04-07 格式:DOC 页数:18 大小:516.50KB
返回 下载 相关 举报
设计并实现占空比可调的信号发生器.doc_第1页
第1页 / 共18页
设计并实现占空比可调的信号发生器.doc_第2页
第2页 / 共18页
设计并实现占空比可调的信号发生器.doc_第3页
第3页 / 共18页
设计并实现占空比可调的信号发生器.doc_第4页
第4页 / 共18页
设计并实现占空比可调的信号发生器.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《设计并实现占空比可调的信号发生器.doc》由会员分享,可在线阅读,更多相关《设计并实现占空比可调的信号发生器.doc(18页珍藏版)》请在三一办公上搜索。

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 Proteus软件介绍Proteus软件是英国La

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

3、、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编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一

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

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

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

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

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

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

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

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

12、标准的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脚背光正极,16脚背光负极1602LCD的特性:+5V电压,对比度可调,内含

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

14、路原理图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(即占空比),然后改变定时器的初值。实时刷新,同频率调节,占空比也需要进行限制。要注意的是频率和占空比的初始值都为50,我们定义的占空比为百分比

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

17、sc=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; /占空比初值,取值范围为0到100uint fre=50; /频率初值,取值范围为50到500uint time0_H,time0_L,ti

18、me1_H,time1_L;void delay(uint z) uint i,j;for(i=z;i-;i0)for(j=110;j-;j0);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 init() /方波产生TMOD=0x11; /定时器0和1都工作在方式1(高8位与低8位)time0_H=0xB1;time0_L=0xE0;time1

19、_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; /开启定时器1LCDEN=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);void main(

20、)init();write_com(0x80);for(num=0;num8;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;num500)fre=50;if(key2=0)fre=fre-10;if(fre99)zkb=1;if(key4=0)zkb=zkb-1;if(zkb1)zkb=99;TX=(65536-fosc/(12.0*fre);TZ=(65536-(fosc*zkb)/(12.0*

21、100*fre);time0_H=(uint)TX/256; /十进制转化为十六进制高八位time0_L=(uint)TX%256;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

22、(5);zkb_shi=zkb/10;zkb_ge=zkb%10;write_com(0x80+0x07+0x40);write_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用于控制信号的占空比。当调节输出信号的占

23、空 比时,信号的频率就不变;如果调节信号的频率,占空比就不变。设fre表示输出的频率,zkb表示输出的占空比,TX为定时器0的计数次数,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

24、计数又到了,进 入定时器0中断执行,如此循环。当改变fre或者zkb的时候,就可以相应改变输出信号的占空比跟频率。5.2系统性能分析该系统实现占空比跟频率可调的信号发生器。占空比的调节范围是1%到99%,精度是1%,当达到上限值时,再次增加时,占空比归于1%,达到下限时,再次 减少,占空比自动归于99%。频率的调节范围是50HZ到500HZ,精度是10HZ,当达到上限值时,再次增加时,频率自动归于50HZ,当达到下限值 时,再次减少时,频率自动归于500HZ。5.3误差分析本设计中主要的参数有设定的频率值和占空比,示波器上测得的频率值和占空比,以及LCD显示的频率值和占空比,可以看到设定的占空

25、比和频率值总是和LCD上显示的一样,出现误差的只有示波器上测得的,这是因为虽然设定的频率值和占空比总是整数,但是换算为定时器的初始值时,会出现小数部分,而程序直接将小数部分省略,由此便出现了误差。6 心得体会在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。我们是在做单片机课程设计,但我们不是艺术家,他们可以抛开实际尽情在幻想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计。其次,在这次课程设计中,我们运用到了以前所学的专业课知识。虽然过去从未独立应用过

26、它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。后,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。7 参考文献李群芳 张士军 黄建单片微型计算机与接口技术(第三版)北京:电子工业出版社,2008.5张毅刚新编MCS-51单片机应用设计哈尔滨:哈尔滨工业大学出版社,2003谭浩强C程序设计北京:清华大学出版社,2005刘坤 赵红波 张宪栋51单片机C语言应用开发技术大全(第二版)北京:人民邮电出版社2012.3郭天祥 51单片机C语言教程-入门,提高,开发,拓展全攻略北京:电子工业出版社2008

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号