單片機(jī)學(xué)習(xí)——LED跑馬燈設(shè)計(jì)(自用)
使用元件:51單片機(jī)、138譯碼器、573鎖存器、LED燈
?硬件設(shè)計(jì)思路:通過p25、p26、p27口輸入二進(jìn)制數(shù),輸入的二進(jìn)制編碼通過或非門輸出到鎖存器Yn口(IO擴(kuò)展開發(fā)模式)。Yn口控制鎖存器是否在工作狀態(tài)(LE引腳為高電平時(shí)在工作狀態(tài))。鎖存器P0口接LED燈,通過軟件編程實(shí)現(xiàn)對LED燈亮的控制。
軟件部分:
#include "reg52.h"
sbit HC138_A = P2^5;
sbit HC138_B = P2^6;
sbit HC138_C = P2^7;? ?//控制二進(jìn)制數(shù)譯碼器輸入的串口
void delay(unsigned int t)
{
?while(t--);
?while(t--);
?} //流水燈必備的延時(shí)
void LEDrunning()
{
? unsigned char i ;
? HC138_A = 0;
? HC138_B = 0;
? HC138_C = 1; ? //100控制二進(jìn)制4輸入
??
? for(i=1;i<3;i++)
? {
? P0=0x00; ? //低電平,開燈
? delay(60000);
? delay(60000);
? P0=0xff; ? //高電平,關(guān)燈
? delay(60000);
? delay(60000);
? } ? //閃爍三次
? for(i=1;i<=8;i++) ? //for循環(huán)做移位函數(shù)
? {
? P0=0xff << i; ? //高電平左移,控制燈開
? delay(60000);
? delay(60000);
? } ??
for(i=1;i<=8;i++)
? {
? P0=-(0xff << i); ? //低電平右移,控制燈關(guān)
? delay(60000);
? delay(60000);
? }
}
? ?
void main()
{
? while (1)
? {
? LEDrunning() ;
? }
}