找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机:从00到99,自动计数+蜂鸣器

[复制链接]
跳转到指定楼层
楼主
ID:103513 发表于 2016-1-17 01:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. //从0到99计数
  2. #include <reg52.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. sbit duan=P2^5;
  6. sbit wei=P2^6;
  7. sbit FM=P2^3;
  8. uchar bai,shi,ge,tt=0,temp;
  9. const unsigned char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
  10. void delay(uint x)
  11. {
  12. uint a,b;
  13. for(a=x;a>0;a--)
  14. for(b=110;b>0;b--);
  15. }
  16. void init()
  17. {
  18. TMOD=0x01;     

  19. TH0=(65536-50000)/256;

  20. TL0=(65536-50000)%256;
  21. EA=1;   

  22. ET0=1;     

  23. TR0=1;     

  24. }
  25. void disp(uchar shi,uchar ge)

  26. {
  27. duan=1;
  28. P0=table[shi];
  29. duan=0;
  30. wei=1;
  31. P0=0x4;
  32. wei=0;
  33. delay(1);

  34. duan=1;
  35. P0=table[ge];
  36. duan=0;
  37. wei=1;
  38. P0=0x08;
  39. wei=0;
  40. delay(1);
  41. }
  42. void didi(di_num)
  43. {
  44. uchar d;
  45. for(d=di_num;d>0;d--)
  46. {
  47. FM=0;
  48. delay(300);
  49. FM=1;
  50. delay(70);
  51. }
  52. }

  53. void main()
  54. {
  55. init();
  56. while(1)
  57. {
  58.    if(tt==20)         

  59.      {
  60.       tt=0;                                          //清零,以便之后再次累计
  61.       temp++;

  62.       shi=temp/10;
  63.       ge=temp%10;

  64.       if(temp==100){didi(1);temp=0; }
  65.     }                    

  66. disp(shi,ge);    //这句放在上面的括号内会出现只显法个位,十位百位均显不出来

  67. }
  68. }
  69. void tming0() interrupt 1
  70. {
  71. TH0=(65536-50000)/256;   

  72. TL0=(65536-50000)%256;
  73. tt++;   

  74. }
复制代码


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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