找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3986|回复: 3
打印 上一主题 下一主题
收起左侧

单片机计数方波脉冲个数 程序+Proteus仿真

[复制链接]
跳转到指定楼层
楼主
单片机检测方波脉冲个数,有protus仿真图,带显示功能,555产生方波电路。附件带原程序及仿真图。有定时中断,外部中断。

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include <reg51.h>
  2. #include "intrins.h"

  3. sbit DIN = P0^0;
  4. sbit load = P0^1;
  5. sbit CLK = P0^2;
  6. sbit LED = P0^7;

  7. unsigned int speed = 0x00;
  8. unsigned int count = 0x00;

  9. unsigned char table[]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,0x77,0x1f,0x4e,0x3d,0x4f,0x47,0x67,0x3e,0x0ff,0x00};


  10. void int_count(void)
  11. {
  12.             EA = 0x00;
  13.             TMOD = 0x01;
  14.             TH0 = 0x3c;       //12M   50ms
  15.             TL0 = 0x0b0;
  16.         
  17.             ET0 = 1;
  18.             EA = 1;
  19.             TR0 = 1;
  20.             IT0 = 1;
  21.             EX0 = 1;
  22. }

  23. void sendbyte(unsigned char dat)
  24. {
  25.            unsigned char i,temp;
  26.            _nop_();
  27.            for(i=0;i<8;i++)
  28.            {
  29.                             temp = dat&0x80;
  30.                             dat=dat<<1;
  31.                             if(temp)
  32.                                                     DIN = 1;
  33.                                         else
  34.                                                     DIN = 0;
  35.                                         CLK = 0;
  36.                                         _nop_();
  37.                                         CLK = 1;
  38.      }
  39. }

  40. void sendword(unsigned char addr,unsigned char dat)
  41. {
  42.            load = 0;
  43.            _nop_();
  44.            sendbyte(addr);
  45.            _nop_();
  46.            sendbyte(dat);
  47.            _nop_();
  48.            load = 1;
  49. }

  50. void int7219(void)
  51. {
  52.             sendword(0x0c,0x01);
  53.             sendword(0x0a,0x09);
  54.             sendword(0x0b,0x03);
  55.             sendword(0x09,0x00);
  56.             sendword(0x0f,0x00);
  57. }

  58. void display(void)
  59. {
  60.             unsigned char i,tmp;
  61.             tmp = count / 100;
  62.             sendword(0x02,table[tmp]);
  63.             tmp = count % 100;
  64.             i = tmp / 10;
  65.             sendword(0x03,table[i]);
  66.       i = tmp % 10;
  67.             sendword(0x04,table[i]);        
  68. }

  69. void main(void)
  70. {
  71.             int7219();
  72.             int_count();
  73.             while(1)
  74.                         {
  75.                                    if(count>500)
  76.                                          {
  77.                                                    //  display();
  78.                                                      count = 0x00;
  79.            }
  80.                                          display();
  81.       }
  82. }

  83. void int0_fun(void) interrupt 0 using 1
  84. {
  85.             EX0 =0;
  86.             count ++;
  87.             EX0 = 1;
  88.           //  LED = ~LED;
  89. }

  90. void int_time(void)  interrupt 1 using 2
  91. {
  92.             TH0 = 0x3c;       //12M   50ms
  93.             TL0 = 0x0b0; LED = ~LED;
  94. }
复制代码

所有资料51hei提供下载:
单片机检测方波个数.rar (135.89 KB, 下载次数: 56)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:34643 发表于 2020-5-30 06:56 | 只看该作者
有没有仿真的实际效果图。
回复

使用道具 举报

板凳
ID:772939 发表于 2020-6-14 17:23 | 只看该作者
附件里面是个啥
回复

使用道具 举报

地板
ID:772939 发表于 2020-6-21 15:25 | 只看该作者

里面元器件是什么,图上看不清
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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