找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1425|回復: 1
收起左側

51單片機 將顯存單元的數(shù)據(jù)進行逐個交換,使數(shù)碼管形成移動顯示效果

[復制鏈接]
ID:400845 發(fā)表于 2020-10-21 08:56 | 顯示全部樓層 |閱讀模式
* 8位數(shù)碼管顯示                                                    *
*                                                                  *
********************************************************************
*                                                                  *
* 描述:                                                           *
*      將顯存單元的數(shù)據(jù)進行逐個交換,使數(shù)碼管形成移動顯示效果。    *
*                                                                  *
*******************************************************************/
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar data display[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,      
                      0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,};
unsigned char count,shift,temp;
/**********************************************************
延時子程序
**********************************************************/
void delayms(uint ms)
{
   uchar k;
   while(ms--)
   {
     for(k = 0; k < 120; k++);
   }
}
/**********************************************************
數(shù)據(jù)轉移函數(shù)
**********************************************************/
void  exchange()
{
    uchar  i,j;
    display[0]=display[8];
    for(i=8; i!=0; i--)
    {     
       j=i-1;
       display[i] = display[j];
    }
   
}
/*********************************************************
  數(shù)碼管顯示函數(shù)
*********************************************************/
void  disp()
{
  uchar i;
  shift=0x7f;
  
  for(i=0; i<8; i++)
  {  
    P0=display[i+1];
    P2=shift;
    shift=_cror_(shift,1);
    delayms(1);
  }
  P2=0xff ;
}
/*********************************************************
  主函數(shù)
*********************************************************/
void main()
{   
    P0=0xff;
    P2=0xff;
    TMOD=0x01;
    TH0=0x4c;           
    TL0=0x00;      
    EA=1;
    ET0=1;
    TR0=1;
    while(1)   
    {
      disp();
    }   
}
/*********************************************************
定時器0中斷服務函數(shù)  
*********************************************************/
void timer0() interrupt 1
{         
    TR0=0;
    TH0=0x4c;        //50ms定時常數(shù)           
    TL0=0x00;
    count++;
    if(count==20)
    {
       count=0;
     exchange();    //1s轉換一次數(shù)據(jù)
    }
    TR0=1;
}

回復

使用道具 舉報

ID:1 發(fā)表于 2020-10-21 15:59 | 顯示全部樓層
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表