新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 8位共陰數(shù)碼管動(dòng)態(tài)掃描自增自減

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

作者: 時(shí)間:2016-11-30 來源:網(wǎng)絡(luò) 收藏
#include//包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義
sbit duan=P2^2;//定義P2.2為段操作,愛設(shè)置哪個(gè)都行
sbit wei=P2^3;//定義P2.3為位操作
/*------------------------------------------------
程序主要作用于動(dòng)態(tài)掃描,沒什么實(shí)際應(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];//定義一個(gè)一維數(shù)組做為緩沖區(qū)
/*---------------------------定義進(jìn)入ROM
函數(shù)聲明
------------------------------------------------*/
void yeishi(unsigned int t);//函數(shù)聲明
/*------------------------------------------------
主函數(shù)
------------------------------------------------*/
main ()
{

unsigned char i,j;
//定義一個(gè)char型變量 i 取值范圍 0~255,如果定義j為unsigned long int就可以實(shí)現(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
{
///////////////拆分?jǐn)?shù)j//////////////////////////
huanchong[0]=shuzhi[j/100];
huanchong[1]=shuzhi[(j/10)%10];
huanchong[2]=shuzhi[j%10];
////////通過數(shù)學(xué)運(yùn)算得到每個(gè)位的數(shù)值并賦值給緩沖區(qū)因?yàn)橹挥?55三位
只定義三位
別問我為什么要這樣算,我數(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;
yeishi(300);//延時(shí)函數(shù)調(diào)用設(shè)置為300,按情況定,越大沒效果,越小有重影
}
}
}
/*------------------------------------------------
含有輸入?yún)?shù) unsigned int t,無返回值 unsigned int 是定義無符號整形變量,其值的范圍是
0~65535
------------------------------------------------*/
void yeishi(unsigned int t)
{
while(--t);
}


評論


技術(shù)專區(qū)

關(guān)閉