freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

51單片機(jī)的基本外圍電路設(shè)計(jì)以及相關(guān)c語(yǔ)言程序免積分(已修改)

2025-07-19 11:37 本頁(yè)面
 

【正文】 主要學(xué)習(xí)51單片機(jī)的外部引腳和內(nèi)部結(jié)構(gòu)等,敘述一下。本書(shū)任務(wù)驅(qū)動(dòng)教學(xué),引入案例有淺變深,循序漸進(jìn),給讀者留下思考和發(fā)揮空間。 利用單片機(jī)的I/O口驅(qū)動(dòng)LED 端口驅(qū)動(dòng)1只LED閃爍編程的目的是利用C語(yǔ)言控制單片機(jī)I/O端口按要求輸出矩形波脈沖信號(hào),信號(hào)的周期由延時(shí)函數(shù)決定。一、電路原理STC89C51單片機(jī)的P0口采用為OD門(mén)輸出,不存在拉出電流,因此利用P0驅(qū)動(dòng)負(fù)載時(shí)有兩種接法:一種是加上拉電阻R2,見(jiàn)圖311,既用1K電阻接電源正極,此時(shí)P0口輸出高電平時(shí)LED亮;,STC89C51端口灌入電流達(dá)20mA,可直接驅(qū)動(dòng)小負(fù)載。圖331中的R3為限流電阻,限制LED2的工作電流。圖311 驅(qū)動(dòng)LED電路原理單片機(jī)的最小系統(tǒng)包括晶體振蕩電路,加電復(fù)位電路,同時(shí)要求單片機(jī)的31引腳接高電平。時(shí)鐘頻率主要由晶體CY決定,CC2為獨(dú)石電容,用于微小調(diào)整單片機(jī)時(shí)鐘的振蕩頻率;R1和C3組成加電復(fù)位電路,C3為電解電容器;整個(gè)電路由+5V電壓供電。 311電路元件表元件名稱(chēng)序號(hào)標(biāo)稱(chēng)規(guī)格(封裝,功率電壓等參數(shù))作用單片機(jī)ICSTC89C51DIP40核心芯片電容器C130PF獨(dú)石振蕩電容器C230PF獨(dú)石振蕩電容器C310F點(diǎn)解電容器復(fù)位晶振CY12MHzS型振蕩電阻R11K1/4W,金屬膜電容器C3放電電阻電阻R21K1/4W,金屬膜端口電位上拉電阻電阻R31K1/4W,金屬膜限流電阻發(fā)光二極管LED15紅色高亮顯示發(fā)光二極管LED25紅色高亮顯示二、程序設(shè)計(jì)程序設(shè)計(jì)采用keil C 軟件,為了養(yǎng)成一個(gè)良好的文件管理習(xí)慣,建議:編程前,在計(jì)算機(jī)的某個(gè)硬盤(pán)分區(qū)下建立一個(gè)目錄,目錄的名字為你編寫(xiě)程序的主題,然后把keil C產(chǎn)生的所有文件都放在該目錄下。程序設(shè)計(jì)步驟如下:(1)運(yùn)行keil C,創(chuàng)建一個(gè)項(xiàng)目。利用keil C菜單欄中projectnew project創(chuàng)建,項(xiàng)目的名字為你編程的主題,如本案例可以用“”或“”,存放目錄為你的主題目錄下;(2)創(chuàng)建建一個(gè)文件,然后以“.c”后綴名,文件存放在你的主題目錄下;(3) 把c文件添加在你的項(xiàng)目中,在project workspace窗口利用add file to group…實(shí)現(xiàn)。如果軟件界面不顯示這個(gè)窗口,運(yùn)行keil C菜單欄中的viewproject window。(4)設(shè)置編譯器,是編譯過(guò)程中能生成“.hex”文件。默認(rèn)文件名與主題名字相同。運(yùn)行projectoption for‘target 1’output窗口下點(diǎn)擊create HEX file。(5)在編程區(qū)域?qū)懩愕某绦颍Y(jié)束后存儲(chǔ)文件并編譯,要做檢查,盡量避免警告出現(xiàn),直到程序編譯無(wú)誤為止。(6)程序燒寫(xiě)并試運(yùn)行。這個(gè)過(guò)程稱(chēng)為軟件和硬件聯(lián)合調(diào)試,如果實(shí)驗(yàn)板無(wú)誤,程序編譯通過(guò),但在硬件上運(yùn)行不成功是常用的事情,需要對(duì)程序進(jìn)行多次調(diào)試。在沒(méi)有實(shí)驗(yàn)板的情況下,可以利用proteus軟件仿真調(diào)試,也可以檢驗(yàn)?zāi)愕某绦蛟O(shè)計(jì)結(jié)果。(1),高電平有效/*****************************************************************************/include //包含頭文件sbit LED = P0^0。 // 。在kell C51軟件中,^0,void delay(unsigned char x) //延時(shí)函數(shù){ unsigned char i,j。 for(i = 0。i x。i++) for(j = 0。j 200。j++)。}void main(void) //主函數(shù){ While(1) //程序死循環(huán) {LED = 0。 //,LED滅 void delay(100)。 //調(diào)用延時(shí)函數(shù),延時(shí)一段時(shí)間,不精確 LED = 1。 //,LED亮void delay(100)。}}/*****************************************************************************/(2),低電平有效/*****************************************************************************/include //包含頭文件,程序?yàn)樾?號(hào)字sbit LED = P0^7。 void delay(unsigned char x) //延時(shí)函數(shù){ unsigned char i,j。 for(i = 0。ix。i++) for(j = 0。j 1000。j++)。}void main(void) //主函數(shù){ while(1) {LED = ~LED。 //LED初始狀態(tài)為滅,執(zhí)行一次,LED改變一次狀態(tài) void delay(100)。 //延時(shí)一段時(shí)間}}/*****************************************************************************/三、程序說(shuō)明1.應(yīng)為使用的單片機(jī)芯片為STC89C51,因此程序開(kāi)始處加入include,;2. 單片機(jī)程序單步順序執(zhí)行,先執(zhí)行主函數(shù),在主函數(shù)可以調(diào)用分函數(shù),分函數(shù)可以調(diào)用分函數(shù),但分函數(shù)不能調(diào)用主函數(shù),程序執(zhí)行一條命令再執(zhí)行下一條,單片機(jī)等待的過(guò)程是執(zhí)行了一個(gè)循環(huán)命令或一個(gè)浪費(fèi)時(shí)間的程序,實(shí)際執(zhí)行過(guò)程永遠(yuǎn)不會(huì)結(jié)束。delay()為函數(shù)延,單片機(jī)在執(zhí)行此函數(shù)相關(guān)指令時(shí)占用的時(shí)間過(guò)長(zhǎng),在執(zhí)行過(guò)程中,如果沒(méi)有中斷,單片機(jī)只能忙這一件事情。利用delay()不能得到精確的延時(shí)。延時(shí)函數(shù)還可以利用下面的函數(shù)實(shí)現(xiàn)。/**************************/void delay(unsigned int x){while(x)x。}/**************************/3. ,等于先sbit P0_0 = P0^0,然后defined LED P0_0,也在程序前面不做此類(lèi)定義,在程序里面直接寫(xiě)成P0^0 = 1或P0^0 = 0,先定義是為了增加程序的可讀性。程序執(zhí)行P0^0 = 1后,,單片機(jī)的所有I/O口都可位未定義,也可以字節(jié)定義。4. 單片機(jī)C語(yǔ)言程序設(shè)計(jì)需要的C語(yǔ)言關(guān)鍵字不多,并且在keil C 中用到的關(guān)鍵字是獨(dú)有的,因此對(duì)于沒(méi)有學(xué)習(xí)過(guò)C語(yǔ)言的人學(xué)習(xí)單片機(jī)C語(yǔ)言程序設(shè)計(jì)困難并不是很大,主要掌握單片機(jī)C語(yǔ)言書(shū)寫(xiě)格式,怎樣用C語(yǔ)言控制單片機(jī)的硬件資源,另外在編程時(shí),還要有清晰的邏輯思維頭腦和認(rèn)真實(shí)踐,由淺逐步深入學(xué)習(xí),當(dāng)你堅(jiān)持到最后時(shí),單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)際上很簡(jiǎn)單。5. 每個(gè)人在編寫(xiě)程序時(shí)都有自己的風(fēng)格。一般情況下,函數(shù)的字符左行距為0,其下每條語(yǔ)句前留一個(gè)“tab”鍵空。算數(shù)邏輯符號(hào)的左右留一個(gè)空格,關(guān)鍵語(yǔ)句要有中文或英文說(shuō)明,每一個(gè)函數(shù)有時(shí)也可以用“/**.....**/”上下隔開(kāi)這樣有助于提高程序的層次感和可讀性。 利用P0口驅(qū)動(dòng)8個(gè)LED,產(chǎn)生跑馬燈或流水燈效果 一、參考電路實(shí)驗(yàn)電路見(jiàn)圖332所示,在單片機(jī)的最小系統(tǒng)的基礎(chǔ)上,P0口依次接入8個(gè)LED,P0口的上拉電阻可以使用8個(gè)1K電阻。圖312 流水燈電路在利用Proteus軟件仿真時(shí),可以用電阻排代替。單片機(jī)最小系統(tǒng)在單片機(jī)元件放置后已經(jīng)默認(rèn),即CCCCY、R1可以省略。 312電路Proteus軟件元件表元件名稱(chēng)ponent總類(lèi)Category分類(lèi)Sub Category結(jié)果Results模型Model type單片機(jī)Micoroprocessor IC8051 Family80C51電阻排ResistorResistor PackRESPACK8ANALOG發(fā)光二極管OptoelectronicsLEDsledredDIGITAL二、參考程序/*****************************************************************************/includevoid delay(void){ unsigned char i,j。 for(i = 0。i 255。i++) for(j = 0。j 255。j++)。}void main(void){unsigned char j = 0x01。while(1){j = j 1。if(j == 0x00) j = 0x01。P0 = j。delay()。} }/*****************************************************************************/三、程序說(shuō)明 = j 1,執(zhí)行的目的是控制P0整個(gè)字節(jié)的數(shù)據(jù)在循環(huán)時(shí)左移變化,程序循環(huán)第一次, P0 = 0x02,其它滅;循環(huán)第七次,其它滅;循環(huán)第八次,j = 0x00,if語(yǔ)句條件滿足,j = 0x01,其它滅,然后依次變化下去。如果P0口驅(qū)動(dòng)8個(gè)LED低電平有效,如下修該:/**********************/void main(void){unsigned char j = 0xfe。while(1){j =( j 1) | 0x01 。if(j = 0xff) j = 0xfe。P0 = j。delay()。} }2. delay()函數(shù)無(wú)形參,延時(shí)時(shí)間不能設(shè)置。 利用P0口驅(qū)動(dòng)一個(gè)數(shù)碼管,顯示0 – 9,并循環(huán)一、參考電路實(shí)驗(yàn)電路在單片機(jī)的最小系統(tǒng)基礎(chǔ)上,P0口接一只共陽(yáng)數(shù)碼管,見(jiàn)圖313。帶小數(shù)點(diǎn)的數(shù)碼管是由8個(gè)LED組成,七個(gè)LED組成數(shù)字,另一只LED用來(lái)顯示小數(shù)點(diǎn)。如果數(shù)碼管內(nèi)部的8只LED的正極接在一起,負(fù)極分別引出,引腳依次命名為a、b、c、d、e、f、g和dot,稱(chēng)為帶小數(shù)點(diǎn)的7段共陽(yáng)極性數(shù)碼管。圖313 單片機(jī)驅(qū)動(dòng)共陽(yáng)數(shù)碼管電路,如果讓數(shù)碼管顯示1,數(shù)碼管b、c段亮,程序控制P0輸出0xbe十六進(jìn)制編碼即可,因此共陽(yáng)數(shù)碼管顯示09十進(jìn)制數(shù)字,需要利用10個(gè)顯示碼組成的數(shù)組。對(duì)于共陰數(shù)碼管,也有相應(yīng)的編碼要求。小數(shù)點(diǎn)在不用時(shí)一般不讓顯示。由于P0每個(gè)端口的灌電流達(dá)20mA,數(shù)碼管每段LED正常顯示5mA即可,因此需要R2~9用來(lái)限制數(shù)碼管每一段電流,以防止驅(qū)動(dòng)電流過(guò)大而燒毀器件。利用Proteus軟件仿真時(shí),數(shù)碼管采用Optoelectronics元件庫(kù)中7Segment Displays下的7SEGCOMANODE。二、參考程序/*****************************************************************************/includecode unsigned char seven_seg[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}。void delay (void) /* 時(shí)間延遲函數(shù) */{ unsigned char i,j。for (i = 0。i 255。i++) for (j = 0。j = 255。j++)。}void main (void){unsigned char i。 /* 變量 i 用來(lái)儲(chǔ)存 0~9 */ /*無(wú)窮循環(huán) */while (1){ for (i = 0。 i10。 i++){P0 = seven_seg[i]。 /*輸出0~9到共陽(yáng)七段顯示器*/delay()。 /*調(diào)用時(shí)間延遲函數(shù)delay*/} } }/*****************************************************************************/三、程序說(shuō)明1. 當(dāng)程序中使用常量數(shù)據(jù)時(shí),可以把數(shù)據(jù)存儲(chǔ)在單片機(jī)的程序存儲(chǔ)器中,對(duì)此類(lèi)數(shù)據(jù)聲明時(shí),前面需要加上關(guān)鍵字code或const,如本實(shí)驗(yàn)中的共陽(yáng)數(shù)碼管數(shù)字顯示需要的編碼,表313是共陽(yáng)數(shù)碼管編碼,表314是共陰數(shù)碼管編碼。單片機(jī)驅(qū)動(dòng)液晶顯示器顯示的漢字也是一種常量數(shù)據(jù)。表313共陽(yáng)數(shù)碼管顯示編碼顯示數(shù)字dotgfedcba16進(jìn)制0110000000xc01111110010xf92101001000xa43101100000xb04100110010x995100100100x926100000100x827111110000xf88100000000x809100100000x90表314共陰數(shù)碼管顯示編碼顯示數(shù)字dotgfedcba16進(jìn)制0001111110x3f1000001100x062010110110x5b3010011
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1