设计并实现占空比可调的信号发生器.docx
《设计并实现占空比可调的信号发生器.docx》由会员分享,可在线阅读,更多相关《设计并实现占空比可调的信号发生器.docx(16页珍藏版)》请在冰豆网上搜索。
![设计并实现占空比可调的信号发生器.docx](https://file1.bdocx.com/fileroot1/2022-10/12/e87f4cea-590f-4e16-b9b1-6ce1ef508eb6/e87f4cea-590f-4e16-b9b1-6ce1ef508eb61.gif)
设计并实现占空比可调的信号发生器
目录
1仿真软件介绍1
1.1Proteus软件介绍1
1.2Keil软件介绍1
2设计原理和方案1
2.1方案的选择和设计1
2.2设计原理2
2.3系统硬件线路图设计图3
2.3.151单片机介绍3
2.3.2LCD1602简介4
2.3.3系统硬件电路简介5
3系统软件设计6
3.1主程序6
3.2系统初始化子程序6
3.3键盘扫描程序7
3.4系统的资源分配表7
3.5源程序8
4系统软件仿真13
5性能分析15
5.1定时器中断分析15
5.2系统性能分析15
5.3误差分析15
6心得体会16
7参考文献17
1仿真软件介绍
1.1Proteus软件介绍
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
1.2Keil软件介绍
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。
如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
2设计原理和方案
2.1方案的选择和设计
方案一:
采用分立器件实现非稳态的多谐振荡器,然后根据具体需要加入积分电路等构成矩形等波形发生器。
这种信号发生器输出频率范围窄而且电路参数设定较繁琐,其频率大小的测量往往需要通过硬件电路的切换来实现,操作不方便。
方案二:
用集成芯片实现函数信号发生器。
这种信号发生器。
这种信号发生器能产生多种波形信号,可以达到较高频率,但电路复杂并且不易调试。
方案三:
采用单片机编程的方法实现。
该方法可以通过编程,来控制方波信号输出的频率和幅度,并且只要改变程序的相关参数,便可以改变输出波形的频率和占空比。
由于编程的方法产生的是数字信号,所以信号的精度可以做到很高。
并且电路简单。
方案四:
利用专用直接数字合成DDS芯片实现函数信号发生器。
这种信号发生器能产生任意波形并且达到很高的频率,但成本较高。
综合成本和性能等多方面因素,本例采用第三种方法,即采用单片机编程的方法实现占空比可调,频率可调的方波信号发生器。
2.2设计原理
在此次课程设计中,利用AT89C51单片机,软硬件结合,实现占空比和频率可调,案件的操作是通过数字电路跟外部中断0来控制的。
可以输出占空比在1%到99%可调,精度为1%,频率范围在50HZ到500HZ可调,精度为10HZ的方波。
AT89C51单片机是整个波形信号发生器的核心,通过程序的编写和执行,可以产生可以调节的方波,并受到按键的控制,增减频率和占空比。
并且在液晶上显示出来。
定时器0工作再方式1下,决定输出信号的频率,定时器1工作再方式1下,决定输出信号的占空比。
按键1和2决定信号的输出频率,按键1用于增大信号的频率,按一下就增加10HZ,当增减大500HZ时,就归为50HZ。
按键2用于减小输出信号的频率,按一次键,输出信号的频率减少10HZ,当减少到50HZ时,频率就归于500.按键3和4决定信号的占空比,按键3用于增加信号的占空比,按下一次键,占空比就增加1,上限值为99,当在此按键是,就让占空比归1.按键4用于减小信号的占空比,按下一次键,占空比就减1,下限值为1,当再次按键时,就让占空比回归到99.通过上面的步骤,可以实现占空比和频率的可调。
液晶则选用LCD032L,可直观的看到频率和占空比。
信号发生器原理框图如图1:
单片机AT89C51
LCD显示
按键或按钮
频率与占空比数据频率与占空比数据
图1信号发生器原理框图
2.3系统硬件线路图设计图
2.3.151单片机介绍
51单片机是对目前所有兼容Intel8031指令系统的单片机的统称。
该系列单片机的始祖是Intel的8031单片机,后来随着Flashrom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。
目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。
51单片机是基础入门的一个单片机,还是应用最广泛的一种。
需要注意的是52系列的单片机一般不具备自编程能力。
当前常用的51系列单片机主要产品有:
*Intel的:
80C31、80C51、87C51,80C32、80C52、87C52等;
*ATMEL的:
89C51、89C52、89C2051等;
*Philips、华邦、Dallas、Siemens(Infineon)等公司的许多产品
目前,国产宏晶STC单片机以其低功耗、廉价、稳定性能,占据着国内51单片机较大市场。
主要功能有:
8位CPU·4kbytes程序存储器(ROM)(52为8K) 图251单片机的引脚图
256bytes的数据存储器(RAM)(52有384bytes的RAM)
32条I/O口线
111条指令,大部分为单字节指令
21个专用寄存器
2个可编程定时/计数器
5个中断源,2个优先级(52有6个)
一个全双工串行通信口
外部数据存储器寻址空间为64kB
外部程序存储器寻址空间为64kB
逻辑操作位寻址功能·双列直插40PinDIP封装
单一+5V电源供电
CPU:
由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
RAM:
用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
ROM:
用以存放程序、一些原始数据和表格;
I/O口:
四个8位并行I/O口,既可用作输入,也可用作输出;
T/C:
两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式; 五个中断源的中断控制系统;
一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;
片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。
最高振荡频率为12M。
2.3.2LCD1602简介
工业字符型液晶,能够同时显示16x02即32个字符。
(16列2行)1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。
每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
图3LCD1602引脚图
1602采用标准的16脚接口,其中:
第1脚:
VSS为电源地
第2脚:
VDD接5V电源正极
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4脚:
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚:
RW为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
第6脚:
E(或EN)端为使能(enable)端。
第7~14脚:
D0~D7为8位双向数据端。
第15~16脚:
空脚或背灯电源。
15脚背光正极,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口连接到LCD016L的数据段,用以显示波形信号发生器的频率和占空比。
图4系统硬件电路原理图
3系统软件设计
软件是该LCD显示控制系统的重要组成部分,在软件的设计中,我们采用了模块了设计,将各部分功能编写为子模块的形式,这样增加了程序的可读性。
3.1主程序
主程序用于控制整个系统,先对系统初始化,然后通过一个空循环等待中断程序,当中断到来时候,就进入中断程序,执行中断程序。
中断程序执行完成之后,就返回主程序,继续等待。
3.2系统初始化子程序
在此程序中,给所有变量赋初值,特别是T0,T1的初始值使产生方波的频率为50Hz,占空比为50%,且在LCD016L上显示出来。
3.3键盘扫描程序
键盘扫描用外部中断0实现,用以分析是哪个键盘被按下,然后在实现所要的功能。
关于键盘扫描程序的说明:
频率可调时,占空比保持原状不变,反之亦然。
(1)频率调节
当按下键1的时候,会转到外部中断0子程序,判断之后,会改变其中变量fre的值,然后分别将T0,T1按要求重新赋初始值,然后再在液晶上实时刷新。
即可改变即加10Hz,当加到最大值500Hz时,继续按下键1,将会回到最小值50Hz上。
同理按下键2,频率值将会减10Hz,当减到最小值50Hz,会回到最大值500Hz上。
(2)占空比调节
当按下键3,进入到外部中断0子程序,判断却是按下后,改变zkb(即占空比),然后改变定时器的初值。
实时刷新,同频率调节,占空比也需要进行限制。
要注意的是频率和占空比的初始值都为50,我们定义的占空比为百分比的分子部分。
键盘处理子程序,当有按键按下时,进入到外部中断,然后暂时关闭外部中断,启动延时程序,以消除抖动。
然后检测是哪个按键被按下,然后对频率跟占空比的变量做出相应的赋值,并且将占空比的值送到数码管显示。
并且对定时器0和定时器1分别赋新的初值,开启外部中断,定时器0和1中断,中断程序结束。
3.4系统的资源分配表