單片機(jī)一些基礎(chǔ)問題
74HC573本身能提供20mA的電流,足以使數(shù)碼管點(diǎn)亮,不必再用三極管驅(qū)動(dòng)了。
關(guān)于ULN2003
ULN是集成達(dá)林頓管IC,內(nèi)部還集成了一個(gè)消線圈反電動(dòng)勢(shì)的二極管,可用來驅(qū)動(dòng)繼電器。它是雙列16腳封裝,NPN晶體管矩陣,最大驅(qū)動(dòng)電壓=50V,電流=500mA,輸入電壓=5V,適用于TTL COMS,由達(dá)林頓管組成驅(qū)動(dòng)電路。 ULN是集成達(dá)林頓管IC,內(nèi)部還集成了一個(gè)消線圈反電動(dòng)勢(shì)的二極管,它的輸出端允許通過電流為200mA,飽和壓降VCE 約1V左右,耐壓BVCEO 約為36V。用戶輸出口的外接負(fù)載可根據(jù)以上參數(shù)估算。采用集電極開路輸出,輸出電流大,故可直接驅(qū)動(dòng)繼電器或固體繼電器,也可直接驅(qū)動(dòng)低壓燈泡。通常單片機(jī)驅(qū)動(dòng)ULN2003時(shí),上拉2K的電阻較為合適,同時(shí),COM引腳應(yīng)該懸空或接電源。
ULN2003是一個(gè)非門電路,包含7個(gè)單元,但獨(dú)每個(gè)單元驅(qū)動(dòng)電流最大可達(dá)350mA.資料的最后有引用電路,9腳可以懸空。
比如1腳輸入,16腳輸出,你的負(fù)載接在VCC與16腳之間,不用9腳。
uln2003的作用:
ULN2003是大電流驅(qū)動(dòng)陣列,多用于單片機(jī)、智能儀表、PLC、數(shù)字量輸出卡等控制電路中。可直接驅(qū)動(dòng)繼電器等負(fù)載。
輸入5VTTL電平,輸出可達(dá)500mA/50V。
ULN2003是高耐壓、大電流達(dá)林頓陳列,由七個(gè)硅NPN達(dá)林頓管組成。 該電路的特點(diǎn)如下: ULN2003的每一對(duì)達(dá)林頓都串聯(lián)一個(gè)2.7K的基極電阻,在5V的工作電壓下它能與TTL和CMOS電路 直接相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器。
ULN2003 是高壓大電流達(dá)林頓晶體管陣列系列產(chǎn)品,具有電流增益高、工作電壓高、溫度范圍寬、帶負(fù)載能力強(qiáng)等特點(diǎn),適應(yīng)于各類要求高速大功率驅(qū)動(dòng)的系統(tǒng)。
lcd12864與1602的區(qū)別
一般12864的控制芯片通常有ST7920、KS0108和T6963C等;但1602是字符的模塊控制芯片是KS0066等,1602它現(xiàn)在的芯片也有不少,但都是可以兼容的;簡(jiǎn)單的來說:12864是圖形點(diǎn)陣,是顯示圖形和漢字,當(dāng)然也是可以顯示字母和阿拉伯?dāng)?shù)字了;但1602只能顯示字母和阿拉伯?dāng)?shù)字;同時(shí)他們的芯片不一樣,所以他們的編程上中的程序也是不一樣!
1602是指的16字符2行的那種吧。如果是,其點(diǎn)陣是這樣的結(jié)構(gòu)。其IC帶有字庫。想顯示字符,只需要輸入對(duì)應(yīng)字的地址。
而12864的點(diǎn)陣是連續(xù)的。一般不帶有字庫。想寫一個(gè)圓點(diǎn),都要自己想好要寫那些位置。屏上每個(gè)點(diǎn)都對(duì)應(yīng)字IC內(nèi)部RAM中一個(gè)BIT.
12864 顧名思義像素是128*64,能顯示8*4個(gè)漢字,因型號(hào)不同,有的帶漢字庫,有的不帶,能顯示圖像效果,功能比1602強(qiáng)大,1602只能顯示字母、數(shù)字和符號(hào)能顯示16*2個(gè)字符,但寄存器不止32個(gè),具體也忘了,有一些顯示效果,如字符一個(gè)個(gè)顯示、字符從左到右或從右到左顯示等等,顯示效果簡(jiǎn)單,價(jià)格低,大約6塊錢,而12864最少40塊錢一塊,在編程使用方面,兩者難度差不多,原理差不多,都是寫指令、寫地址、寫數(shù)據(jù)等等。
頭文件INTRINS.H的作用(轉(zhuǎn)自http://blog.csdn.net/sky0829/article/details/6043230)
在C51單片機(jī)編程中,頭文件INTRINS.H的函數(shù)使用起來,就會(huì)讓你像在用匯編時(shí)一樣簡(jiǎn)便.
內(nèi)部函數(shù) 描述
_crol_ 字符循環(huán)左移
_cror_ 字符循環(huán)右移
_irol_ 整數(shù)循環(huán)左移
_iror_ 整數(shù)循環(huán)右移
_lrol_ 長(zhǎng)整數(shù)循環(huán)左移
_lror_ 長(zhǎng)整數(shù)循環(huán)右移
_nop_ 空操作8051 NOP 指令
_testbit_ 測(cè)試并清零位8051 JBC 指令
函數(shù)名: _crol_,_irol_,_lrol_
原 型: unsigned char _crol_(unsigned char val,unsigned char n);
unsigned int _irol_(unsigned int val,unsigned char n);
unsigned int _lrol_(unsigned int val,unsigned char n);
舉例:
_crol_,_cror_:將char型變量循環(huán)向左(右)移動(dòng)指定位數(shù)后返回
_testbit_: 相當(dāng)于JBC bitvar測(cè)試該位變量并跳轉(zhuǎn)同時(shí)清除。
_chkfloat_: 測(cè)試并返回源點(diǎn)數(shù)狀態(tài)。
就是匯編中的子函數(shù)。
_crol_,_cror_:如國二進(jìn)制數(shù)為01010101 那么_crol_(1) 左移1位后將高位補(bǔ)低位。
結(jié)果10101010。
功 能:_crol_,_irol_,_lrol_以位形式將val 左移n 位,該函數(shù)與8051“RLA”指令相關(guān),上面幾個(gè)函數(shù)不同于參數(shù)類型。
例:
#include
main()
{
unsigned int y;
C-5 1 程序設(shè)計(jì) 37
y=0x00ff;
y=_irol_(y,4);
}
函數(shù)名: _cror_,_iror_,_lror_
原 型: unsigned char _cror_(unsigned char val,unsigned char n);
unsigned int _iror_(unsigned int val,unsigned char n);
unsigned int _lror_(unsigned int val,unsigned char n);
功 能:_cror_,_iror_,_lror_以位形式將val 右移n 位,該函數(shù)與8051“RRA”指令相關(guān),上面幾個(gè)函數(shù)不同于參數(shù)類型。
例:
#include
main()
{
unsigned int y;
y=0x0ff00;
y=_iror_(y,4);
}
函數(shù)名: _nop_
原 型: void _nop_(void);
功 能:_nop_產(chǎn)生一個(gè)NOP 指令,該函數(shù)可用作C 程序的時(shí)間比較。C51 編譯器在_nop_函數(shù)工作期間不產(chǎn)生函數(shù)調(diào)用,即在程序中直接執(zhí)行了NOP 指令。
例:
P()=1;
_nop_();
P()=0;
函數(shù)名: _testbit_
原 型:bit _testbit_(bit x);
功 能:_testbit_產(chǎn)生一個(gè)JBC 指令,該函數(shù)測(cè)試一個(gè)位,當(dāng)置位時(shí)返回1,否則返回0。如果該位置為1,則將該位復(fù)位為0。8051 的JBC 指令即用作此目的。_testbit_只能用于可直接尋址的位;在表達(dá)式中使用是不允許的。
在C51單片機(jī)編程中,頭文件INTRINS.H的函數(shù)使用起來,就會(huì)讓你像在用匯編時(shí)一樣簡(jiǎn)便.
內(nèi)部函數(shù) 描述
_crol_ 字符循環(huán)左移
_cror_ 字符循環(huán)右移
_irol_ 整數(shù)循環(huán)左移
_iror_ 整數(shù)循環(huán)右移
_lrol_ 長(zhǎng)整數(shù)循環(huán)左移
_lror_ 長(zhǎng)整數(shù)循環(huán)右移
_nop_ 空操作8051 NOP 指令
評(píng)論