STC單片機不用驅動芯片直接驅動數碼管程序
所有資料51hei提供下載:
led.doc
(1.94 KB, 下載次數: 102)
2017-11-14 14:09 上傳
點擊文件名下載附件
STC單片機直接驅動數碼管程序 下載積分: 黑幣 -5
單片機源程序如下:
-
- #include "STC15F2K60S2.H"
- #define uint unsigned int
- #define uchar unsigned char
- //P0腳是輸出段碼,單片機驅動電流小,要加上拉電阻
- sbit LED_D1 = P1^6;//第1位數碼管
- sbit LED_D2 = P1^5;//第2位數碼管
- sbit LED_D3 = P1^4;//第3位數碼管
- sbit LED_D4 = P1^7;//第4位數碼管
- sbit LED_D5 = P1^3;//第5位數碼管
- sbit LED_D6 = P1^2;//第6位數碼管
- sbit LED_D7 = P1^1;//第7位數碼管
- sbit LED_D8 = P1^0;//第8位數碼管
-
- // 0 1 2 3 4 5 6 7 8 9 -
- uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //共陰數碼管字段碼
- uchar D_word[8];//各個位上的數字的緩存
- void Delay_1ms(uint i) //延時函數
- { uchar x,j;
- for(j=0;j<i;j++)
- for(x=0;x<=10;x++)
- ;
- }
- void display(unsigned long display_temp) //數碼管顯示程序
- {
- uchar i=0;
- for(i=0;i<8;i++) //這塊LCD可以顯示4位數,逐位拆分要轉換的數字
- {
- D_word[i] = display_temp%10; //個位取模求余數,即得個位上的數字
- display_temp /= 10; //要轉換的數字除10求整數,即是整體向右移一位,下次求余即得十位上的數字,如此類推
- }
- /***************第一至四位數碼管*******************************/
- P0 = table[D_word[7]];
- LED_D1= 0;
- Delay_1ms(2);
- LED_D1=1;
- P0 = table[D_word[6]];
- LED_D2= 0;
- Delay_1ms(2);
- LED_D2=1;
- P0 = table[D_word[5]];
- LED_D3= 0;
- Delay_1ms(2);
- LED_D3=1;
- P0 = table[D_word[4]];
- LED_D4= 0;
- Delay_1ms(2);
- LED_D4=1;
- /****************第五至八位數碼管**********************************/
- P0 = table[D_word[3]];
- LED_D5 = 0;
- Delay_1ms(2);
- LED_D5=1;
- P0 = table[D_word[2]];
- LED_D6 = 0;
- Delay_1ms(2);
- LED_D6=1;
- P0 = table[D_word[1]];
- LED_D7 = 0;
- Delay_1ms(2);
- LED_D7=1;
- P0 = table[D_word[0]];
- LED_D8 = 0;
- Delay_1ms(2);
- LED_D8=1;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
|