ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:417.13KB ,
资源ID:2062362      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-2062362.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(设计并实现占空比可调信号发生器.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

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

1、设计并实现占空比可调信号发生器目录1相关软件介绍 11.1Proteus简介 11.2keil简介 12硬件介绍 22.1 51单片机介绍 22.2 LCD1602简介 33原理介绍 53.1产生频率和占空比可调的方波 53.2信号的频率和占空比的测量 54电路原理图 65程序框图 76资源分配表 87源程序 88仿真实现 199实物实现 2110小结体会 2311参考文献 241相关软件介绍1.1Proteus简介Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还

2、能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,

3、并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。1.2keil简介Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用

4、汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。2硬件介绍2.1 51单片机介绍51单片机是对目前所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是52系列的单片机一般不具备自编程能力。 当

5、前常用的51系列单片机主要产品有: *Intel的:80C31、80C51、87C51,80C32、80C52、87C52等; *ATMEL的:89C51、89C52、89C2051等; *Philips、华邦、Dallas、Siemens(Infineon)等公司的许多产品 目前,国产宏晶STC单片机以其低功耗、廉价、稳定性能,占据着国内51单片机较大市场。主要功能有:8位CPU4kbytes 程序存储器(ROM) (52为8K) 256bytes的数据存储器(RAM) (52有384bytes的RAM) 32条I/O口线111条指令,大部分为单字节指令 21个专用寄存器 2个可编程定时/计

6、数器5个中断源,2个优先级(52有6个) 一个全双工串行通信口 外部数据存储器寻址空间为64kB 外部程序存储器寻址空间为64kB 逻辑操作位寻址功能双列直插40PinDIP封装 单一+5V电源供电 CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器; RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据; ROM:用以存放程序、一些原始数据和表格; I/O口:四个8位并行I/O口,既可用作输入,也可用作输出; T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式; 五个中断源的中断控制系统; 一个全双工UART(通用异步接收发送器)

7、的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信; 片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率为12M。2.2 LCD1602简介工业字符型液晶,能够同时显示16x02即32个字符。(16列2行)1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。

8、目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。管脚功能LCD1602引脚图1602采用标准的16脚接口,其中: 第1脚:VSS为电源地 第2脚:VDD接5V电源正极 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。 第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 第

9、6脚:E(或EN)端为使能(enable)端。 第714脚:D0D7为8位双向数据端。 第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极1602LCD的特性:+5V电压,对比度可调,内含复位电路提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能。有80字节显示数据存储器DDRAM,内建有192个5X7点阵的字型的字符发生器CGROM,8个可由用户自定义的5X7的字符发生器CGRAM。3原理介绍3.1产生频率和占空比可调的方波本方案通过用4个按键分别控制输出信号的占空比和频率,分别是频率“+”,频率“-”,占空比“+”,占空比“-”。通过查询方式扫描按键的状态,从而得

10、知需要产生的信号的频率和占空比。得知频率和占空比以后就需要算出高电平的持续时间和低电平的持续时间, 根据周期和频率的关系,可知周期T=1/频率F,本系统用的是12MHZ晶振,一个机器周期是1us,可知产生高电平计数初值=1000000*占空比/100,即TH0=(1000000*占空比/100)/256,TL0=(1000000*占空比/100)%256,从而可知低电平持续时间为周期减去高电平持续时间,从而可算出相应的计数初值。实现时,通过设计一个标志位,当信号开始变为高电平时,把相应的高电平计数初值赋给T0,当产生T0溢出中断时,把信号变为低电平,同时把低电平相应的计数初值赋给T0,通过标志

11、位的0和1循环,从而产生持续交替的高低电平,一个频率和占空比可调的方波就出来了。3.2信号的频率和占空比的测量定时器的门控位的作用,在TMOD中有个GATE位,以T1的GATE位为例,当GATE=0,定时器的启停与INT1无关,在这种情况下,定时器的启停只取决于TR1;当GATE=1时,定时计数器的启停不仅取决于TR1,而且还受到INT1的控制,只有当TR1=1,且INT1=1时,定时计数器才能工作,本次设计用的就是GATE=1的情况。再讲一下T2的捕捉方式,就是把16位瞬时计数值同时记录在特殊功能寄存器的RCAP2L和RCAP2H中,这样CPU在读计数值时,就避免了在读高字节时低字节的变化引

12、起读数误差。T2CON中有个EXF2,当外部使能位EXEN2=1,且T2EX(P1.1引脚)有一个下降沿时,EXF2被置1,如果中断允许将一引起中断,EXF2必须软件清零。本次设计通过T1测量高电平持续时间,T2用来测量信号周期,当第一个下降沿到来时,把T1,T2,的计数初值都设为0,同时使TR2=1,TR1=1,当有一个下降沿到来时,捕捉此时T2的计数值,同时T1只有在外部信号为高电平时,才加一计数,所以此时T1记录的是高电平的时间,从而可算出相应的周期和占空比送数码管显示。4电路原理图5程序框图6资源分配表P口描述P0数据输出P1.2频率加P1.3频率减P1.4占空比加P1.5占空比减P2

13、.0输出波形P2.6段码P2.7位码P3.4LCD使能端P3.5LCD读P3.6LCD写7源程序#include #include #define uchar unsigned char#define uint unsigned intsfr T2MOD = 0xC9;sbit out=P20;sbit pvjia=P12;sbit pvjian=P13;sbit zkbjia=P14;sbit zkbjian=P15;sbit rs=P35;sbit lcden=P34;sbit dula=P26;sbit wr=P36;sbit wela=P27;uchar vaule=1;char th

14、0_low,tl0_low,th0_high,tl0_high,th1_out,tl1_out;float time0,freq_test,duty_test;int freq=50,duty_factor=50,flag=1,time0_high,time0_low;uint VTH2,VTL2,Now,freq_test1=50,duty_test1=50;uchar table1=out: Hz %;uchar table2=set: Hz %;/延时程序void delay(uchar n) uchar i; while(n-) for(i=255;i0;i-) /计算频率显示void

15、 count1() uint g1,g2,g3; g1=freq_test1/100; g2=(freq_test1%100)/10; g3=(freq_test1%100)%10; table14=g1+48; table15=g2+48; table16=g3+48;/计算占空比显示void count2() int f1,f2,f3; f1=duty_test1/100; f2=(duty_test1%100)/10; f3=(duty_test1%100)%10; table110=f1+48; table111=f2+48; table112=f3+48;/计算频率显示void co

16、unt3() uint g1,g2,g3; g1=freq/100; g2=(freq%100)/10; g3=(freq%100)%10; table24=g1+48; table25=g2+48; table26=g3+48;/计算占空比显示void count4() int f1,f2,f3; f1=duty_factor/100; f2=(duty_factor%100)/10; f3=(duty_factor%100)%10; table210=f1+48; table211=f2+48; table212=f3+48;/1602/写控制函数void write_com(uchar

17、com) rs=0; P0=com; lcden=0; delay(1); lcden=1; delay(1); lcden=0; /写数据函数void write_date(uchar date) rs=1; P0=date; lcden=0; delay(1); lcden=1; delay(1); lcden=0; /初始化1602void initlcd() wr=0; dula=0; wela=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01);/1602显示程序void display() uc

