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

正文內(nèi)容

畢業(yè)設(shè)計-基于8051單片機(jī)的電子電話薄設(shè)計(編輯修改稿)

2025-02-14 15:56 本頁面
 

【文章內(nèi)容簡介】 引腳說明邏輯工作電壓(VDD) :~ 電源地(GND) :0V 工作溫度(Ta) :0~60 ℃( 常溫) / 20 ~75 ℃(寬溫 )三、接口時序 模塊有并行和串行兩種連接方法(時序如下): 8 位并行連接時序圖 MPU寫資料到模塊 接口時序圖四、用戶指令集 12864指令集 12864擴(kuò)展指令集備注: 1 、當(dāng)模塊在接受指令前,微處理順必須先確認(rèn)模塊內(nèi)部處于非忙碌狀態(tài),即讀取 BF標(biāo)志時 BF需為 0,方可接受新的指令;如果在送出一個指令前并不檢查 BF標(biāo)志 ,那么在前一個指令和這個指令中間必須延遲一段較長的時間,即是等待前一個指令確實執(zhí)行完成,指令執(zhí)行的時間請參考指令表中的個別指令說明。 2 、“RE”為基本指令集與擴(kuò)充指令集的選擇控制位元,當(dāng)變更“RE”位元后,往后的指令集將維持在最后的狀態(tài),除非再次變更“RE”位元,否則使用相同指令集時,不需每次重設(shè)“RE”位元。五、顯示坐標(biāo)關(guān)系: 水平方向 X—以字節(jié)單位 垂直方向 Y—以位為單位 12864漢字顯示坐標(biāo) 12864字符地址六、驅(qū)動函數(shù):引腳定義:sbit LCD_RS=P2^5。 //命令/數(shù)據(jù)引腳sbit LCD_RW=P2^6。 //讀寫引腳sbit LCD_E=P2^7。 //使能引腳sbit LCD_PSB=P2^4。 //PSB腳為12864系列的串、并通訊功能切換,PSB=1為并口,PSB=0則為串口寫數(shù)據(jù)void WriteDataLCD(uchar dat)//寫數(shù)據(jù){ LCD_RS=1。 LCD_RW=0。 LCD_E=0。 P0=dat。 DelayMs(1)。 LCD_E=1。 DelayMs(1)。 LCD_E=0。}寫命令void WriteCmdLCD(uchar cmd)//寫命令{ LCD_RS=0。 LCD_RW=0。 LCD_E=0。 P0=cmd。 DelayMs(1)。 LCD_E=1。 DelayMs(1)。 LCD_E=0。}液晶初始化函數(shù)void LCDInit()//初始化函數(shù){ LCD_PSB=1。//并口模式 WriteCmdLCD(0x30)。//8位基本指令操作 DelayMs(5)。 WriteCmdLCD(0x0c)。//顯示開,關(guān)光標(biāo) DelayMs(5)。 WriteCmdLCD(0x01)。//清屏,把DDRAM計數(shù)器地址調(diào)整為00H DelayMs(5)。 WriteCmdLCD(0x06)。//指定在資料的讀取和寫入時光標(biāo)的移動方向,DDRAM的地址計數(shù)器(AC)加1 DelayMs(5)。 } 4*4矩陣鍵盤獨立鍵盤與單片機(jī)連接時,每一個按鍵都需要單片機(jī)的一個I/O口,若某單片機(jī)系統(tǒng)需較多按鍵,如果用獨立按鍵便會占用過多的I/O口資源。單片機(jī)系統(tǒng)中I/O口資源往往比較寶貴,當(dāng)用到多個按鍵時,為了節(jié)省I/O口線,我們引入矩陣鍵盤。本項目中將用到4*4矩陣鍵盤。我們將16個按鍵排成4行4列,第一行將每個按鍵的一端連接在一起構(gòu)成行線,第一列將每個按鍵的另一端連接在一起構(gòu)成列線,這樣便一共有4行4列共8根線,我們將這8根線連接到單片機(jī)的8個I/O口上,通過程序掃描就可以檢測到16個按鍵。檢測時,先送一列為低電平,其余幾列全為高電平,然后立即輪流檢測一次各行是否有低電平,若檢測到某一行為低電平,則我們便可確認(rèn)當(dāng)前被按下的鍵是哪一行哪一列的,用同樣方法輪流送各列一次低電平,再輪流檢測一次各行是否變?yōu)榈碗娖?,這樣既可檢測完所有的按鍵,當(dāng)有鍵被按下時便可判斷出被按下的鍵是哪一個鍵。當(dāng)然我們也可以將行線置為低電平,掃描列是否有低電平。這就是矩陣鍵盤檢測的原理和方法。 4*4矩陣鍵盤3 軟件編程3.1 編程語言簡介3.1.1 C51語言介紹由于單片機(jī)應(yīng)用系統(tǒng)的日趨復(fù)雜,要求所寫的代碼規(guī)范化、模塊化,便于多人以軟件工程的形式進(jìn)行協(xié)同開發(fā),匯編語言作為傳統(tǒng)的單片機(jī)應(yīng)用系統(tǒng)的編程語言,已經(jīng)不能滿足這樣的實際需要了。而C語言以其結(jié)構(gòu)化和能產(chǎn)生高效代碼滿足了這樣的需求。隨著80C51單片機(jī)硬件性能的提升,尤其是片內(nèi)程序存儲器容量的增大和時鐘工作頻率的提高,已基本克服了高級語言產(chǎn)生代碼長、運行速度慢、不適合單片機(jī)使用的致命缺點。由此C51已經(jīng)得到廣泛的推廣和應(yīng)用,成為80C51系列單片機(jī)的主流程序設(shè)計語言,甚至可以說是作為單片機(jī)開發(fā)人員必須要掌握的一門語言。采用C51程序設(shè)計語言,編程者只需了解變量和常量的存儲類型于80C51單片機(jī)存儲空間的對應(yīng)關(guān)系,而不必深入了解單片機(jī)的硬件和接口。C51編譯器會自動完成變量的存儲單元的分配。C51語言基本詞法介紹:C51語言與標(biāo)準(zhǔn)C語言一樣,共有6種單詞:標(biāo)識符(identifier)關(guān)鍵字(keyword)常量(constant)字符串(character string)運算符(operator)分隔符(punctuator) 為方便程序員自由書寫語句,允許單詞之間間隔任意距離(也可以換行、續(xù)行),C51語言增加了空白符。為了方便程序員對程序加以注釋,提高程序可讀性,C語言還規(guī)定了注釋符/* */和//。C51的數(shù)據(jù)和數(shù)據(jù)類型: C51的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類型的形式出現(xiàn)的,它的數(shù)據(jù)類型包括基本類型、構(gòu)造類型、指針類型和空類型。除了上述C51數(shù)據(jù)類型外,還有針對8051系列單片機(jī)內(nèi)的特殊功能寄存器而設(shè)置的sfr和sfr16類型的數(shù)據(jù)和為操作特殊寄存器中的特定位而設(shè)置的sbit類型的數(shù)據(jù)。 在C51語言中,數(shù)據(jù)有常量和變量之分。常量是指在程序運行過程中其值不能改變的量,在源程序中,可以用預(yù)處理器的預(yù)定義語句定義一個標(biāo)識符號來代表一個常量。變量是指在運行過程中值可以改變的量,一個變量由兩部分組成:變量名和變量值。每個變量都有一個變量名,根據(jù)變量數(shù)據(jù)類型的不同在計算機(jī)內(nèi)存中占據(jù)一定的存儲單元(變量的地址),在該地址中存放的就是變量值。C51構(gòu)造數(shù)據(jù)類型C51語言還提供了擴(kuò)展的構(gòu)造數(shù)據(jù)類型,又稱復(fù)合變量。這些按一定規(guī)則構(gòu)成的數(shù)據(jù)類型有:數(shù)組、結(jié)構(gòu)、共用體、枚舉等。數(shù)組是具有固定數(shù)目和相同類型成分分量的有序集合。構(gòu)成一個數(shù)組的各數(shù)組元素必須是同一類的變量,而不允許在一個數(shù)組中出現(xiàn)不同類型的變量。數(shù)組有一維、二維、三維、多維數(shù)組之分,常用的是一維、二維數(shù)組和字符數(shù)組。數(shù)組的說明格式如下:[存儲類說明] 類型說明符 [修飾符] 標(biāo)識符 [=初值] [,標(biāo)識符[=初值]]…;其中存儲類說明、類型說明符、修飾符以及多數(shù)組說明與變量的說明格式完全一致,標(biāo)識符和初值部分是數(shù)組的特征所在,決定了數(shù)組的維數(shù)等特征。結(jié)構(gòu)定義:把多個不同類型的變量結(jié)合在一起形成的一個組合型變量,稱為結(jié)構(gòu)變量,簡稱結(jié)構(gòu)。構(gòu)成一個結(jié)構(gòu)的各個變量稱為結(jié)構(gòu)元素(或成員),定義規(guī)則與變量名一致。共用體類型數(shù)據(jù)(也稱聯(lián)合類型)使各種類型的數(shù)據(jù)共同使用1塊內(nèi)存空間。共用體類型是在內(nèi)存中定義一段多種類型數(shù)據(jù)所共享的空間,空間大小以最長的類型為準(zhǔn)。共用體類型和結(jié)構(gòu)體類型類似,也可以包含多個不同數(shù)據(jù)類型的元素,但其變量所占有的內(nèi)存使得共用體類型的變量至多只能存放該類型所包含的一個成員,即它所包含的成員只能共享同一個存儲空間。枚舉類型是一個有名字的某些整型數(shù)常量的集合。這些整型數(shù)常量是該類型變量可取的所有的合法值。枚舉定義應(yīng)列出該類型變量的可取值。一個完整的枚舉定義說明格式如下:enum 枚舉類原型標(biāo)識符 {枚舉常量標(biāo)識符列表} 枚舉變量標(biāo)識符表;也可以分成兩部分說明:enum 枚舉類原型標(biāo)識符 {枚舉常量標(biāo)識符列表};enum 枚舉類原型標(biāo)識符 枚舉變量列表;在枚舉常量標(biāo)識符列表中,每一個標(biāo)識符代表一個整型常量,默認(rèn)情況下,第一個常量標(biāo)識符取值為0,第二個取值為1,依次類推。此外,也可以通過初始化來指定某常量標(biāo)識符的值,初始化后,該常量標(biāo)識符后續(xù)各常量標(biāo)識符的值依次遞增。 3.1.2 C51語言和匯編語言的性能比較:在程序的開發(fā)上,使用C51語言比匯編語言更方便。第一,51的模塊化程序設(shè)計思想使得應(yīng)用程序的開發(fā)過程大大簡化,可以由不同的程序員分別開發(fā)不同的功能模塊,最后在一起整合成完整的程序。第二,51程序的移植和修改相對容易。第三,C51語言提供了大量的函數(shù)庫,可以方便的調(diào)用,使得程序開發(fā)更為簡易。使用C51語言開發(fā)程序有產(chǎn)生的代碼較長,運行速度相對慢的缺點,需要通過選擇效率高的編譯系統(tǒng)來改善。編譯系統(tǒng)的選擇對于C51語言應(yīng)用程序的運行效率有很大影響,編譯效率高的編譯器得到的目標(biāo)文件長度短,結(jié)構(gòu)合理,運行效率高。 匯編語言開發(fā)的難度相對大一些。首先,在開發(fā)時,使用匯編語言需要對存儲器分配進(jìn)行仔細(xì)的安排,這一方面使得程序的編制更為靈活,但另一方面也使程序員需要考慮的問題更加復(fù)雜化。其次,使用匯編語言編制復(fù)雜的流程控制、復(fù)雜的數(shù)學(xué)運算等類型的程序時不很方便,但在控制硬件、位操作等方面表現(xiàn)優(yōu)異。最后,匯編語言是和硬件緊密結(jié)合的語言,程序在不同硬件平臺間的可移植性不好。盡管在開發(fā)上有一定難度,但是由于匯編語言運行速度快,效率高,能夠完全控制硬件,因而用匯編編制的應(yīng)用程序一般效率比較高。3.1.3 編程語言選擇匯編語言與C51語言各有各的優(yōu)點。如C51語言有數(shù)組形式,存儲方便,匯編則無此優(yōu)點,但匯編命令容易學(xué)習(xí),C51語言不容易掌握。因此,為了發(fā)揮C51語言和匯編語言各自的優(yōu)勢,提高程序的開發(fā)效率,本軟件采用C51語言和匯編語言的混合編程。由于C51語言是“函數(shù)的語言”,因而實現(xiàn)二者混合編程的關(guān)鍵就在于實現(xiàn)不同語言之間函數(shù)的交叉調(diào)用。由于C51語言對函數(shù)的參數(shù)、返回值傳送規(guī)則、段的選用和命名都做了嚴(yán)格規(guī)定,因而在混合編程時匯編語言要按照C51語言的規(guī)定來編寫。這也是一般高級語言和低級語言混合編程的通用規(guī)則,即低級語言要向高級語言看齊,按照高級語言的規(guī)定進(jìn)行編寫.3.2 程序編寫3.2.1 輸入法程序電話本一個單元中應(yīng)包含姓名(這里存儲的是姓名所對應(yīng)的碼值)、電話號碼和存儲序號。中國的姓名最多為四個漢字,每個漢字對應(yīng)一個八位二進(jìn)制碼值,所以姓名用含四個元素的一維數(shù)組存儲。電話號碼為十一位,因此用含十一個元素的一維數(shù)組存儲。因為一個單元里姓名和電話號碼的方式不同,所以電話本采用結(jié)構(gòu)體的形式存儲。結(jié)構(gòu)的定義:把多個不同類型的變量結(jié)合在一起形成的一個組合型變量,稱為結(jié)構(gòu)變量,簡稱結(jié)構(gòu),構(gòu)成一個結(jié)構(gòu)的各個變量成為結(jié)構(gòu)元素(或成員),定義規(guī)則與變量名一致。因為電話本中各個單元具有相同的結(jié)構(gòu)形式,即都包含姓名、號碼和存儲序號三個部分,因此可以定義成結(jié)構(gòu)數(shù)組。C51允許將具有同樣結(jié)構(gòu)類型的若干個結(jié)構(gòu)變量定義成結(jié)構(gòu)數(shù)組。當(dāng)數(shù)組中每個元素都具有相同的結(jié)構(gòu)類型的結(jié)構(gòu)變量時,則稱該數(shù)組為結(jié)構(gòu)數(shù)組。結(jié)構(gòu)數(shù)組與一般變量數(shù)組的不同就在于結(jié)構(gòu)數(shù)組的每一個元素都具有同一個結(jié)構(gòu)類型的變量,她們具有同一個結(jié)構(gòu)類型,含有相同的成員項。本項目將采用結(jié)構(gòu)體處理拼音:struct PY_index { char *PY。 char *PY_mb。 }。一個結(jié)構(gòu)體變量PY_index中有兩個成員,一個是指向字符型的指針PY,另一個是指向字符型的指針PY_mb.char * py_ime(char *strInput_py_str) { struct PY_index *cpHZ,*cpHZedge。 char i,cInputStrLength。 cInputStrLength=strlen(strInput_py_str)。 /*輸入拼音串長度*/ if(*strInput_py_str==39。\039。)return()。 /*如果輸入空字符返回0*/ for(i=0。icInputStrLength。i++) *(strInput_py_str+i)|=0x20。 /*將字母串轉(zhuǎn)為小寫*/ if(*strInput_py_str==39。i39。)return()。 /*錯誤拼音輸入*/ if(*strInput_py_str==39。u39。)return()。 if(*strInput_py_str==39。v39。)return()。 cpHZ=PY_index_headletter[strInput_py_str[0]39。a39。]。 /*查首字母索引*/ cpHZedge=PY_index_headletter[strInput_py_str[0]39。a39。+1]。 /*設(shè)置指針界限*/ strInput_py_str++。 /*指向拼音串第二個字母*/ while(cpHZcpHZedge) /*索引表不超界*/ { for(i=0。icInputStrLength。i++) { if(*(strInput_py_str+i)!=*((*cpHZ).PY+i))break。 /*發(fā)現(xiàn)字母串不配,退出*/ } if(i==cInputStrLength) /*字母串全配*/ { return (*cpHZ).PY_mb。 } cpHZ++。 } return 。
點擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1