萬用電路板

----纯属爱好,谁与共鸣

« 印制版设计经验点滴非常精确的C语言延时子程序表 »

单片机控制数码管移位显示

        数码管的移位显示可以使用少数的数码管显示更多的信息,也可以给人们带来动感的感觉。

        程序比较简单,利用查表法显示0~F这16个数字,利用改变查表的起始值来实现移动。表格里有一些空白的代码是用来填充数字出现前和数字结束后的空格。

        硬件电路相关文章:[自制多功能数码管显示实验板]

        下面是演示视频:

C语言源程序如下:

/*************************************************
程序名称:8位数码管移位显示0-F
简要说明:使用共阳型数码管
                      P0口输出数码管段码,P2口输出数码管位码
编    写:JiangX.net
时    间:2008-8-21
*************************************************/

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define duan P0    //定义段码输出
#define wei P2     //定义位码输出
uchar a=0,b=0;     //全局变量。a:定时器循环次数;b:移位量
uchar code TAB[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,//空白
                  0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,//数字0-9
                  0x88,0x83,0xC6,0xa1,0x86,0x8e,//字母A-F
      0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff//空白
      };

/*****************延时子程序*****************/
void delay(n)
    {
 while(n--){
  uint j;
  for (j=0;j<125;j++);
 }
    }

/*****************程序初始化*****************/
void init()
   {
    TMOD=0x1;      //定时方式1
    TH0=0xb8;
    TL0=0x63;      //设置计时时间为50ms
 wei=~0;        //设置位扫描初值 
   }

/*****************定时器中断0****************/
void timer0(void) interrupt 1
   {
    TH0=0xb8;
    TL0=0x63;
 a++;     //移位变量累加
 if (a==20){
    a=0;
    b++;
    }
 if (b==24){
    b=0;
    }
 }

/******************显示子程序****************/
void display()
   {
 uchar i;
 uchar k;
 for (i=0;i<8;i++)
    {
  k=1<<i;
  wei=~k;       //位扫描
        duan=TAB[i+b];//输出段码
  delay(1);                
     }
    }
      
/******************主函数******************/             
void main ()
   {
 init();
 TR0=1;
 ET0=1;
 EA=1;
 while(1)
   display();
   }

原创作品如转载,请注明:转载自萬用電路板 [ http://www.jiangx.net/ ]

  • quote 1.cwl0826
  • 您好,很羡慕您的成就,我想问一下那个单片机控制数码管移位显示程序里面的i和b怎么取值的??看了很久没看明白,希望可以得到您的指点,万分感谢!!
  • 2010-4-24 18:30:45 回复该留言

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

赞助商广告

最近发表

热文排行

最新评论及回复

广告

图标汇集

Powered By Z-Blog 1.8 Walle Build 100427

Copyright 2008-2011 JiangX.com 萬用電路板 All Rights Reserved.
鄂ICP备08003060号 [login]