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

8位共陰數(shù)碼管動態(tài)掃描自增自減

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2013年06月12日   【字體:
#include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
sbit duan=P2^2;//定義P2.2為段操作,愛設置哪個都行
sbit wei=P2^3;//定義P2.3為位操作
/*------------------------------------------------
程序主要作用于動態(tài)掃描,沒什么實際應用
----------------------查表表格--------------------------*/

unsigned char code shuzhi[]={  
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
          };//數(shù)字表0123456789abcdef定義進RAM
unsigned char code weizhi[]={  
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f
          };//共陰數(shù)碼管位置表01234567定義進RAM
unsigned char huanchong[8];//定義一個一維數(shù)組做為緩沖區(qū)
/*---------------------------定義進入ROM
                  函數(shù)聲明
------------------------------------------------*/
void yeishi(unsigned int t); //函數(shù)聲明
/*------------------------------------------------
                    主函數(shù)
------------------------------------------------*/
main ()
{
                 
unsigned char i,j;
//定義一個char型變量 i 取值范圍 0~255,如果定義j為unsigned long int 就可以實現(xiàn)0~4294967295 
 
while (1)         //主循環(huán)
    {
  j=0; 
  j++;    //j不斷加1,直到255溢出,如果改成--j就是自減
  
  for(i=0;i<8;i++)//for循環(huán),i初始為0自加小于8,0-7
  {
  ///////////////拆分數(shù)j//////////////////////////
  huanchong[0]=shuzhi[j/100];
  huanchong[1]=shuzhi[(j/10)%10];
  huanchong[2]=shuzhi[j%10];
////////通過數(shù)學運算得到每個位的數(shù)值并賦值給緩沖區(qū)因為只有255三位
只定義三位
 別問我為什么要這樣算,我數(shù)理化英都不好,沒看見我的變量定義全是拼音么?而且我都不能保證
拼音是對的
有一定規(guī)律:
  huanchong[0]=shuzhi[j/10000000];
  huanchong[1]=shuzhi[(j/1000000)%10];
  huanchong[2]=shuzhi[(j/100000)%10];
  huanchong[3]=shuzhi[(j/10000)%10];
  huanchong[4]=shuzhi[(j/1000)%10];
  huanchong[5]=shuzhi[(j/100)%10];
  huanchong[6]=shuzhi[(j/10)%10];
  huanchong[7]=shuzhi[j%10];
////////////////////只用P0口,P0的定義已經在頭文件里面了////////////*/
   P0=weizhi[i];  
   wei=1;//位開關,1為開,0為關
   wei=0;
   P0=huanchong[i];//通過前面的運算,調用緩沖區(qū)數(shù)值
   duan=1;//段開關,1為開,0為關
   duan=0;
 yeishi(300);//延時函數(shù)調用設置為300,按情況定,越大沒效果,越小有重影
  }

  }
}
/*------------------------------------------------
含有輸入?yún)?shù) unsigned int t,無返回值 unsigned int 是定義無符號整形變量,其值的范圍是
 0~65535
------------------------------------------------*/

void yeishi(unsigned int t)
{
 while(--t);
}
關閉窗口

相關文章