|
发表于 2012-8-26 22:46:26
|
显示全部楼层
- #include <REG51.H>
- #define uchar unsigned char
- #define uint unsigned int
- uchar buf[24]; //16个LED以免出错定义24个数据
- void Display(void)
- {
- uchar temp, i, j; //数据位数,频率,数据调整
- static uchar LR = 0; //数据移动
- uint LED = 0xffff, delay; //显示数据,显示时间
- for(delay = 0;delay < 2;delay++)
- {
- for(i = 0;i < 255;i += 31) // 255 / 8 = 32
- {
- for(temp = 0;temp < 16;temp++)
- {
- if(i < buf[temp])
- {
- LED &= ~(1 << temp);
- }
- else
- {
- LED |= 1 << temp;
- }
- }
- P0 = LED;
- P2 = LED >> 8;
- }
- }
- buf[LR] = 255;
- if((LR - 9) > 24)
- {
- j = 0;
- }
- else
- {
- j = LR - 8;
- }
- for(temp = (LR - 1);temp >= j && temp < 24;temp--)
- {
- buf[temp] -= 32;
- if(buf[temp] == 255)
- {
- buf[temp] = 0;
- }
- }
- LR++;
- if(LR == 24)
- {
- LR = 0;
- }
- }
- void main(void)
- {
- while(1)
- {
- Display();
- }
- }
复制代码 |
|