




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、課程設(shè)計(論文)任務(wù)書 電氣與電子工程學(xué)院 系 自動化 專業(yè) 13 班級 1班 一、 課程設(shè)計(論文)題目 計算器設(shè)計 二、 課程設(shè)計(論文)工作自 2016 年 1 月 5 日起至 2016 年 1 月 15 日止。三、 課程設(shè)計(論文)的內(nèi)容要求: 實(shí)現(xiàn)五位數(shù)(可為帶小數(shù)數(shù))的加減乘除運(yùn)算,通過按鍵輸入十進(jìn)制數(shù)據(jù)。利用八位數(shù)碼管顯示運(yùn)算結(jié)果。 學(xué)生簽名: 2016 年 1 月 日課程設(shè)計(論文)評審意見(1)題目復(fù)雜程度: 復(fù)雜( )、較復(fù)雜( )、一般( )、簡單( )(2)總體方案的選擇是否正確:正確()、較正確()、欠正確()、不正確() (3) 系統(tǒng)能否滿足任務(wù)要求:滿足()、較滿
2、足()、欠滿足()、不滿足() (4) 元器件選擇是否合理:合理()、較合理()、欠合理()、不太合理() (5) 學(xué)習(xí)實(shí)踐態(tài)度:好()、較好()、一般()、不太好() (6) 獨(dú)立工作能力:強(qiáng)()、較強(qiáng)()、一般()、較差() (7) 回答問題是否正確:正確()、較正確()、基本正確()、大多不正確() (8) 圖表是否符合標(biāo)準(zhǔn):符合()、較符合()、基本符合()、大多不符合() (9) 撰寫是否規(guī)范整潔:規(guī)范整潔()、較規(guī)范()、欠規(guī)范()、不太規(guī)范() 總評成績:優(yōu)( )、良( )、中( )、及格( )、不及格( )評閱人 職稱副教授 2016 年 1 月 日目錄第一章課程設(shè)計題目分析1
3、1.1 課程設(shè)計題目要求11.2 課程設(shè)計題目要求分析1第二章設(shè)計思想和設(shè)計說明22.1 設(shè)計思想22.2 設(shè)計說明2第三章硬件選型33.1 單片機(jī)選型33.2 LCD選型33.3 其他器件選型33.4 使用軟件說明4第四章硬件原理44.1 硬件整體框圖44.2 矩陣鍵盤電路54.3 復(fù)位電路54.4 晶振電路64.5 LCD電路6第五章程序設(shè)計原理75.1 程序設(shè)計流程75.2 按鍵掃描程序85.3 輸入數(shù)據(jù)存儲與轉(zhuǎn)換算法85.4 LCD驅(qū)動8第六章系統(tǒng)功能描述9第七章設(shè)計總結(jié)和心得體會10附錄1 STC89C52RC資料12附錄2 器件選型13附錄3 硬件原理圖14附錄4 程序清單15參考
4、文獻(xiàn)21第一章 課程設(shè)計題目分析1.1 課程設(shè)計題目要求本次課程設(shè)計要求設(shè)計一個能實(shí)現(xiàn)五位數(shù)(可為帶小數(shù)數(shù))的加減乘除運(yùn)算的計算器,通過按鍵輸入十進(jìn)制數(shù)據(jù)。利用八位數(shù)據(jù)碼管顯示運(yùn)算結(jié)果。在經(jīng)過指導(dǎo)老師的批準(zhǔn)后,將題目要求改為用LCD顯示運(yùn)算的結(jié)果。1.2 課程設(shè)計題目要求分析分析題目要求可知,本次設(shè)計要用到的知識有鍵盤的設(shè)計、單片機(jī)I/O口的操作、數(shù)制的轉(zhuǎn)換與數(shù)值的運(yùn)算、LCD的驅(qū)動顯示。鍵盤設(shè)計部分的主要任務(wù)是設(shè)計一個用來輸入數(shù)值、運(yùn)算符以及結(jié)果顯示操作的鍵盤。單片機(jī)的I/O口一是用來接收外部輸入的數(shù)據(jù),主要是鍵盤輸入的數(shù)據(jù),并對這些數(shù)據(jù)進(jìn)行判斷和處理,第二是用來輸出處理過后的數(shù)據(jù),主要是將
5、數(shù)據(jù)輸出到LCD上以驅(qū)動LCD顯示相應(yīng)的內(nèi)容。數(shù)制轉(zhuǎn)換與數(shù)值運(yùn)算部分的主要任務(wù)有:將鍵盤輸入的十進(jìn)制數(shù)據(jù)進(jìn)行十六進(jìn)制以及二進(jìn)制的轉(zhuǎn)換,這些操作由單片機(jī)內(nèi)部自動完成;輸入數(shù)值的整型以及浮點(diǎn)型的處理,這部分需要通過編程實(shí)現(xiàn);運(yùn)算結(jié)果的整型以及浮點(diǎn)型的控制,這部分需要通過編程實(shí)現(xiàn),LCD驅(qū)動數(shù)據(jù)的整型和浮點(diǎn)型向字符型的轉(zhuǎn)換,這部分需要通過編程實(shí)現(xiàn)。LCD驅(qū)動顯示部分主要用來顯示輸入的兩個操作數(shù)、一個操作運(yùn)算符及一個運(yùn)算結(jié)果。通過以上分析可知,本次課程設(shè)計的難點(diǎn)在于數(shù)制轉(zhuǎn)換與數(shù)值運(yùn)算部分以及LCD驅(qū)動顯示部分。在進(jìn)行課程設(shè)計之前需要準(zhǔn)備的知識有:Keil軟件的使用,Altium Designer軟件的
6、使用,數(shù)值轉(zhuǎn)換與數(shù)值運(yùn)算相關(guān)算法的了解,LCD接口以及驅(qū)動的了解。第二章 設(shè)計思想和設(shè)計說明2.1 設(shè)計思想從以上的分析可知,本次課程設(shè)計可分為兩大部分,第一部分是鍵盤數(shù)據(jù)的輸入及處理,第二部分是LCD部分的輸出驅(qū)動及顯示。按照上述分類,本次設(shè)計的硬件部分采用先分開調(diào)試后聯(lián)合調(diào)試的方法,即先分開調(diào)試鍵盤部分和LCD部分的硬件電路,待各部分的電路都調(diào)試通過后,再將兩部分電路聯(lián)合調(diào)試,采用這種調(diào)試方法,不僅能提高設(shè)計的效率,降低出錯率,還能在出現(xiàn)問題時快速找到問題的所在??紤]到LCD底層驅(qū)動程序較為復(fù)雜,以及本人對匯編語言的掌握不是太好,本次課程設(shè)計的程序語言采用C語言進(jìn)行編寫,并采用模塊化編程的
7、思想,將LCD的驅(qū)動以及鍵盤部分的驅(qū)動分為兩個模塊進(jìn)行編寫,同樣采用先獨(dú)立調(diào)試再聯(lián)合調(diào)試的方法。2.2 設(shè)計說明本次設(shè)計的詳細(xì)軟硬件資料見附錄。設(shè)計報告中使用的簡寫如下:l LCD:Liquid Crystal Display(液晶顯示器);l ROM:Read only memory(只讀存儲器);l RAM:Random access memory(隨機(jī)存取存儲器);l SRAM:Static random access memory(靜態(tài)隨機(jī)存取存儲器);l PCB:Printed circuit board(印制電路板)。第三章 硬件選型3.1 單片機(jī)選型在設(shè)計初期采用AT89C51單
8、片機(jī)進(jìn)行調(diào)試,發(fā)現(xiàn)在LCD的驅(qū)動調(diào)試好以后占用的ROM已經(jīng)接近4K,考慮到鍵盤部分的程序還未編寫,所以最終的程序大小可能會超過4K,因此就需要擴(kuò)展片外的ROM,為了節(jié)約設(shè)計的制作成本和簡化設(shè)計的硬件電路,于是采用STC89C52RC單片機(jī)進(jìn)行調(diào)試,STC89C52RC單片機(jī)擁有8K的Flash RAM以及512B的SRAM和5K的EEPROM,RAM大大小以及ROM的大小完全足夠本次設(shè)計使用,而且價格適中。STC89C52RC的具體特性見附錄1。3.2 LCD選型根據(jù)以往做項(xiàng)目的經(jīng)驗(yàn),LCD的驅(qū)動芯片選用SSD1306 12864液晶顯示屏驅(qū)動芯片,芯片接口支持SPI協(xié)議和IIC協(xié)議,通過單片
9、機(jī)I/O口的模擬配置就可以驅(qū)動顯示。LCD模塊選擇中景園電子的0.96寸LCD模塊,其內(nèi)部集成SSD1306驅(qū)動芯片,支持3.35V電源輸入,符合本次設(shè)計的要求。3.3 其他器件選型考慮到PCB制作成本的問題,本次設(shè)計的電路板使用萬能板進(jìn)行焊制。由于LCD的驅(qū)動代碼較多,為了加快系統(tǒng)的運(yùn)行速度,晶振采用11.0592MHz的頻率,同時也為了方便串口調(diào)試時的使用。其他器件的選型見附錄2。3.4 使用軟件說明本次課程設(shè)計的軟硬件設(shè)計在windows 7系統(tǒng)下進(jìn)行。程序編寫使用Keil uVision4軟件;硬件電路圖的繪制使用Altium Designer軟件;原理框圖的繪制使用Microsoft
10、 Viso軟件;使用stc-isp-15xx-v6.85I軟件進(jìn)行程序的仿真調(diào)試與下載。第四章 硬件原理4.1 硬件整體框圖硬件整體框圖如圖1所示。圖1 硬件整體框圖本設(shè)計硬件整體分為六個小部分,分別為:矩陣鍵盤電路、復(fù)位電路、晶振電路、LCD電路、電源電路和STC89C52RC電路,下面對前四部分進(jìn)行詳細(xì)說明。4.2 矩陣鍵盤電路矩陣鍵盤電路如圖2所示,采用44矩陣鍵盤,共四行四列十六個按鍵,占用八個I/O口。圖2 矩陣鍵盤電路矩陣鍵盤的四個行分別與單片機(jī)的P1.0P1.3相連接,四個列分別與單片機(jī)的P3.4P3.7相連接,采用行列掃描的方法來檢測按下的按鍵,具體的做法是:檢測時先讓一列為低
11、電平(此時確定了列),其余幾列為高電平,然后立即輪流檢測各個行是否有低電平出現(xiàn),如果檢測到了某一行有低電平(此時確定了行),就可以確定是那個按鍵被按下了。圖中的S1S10分別對用十進(jìn)制數(shù)09,S11代表小數(shù)點(diǎn),S12代表等號,S13S16分別代表加、減、乘、除四個運(yùn)算符。4.3 復(fù)位電路復(fù)位電路如圖3所示。圖3 復(fù)位電路在復(fù)位按鍵沒有按下時,復(fù)位引腳通過下拉電阻和地GND相連接,為低電平,當(dāng)復(fù)位按鍵按下時,復(fù)位引腳和VCC接通,使單片機(jī)復(fù)位。4.4 晶振電路晶振電路如圖4所示。11.0592MHz的晶振兩端通過兩個33皮法的電容接地,組成時鐘電路,通過引腳輸入到單片機(jī)內(nèi)部以提供時鐘。圖4 晶振
12、電路4.5 LCD電路LCD電路如圖5所示。圖5 LCD電路LCD與STC89C52RC之間通過J1相連接,由單片機(jī)的I/O口模擬SPI接口驅(qū)動LCD進(jìn)行工作。接口引腳CLK、MOSI、D/C、CS1、FSO、CS2分別與單片機(jī)的P0.0P0.5通過上拉電阻相連接。第五章 程序設(shè)計原理5.1 程序設(shè)計流程 程序的設(shè)計流程圖如圖6所示。下面對程序的幾個主要部分進(jìn)行說明。圖6 程序設(shè)計流程圖5.2 按鍵掃描程序 鍵盤掃描函數(shù)的定義為void keyScan();在程序中依次給PO口賦值0XFE、0XFD、0XFB、0XF7來依次使鍵盤的四個行線為0,然后用temp=P0來讀取P0口的狀態(tài)以用于后面
13、的計算,然后將temp的值與0XF0相“與“判斷temp的高四位是否有0,如果temp的高四位沒有0,那么與0XF0相與的結(jié)果必然等于0XF0,就說明沒有按鍵被按下,如果temp的高四位有0,那么與0XF0相與的結(jié)果必然不等于0XF0,就說明有按鍵被按下,然后再通過P0口的值來判斷具體是那個按鍵被按下。5.3 輸入數(shù)據(jù)存儲與轉(zhuǎn)換算法輸入的數(shù)據(jù)用兩個整型變量和兩個字符串來存儲其定義分別為: int BP_dat,AP_dat unsigned char BP_str=“”,AP_str=“” 。輸入的數(shù)字用變量key表示 ,小數(shù)點(diǎn)前的整數(shù)部分的計算方式為BP_dat=BP_dat*10+key。
14、小數(shù)點(diǎn)后小時部分的計算方式為(float)(AP_dat)/(10(strlen(AP_str),然后使用語句BP_dat+(float)(AP_dat)/(10(strlen(AP_str)便可得到輸入的操作數(shù)。由于LCD顯示函數(shù)的輸入只能是字符型的數(shù)據(jù),因此使用sprintf(BP_str,%d,BP_dat)函數(shù)將整型的數(shù)據(jù)轉(zhuǎn)換成字符型。其他部分程序見附錄4。5.4 LCD驅(qū)動LCD的底層驅(qū)動使用SSD1306的開源驅(qū)動程序,在此底層驅(qū)動的基礎(chǔ)上自己編寫顯示函數(shù)。第六章 系統(tǒng)功能描述本次課程設(shè)計的作品實(shí)物圖如圖7所示。圖7 作品實(shí)物圖按鍵的對應(yīng)關(guān)系如圖8所示。圖8 按鍵功能對應(yīng)關(guān)系作品可
15、實(shí)現(xiàn)四個浮點(diǎn)數(shù)的加減乘除四則運(yùn)算,但在計算乘除法,特別是兩個浮點(diǎn)數(shù)的乘除法時會會產(chǎn)生數(shù)據(jù)精度被削減的問題,此問題暫時沒有找到解決的方法,有待日后改進(jìn)。第七章 設(shè)計總結(jié)和心得體會本次課程設(shè)計歷時兩周,在課程設(shè)計的過程中遇到了許多的問題,同時也學(xué)到了許多知識。在最初的硬件調(diào)試時總是遇到下載器檢測不到單片機(jī)的情況,為了找出問題所在,我首先檢查單片機(jī)的最小系統(tǒng)是否正常工作,檢查發(fā)現(xiàn)電源供電正常,復(fù)位電路連接正常,晶振電路能正常起振,最后仔細(xì)查閱數(shù)據(jù)手冊才知道,STC89C52RC單片機(jī)和以前使用的其他類型的單片機(jī)不同,它采用的是高電平復(fù)位,而以前自己使用的單片機(jī)是低電平復(fù)位,在修改了復(fù)位電路后,下載器
16、便能正常檢測到單片機(jī)。在調(diào)試LCD的驅(qū)動時總是遇到顯示亂碼和錯位的問題,通過在程序中設(shè)置斷點(diǎn)的調(diào)試方法發(fā)現(xiàn)是數(shù)據(jù)格式轉(zhuǎn)換是出現(xiàn)了問題,主要是在整型數(shù)據(jù)和浮點(diǎn)數(shù)轉(zhuǎn)為字符型時出現(xiàn)的問題,通過查閱C語言的相關(guān)書籍發(fā)現(xiàn),使用sprintf()函數(shù)可以很好地實(shí)現(xiàn)數(shù)值向字符串的轉(zhuǎn)換,但是8051內(nèi)核運(yùn)行這個函數(shù)總是顯得有些吃力,為了到達(dá)較好的顯示效果,只能舍棄了運(yùn)行速度。在對兩個數(shù)進(jìn)行運(yùn)算時,特別是浮點(diǎn)數(shù)的運(yùn)算時,運(yùn)算結(jié)果有時出現(xiàn)精度降低或者是數(shù)值溢出的問題,通過查閱開發(fā)手冊得知,在Keil C51中unsigned int型數(shù)據(jù)占兩個字節(jié),數(shù)據(jù)范圍為065535,signed int型數(shù)據(jù)占兩個字節(jié)數(shù)據(jù)
17、范圍為-32768+32767,float類型數(shù)據(jù)占四個字節(jié),數(shù)據(jù)范圍為:1.175494E-383.402823E+38,而自己輸入的數(shù)據(jù)或運(yùn)算的結(jié)果可能超出了上述的范圍值,因此造成數(shù)據(jù)溢出并顯示錯誤,在修改了數(shù)據(jù)的存儲類型后,上述的問題得到了有效的解決,但是輸入的數(shù)值和運(yùn)算的結(jié)果卻有了一定的范圍限制。本次課程設(shè)計的作品到目前位置仍有一些缺陷,比如輸入數(shù)據(jù)位數(shù)的問題和計算結(jié)果精度降低的問題,由于時間的原因,只能在以后的時間里慢慢完善。通過本次課程設(shè)計,不僅讓我在課堂上學(xué)到的東西學(xué)以致用,更重要的是提高了我的動手能力和解決問題的能力,為以后的工作打下了很好的基礎(chǔ)。附錄1 STC89C52RC資
18、料STC89C52RC單片機(jī)是宏晶科技推出的新一代高速/低功耗/超強(qiáng)抗干擾的8051內(nèi)核單片機(jī),指令代碼完全兼容傳統(tǒng)8051單片機(jī),12時鐘/機(jī)器周期和6時鐘/機(jī)器周期可以任意選擇。其主要特性如下:l 增強(qiáng)型8051單片機(jī),12時鐘/機(jī)器周期和6時鐘/機(jī)器周期可以任意選擇,指令代碼完全兼容傳統(tǒng)8051。l 工作電壓:5.5V3.3V。l 工作頻率范圍:040MHz。l 用戶應(yīng)用程序存儲空間為8K。l 片上集成512B的RAM。l 32個I/O口,復(fù)位后P1/P2/P3為準(zhǔn)雙向口/弱上拉,PO口為漏極開路,作為總線擴(kuò)展時不用加上拉電阻,作為I/O口時需要加上拉電阻。l ISP/IAP。l 3個1
19、6為定時/計數(shù)器。l 4路外部中斷,下降沿或低電平觸發(fā)。STC89C52RC的引腳圖如圖9所示。圖9 STC89C52RC引腳圖附錄2 器件選型器件名稱型號數(shù)量單片機(jī)STC89C52RC1按鍵四角按鍵17電阻10K歐姆1晶振11.0592MHz1瓷片電容33pF2芯片座40DIP1排孔1*81液晶LCD128641附錄3 硬件原理圖附錄4 程序清單源文件1:calculator.c#include #include #include#include#includeuser_define.huchar point=.;float op1;float op2;float ans;int BP_da
20、t=0; /小數(shù)點(diǎn)之前的數(shù)據(jù)int AP_dat=0; /小數(shù)點(diǎn)之后的數(shù)據(jù)uint en89=1;uint pFlag=0; /小數(shù)點(diǎn)輸入標(biāo)志uint asf=0; /等號按鍵標(biāo)志uint optCS; /輸入運(yùn)算符類型uint line_f=0; /行控制uint bplen; /整數(shù)部分長度uchar BP_str=; /整數(shù)部分存放數(shù)組uchar AP_str=; /小數(shù)部分存放數(shù)組uchar ansCode=; /運(yùn)算結(jié)果存放數(shù)組/*初始化顯示*/void init_dis() oledDisp(0,0,); oledDisp(4,0,); oledDisp(6,0,ans:);/*數(shù)
21、值計算函數(shù)*/void numSelc(int key) if(pFlag=0) BP_dat=BP_dat*10+key; sprintf(BP_str,%d,BP_dat); bplen=strlen(BP_str)*8+24; oledDisp(line_f,16,BP_str); else AP_dat=AP_dat*10+key; sprintf(AP_str,%d,AP_dat); oledDisp(line_f,bplen,AP_str); /*延時函數(shù),毫秒級*/void delay_ms(uint a) uint i,j; for(i=a;i0;i-) for(j=110;j
22、0;j-); /*鍵盤掃描*/void keyScan() uchar temp; int key; P1=0XFE; temp=P1; temp=temp&0XF0; if(temp!=0XF0) delay_ms(10); temp=P1; temp=temp&0XF0; if(temp!=0XF0) temp=P1; switch(temp) case 0XEE: key=0;break;case 0XDE: key=1;break;case 0XBE: key=2;break;case 0X7E: key=3;break; while(temp!=0XF0) temp=P1; temp
23、=temp&0XF0; numSelc(key); P1=0XFD; temp=P1; temp=temp&0XF0; if(temp!=0XF0) delay_ms(10); temp=P1; temp=temp&0XF0; if(temp!=0XF0) temp=P1; switch(temp) case 0XED: key=4;break;case 0XDD: key=5;break;case 0XBD: key=6;break;case 0X7D: key=7;break; while(temp!=0XF0) temp=P1; temp=temp&0XF0; numSelc(key);
24、 P1=0XFB; temp=P1; temp=temp&0XF0; if(temp!=0XF0) delay_ms(10); temp=P1; temp=temp&0XF0; if(temp!=0XF0) temp=P1; switch(temp) case 0XEB: key=8;break;case 0XDB: key=9;break;case 0XBB: pFlag=1;break;case 0X7B: asf=1;pFlag=0;break; while(temp!=0XF0) temp=P1; temp=temp&0XF0; if(pFlag=1&en89=1) oledDisp(
25、line_f,strlen(BP_str)*8+16,point); /計算小數(shù)點(diǎn)顯示的地址 en89=0; else if(asf=1) if(strlen(AP_str)=0) op2=BP_dat; else op2=BP_dat+(float)(AP_dat)/(10(strlen(AP_str); /得到第二個運(yùn)算數(shù) switch(optCS) case 0:ans=op1+op2;break;case 1:ans=op1-op2;break;case 2:ans=op1*op2;break;case 3:ans=op1/op2;break; sprintf(ansCode,%f,a
26、ns); /將浮點(diǎn)型數(shù)據(jù)轉(zhuǎn)換為字符串以顯示在LCD上 oledDisp(6,32,ansCode); pFlag=0; BP_dat=0; AP_dat=0; else numSelc(key); P1=0XF7; temp=P1; temp=temp&0XF0; if(temp!=0XF0) delay_ms(10); temp=P1; temp=temp&0XF0; if(temp!=0XF0) temp=P1; switch(temp) case 0XE7: optCS=0;break;case 0XD7: optCS=1;break;case 0XB7: optCS=2;break;c
27、ase 0X77: optCS=3;break; while(temp!=0XF0) temp=P1; temp=temp&0XF0; if(strlen(AP_str)=0) op1=BP_dat; else op1=BP_dat+(float)(AP_dat)/(10(strlen(AP_str); /轉(zhuǎn)換得到第一個運(yùn)算數(shù) line_f=4; AP_dat=0; BP_dat=0; pFlag=0; en89=1; switch(optCS) case 0:oledDisp(2,1,+);break;case 1:oledDisp(2,1,-);break; case 2:oledDisp
28、(2,1,*);break;case 3:oledDisp(2,1,/);break; void main(void) CS2=1;CS1=0;initLcd(); /初始化LCDclr_SCR(); init_dis(); /初始化顯示P3=0X00;while(1)keyScan(); /循環(huán)按鍵掃描頭文件: user_define.h#ifndef _USER_DEFINE_H_#define _USER_DEFINE_H_#define uchar unsigned char #define uint unsigned int#define ulong unsigned longsbi
29、t CLK=P00; /接口定義:CLKsbit MOSI=P01; /接口定義:MOSIsbit DC=P02; /接口定義:DCsbit CS1=P03; /接口定義:OLED的片選CS1sbit FSO=P04; /字庫IC接口定義:FSOsbit CS2=P05; /字庫IC接口定義:CS2void oledDisp(uchar y,uchar x,uchar *text); /函數(shù)聲明void clr_SCR();void initLcd();void delay_ms(uint a) ;#endif源文件: oled_driver.c#include#include #includ
30、euser_define.h/*寫指令到LCD模塊*/void wr_CMD(int data1) char i;DC=0;CLK=0;for(i=0;i8;i+) if(data1&0x80) MOSI=1;else MOSI=0;CLK=1;_nop_();CLK=0; data1=1; /*寫數(shù)據(jù)到LCD模塊*/void wr_DAT(int data1)char i;DC=1;CLK=0;for(i=0;i8;i+) if(data1&0x80) MOSI=1;else MOSI=0;CLK=1;_nop_();CLK=0; data1 4) | 0x10);/設(shè)置列地址的高4位wr_
31、CMD(page & 0x0f) | 0x00);/設(shè)置列地址的低4位/*全屏清屏*/void clr_SCR()unsigned char i,j;CS1=0;CS2 = 1;for(i=0;i8;i+)wr_CMD(0xb0+i);wr_CMD(0x00);wr_CMD(0x10);for(j=0;j0;j-)lcd_Add(column,page);for (i=0;i0;j-)lcd_Add(column,page);for (i=0;i8;i+)wr_DAT(*dp);/寫數(shù)據(jù)到LCD,每寫完一個8位的數(shù)據(jù)后列地址自動加1dp+;page+;CS1=1;/*送指令到晶聯(lián)訊字庫IC*/
32、void wrCMD_ROM( uchar datu )uchar i;for(i=0;i8;i+ )if(datu&0x80)MOSI = 1;elseMOSI = 0;datu = datu1;CLK=0;CLK=1;/*從晶聯(lián)訊字庫IC中取漢字或字符數(shù)據(jù)(1個字節(jié))*/static uchar rdDat_ROM( )uchar i;uchar ret_data=0;CLK=1;for(i=0;i8;i+)FSO=1;CLK=0;ret_data=ret_data1;if( FSO )ret_data=ret_data+1;elseret_data=ret_data+0;CLK=1;re
33、turn(ret_data);/*從相關(guān)地址(addrHigh:地址高字節(jié),addrMid:地址中字節(jié),addrLow:地址低字節(jié))*中連續(xù)讀出DataLen個字節(jié)的數(shù)據(jù)到 pBuff的地址*/void gnBD_rom(uchar addrHigh,uchar addrMid,uchar addrLow,uchar *pBuff,uchar DataLen )uchar i;CS2 = 0;CS1=1;CLK=0;wrCMD_ROM(0x03);wrCMD_ROM(addrHigh);wrCMD_ROM(addrMid);wrCMD_ROM(addrLow);for(i = 0; i 0x00)if(texti=0xb0) &(texti=0xa1)fontaddr = (texti- 0xb0)*94; fontaddr += (texti+1-0xa1)+846;fontaddr = (ulong)(fontaddr*32);addrHigh = (fontaddr&0xff0000)16; /地址的高8位,共24位addrMid = (fontaddr&0xff00)8; /地址的中8位,共24位addrLow = fontaddr&0xff; /地址的低8位,共24位/*取32個字節(jié)的數(shù)據(jù),存到fontbuf32
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幾人共同購房合同范本
- 電纜外貿(mào)合同范本
- 包裝合同范本8篇
- 公司合同范本梳理審核
- 倉庫流轉(zhuǎn)合同范本
- 單位集資建房轉(zhuǎn)讓合同范本
- 勞防用品采購合同范本
- 出售立軸制砂機(jī)合同范本
- 出售玻璃蓋板合同范本
- 冷凍水餃供應(yīng)合同范本
- 2025年江西生物科技職業(yè)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2024-2025學(xué)年第二學(xué)期學(xué)校全面工作計劃
- 2025年中國spa行業(yè)市場全景分析及投資前景展望報告
- GB 45187-2024墜落防護(hù)動力升降防墜落裝置
- 2024年青島港灣職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年參考題庫含答案解析
- 《信息技術(shù)(拓展模塊)》高職全套教學(xué)課件
- 環(huán)保行業(yè)環(huán)保管理制度環(huán)保責(zé)任落實(shí)制度
- 2025年山東菏投建設(shè)集團(tuán)招聘筆試參考題庫含答案解析
- 市政質(zhì)量員繼續(xù)教育考試題庫集(含答案)
- 售后工程師述職報告
- 《公司法完整版》課件2024
評論
0/150
提交評論