專注電子技術(shù)學習與研究
當前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

數(shù)碼管滾動顯示數(shù)字程序

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2009年11月21日   【字體:

/************************************************
跳線設(shè)置:默認
顯示效果:012345 這幾個數(shù)字在51hei單片機板子的后6個數(shù)碼管中滾動顯示
************************************************/
#include<reg52.h> //頭文件
#include<intrins.h>
#define uchar unsigned char
uchar code table[]={0x3f,0x06,0x5b,//數(shù)碼管顯示的數(shù)值
0x4f,0x66,0x6d,0x00,0x00,0x00,0x00,
0x00,0x00,0x3f,0x06,0x5b,0x4f,0x66};
sbit DUAN=P2^6;     //74HC573的LE端  U1  LED的段選端
sbit WEI=P2^7;      //74HC573的LE端  U2  LED的位選端
uchar flag;  //定義標志位
void main()   //主函數(shù)
{
 uchar i,j,k,h,cnt;//定義局部變量
 TH0=0XF7;  //裝入初始值,時間約為2.5ms
 TL0=0X00;
 ET0=1;  //開分控
 EA=1;  //開總控
 TR0=1; //啟動定時器
 while(1)
 {
 j=cnt+6; //控制循環(huán)的數(shù)值
 for(k=0;k<150;k++) // 延時
 {
  h=0xfb;  //準備點亮數(shù)碼管
  for(i=cnt;i<j;i++)
  {
  WEI=1;  //讓位選的這個74hc573處于直通狀態(tài),也就是輸入0,輸出也是0,輸入1輸出也是1
  P0=h;   //點亮對應的數(shù)碼管
  WEI=0;  //鎖存 也就是保持74hc573現(xiàn)在這個時刻的輸出狀態(tài)一直不變

  DUAN=1; //同上哦
  P0=table[i];  //顯示對應的數(shù)值
  DUAN=0;
   while(!flag);  //延時2.5ms
   flag=0;   //標志位清零,準備下次顯示
   DUAN=1;
   P0=0x00;   //關(guān)閉數(shù)碼管,消隱
   DUAN=0;
   h=_crol_(h,1); //循環(huán)左移
  }
 }
 cnt++; //加1,確定哪些數(shù)值顯示
 if(cnt==12)  //移位的次數(shù)
 cnt=0; //清零,準備下次顯示
 } 
}
void time() interrupt 1 //定時器0
{
 TH0=0XF7;  //裝入初值
 TL0=0X00;
 flag=1;   //標志位置1
}

關(guān)閉窗口

相關(guān)文章