- #include<reg51.h>
- //--定義使用的IO口--//
- #define GPIO_DIG P0 //段選,被選中的數碼管顯示的內容
- #define GPIO_PLACE P1 //位選,選擇哪個數碼管顯示
- //--定義全局變量--//
- unsigned char code DIG_PLACE[8] = {
- 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位選控制 查表的方法控制
- unsigned char code DIG_CODE[16] = {
- 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
- //共陰數碼管的0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼
- unsigned char DisplayData[8]; //用來存放要顯示的8位數的值
- //--聲明全局函數--//
- void DigDisplay(); //動態顯示函數
- /*******************************************************************************
- * 函 數 名 : main
- * 函數功能 : 主函數
- * 輸 入 : 無
- * 輸 出 : 無
- *******************************************************************************/
- void main(void)
- {
- unsigned char i;
- for(i=0; i<8; i++)
- {
- DisplayData[i] = DIG_CODE[i];
- }
- while(1)
- {
- DigDisplay();
- }
- }
- /*******************************************************************************
- * 函 數 名 : DigDisplay
- * 函數功能 : 使用數碼管顯示
- * 輸 入 : 無
- * 輸 出 : 無
- *******************************************************************************/
- void DigDisplay()
- {
- unsigned char i;
- unsigned int j;
- for(i=0; i<8; i++)
- {
- GPIO_PLACE = DIG_PLACE[i]; //發送位選
- GPIO_DIG = DisplayData[i]; //發送段碼
- j = 10; //掃描間隔時間設定
- while(j--);
- GPIO_DIG = 0x00;//消隱
- }
- }
復制代碼 |