51微控制器學習筆記(一)點燈/按鍵/數碼管
阿新 • • 發佈:2021-02-03
(一)點燈/按鍵/數碼管
在此感謝b站江科大自化協up老師的細緻講授
視訊連結:江科大自化協_51微控制器入門教程P1~P12
點亮一個LED
#include"REGX52.H"
void main()
{
P2 = 0xFE;//1111_1110
}
#include"REGX52.H"
void main()
{
P2 = 0xFE;//1111_1110
while(1)
{
}
}
一個亮一個滅
#include"REGX52.H" void main() { P2 = 0x55;//0101_0101 while(1) { } }
以1s為週期閃爍
#include"REGX52.H" #include"INTRINS.H" void Delay500ms () //@12.000MHz { unsigned char i,j,k; _nop_(); i = 4; j = 205; k = 107; do { do { while (--k); } while (--j); } while (--i); } void main() { while(1) { P2 = 0xFE;//亮燈 Delay500ms (); P2 = 0xFF;//滅燈 Delay500ms (); } }
獨立按鍵控制LED亮滅
#include"REGX52.H"
void main()
{
while(1)
{
if(P3_1==0)
{
P2_0=0;
}
else
{
P2_0=1;
}
}
}
獨立按鍵控制LED移位
#include"REGX52.H" void Delay(unsigned int xms); unsigned char LEDNum; void main() { while(1) { if(P3_1==0) { Delay(20); while(P3_1==0); Delay(20); LEDNum++; if(LEDNum>=8) LEDNum=0; P2=~(0x01<<LEDNum); } if(P3_0==0) { Delay(20); while(P3_0==0); Delay(20); if(LEDNum==0) LEDNum=7 else LEDNum--; P2=~(0x01<<LEDNum); } } } void Delay(unsigned int xms) { unsigned char i,j; while(xms--) { i = 2; j = 239; do { while (--j); } while (--i); } }
靜態數碼管顯示
第四位顯示6
#include"REGX52.H"
void main()
{
P2_4=1;
P2_3=0;
P2_2=0;
P0=0x7D;
while(1)
{
}
}
用子函式寫
#include"REGX52.H"
unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0X7F,0x6F}
void Nixie(unsigned char Location,Number)
{
switch(Location)
{
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
case 4:P2_4=1;P2_3=0;P2_2=0;break;
case 5:P2_4=0;P2_3=1;P2_2=1;break;
case 6:P2_4=0;P2_3=1;P2_2=0;break;
case 7:P2_4=0;P2_3=0;P2_2=1;break;
case 8:P2_4=0;P2_3=0;P2_2=0;break;
}
P0=NixieTable[Number];
}
void main()
{
Nixie(2,3);
while(1)
{
}
}
動態數碼管顯示
#include"REGX52.H"
unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0X7F,0x6F}
void Delay(unsigned int xms)
{
unsigned char i,j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
void Nixie(unsigned char Location,Number)
{
switch(Location)
{
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
case 4:P2_4=1;P2_3=0;P2_2=0;break;
case 5:P2_4=0;P2_3=1;P2_2=1;break;
case 6:P2_4=0;P2_3=1;P2_2=0;break;
case 7:P2_4=0;P2_3=0;P2_2=1;break;
case 8:P2_4=0;P2_3=0;P2_2=0;break;
}
P0=NixieTable[Number];
Delay(1);
P0=0x00;
}
void main()
{
while(1)
{
Nixie(1,1);
Delay(200);
Nixie(2,2);
Delay(200);
Nixie(3,3);
Delay(200);
}
}