8位共陰數(shù)碼管動態(tài)掃描自增自減
sbit duan=P2^2;//定義P2.2為段操作,愛設(shè)置哪個都行
sbit wei=P2^3;//定義P2.3為位操作
/*------------------------------------------------
程序主要作用于動態(tài)掃描,沒什么實際應(yīng)用
----------------------查表表格--------------------------*/
unsigned char code shuzhi[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
};//數(shù)字表0123456789abcdef定義進(jìn)RAM
unsigned char code weizhi[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f
};//共陰數(shù)碼管位置表01234567定義進(jìn)RAM
unsigned char huanchong[8];//定義一個一維數(shù)組做為緩沖區(qū)
/*---------------------------定義進(jìn)入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
sbit wei=P2^3;//定義P2.3為位操作
/*------------------------------------------------
程序主要作用于動態(tài)掃描,沒什么實際應(yīng)用
----------------------查表表格--------------------------*/
unsigned char code shuzhi[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
};//數(shù)字表0123456789abcdef定義進(jìn)RAM
unsigned char code weizhi[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f
};//共陰數(shù)碼管位置表01234567定義進(jìn)RAM
unsigned char huanchong[8];//定義一個一維數(shù)組做為緩沖區(qū)
/*---------------------------定義進(jìn)入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=0;
j++;//j不斷加1,直到255溢出,如果改成--j就是自減
for(i=0;i<8;i++)//for循環(huán),i初始為0自加小于8,0-7
{
///////////////拆分?jǐn)?shù)j//////////////////////////
huanchong[0]=shuzhi[j/100];
huanchong[1]=shuzhi[(j/10)%10];
huanchong[2]=shuzhi[j%10];
////////通過數(shù)學(xué)運(yùn)算得到每個位的數(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的定義已經(jīng)在頭文件里面了////////////*/
P0=weizhi[i];
wei=1;//位開關(guān),1為開,0為關(guān)
wei=0;
for(i=0;i<8;i++)//for循環(huán),i初始為0自加小于8,0-7
{
///////////////拆分?jǐn)?shù)j//////////////////////////
huanchong[0]=shuzhi[j/100];
huanchong[1]=shuzhi[(j/10)%10];
huanchong[2]=shuzhi[j%10];
////////通過數(shù)學(xué)運(yùn)算得到每個位的數(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的定義已經(jīng)在頭文件里面了////////////*/
P0=weizhi[i];
wei=1;//位開關(guān),1為開,0為關(guān)
wei=0;
P0=huanchong[i];//通過前面的運(yùn)算,調(diào)用緩沖區(qū)數(shù)值
duan=1;//段開關(guān),1為開,0為關(guān)
duan=0;
duan=1;//段開關(guān),1為開,0為關(guān)
duan=0;
yeishi(300);//延時函數(shù)調(diào)用設(shè)置為300,按情況定,越大沒效果,越小有重影
}
}
}
/*------------------------------------------------
含有輸入?yún)?shù) unsigned int t,無返回值 unsigned int 是定義無符號整形變量,其值的范圍是
0~65535
------------------------------------------------*/
void yeishi(unsigned int t)
{
while(--t);
}
}
}
}
/*------------------------------------------------
含有輸入?yún)?shù) unsigned int t,無返回值 unsigned int 是定義無符號整形變量,其值的范圍是
0~65535
------------------------------------------------*/
void yeishi(unsigned int t)
{
while(--t);
}
評論