- /***************代碼注釋***************/
- /*這個代碼的實現需要74H138模塊的控制才能實現,
- 關于模塊的資料如下:
- 74HC138D 是一種三通道輸入、八通道輸出譯碼器,主要應用于消費類電子產
- 品。
- 主要特性
- ①采用 CMOS 工藝
- ②低功耗
- ③工作電壓:3.0V-5.0V
- ④封裝形式:SOP16
- 管腳功能定義說明
- 從上面的管腳功能定義說明及真值表可以知道該芯片使用方法非常簡單,給
- E1、E2 使能管腳低電平,E3 管腳為高電平,至于哪個管腳輸出有效電平(低電
- 平),要看 A0,A1,A2 輸入管腳的電平狀態。如果 A0,A1,A2 都為低電平,則
- Y0 輸出有效電平(低電平),其他管腳均輸出高電平。如果 A0 為高電平,A1,
- A2 都為低電平,則 Y1 輸出有效電平(低電平),其他管腳均輸出高電平。其他
- 幾種輸出大家可以對照真值表查看。如果 E1、E2 使能管腳任意一個為高電平或
- 者 E3 為低電平,不論輸入是什么,輸出都為高電平。
- 這里給大家總結一個方法:A0、A1、A2 輸入就相當于 3 位 2 進制數,A0 是
- 低位,A1 是次高位,A2 是高位。而 Y0-Y7 具體哪一個輸出有效電平,就看輸入
- 二進制對應的十進制數值。比如輸入是 101(A2,A1,A0),其對應的十進制數
- 是 5,所以 Y5 輸出有效電平(低電平)。
- ***************************/
- #include "reg52.h" //此文件中定義了單片機的一些特殊功能
- #define uint unsigned int
- #define uchar unsigned char
- sbit LSA=P2^2;
- sbit LSB=P2^3;
- sbit LSC=P2^4;
- uchar code smgduan[17]={0x06,0x4f,0x06,0x66,0x40,0x6d,0x5b,0x3f,
- 0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e};// 顯 示0~F 的值
- void delay(uint i)
- {
- while(i--);
- }
- void DigDisplay()
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- switch(i) //位選,選擇點亮的數碼管,
- {
- case(0):
- LSA=0;LSB=0;LSC=0; break;//顯示第 0 位
- case(1):
- LSA=1;LSB=0;LSC=0; break;//顯示第 1 位
- case(2):
- LSA=0;LSB=1;LSC=0; break;//顯示第 2 位
- case(3):
- LSA=1;LSB=1;LSC=0; break;//顯示第 3 位
- case(4):
- LSA=0;LSB=0;LSC=1; break;//顯示第 4 位
- case(5):
- LSA=1;LSB=0;LSC=1; break;//顯示第 5 位
- case(6):
- LSA=0;LSB=1;LSC=1; break;//顯示第 6 位
- case(7):
- LSA=1;LSB=1;LSC=1; break;//顯示第 7 位
- }
- P0=smgduan[i];//發送段碼
- delay(100); //間隔一段時間掃描
- P0=0x00;//消隱
- }
- }
- void main()
- {
- while(1)
- {
- DigDisplay(); //數碼管顯示函數
- }
- }
復制代碼 |