|
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit Green_En=P1^0;
- sbit Blue_En=P1^1;
- sbit Red_En=P1^2;
- uchar index;
- uchar num;
- //綠色逐個(gè)熄滅
- uint code Green[]=
- {
- 0x0fff,0x07ff,0x03ff,0x01ff,0x00ff,0x007f,0x003f,0x001f,0x000F,0x0007,0x0003,0x0001,0x0000,
- };
- //藍(lán)色拉幕效果
- uint code Blue[]=
- {
- 0x0801,0x0402,0x0204,0x0108,0x0108,0x0090,0x0060,0x00f0,0x01F8,0x03FC,0x7FE,0x0FFF,0x0000,
- };
- //紅色逐個(gè)點(diǎn)亮
- uint code Red[]=
- {
- 0x0000,0x0001,0x0003,0x0007, 0x000F,0x001f,0x003f,0x007f,0x00ff,0x01ff,0x03ff,0x07ff,0x0fff,
- };
- //延時(shí)
- void delay5ms(void) //誤差 0us
- {
- unsigned char a,b;
- for(b=185;b>0;b--)
- for(a=12;a>0;a--);
- }
- //主程序
- void main()
- {
- while(1)
- { //從數(shù)組中讀取數(shù)據(jù)送至 P3 和 P2 口顯示
- for (index=0;index<60;index++) //累計(jì)xx次,換下一幀效果。
- {
- P3=Green[num]/256;
- P2=Green[num]%256;
- Green_En=0;
- delay5ms();
- Green_En=1;
- P3=Blue[num]/256;
- P2=Blue[num]%256;
- Blue_En=0;
- delay5ms();
- Blue_En=1;
- P3=Red[num]/256;
- P2=Red[num]%256;
- Red_En=0;
- delay5ms();
- Red_En=1;
- }
- num++;
- num=num%13; //到達(dá)幀數(shù),從新開(kāi)始。
- }
- }
復(fù)制代碼 附上Proteus仿真結(jié)果。
666.gif (340.64 KB, 下載次數(shù): 32)
下載附件
2019-1-18 12:47 上傳
|
|