找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机测频率和占空比程序 求修改一下漏洞

[复制链接]
跳转到指定楼层
楼主
ID:334234 发表于 2018-7-10 07:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
初学者参加比赛,需要设计一个数字频率计测频率和占空比,代码已写好一部分,请大神们修改一下漏洞(或者有更好的方法请指教),时间紧急,菜鸟谢谢各位大神

单片机源程序:
  1. #include <reg52.h>

  2. sbit LSA=P2^2;
  3. sbit LSB=P2^3;
  4. sbit LSC=P2^4;
  5. sbit K1=P3^1;
  6. sbit ky=P3^5;

  7. unsigned int i=0,n=0,m=0,x=0,y=0;
  8. unsigned long  fred,zhan;
  9. unsigned char DisplayData[8]=0;
  10. unsigned char DisTable[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

  11. void Display();
  12. void delay(unsigned int i);

  13. void main()
  14. {
  15.         TMOD=0x62;
  16.         TH0=6;
  17.         TL0=6;
  18.         TH1=56;
  19.         TL1=56;
  20.         TR0=1;
  21.         TR1=1;
  22.         EA=1;
  23.         ET1=1;
  24.         ET0=1;
  25.         while(1)
  26.         {        
  27.                 if(ky==1)
  28.                 {
  29.                         x++;
  30.                 }
  31.                 else
  32.                 {
  33.                         y++;
  34.                 }
  35.                 if(x+y==60000)
  36.                 {
  37.                         zhan=x/60;
  38.                         x=0;
  39.                         y=0;
  40.                 }
  41.                 if(K1==0)
  42.                 {
  43.                                 DisplayData[0]=DisTable[0];
  44.                                 DisplayData[1]=DisTable[0];
  45.                                 DisplayData[2]=DisTable[zhan/1000];
  46.                                 DisplayData[3]=DisTable[zhan%1000/100];
  47.                                 DisplayData[4]=DisTable[zhan%100/10]|0x80;
  48.                                 DisplayData[5]=DisTable[zhan%10];        
  49.                 }
  50.                 Display();
  51.         }
  52. }
  53. void time1_int() interrupt 3
  54. {
  55.         TH1=56;
  56.         TL1=56;
  57.         TR1=1;
  58.         n++;
  59. }
  60. void timer0_int() interrupt 1
  61. {
  62.         i++;
  63.         if(i==2000)
  64.         {
  65.                 TR1=0;
  66.                 fred=n*200+TL1-56;
  67.                 DisplayData[0]=DisTable[fred*2/100000];
  68.                 DisplayData[1]=DisTable[fred*2%100000/10000];
  69.                 DisplayData[2]=DisTable[fred*2%10000/1000];
  70.                 DisplayData[3]=DisTable[fred*2%1000/100];
  71.                 DisplayData[4]=DisTable[fred*2%100/10];
  72.                 DisplayData[5]=DisTable[fred*2%10];
  73.                 n=0;
  74.                 i=0;
  75.                 TH1=56;
  76.                 TL1=56;
  77.                 TR1=1;
  78.         }
  79. }
  80. void Display()
  81. {
  82.         int i;
  83.         for(i=0;i<6;i++)
  84.         {
  85.                 switch(i)         

  86.                 {
  87.                         case(0):
  88.                                 LSA=0;LSB=0;LSC=0; break;//ÏÔê¾μú0λ
  89.                         case(1):
  90.                                 LSA=1;LSB=0;LSC=0; break;//ÏÔê¾μú1λ
  91.                         case(2):
  92.                                 LSA=0;LSB=1;LSC=0; break;//ÏÔê¾μú2λ
  93.                         case(3):
  94.                                 LSA=1;LSB=1;LSC=0; break;//ÏÔê¾μú3λ
  95.                         case(4):
  96.                                 LSA=0;LSB=0;LSC=1; break;//ÏÔê¾μú4λ
  97.                         case(5):
  98.                                 LSA=1;LSB=0;LSC=1; break;//ÏÔê¾μú5λ        
  99.                 }
  100.                 P0=DisplayData[5-i];

  101.                 delay(10);        
  102.                 P0=0x00
  103.         }
  104. }        
  105. void delay(unsigned int i)
  106. {
  107.         while(i--);        
  108. }
复制代码




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

使用道具 举报

沙发
ID:923993 发表于 2021-5-21 15:40 | 只看该作者
兄弟你这个现在看出来有什么问题了吗,求求你跟我说说吧
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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