1.硬件連接
了解了上一講的一些元器件的使用原理,那么使用本教程的開(kāi)發(fā)板點(diǎn)亮最右端的LED2的硬件連接簡(jiǎn)化為如下所示
2.軟件分析
我們知道74HC138要想正常工作,單片機(jī)的P1.4要輸出0,P1.3輸出1。接著要想三極管導(dǎo)通,IO6需要輸出低電平,也就是P1.2必須輸出1,P1.1輸出1, P1.0輸出0。
有了這些條件之后,要想點(diǎn)亮LED2還差最后一步,那就是P0.0須輸出0才可點(diǎn)亮。
接著我們根據(jù)宋老師的例程代碼給單片機(jī)的幾個(gè)IO端口命名一下
sbit LED2 = P0^0;
sbit ADDR2 = P1^2;
sbit ADDR1 = P1^1;
sbit ADDR0 = P1^0;
sbit ENLED = P1^4;
sbit ADDR3 = P1^3;
大家根據(jù)宋老師的教程步驟創(chuàng)建好工程文件和“.c”文件。筆者這里把工程文件名字命名為“LESSON”
創(chuàng)建第一個(gè)“.c”文件命名為“main.c”,以后我們都用這個(gè)工程作教程的例程測(cè)試
把以下代碼復(fù)制到"main.c"文件中,編譯好生成HEX文件然后下載進(jìn)開(kāi)發(fā)板就可看到最右端的LED2被點(diǎn)亮。
3.代碼
#include <reg52.h> sbit LED2 = P0^0; sbit ADDR2 = P1^2; sbit ADDR1 = P1^1; sbit ADDR0 = P1^0; sbit ENLED = P1^4; sbit ADDR3 = P1^3; void main() { ADDR3 = 1;//使能三八譯碼器 ENLED = 0;// ADDR2 = 1;//************************** ADDR1 = 1;//讓三八譯碼器的IO6輸出低電平 ADDR0 = 0;//************************** LED2=0;//點(diǎn)亮最右端的燈 while (1);//程序執(zhí)行到此處語(yǔ)句,則不再往下執(zhí)行下面的語(yǔ)句,相當(dāng)于程序運(yùn)行停在了此處,前面完成了把IO端口輸出低電平的任務(wù)就死循環(huán)在這里不執(zhí)行下去了 }
4.改變字體
如果把代碼復(fù)制粘貼到編譯環(huán)境中時(shí)發(fā)現(xiàn)注釋部分顯示亂碼的話是因?yàn)檐浖](méi)有設(shè)置字體為 Chinese GB2312(Simplified)。設(shè)置如下
5.補(bǔ)充
本講的原理圖對(duì)于我們的開(kāi)發(fā)板其實(shí)還不完整,板子的P0.0是和74HC245元器件連接之后,這個(gè)器件的一個(gè)引腳再和R1端相連的,關(guān)于這個(gè)器件《手把手教你學(xué)51單片機(jī)》文檔的3.3.3節(jié)已有詳細(xì)說(shuō)明。我們這講畫原理圖默認(rèn)單片機(jī)端口P0.0是和R1端直接相連的,這么講是為了大家趕緊入門點(diǎn)亮一盞燈,如果我們?yōu)榱它c(diǎn)亮一盞燈這樣的簡(jiǎn)單功能而大費(fèi)筆墨去把每一處理論都說(shuō)清,那都把讀者學(xué)習(xí)的信心打擊沒(méi)了。
C語(yǔ)言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語(yǔ)言學(xué)練課程
解決困擾你多年的C語(yǔ)言疑難雜癥特性的C語(yǔ)言進(jìn)階課程
從零到寫出一個(gè)爬蟲的Python編程課程
只會(huì)語(yǔ)法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程