找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5584|回复: 2
收起左侧

基于51单片机定时器的方波发生器仿真与源代码

[复制链接]
ID:268717 发表于 2018-6-19 17:29 | 显示全部楼层 |阅读模式
利用定时器的方式二做一个周期两秒的方波发生器  周期几乎是0误差的
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png

单片机源程序如下:
  1. /*************************************************
  2. 计数方式选择:
  3. 使用定时器的方式0和方式1中,在循环计数过程中要用软件反复设置计数器初值,这可能影响计时的精度,故采用方式2;
  4. 方式二周期计算:
  5. 方式2最多转载数为256个,那么采用计数250次,则机器周期T=12*(1/6MHZ)=2us,计时一秒即1000000/(2*250)=2000次
  6. 产生方波周期为2s,即是说要循环计数4000次,再利用溢出中断来完成循环计数任务。
  7. **************************************************/                                                                                         
  8. #include <reg51.h>               
  9. #define uint unsigned int
  10. sbit FB=P1^0;   //定义方波输出口
  11. uint num;
  12. void main()
  13. {
  14.         TMOD=0x02;  //设置定时器0为工作方式2(0000 0010)
  15.         TH0=6;      //装初值
  16.         TL0=6;

  17.         EA=1;       //开总中断
  18.         ET0=1;      //开内部定时器0中断
  19.         TR0=1;      //启动定时器0

  20. while(1)        //程序在这里等待中断
  21. {
  22.         if(num==4000)                //如果到了4000次,说明1秒时间到
  23.          {
  24.            num=0;                        //然后把num清0重新再计4000次
  25.            FB=!FB;                //让电平取反
  26.          }
  27. }
  28. }

  29. void T0_time() interrupt 1        //让中断程序执行循环计数任务
  30. {
  31.         num++;                        
  32. }
复制代码
0.png

所有资料51hei提供下载:
20161111144-李作鑫-方波发生器.rar (99.97 KB, 下载次数: 59)


评分

参与人数 2黑币 +55 收起 理由
12345轻轻、 + 5 很给力!
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:532513 发表于 2019-5-26 20:24 | 显示全部楼层
真好!!!
回复

使用道具 举报

ID:570384 发表于 2020-2-17 11:51 | 显示全部楼层
真的不错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表