18、har a; write_com(0x80); for(a=0;a14;a+) write_date(table2a); write_com(0x80+0x40); for(a=0;a0;i-) for(j=110;j0;j-);/中断测量输出void time_2() interrupt 5 if(EXF2) if(vaule=2) th1_out=TH1; tl1_out=TL1; EXF2=0;/外部标志位需要软件清零; Now=RCAP2H*256+RCAP2L; vaule=0; else EXF2=0; vaule+; TH2=TH1=0; TL2=TL1=0; else TF2=

19、0; /产生输出void time_0() interrupt 1 if(flag=0) TH0=th0_low; TL0=tl0_low; flag=1; out=0; else TH0=th0_high; TL0=tl0_high; flag=0; out=1; void init() /初始化 display(); /定时器0初始化 time0=1000000/freq; /求出周期,不求time0直接求高低电平,可能精度高些 time0_high=time0/100*duty_factor; /高电平时间 。 time0_low=time0-time0_high; /低电平 TMOD=

20、0x91;/设置工作方式GATE1 C/T M1 M0=1001;工作方式GATE0 C/T M1 M0=0001 th0_high=(65536-time0_high)/256; / 高低电平的定时器初值 tl0_high=(65536-time0_high)%256; th0_low=(65536-time0_low)/256;/ tl0_low=(65536-time0_low)%256; EA=1; ET0=1; TR0=1; /开中断 /定时器2初始化,用于测频 ET2=1;/开T2中断 T2MOD=0X00;/禁止定时时钟从p1.0输出,采用加计数 T2CON=0x09;/16位捕

21、获模式,定时,外部使能 TH2=0; TL2=0; TR2=1; /定时器1初始化 ET1=0; TR1=1; TH1=0; TL1=0;/键盘扫描void keyscan() if (pvjia=0) delayms(5); if(pvjia=0) freq+=1; if(freq=501) freq=500; while(!pvjia); if (pvjian=0) delayms(5); if (pvjian=0) freq-=1; if(freq=49) freq=50; while(!pvjian); if (zkbjia=0) delayms(5); if (zkbjia=0) d

22、uty_factor+=1; if(duty_factor =101) duty_factor=100; while(!zkbjia); if (zkbjian=0) delayms(5); if (zkbjian=0) duty_factor-=1; if(duty_factor=-1) duty_factor=0; while(!zkbjian); /主函数void main() init();/调用初始化函数 initlcd(); while(1) keyscan(); time0=1000000/freq; /不求time0直接求高低电平,可能精度高些 time0_high=time0

23、/100*duty_factor; /高电平时间 time0_low=time0-time0_high; /低电平 th0_high=(65536-time0_high)/256; / 高低电平的定时器初值 tl0_high=(65536-time0_high)%256; th0_low=(65536-time0_low)/256; tl0_low=(65536-time0_low)%256; /T2频率测量处理 freq_test=1000000/Now; /计算出频率值 freq_test1=(uint)freq_test; /T1占空比测量处理 duty_test=th1_out*256

24、+tl1_out;/计算T1计数值 duty_test=duty_test*100/Now;/求百分比 duty_test1=(uint)duty_test; count1(); count2(); count3(); count4(); display(); 8仿真实现初始状态调整后9实物实现10小结体会11参考文献李群芳、 张士军,单片微型计算机与接口技术, 电子工业出版社,2008张毅刚、彭喜元、董继成,单片机原理及应用,高等教育出版社,2004赵晓安,MCS-51单片机原理及应用,天津大学出版社,2001李全利,单片机原理及接口技术, 北京:高等教育出版社 ,2001徐仁贵,微型计算机接口技术及应用,北京:机械工业出版社,2007诸昌钤,LED显示屏系统原理及工程技术,成都:电子科技大学出版社,2005

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2