找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机数码管显示0~99(共阳极)源程序

[复制链接]
跳转到指定楼层
楼主
ID:356227 发表于 2018-8-29 01:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. //变量unm为要显示的数,变量time为定时器计数变量、
  5. uint num=0,time=0;num1=0;
  6. //共阳极数码管字段码
  7. uchar code a[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
  8. //位选码
  9. uchar code b[4]={0Xfe,0Xfd,0xfb,0xf7};
  10. //延时函数
  11. void delay(uint x)
  12. {
  13.     uint y;
  14.         for(;x>0;x--)
  15.             for(y=500;y>0;y--);
  16.                                                                   
  17. }
  18. //定时器T0初始化函数
  19. void initT0()
  20. {
  21.       TMOD=0x01;                             //定时器T0工作方式一,工作在定时模式
  22.           TH0=(65536-50000)/256;                 //给定时器T0的高八位赋初值
  23.           TL0=(65536-50000)%256;                 //给定时器T0的低八位赋初值
  24.           EA=1;                                  //开关中断
  25.           ET0=1;                                 //定时器T0中断允许
  26.           TR0=1;                                 //启动定时器T0
  27. }
  28. //主函数
  29. void main()
  30. {
  31.     initT0();
  32.                 while(1)
  33.         {       
  34.                 while(time<20)                            //由于是两位数码管,因而采用动态显示方式
  35.                 {       
  36.                 P1=b[0];                            //送位选码
  37.                 P0=a[num%10];                       //送字段码
  38.                 delay(1);                           //延时
  39.                 P1=b[1];
  40.                 P0=a[num/10];
  41.                 delay(1);

  42.                 P1=b[2];                            //送位选码
  43.                 P0=a[num1%10];                       //送字段码
  44.                 delay(1);                           //延时
  45.                 P1=b[3];
  46.                 P0=a[num1/10];
  47.                 delay(1);
  48.                 }

  49.                 num++;num1++;time=0;
  50.                
  51.                 if(num==99)num=0;
  52.                 if(num1==99)num1=0;       
  53.         }
  54. }
  55. //定时器T0中断服务函数
  56. void T0int()interrupt 1
  57. {
  58.    TH0=(65536-50000)/256;                 //给定时器T0的高八位赋初值
  59.    TL0=(65536-50000)%256;                 //给定时器T0的低八位赋初值
  60.    time++;
  61. }
复制代码

所有资料51hei提供下载:
数码管显示0-99(共阳极).rar (22.73 KB, 下载次数: 21)


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

使用道具 举报

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

使用道具 举报

板凳
ID:613308 发表于 2019-9-18 21:35 | 只看该作者
谢谢分享
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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