文章目錄
- 前言
- 一、流水燈
- 1.目的:
- 2.硬體方面:
- 3.實作方法:
- 二、代碼
前言
不知不覺學習單片機也已經一年了,從51到32,做過幾個小東西也算已經成功入門了,突然了解到藍橋杯也有單片機組,考核的平臺是51單片機,因此想趁著閑暇時間總結一下基于藍橋杯實驗平臺的51單片機的知識,順便寫幾篇博客總結一下,最后祝愿所有參加藍橋杯的朋友們都能夠取得一個好的成績!
一、流水燈
1.目的:
實作流水燈的效果,從左到右依次點亮,從右往左依次熄滅,如此回圈往復,
2.硬體方面:
看了藍橋杯官方單片的原理圖發現,這個51開發板的8個led受一個鎖存器和一個譯碼器的控制,


3.實作方法:
如圖我們可以知道led是低電平有效,所以想要實作LED流水燈只需要以下代碼即可
while(1){
for(i=1;i<=8;i++){
P0 = 0xff<<i;
delay_ms(1000);
}
P0 = 0x00;
for(i=7;i>=0;i--){
P0 = ~(0xff<<i);
delay_ms(1000);
}
}
但P0的也受到了一個鎖存器的控制當LE為高電平時P0的資料寫入有效,而當LE輸入為低電平是P0無論寫入什么資料都不會被執行,
LE受到來Y4C的控制

由或非門可以知道,當Y4為低電平時輸出Y4C為高電平,也就是可以控制P0的寫入了,
Y4是由一個譯碼器74H138輸出的,Y4輸出低電平也就是A = 1 B=0 C=0
由此我們就可以實作流水燈了
二、代碼
# include <reg52.h>
sbit A = P2.5;
sbit B = P2.6;
sbit C = P2.7;
P0 = 0x00;
while(1){
for(i=1;i<=8;i++){
P0 = 0xff<<i;
delay_ms(1000);
}
P0 = 0x00;
for(i=7;i>=0;i--){
P0 = ~(0xff<<i);
delay_ms(1000);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/335296.html
標籤:其他
上一篇:stm32,基于HAL庫,通過UART串口接收定長資料,直到資料長度達到或空閑中斷被觸發
下一篇:串口協議和RS-232標準,以及RS232電平與TTL電平的區別,“USB/TTL轉232“模塊(以CH340芯片模塊為例)的作業原理。
