找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机60秒显示程序

[复制链接]
跳转到指定楼层
楼主
ID:411625 发表于 2018-12-6 00:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
此程序通过定时器0计时,然后每计时一秒显示在数码管上,总共计时60秒,每过60秒led状态反转一次,数码管位选信号引脚为P2口,并且是通过138译码器来控制的,即3位控制8位,138译码器输入信号引脚为P2^2,P2^3,P2^4;断选信号引脚为P0口,此程序采用的是共阴极数码管,com口为低电平,给高电平亮。led小灯控制引脚为P2^7口。
  1. #include "reg52.h"
  2. typedef unsigned char u8;
  3. typedef unsigned int u16;
  4. #define SEG P0
  5. //#define SCANP P2
  6. sbit LED=P2^7;
  7. #define count_M1 50000
  8. #define TH_M1 (65536-count_M1)/256
  9. #define TL_M1 (65536-count_M1)%256
  10. int count_T0=0;
  11. #define count_M2 250
  12. #define TH_M2 (256-count_M2)
  13. #define TL_M2 (256-count_M2)
  14. u8 count_T1=0;
  15. u8 code TAB[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  16. u8 disp[2]={0x3f,0x3f};
  17. u8 wei [2]={0x80,0x84};
  18. u8 seconds=0;
  19. //u8 scan=0x1c;
  20. void delay(u16 i)
  21. {
  22.         while(i--);
  23. }
  24. main()
  25. {
  26.             
  27.         IE=0x82;
  28.         TMOD=0x01;
  29.         TH0=TH_M1;TL0=TL_M1;
  30.         TR0=1;
  31.         while(1)
  32.         {
  33.         u8 i;        
  34.                 for(i=0;i<=1;i++)
  35.                 {
  36. //                count_T1=0;
  37.                 SEG=0x00;
  38.                 delay(10);
  39. //                SCANP=~scan;
  40.                 SEG=disp[i];
  41.                 P2=wei[i];
  42.                 delay(100);
  43.                 }
  44. //        TH1=TH_M2;TL1=TL_M2;
  45. //        TR1=1;
  46. //        LED=1;
  47. }
  48. }        

  49. void T0_1s(void) interrupt 1
  50. {
  51.         TH0=TH_M1;TL0=TL_M1;
  52.         if(++count_T0==20)
  53.         {
  54.                 count_T0=0;
  55.                 seconds++;
  56.                 if(seconds==60)
  57.                 {
  58.                         seconds=0;
  59.                         LED=~LED;
  60.                         delay(10000);
  61.                 }
  62.         }
  63.         disp[1]=TAB[seconds/10];
  64.         disp[0]=TAB[seconds%10];
  65. }
复制代码


评分

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

查看全部评分

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

使用道具 举报

沙发
ID:1 发表于 2018-12-6 04:26 | 只看该作者
补全原理图或者详细说明一下电路连接即可获得100+黑币
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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