找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机按键控制数码管代码,能给解释一下吗?

[复制链接]
跳转到指定楼层
楼主
  1. #define uchar unsigned char
  2. #include<reg51.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. void delay (uint x);
  6. sbit A=P1^0;
  7. sbit B1=P1^1;
  8. sbit B2=P1^2;
  9. sbit B3=P1^3;
  10. sbit dula=P2^1;
  11. sbit wela=P2^2;
  12. uchar c,i;
  13. unsigned char code NumDecode[] ={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,};
  14. void main()
  15. {
  16.         TMOD=0x11;
  17.         TH0=(65536-45872)/256;
  18.         TH0=(65536-45872)%256;
  19.         EA=1;
  20.         ET0=1;
  21.         TF0=1;
  22.         TR0=1;
  23.         while(1)
  24.         {
  25.                 if(B1==0)
  26.                 {
  27.                         delay(10);
  28.                         if(B1==0)
  29.                         {
  30.                                 while(B1==0)
  31.                                 {
  32.                                         if(c==20)//50ms中断20次
  33.                                         {
  34.                                         c=0;
  35.                                         i++;//倒计时总数每秒减1
  36.                                         }
  37.                                         if(i<10)
  38.                                         {
  39.                                         dula=0;//数码管位选选通
  40.                                         P0=NumDecode[i];//显示数据
  41.                                         }
  42.                                         else  //循环计时设置
  43.                                         {
  44.                                         i=0;
  45.                                         }
  46.                                 }
  47.                                 TR0=1;

  48.                         }
  49.                 }
  50.                 if(B2==0)
  51.                 {
  52.                         delay(10);
  53.                         if(B2==0)
  54.                         {
  55.                                 while(B2==0)
  56.                                 TR1=1;
  57.                         }
  58.                 }
  59.         }        
  60. }
  61. void t1() interrupt 1
  62. {        char
  63.         TH0=(65536-45872)/256;
  64.         TH0=(65536-45872)%256;
  65.         
  66. }
复制代码

捕获.PNG (123.09 KB, 下载次数: 30)

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

使用道具 举报

沙发
ID:309816 发表于 2018-6-5 14:16 | 只看该作者
先了解数码管的段选和片选,创建了一个数字库的数组能显示0-9,然后就是中断程序和定时器了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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