您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費注冊]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>C/C++語言編程>

七節(jié)顯示器實驗案例程序分享

大?。?/span>0.1 MB 人氣: 2017-09-06 需要積分:0
七節(jié)顯示器實驗案例程序分享

1、4個七節(jié)顯示器跑馬燈實驗

/* ch05-4-3.c - 4個七節(jié)顯示器跑馬燈實驗,P1.0~3 為掃描信號 P2接七節(jié)顯示器 */
//==聲明區(qū)==================================
#include? ???? // 定義8051暫存器之標(biāo)頭檔,P2-17~19?
#define?SCANP?P1??// 定義掃瞄碼由Port 1輸出?
#define?SEG7P?P2??// 定義七節(jié)顯示碼由Port 2輸出?
char code TAB[11]={?0xc0, 0xf9, 0xa4, 0xb0, 0x99,???// 數(shù)字0-4
???? ??0x92, 0x83, 0xf8, 0x80, 0x98, 0xbf };?// 數(shù)字5-9,-
#define? counts? 6??// 聲明字組數(shù)量?
char disp[counts+7]={10,10,10,10,1,2,3,4,5,6,10,10,10};??//----123456---?
void delay1ms(int);??// 聲明延遲函數(shù)?
void scanner(char);??// 掃瞄函數(shù)?
//==主程序===================================
main()?????// 主程序開始?
{?char i;????// 聲明變數(shù)i
?while(1)???// 無窮循環(huán),程序一直跑?
??for(i=0;i ???scanner(i);?// 掃瞄第i列字組?
}??????// 主程序結(jié)束?
//==子程序====================================
/* 延遲函數(shù),延遲約x*1ms */
void delay1ms(int x)?// 延遲函數(shù)開始?
{?int i,j;???// 聲明整數(shù)變數(shù)i,j?
?for (i=0;i ??for (j=0;j<120;j++);?// 計數(shù)120次,延遲1ms?
}??????// 延遲函數(shù)結(jié)束?
/* 掃瞄字組函數(shù),顯示第x組數(shù)字 */
void scanner(char x)?// 掃瞄字組函數(shù)開始?
{?char i,j,BCD,scan;?// 聲明變數(shù)?
?for (i=0;i<30;i++)?// 掃瞄30次i循環(huán)?
?{?scan=0xf7;??// 掃瞄信號初值1111 0111
??for (j=0;j<4;j++)?// 掃瞄4個數(shù)字j循環(huán)?
??{?SEG7P=0xff;?// 關(guān)閉七段顯示器(防止閃動)
???SCANP=scan;?// 輸出掃瞄信號(低4位元)
???BCD=disp[x+j];?// 讀取第x組第j個數(shù)字之BCD碼?
???SEG7P=TAB[BCD];?// 輸出至七節(jié)顯示器?
???delay1ms(4);?// 延遲4ms
???scan>>=1;?// 產(chǎn)生下個掃瞄信號?
??}????// 結(jié)束掃瞄4個數(shù)字j循環(huán)?
?}?????// 結(jié)束掃瞄30次i循環(huán)?
}??????//?scanner函數(shù)結(jié)束?
?

2、直接驅(qū)動4位七節(jié)顯示器實驗

/* ch05-4-2.c - 直接驅(qū)動4位七節(jié)顯示器實驗,P1.0~3為掃描信號 P2接七節(jié)顯示器 */
//==聲明區(qū)====================================
#include?? ??// 定義8051暫存器之標(biāo)頭檔,P2-17~19?
#define?SCANP?P1???// 定義掃瞄碼由Port 1輸出?
#define?SEG7P?P2???// 定義七節(jié)顯示碼由Port 2輸出?
char code TAB[10]={?0xc0, 0xf9, 0xa4, 0xb0, 0x99,?//數(shù)字0-4
????? ?0x92, 0x83, 0xf8, 0x80, 0x98 };?//數(shù)字5-9
char code disp[2][4]={?{2,0,0,8},?// 顯示資料(第0組)
??????{0,3,1,5}}; // 顯示資料(第1組)
void delay1ms(int);????// 聲明延遲函數(shù)?
void scanner(char);????// 掃瞄函數(shù)?
//==主程序====================================
main()???????//?主程序開始?
{?char i,j;?????//?聲明變數(shù)i,j
?while(1)?????//?無窮循環(huán),程序一直跑?
?{?for(i=0;i<2;i++)??//?顯示第0,1行字組,for循環(huán)(字組i)開始?
???for(j=0;j<3;j++)?//?閃爍三次?
???{?scanner(i);??//?掃瞄第i行字組?
????SCANP=0xff;??//?全滅?
????delay1ms(480);?//?延遲480 1m=0.48s
???}
?}???????//?while循環(huán)結(jié)束?
}????????//?主程序結(jié)束?
//==子程序====================================
/* 延遲函數(shù),延遲約x 1ms */
void delay1ms(int x)???// 延遲函數(shù)開始?
{?int i,j;?????// 聲明整數(shù)變數(shù)i,j?
?for (i=0;i ??for (j=0;j<120;j++);?// 計數(shù)120次,延遲1ms?
}????????// 延遲函數(shù)結(jié)束?
/* 掃瞄字組函數(shù),顯示第x組數(shù)字 */
void scanner(char x)???// 掃瞄字組函數(shù)開始
{?char i,j,BCD,scan;???// 聲明變數(shù)?
?for (i=0;i<30;i++)???// 掃瞄30次i循環(huán)?
?{?scan=0xf7;????// 掃瞄信號初值1111 0111
??for (j=0;j<4;j++)??// 掃瞄4個數(shù)字j循環(huán)?
??{?SEG7P=0xff;???// 關(guān)閉七段顯示器(防止閃動)
???SCANP=scan;???// 輸出掃瞄信號(低4位元)
???BCD=disp[x][j];??// 讀取第x組第j個數(shù)字之BCD碼?
???SEG7P=TAB[BCD];??// 輸出至七節(jié)顯示器?
???delay1ms(4);??// 延遲4ms
???scan>>=1;???// 產(chǎn)生下個掃瞄信號?
??}??????// 結(jié)束掃瞄4個數(shù)字j循環(huán)?
?}???????// 結(jié)束掃瞄30次i循環(huán)?
}????????//?scanner函數(shù)結(jié)束?
?

3、7447解碼之4位數(shù)七節(jié)顯示器實驗

/* ch05-4-1.c -7447解碼之4位數(shù)七節(jié)顯示器實驗,P1.3~0為掃描信號,P1.7~4接7447 */
//==聲明區(qū)=================================
#include????// 定義8051暫存器之標(biāo)頭檔,P2-17~19?
#define?SCANP? P1????//?定義掃瞄信號由P1輸出?
char code disp[2][4]={?{2,0,0,8},?//?顯示資料(第0組)
??????{0,3,1,5}}; //?顯示資料(第1組)
void delay1ms(int);????//?聲明延遲函數(shù)?
void scanner(char);????//?掃瞄函數(shù)?
//==主程序=================================
main()???????//?主程序開始?
{?char i,j;?????//?聲明變數(shù)i,j
?while(1)?????//?無窮循環(huán),程序一直跑?
?{?for(i=0;i<2;i++)??//?顯示第0,1列字組,for循環(huán)(字組i)開始?
???for(j=0;j<3;j++)?//?閃爍三次?
???{?scanner(i);??//?掃瞄第i列字組?
????SCANP=0xff;??//?全滅?
????delay1ms(480);?//?延遲480 1m=0.48s
???}
?}???????//?while循環(huán)結(jié)束?
}????????//?主程序結(jié)束?
//==子程序====================================
/* 延遲函數(shù),延遲約x 1ms */
void delay1ms(int x)???//?延遲函數(shù)開始?
{?int i,j;?????//?聲明整數(shù)變數(shù)i,j?
?for (i=0;i ??for (j=0;j<120;j++);?//?計數(shù)120次,延遲1ms?
}????????//?延遲函數(shù)結(jié)束?
/* 掃瞄字組函數(shù),顯示第x組數(shù)字 */
void scanner(char x)???//?掃瞄字組函數(shù)開始
{?char i,j,BCD,scan;???//?聲明變數(shù)?
?for (i=0;i<30;i++)???//?掃瞄30次i循環(huán)?
?{?scan=0xf7;????//?掃瞄信號初值1111 0111
??for (j=0;j<4;j++)??//?掃瞄4個數(shù)字j循環(huán)?
??{?BCD=disp[x][j];??//?讀取第x組第j個數(shù)字之BCD碼?
???SCANP=(BCD<<4)|(scan&0x0f);
???// 輸出BCD碼(高4位元)與掃瞄信號(低4位元)
???delay1ms(4);??//?延遲4ms
???scan>>=1;???//?產(chǎn)生下個掃瞄信號?
??}??????//?結(jié)束掃瞄4個數(shù)字j循環(huán)?
?}???????//?結(jié)束掃瞄30次i循環(huán)?
}????????//?scanner函數(shù)結(jié)束?
?
?
?

4、七節(jié)顯示器實驗程序

/* ch03-3-4.c - 七節(jié)顯示器實驗程序? */
//==聲明區(qū)=====================================
#include? // 定義8051暫存器的標(biāo)頭檔,P2-17~19?
#define?SEG?P0??//?定義七節(jié)顯示器接至Port 0
/* 聲明七節(jié)顯示器驅(qū)動信號陣列(共陽) */
char code TAB[10]={?0xc0, 0xf9, 0xa4, 0xb0, 0x99,?// 數(shù)字0-4
?????0x92, 0x83, 0xf8, 0x80, 0x98 };?// 數(shù)字5-9
void delay(int);??//?聲明延遲函數(shù)?
//==主程序=====================================
main()?????//?主程序開始?
{?unsigned char i;?//?聲明無號數(shù)字元變數(shù)i
?while(1)???//?無窮循環(huán),程序一直跑?
??for(i=0;i<10;i++)?//?顯示0-9,共10次?
?{?SEG=TAB[i];??//?顯示數(shù)字?
???delay(500);?//?延遲500 1m=0.5秒?
??}????//?for循環(huán)結(jié)束?
}??????//?主程序結(jié)束?
//==子程序=====================================
/* 延遲函數(shù),延遲約x 1ms */
void delay(int x)??//?延遲函數(shù)開始?
{?int i,j;???//?聲明整數(shù)變數(shù)i,j?
?for (i=0;i ??for (j=0;j<120;j++);//?計數(shù)120次,延遲1ms?
}??????//?延遲函數(shù)結(jié)束?
?

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

      發(fā)表評論

      用戶評論
      評價:好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關(guān)規(guī)定!

      ?