在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>源碼下載>C/C++語言編程>

七節顯示器實驗案例程序分享

大小:0.1 MB 人氣: 2017-09-06 需要積分:0
七節顯示器實驗案例程序分享

1、4個七節顯示器跑馬燈實驗

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

2、直接驅動4位七節顯示器實驗

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

3、7447解碼之4位數七節顯示器實驗

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

4、七節顯示器實驗程序

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

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

      發表評論

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

      發表評論,獲取積分! 請遵守相關規定!

      ?
      主站蜘蛛池模板: 免费观看一级成人毛片 | 黄色在线视频免费看 | 一本大道高清在线视频 视频 | 在线网址你懂的 | h视频欧美| 亚洲一区二区综合 | 午夜看一级特黄a大片 | 91人成网站色www免费 | 欧美一级高清免费a | 五月激情综合丁香色婷婷 | 在线天堂中文新版www | 久久九九国产 | 午夜肉伦伦影院 | 999国产精品| 三级五月天 | 午夜神马福利 | 好大好硬好深好爽想要免费视频 | 91x视频 | 午夜寂寞影院视频观看 | 欧美又黄又嫩大片a级 | 中文字幕一区二区三区视频在线 | 久久综合婷婷 | 日本色高清| 欧美尺寸又黑又粗又长 | 六月婷婷在线 | 成 人网站免费 | 色综合激情 | 伊人天伊人天天网综合视频 | 大蕉久久伊人中文字幕 | 天天操天天草 | 中文字幕一区二区三区在线观看 | 视频一区 中文字幕 | 国产色爽女| 91午夜在线观看 | 国产一级特黄毛片 | 黄 色 免费网 站 成 人 | 美女视频黄.免费网址 | 天天摸天天爽天天澡视频 | 欧美成人精品一区二三区在线观看 | 天天操夜操 | 三级理论在线观看 |