找回密码
 立即注册

QQ登录

只需一步,快速开始

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

CT107D单片机数码管动态显示

[复制链接]
跳转到指定楼层
楼主
ID:252340 发表于 2017-11-22 17:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  1. #include "reg52.h"  //定义51单片机特殊功能寄存器
  2. #include "intrins.h"
  3.               //  0    1    2    3    4    5    6    7    8    9
  4. code unsigned char duantab[] = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

  5. code unsigned char weitab[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

  6. unsigned char i= 0;

  7. void display(void);

  8. sbit a = P2^5;
  9. sbit b = P2^6;
  10. sbit c = P2^7;

  11. void wei_clock();
  12. void duan_clock();



  13. //主函数
  14. void main(void)
  15. {
  16.     TMOD = 0x01;  //配置定时器工作模式
  17.     TH0 = (65536-2000)/256;
  18.     TL0 = (65536-2000)%256;  
  19.     EA = 1;
  20.     ET0 = 1;  //打开定时器中断
  21.     TR0 = 1;  //启动定时器
  22.     while(1)
  23.     {

  24.     }
  25. }


  26. void display()
  27. {

  28.         //先送位选
  29.         P0 = weitab[ i];
  30.         wei_clock();
  31.         //再送段选
  32.         P0 = duantab[ i];
  33.         duan_clock();
  34.         i++;
  35.         if(i>=8)
  36.                 i=0;
  37. }
  38. //定时器中断服务函数
  39. void isr_timer_0(void)  interrupt 1  //默认中断优先级 1
  40. {
  41.     TH0 = (65536-2000)/256;
  42.     TL0 = (65536-2000)%256; //定时器重载
  43.         display(); //2ms执行一次
  44. }
  45. //段码锁存 Y7C 1变为0
  46. //即74HC138的Y7输出 0变为1
  47. void duan_clock()
  48. {
  49.         //74HC138 的Y7 为0
  50. //        a = 1;
  51. //        b = 1;
  52. //        c = 1;
  53.         P2 = 0xff; //1111 1111
  54.         _nop_();
  55.         _nop_();
  56.         //74HC138 的Y7 为1
  57. //        a = 0;
  58. //        b = 1;
  59. //        c = 0;
  60.         P2 = 0x5f; //0101 1111
  61. }
  62. //位码锁存 Y6C 1变为0
  63. //即74HC138的Y6输出 0变为1
  64. void wei_clock()
  65. {
  66.         //74HC138 的Y6 为0
  67.         //a = 0;
  68.         //b = 1;
  69.         //c = 1;
  70.         P2 = 0xdf; //1101 1111
  71.         _nop_();
  72.         _nop_();
  73. //74HC138 的Y6 为1
  74. //        a = 0;
  75. //        b = 1;
  76. //        c = 0;
  77.         P2 = 0x5f; //0101 1111
  78. }
复制代码


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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