已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第三章 系統(tǒng)總體設(shè)計(jì)和主要芯片介紹3.1 系統(tǒng)總體設(shè)計(jì)本設(shè)計(jì)主要由單片機(jī)、矩陣鍵盤、液晶顯示器和密碼存儲(chǔ)等部分組成。其中矩陣鍵盤用于輸入數(shù)字密碼和進(jìn)行各種功能的實(shí)現(xiàn)。由用戶通過連接單片機(jī)的矩陣鍵盤輸入密碼,后經(jīng)過單片機(jī)對(duì)用戶輸入的密碼與自己保存的密碼進(jìn)行對(duì)比,從而判斷密碼是否正確,然后控制引腳的高低電平傳到開鎖電路或者報(bào)警電路控制開鎖還是報(bào)警,實(shí)際使用時(shí)只要將單片機(jī)的負(fù)載由繼電器換成電子密碼鎖的電磁鐵吸合線圈即可。系統(tǒng)整體框圖如圖3-1所示。顯示模塊鍵盤輸入模塊 AT89S52報(bào)警電路復(fù)位電路開鎖電路密碼存儲(chǔ)模塊 圖3-1 系統(tǒng)結(jié)構(gòu)框圖各模塊功能如下:1鍵盤輸入模塊:分為密碼輸入按鍵與幾個(gè)功能按鍵,用于完成密碼鎖輸入功能。2顯示模塊:用于完成對(duì)系統(tǒng)狀態(tài)顯示及操作提示功能。3復(fù)位電路:完成系統(tǒng)的復(fù)位。4報(bào)警電路:用于完成輸錯(cuò)密碼時(shí)候的警報(bào)功能。5密碼存儲(chǔ)模塊:用于完成掉電存儲(chǔ)功能,使修改的密碼斷電后仍能保存。6開鎖電路:應(yīng)用繼電器及發(fā)光二極管模擬開鎖,完成開鎖及開鎖提示。3.2 主要芯片介紹3.2.1 AT89S52 AT89S52單片機(jī)是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含8K Bytes ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的AT89S52可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案10。AT89S52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。AT89S52的管腳分布如圖3-2所示。 圖3-2 AT89S52芯片管腳P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P3口作為AT89S52的一些特殊功能管腳備選功能,P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(記時(shí)器0外部輸入)P3.5 T1(記時(shí)器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)AT89S52主要特性如表3-1所示。表3-1 AT89S52主要特性兼容MCS-51指令系統(tǒng)8k可反復(fù)擦寫(1000次)ISP Flash ROM32個(gè)雙向I/O口4.5-5.5V工作電壓3個(gè)16位可編程定時(shí)/計(jì)數(shù)器時(shí)鐘頻率0-33MHz全雙工UART串行中斷口線256x8bit內(nèi)部RAM2個(gè)外部中斷源低功耗空閑和省電模式中斷喚醒省電模式3級(jí)加密位看門狗(WDT)電路軟件設(shè)置空閑和省電功能靈活的ISP字節(jié)和分頁編程雙數(shù)據(jù)寄存器指針3.2.2 存儲(chǔ)芯片AT24C02 AT24C02是美國Atmel公司的低功耗CMOS型EPROM,內(nèi)含2568位存儲(chǔ)空間,具有工作電壓寬(2.55.5 V)、擦寫次數(shù)多(大于10000次)、寫入速度快(小于10 ms)、抗干擾能力強(qiáng)、數(shù)據(jù)不易丟失、體積小等特點(diǎn)。而且他是采用了IC總線式進(jìn)行數(shù)據(jù)讀寫的串行器件,占用很少的資源和I/O線,并且支持在線編程,進(jìn)行數(shù)據(jù)實(shí)時(shí)的存取十分方便。AT24C02中帶有的片內(nèi)地址寄存器。每寫入或讀出一個(gè)數(shù)據(jù)字節(jié)后,該地址寄存器自動(dòng)加1,以實(shí)現(xiàn)對(duì)下一個(gè)存儲(chǔ)單元的讀寫。所有字節(jié)均以單一操作方式讀取。為降低總的寫入時(shí)間,一次操作可寫入多達(dá)8個(gè)字節(jié)的數(shù)據(jù)。I2C總線是一種用于IC器件之間連接的二線制總線。他通過SDA(串行數(shù)據(jù)線)及SCL(串行時(shí)鐘線)兩根線在連到總線上的器件之間傳送信息,并根據(jù)地址識(shí)別每個(gè)器件。 AT24C02正是運(yùn)用了IC規(guī)程,使用主/從機(jī)雙向通信,主機(jī)(通常為單片機(jī))和從機(jī)(AT24C02)均可工作于接收器和發(fā)送器狀態(tài)。主機(jī)產(chǎn)生串行時(shí)鐘信號(hào)(通過SCL引腳)并發(fā)出控制字,控制總線的傳送方向,并產(chǎn)生開始和停止的條件。無論是主機(jī)還是從機(jī),接收到一個(gè)字節(jié)后必須發(fā)出一個(gè)確認(rèn)信號(hào)ACK。AT24C02的控制字由8位二進(jìn)制數(shù)構(gòu)成,在開始信號(hào)發(fā)出以后,主機(jī)便會(huì)發(fā)出控制字,以選擇從機(jī)并控制總線傳送的方向。管腳描述:SCL 為串行時(shí)鐘:串行時(shí)鐘輸入管腳用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收的時(shí)鐘這是一個(gè)輸入管腳。SDL 為串行數(shù)據(jù)/地址:雙向串行數(shù)據(jù)/地址管腳用于器件所有數(shù)據(jù)的發(fā)送或接收SDL,是一個(gè)開漏輸出管腳可與其它開漏輸出或集電極開路輸出進(jìn)行線或。A0、A1、A2 為器件地址輸入端:當(dāng)使用24C02 時(shí)最大可級(jí)聯(lián)8個(gè)器件,如果只有一個(gè)24C02被總線尋址,這三個(gè)地址輸入腳A0、A1、A2可懸空或連接到Vss。WP為寫保護(hù):如果WP 管腳連接到Vcc 所有的內(nèi)容都被寫保護(hù)只能讀當(dāng)WP, 管腳連接到Vss 或懸空,允許器件進(jìn)行正常的讀/寫操作12。管腳圖如圖3-3所示。 圖3-3 AT24C02引腳圖3.2.2 LCD1602顯示器 現(xiàn)在的字符型液晶模塊已經(jīng)是單片機(jī)應(yīng)用設(shè)計(jì)中最常用的信息顯示器件了。1602型LCD顯示模塊具有體積小,功耗低,顯示內(nèi)容豐富等特點(diǎn)。1602型LCD可以顯示2行16個(gè)字符,有8位數(shù)據(jù)總線D0D7和RS,R/W,EN三個(gè)控制端口,工作電壓為5V,并且具有字符對(duì)比度調(diào)節(jié)和背光功能。接口信號(hào)說明:1602型LCD的接口信號(hào)說明如表3-2所示。表3-2 1602型LCD的接口信號(hào)說明第1腳VSS 電源地第9腳D2雙向數(shù)據(jù)線第2腳VDD +5V電源第10腳D3雙向數(shù)據(jù)線第3腳VEE 液晶顯示偏壓信號(hào)第11腳D4雙向數(shù)據(jù)線第4腳RS 數(shù)據(jù)/命令選擇端第12腳D5雙向數(shù)據(jù)線第5腳R/ W 讀/寫 選擇端第13腳D6雙向數(shù)據(jù)線第6腳E 使能端第14腳D7雙向數(shù)據(jù)線第7腳D0雙向數(shù)據(jù)線第15腳BLA 背光源正極第8腳D1 雙向數(shù)據(jù)線第16腳BLK 背光源負(fù)極主要技術(shù)參數(shù):1602型LCD的主要技術(shù)參數(shù)如表3-3所示。 表3-3 1602型LCD的主要技術(shù)參數(shù)顯示容量162個(gè)字符芯片工作電壓4.55.5V工作電流2.0mA(5.0V)模塊最佳工作電壓5.0V字符尺寸2.954.35(WXH)mm基本操作程序:讀狀態(tài):令RS=L,RW=L, E=H 輸出:D0D7=狀態(tài)字讀數(shù)據(jù):令RS=H,RW=H, E=H 輸出:無寫指令:令RS=L,RW=L,D0D7=指令碼,E=高脈沖 輸出:D0D7=數(shù)據(jù)寫數(shù)據(jù):令RS=H,RW=L, D0D7=數(shù)據(jù), E=高脈沖 輸出:無 第四章 硬件設(shè)計(jì)本系統(tǒng)外圍電路包括鍵盤輸入部分、密碼存儲(chǔ)部分、復(fù)位部分、顯示部分、報(bào)警部分、開鎖部分組成,根據(jù)實(shí)際情況鍵盤輸入部分選擇44矩陣鍵盤,顯示部分選擇字符型液晶顯示LCD1602,密碼存儲(chǔ)部分選用AT24C02芯片來完成。其原理圖如圖4-1所示。圖4-1 電路原理圖4.1 鍵盤輸入模塊由于本設(shè)計(jì)所用到的按鍵數(shù)量較多而不適合用獨(dú)立按鍵式鍵盤。采用的是矩陣式按鍵鍵盤,它由行和列組成,也稱行列式鍵盤,按鍵位于行列的交叉點(diǎn)上,密碼鎖的密碼由鍵盤輸入完成,與獨(dú)立式按鍵鍵盤相比,要節(jié)省很多I/O口。本設(shè)計(jì)中使用的這個(gè)44鍵盤不但能完成密碼的輸入還能作特別功能鍵使用。鍵盤的每個(gè)按鍵功能在程序設(shè)計(jì)中設(shè)置。它與單片機(jī)的連接如圖4-2所示。圖4-2 鍵盤輸入模塊4.2 密碼存儲(chǔ)模塊圖4-3所示AT24C02的1、2、3腳是三條地址線,用于確定芯片的硬件地址。在AT89S51試驗(yàn)開發(fā)板上它們都接地,第5腳和第8腳分別為正、負(fù)電源。第8腳SDL為串行數(shù)據(jù)輸入/輸出,數(shù)據(jù)通過這條雙向IC總線串行傳送,在AT89S52試驗(yàn)開發(fā)板上和單片機(jī)的P3.6連接。第6腳SCL為串行時(shí)鐘輸入線,在AT89S52試驗(yàn)開發(fā)板上和單片機(jī)的P3.7連接。SDL和SCL都需要和正電源間各接一個(gè)5.1K的電阻上拉。第6腳接P3.5。AT24C02中帶有片內(nèi)地址寄存器。每寫入或讀出一個(gè)數(shù)據(jù)字節(jié)后,該地址寄存器自動(dòng)加1,以實(shí)現(xiàn)對(duì)下一個(gè)存儲(chǔ)單元的讀寫。所有字節(jié)均以單一操作方式讀取。為降低總的寫入時(shí)間,一次操作可寫入多達(dá)8個(gè)字節(jié)的數(shù)據(jù)。圖4-3 密碼存儲(chǔ)電路4.3 復(fù)位部分單片機(jī)復(fù)位是使CPU和系統(tǒng)中的其他功能部件都處在一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作。該電路在最簡單的復(fù)位電路下增加了手動(dòng)復(fù)位按鍵,在接通電源瞬間,電容C1上的電壓很小,復(fù)位下拉電阻上的電壓接近電源電壓,即RST為高電平,在電容充電的過程中RST端電壓逐漸下降,當(dāng)RST端的電壓小于某一數(shù)值后,CPU脫離復(fù)位狀態(tài),由于電容C1足夠大,可以保證RST高電平有效時(shí)間大于24個(gè)振蕩周期,CPU能夠可靠復(fù)位。增加手動(dòng)復(fù)位按鍵是為了避免死機(jī)時(shí)無法可靠復(fù)位。當(dāng)復(fù)位按鍵按下后電容C1通過R5放電。當(dāng)電容C1放電結(jié)束后,RST端的電位由R5與R6分壓比決定。由于R5 提示輸入密碼GotoXY(0,0);count=0;Print(Code: );count1=1;count2=1;count6=1;sk15=0; sk14=0;m=0;cp0=1;if(count!=0)&(count1=1) /LCD上顯示* if(count=1)GotoXY(0,0); Print(Code:* );if(count=2)GotoXY(0,0); Print(Code:* ); if(count=3)GotoXY(0,0); Print(Code:* ); if(count=4)GotoXY(0,0); Print(Code:* );if(count=5)GotoXY(0,0); Print(Code:* ); if(count=6)GotoXY(0,0); Print(Code:* ); if(count6)GotoXY(0,0); Print(Code:* );count1=0;if(sk14=1)&(count6=1) /按下確認(rèn),剛進(jìn)入較驗(yàn)/密碼正確if(password0=cq0)&(password1=cq1)&(password2=cq2)&(password3=cq3)&(password4=cq4)&(password5=cq5)&(count=6 )GotoXY(0,0); Print(Door Open! );sk14=0; count=0;count2=0; m=0; count4=1;DelayMs(1000); count6=1; P2_0=0;DelayMs(500);P2_0=1;/密碼錯(cuò)誤 LCD_Initial(); cp0=0;else GotoXY(0,0); Print(Code wrong! );DelayMs(1000);sk14=0; count=0; count2=0; count6=0; m=0; p3_6=0;DelayMs(100);DelayMs(3000);p3_6=1; LCD_Initial(); cp0=0; /密碼錯(cuò)誤5.2.2 按鍵掃描子程序 void Check_Key(void)unsigned int row,col,tmp1,tmp2;tmp1 = 0x10; /tmp1用來設(shè)置P1口的輸出,取反后使P1.4P1.7中有一個(gè)為0for(row=0;row4;row+) / 行檢測(cè)P1 = 0x0f; / 先將p1.0P1.3置高P1 =tmp1; / 使P1.4p1.7中有一個(gè)為0tmp1*=2; / tmp1左移一位if (P1 & 0x0f) 0x0f) / 檢測(cè)P1.0P1.3中是否有一位為0,只要有,則說明此行有鍵按下,進(jìn)入列檢測(cè)DelayMs(30);if (P1 & 0x0f) 0x0f) / 檢測(cè)P1.0P1.3中是否有一位為0,只要有,則說明此行有鍵按下,進(jìn)入列檢測(cè) tmp2 = 0x01; / tmp2用于檢測(cè)出哪一列為0for(col =0;col按鍵盤認(rèn)鍵,較驗(yàn)舊密碼/舊密碼輸入正確if(password0=cq0)&(password1=cq1)&(password2=cq2)&(password3=cq3)&(password4=cq4)&(password5=cq5)&(pass=1)&(count=6)GotoXY(0,0); Print(New Code: );pass0=1;pass=0;sk14=0;count=0;count7=0;n=0;m=0;elseGotoXY(0,0); Print(Old Code Wrong! ); /舊密碼輸入錯(cuò)誤sk14=0;count2=0;count7=0;pass=0;m=0;if(pa!=10)&(pass0=1)if(n=7)&(count=6)GotoXY(0,0); Print(Set Over! ); /舊密碼輸入正確,存新密碼cq0=co1;cq1=co2;cq2=co3;cq3=co4;cq4=co5;cq5=co6;n=0;pass0=0;pass1=1;sk14=0;count=0;count2=0;m=0;count7=0;elseGotoXY(0,0); Print(Set Wrong! ); /密碼過多或過少,報(bào)錯(cuò)sk14=0;count2=0;count=0;count7=0;m=0; 附錄一 總電路原理圖附錄二 實(shí)物圖附錄三 元器件清單序號(hào)元件名稱型號(hào)與規(guī)格單位數(shù)量1電阻1K個(gè)6470個(gè)15.1K個(gè)210K個(gè)12三極管8550個(gè)23發(fā)光二極管個(gè)14晶振12M個(gè)15電容10uf個(gè)120pf個(gè)26按鈕開關(guān)個(gè)177芯片AT24C02塊1AT89S52塊18蜂鳴器5V個(gè)19繼電器5V個(gè)110液晶顯示器1602塊111實(shí)驗(yàn)板塊1附錄四 系統(tǒng)總體程序#include #include #include #include #define uchar unsigned char;#define uint unsigned int;/Port Definitions*sbit p3_6=P21;sbit LcdRs= P32;sbit LcdRw= P31;sbit LcdEn = P30;sfr DBPort = 0x80;/P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.數(shù)據(jù)端口sbit P2_0=P20;uint key_val=16;uint m=0,count=0,count2=0;uint pass=0,pass0=0,pass1=0,pass2=0,o=0,n=0;uint co6=0,0,0,0,0,0;uint cp1=0;uint cq7=0,0,0,0,0,0,0; uchar sk16=0,0,0,0,0,0,0,0,0,0,0,0,0,0,pa=10; uchar password6;void DelayMs(unsigned int n) unsigned int i,j; for(i=0;in;i+) for(j=0;j120;j+); /*按鍵掃描*/ void Check_Key(void)unsigned int row,col,tmp1,tmp2;tmp1 = 0x10; /tmp1用來設(shè)置P1口的輸出,取反后使P1.4P1.7中有一個(gè)為0for(row=0;row4;row+) / 行檢測(cè)P1 = 0x0f; / 先將p1.0P1.3置高P1 =tmp1; / 使P1.4p1.7中有一個(gè)為0tmp1*=2; / tmp1左移一位if (P1 & 0x0f) 0x0f) / 檢測(cè)P1.0P1.3中是否有一位為0,只要有,則說明此行有鍵按下,進(jìn)入列檢測(cè)DelayMs(30);if (P1 & 0x0f) 0x0f) / 檢測(cè)P1.0P1.3中是否有一位為0,只要有,則說明行有鍵按下,進(jìn)入列檢測(cè) tmp2 = 0x01; / tmp2用于檢測(cè)出哪一列為0for(col =0;col6)m=0;if(count2=1)if(key_val=0) / delay(1000) ;sk0=1 ;count+;pa=0;passwordm=0;m+;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;if(key_val=1)/delay(1000) ;sk1=1 ;count+;pa=1;passwordm=1;m+;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16; if(key_val=2)/delay(1000) ;sk2=1 ;count+;pa=2;passwordm=2;m+;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16; if(key_val=3)/delay(1000) ;sk3=1 ;count+;pa=3;passwordm=3;m+;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16; if(key_val=4)/delay(1000) ;sk4=1 ;count+;pa=4;passwordm=4;m+;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;if(key_val=5)/delay(1000) ;sk5=1 ;count+;pa=5;passwordm=5;m+;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16; if(key_val=6)/delay(1000) ;sk6=1 ;count+;pa=6;passwordm=6;m+;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16; if(key_val=7)/delay(1000) ;sk7=1 ;count+;pa=7;passwordm=7;m+;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16; if(key_val=8)/delay(1000) ;sk8=1 ;count+;pa=8;passwordm=8;m+;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16; if(key_val=9)/delay(1000) ;sk9=1 ;count+;pa=9;passwordm=9;m+;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;if(m9)m=0;if(key_val=10)/delay(1000) ;sk10=1 ;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16; if(key_val=11)/delay(1000) ;sk11=1 ;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;if(key_val=12)/delay(1000) ;sk12=1 ;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;if(key_val=13)/delay(1000) ;sk13=1 ;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;if(key_val=14)/delay(1000) ;sk14=1 ;DelayMs(10);p3_6=0;DelayMs(200);p3_6=1;key_val=16;if(key_val=15)/delay(1000) ;sk15=1;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;if(m10)m=0; /內(nèi)部等待函數(shù)*unsigned char LCD_Wait(void)LcdEn=0;LcdRs=0;LcdRw=1;_nop_();LcdEn=1;_nop_();LcdEn=0;_nop_();while(DBPort&0x80)/在用Proteus仿真時(shí),注意用屏蔽此語句,在調(diào)用GotoXY()時(shí),會(huì)進(jìn)入死循環(huán),/可能在寫該控制字時(shí),該模塊沒有返回寫入完備命令,即DBPort&0x80=0x80/實(shí)際硬件時(shí)打開此語句return DBPort;/向LCD寫入命令或數(shù)據(jù)*#define LCD_COMMAND0 / Command#define LCD_DATA1 / Data#define LCD_CLEAR_SCREEN0x01 / 清屏#define LCD_HOMING 0x02 / 光標(biāo)返回原點(diǎn)void LCD_Write(bit style, unsigned char input) LCD_Wait();LcdEn=0;LcdRs=style;LcdRw=0;_nop_();DBPort=input;_nop_();/注意順序LcdEn=1;_nop_();/注意順序LcdEn=0;_nop_();/設(shè)置顯示模式*#define LCD_SHOW0x04 /顯示開#define LCD_HIDE0x00 /顯示關(guān) #define LCD_CURSOR0x02 /顯示光標(biāo)#define LCD_NO_CURSOR0x00 /無光標(biāo) #define LCD_FLASH0x01 /光標(biāo)閃動(dòng)#define LCD_NO_FLASH0x00 /光標(biāo)不閃動(dòng)void LCD_SetDisplay(unsigned char DisplayMode)LCD_Write(LCD_COMMAND, 0x08|DisplayMode);/設(shè)置輸入模式*#define LCD_AC_UP0x02#define LCD_AC_DOWN0x00 / default#define LCD_MOVE0x01 / 畫面可平移#define LCD_NO_MOVE0x00 /defaultvoid LCD_SetInput(unsigned char InputMode)LCD_Write(LCD_COMMAND, 0x04|InputMode);/移動(dòng)光標(biāo)或屏幕*/*#define LCD_CURSO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年物流企業(yè)車輛掛靠業(yè)務(wù)及運(yùn)營管理合同3篇
- 2024年北師大版選擇性必修2歷史上冊(cè)階段測(cè)試試卷
- 2024-2025學(xué)年江蘇省南通市海門市三上數(shù)學(xué)期末統(tǒng)考模擬試題含解析
- 2024年數(shù)據(jù)中心數(shù)據(jù)備份與恢復(fù)服務(wù)合同3篇
- 商業(yè)廣告與小學(xué)生閱讀理解能力的提升
- 2024年度行政協(xié)議人力資源配置合同2篇
- 從初創(chuàng)到成熟創(chuàng)新型企業(yè)報(bào)告設(shè)計(jì)
- 2024年物聯(lián)網(wǎng)智能手表研發(fā)與銷售合同
- 培養(yǎng)未來領(lǐng)袖科技教育在小學(xué)的應(yīng)用與影響
- 醫(yī)療視角下的學(xué)生早餐營養(yǎng)建議
- 貴州大學(xué)新型智庫建設(shè)實(shí)施方案
- 熱工設(shè)備安全操作和維護(hù)
- 當(dāng)代世界經(jīng)濟(jì)與政治學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024年中國人保行測(cè)筆試題庫
- 初++中數(shù)學(xué)設(shè)計(jì)學(xué)校田徑運(yùn)動(dòng)會(huì)比賽場地+課件++人教版七年級(jí)數(shù)學(xué)上冊(cè)
- 2024年秋八年級(jí)英語上冊(cè) Unit 7 Will people have robots教案 (新版)人教新目標(biāo)版
- 2《永遇樂京口北固亭懷古》同步練習(xí)(含答案)統(tǒng)編版高中語文必修上冊(cè)-3
- 微積分試卷及規(guī)范標(biāo)準(zhǔn)答案6套
- 藍(lán)色國家科學(xué)基金16.9杰青優(yōu)青人才科學(xué)基金答辯模板
- 自來水的供水環(huán)保與生態(tài)協(xié)調(diào)
- 羽毛球館運(yùn)營管理指南
評(píng)論
0/150
提交評(píng)論