一、點亮一個LED
1、LED介紹
LED:發(fā)光二極管
補:電阻讀數
102 => 10 00 = 1k
473 => 47 000
2、Keil的使用
1、新建工程:Project => New Project
Ctrl + Shift + N :新建文件夾
2、選型號:Atmel-AT89C52
3、xxx提示?選否
4、Source Group => 右鍵 => Add New Item … => C文件"main.c"
5、設置勾選創(chuàng)建HEX File文件
6、編譯
3、單片機控制硬件的原理
CPU通過對寄存器的控制,寄存器通過驅動器、引腳控制硬件設備
4、代碼的編寫
#include <REGX52.H>
void main() {
while(1){
P2=0xFE; //1111 1110
}
}
5、程序的下載
STC-ISP軟件
單片器型號:STC89C52
串口號:USB…
打開程序文件:*.hex
下載進單片機
二、LED的閃爍
利用STC-ISP軟件生成Delayxxxms()
延時函數
#include <REGX52.H>
void main() {
while(1){
P2=0xFE; //1111 1110
Delay500ms();
P2=0xFF; //1111 1111
Delay500ms();
}
}
三、 獨立按鍵實現(xiàn)LED亮滅
1、輕觸按鍵
獨立按鍵:按下接通、松開斷開
2、代碼實現(xiàn)
1、
P2 = 0xFE
相當于P2_0 = 0
2、獨立按鍵對應順序
- K1:P3_1
- K2:P3_0
- K3:P3_2
- K4:P3_3
#include <REGX52.H>
void main() {
while(1){
if(P3_1 == 0) {
P2_0 = 0;
} else {
P2_0 = 1;
}
}
}
四、獨立按鍵控制LED狀態(tài)
1、按鍵的抖動
機械開關斷開和閉合時會產生抖動文章來源:http://www.zghlxwxcb.cn/news/detail-736369.html
消抖:硬件過濾、軟件算法(Delay)文章來源地址http://www.zghlxwxcb.cn/news/detail-736369.html
2、代碼實現(xiàn)
#include <REGX52.H>
void main() {
while(1){
if(P3_1 == 0) {
Delay(20); // 消除前抖動
while(P3_1 == 0); // 等待松手
Delay(20); // 消除后抖動
P2_0 = ~P2_0;
}
}
}
五、獨立按鍵控制LED顯示二進制
#include <REGX52.H>
void main() {
unsigned char LEDNum = 0;
while(1){
if(P3_1 == 0) {
Delay(20); // 消除前抖動
while(P3_1 == 0); // 等待松手
Delay(20); // 消除后抖動
LEDNum++;
P2_0 = ~LEDNum;
}
}
}
六、獨立按鍵控制LED位移
#include <REGX52.H>
void main() {
P2 = ~0x01;
unsigned char LEDNum = 0;
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_1 == 0); // 等待松手
Delay(20); // 消除后抖動
if(LEDNum == 0) LEDNum = 7;
else LEDNum--;
P2 = ~(0x01 << LEDNum);
}
}
}
到了這里,關于【51單片機】LED與獨立按鍵(學習筆記)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!