STC单片机不用驱动芯片直接驱动数码管程序
所有资料51hei提供下载:
led.doc
(1.94 KB, 下载次数: 102)
单片机源程序如下:
-
- #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黑下载附件…………
复制代码
|