完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一:NOTE
今天分享一个题目,有关51单片机输出方波的问题,好了,进入正题 二:题目 已知8051单片机的时钟频率为6MHZ,通过定时器1的工作方式1在P1^1引脚输出一个1KHZ占空比为60%的矩形波。 三:分析题目 1、首先第一个条件,时钟频率6MHZ,从这里我们可以得出它的时钟周期为1/f=2us 2、第二个条件,定时器1,工作方式1,那么对应TMOD寄存器也就是0x10。 3、第三个条件,输出一个1KHZ占空比60%,这里其实有两个条件,第一个输出1KHZ,他告诉我们输出的波形周期是1/f=1ms,然后是占空比,推出高电平为1ms*60%=600us,那么低电平就是400us,到这里,题目所有条件都分析完毕 四:理论储备 1、机器周期=时钟周期*12; 2、定时器工作方式1:定时时间=(65536-初值)*机器周期(知道为什么要算机器周期了吧)这里带入值可以算出初值是50 3、拓展:定时器方式0:定时时间=(8192-初值)*机器周期 定时器方式2:定时时间=(256-初值)*机器周期 五:编程思路 我的思路是定时器初值设100us,然后开始的时候开启定时器并且给高电平,然后给一个标志tt,当tt加到6的时候,给低电平,这样就实现方波的形成,下面给出程序。 六:程序演示 #include《reg51.h》***it wave=P1^1;***it temp=P1^0;int tt=0;void main(){ TMOD=0x10;//定时器1,工作方式1 EA=1; //总中断 ET1=1;//定时器1中断 TH1=(65536-50)/256; TL1=(65536-50)%256; TR1=1; wave=1; while(1); }void exter3() interrupt 3{ TH1=(65536-50)/256; TL1=(65536-50)%256; tt++; if(tt==6) wave=0; if(tt==10) { tt=0; wave=1;// TR1=0; }} 七:仿真演示 八:没有啦,拜拜! |
|
|
|
只有小组成员才能发言,加入小组>>
2308 浏览 0 评论
834浏览 2评论
477浏览 1评论
1354浏览 0评论
240浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-20 18:38 , Processed in 1.266448 second(s), Total 78, Slave 60 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号