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

正文內(nèi)容

基于單片機(jī)的plc中文輸入系統(tǒng)設(shè)計(編輯修改稿)

2025-07-24 19:26 本頁面
 

【文章內(nèi)容簡介】 模在存儲器中的位置,最后將它們分別提取出來并送至LCD上顯示。本中文拼音輸入法的軟件系統(tǒng)主要包含下列模塊:  按鍵掃描:掃描44鍵盤,獲取鍵值,進(jìn)行鍵值處理。LCD顯示:LCD顯示驅(qū)動程序,實現(xiàn)中文,數(shù)字,英文,符號輸出等功能。文字輸入:通過44鍵盤輸入漢字(拼音輸入法)、英文、字符、數(shù)字等,并在LCD上顯示出來,以便于用戶編輯通訊錄條目。 按鍵掃描模塊按鍵掃描是采用查詢方式獲得按鍵,單片機(jī)不斷的查詢是否有按鍵按下,如果有按鍵按下,就執(zhí)行相應(yīng)的語句,跳出查詢函數(shù)進(jìn)行數(shù)字序列到拼音碼表轉(zhuǎn)換運算,否則繼續(xù)查詢。44鍵盤的按鍵與字母組合采取手機(jī)按鍵排布方式。下圖是根據(jù)實物圖列出來的,1到9為數(shù)字鍵, “數(shù)”表示按下該鍵轉(zhuǎn)入數(shù)字輸入狀態(tài),“英” 表示按下該鍵轉(zhuǎn)入英文輸入狀態(tài),“標(biāo)” 表示按下該鍵轉(zhuǎn)入標(biāo)點符號輸入狀態(tài),“取”表示取消,“Up”表示選擇下一個,“Dn”表示選擇上一個,“確”表示確定。取消UpDn確定 9數(shù)字英文 標(biāo)123456781234 圖 44按鍵定義按鍵掃描程序中根據(jù)按鍵的機(jī)械特性,用延時進(jìn)行了消抖,按鍵消抖延時取10ms~20ms為適宜,同時釋放按鍵時也應(yīng)該進(jìn)行判斷,否則,很可能將一次按鍵操作識別成多次按鍵操作。 LCD顯示模塊LCD在使用時,要先把欲存放的數(shù)據(jù)的地址寫入IR,再把欲顯示的數(shù)據(jù)寫入DR,在寫入前還需要先檢查忙碌標(biāo)志BF,只有當(dāng)BF為0才可以寫入。因此,在程序中會反復(fù)出現(xiàn)調(diào)用命令模塊LCD_Wcode(char c)和寫數(shù)據(jù)模塊LCD_Wdata(char d),在寫數(shù)據(jù)模塊中,又需要調(diào)用判斷LCD是否忙碌模塊 LCD_Rbusy(),但這些模塊都是相對固定的,在需要顯示不同字符時,只需要注意改變顯示字符模塊中的有關(guān)數(shù)據(jù)。漢字顯示模塊是整個系統(tǒng)的核心模塊之一,通過調(diào)用顯示子程序?qū)h字和英文字符通過并行傳送方式傳送到LCD顯示。調(diào)用LCD_Wcode ()函數(shù)寫入命令到液晶顯示模塊中,可以確定顯示的位置,調(diào)用LCD_Wdata ()函數(shù)可以將要顯示的漢字或字符的國標(biāo)碼傳送到液晶顯示器中,調(diào)用delay(int t)函數(shù)可以通過參數(shù)控制延時若干ms,調(diào)用LCD_Rbusy ()函數(shù)可以判斷液晶顯示模塊是否處于忙狀態(tài)。若要顯示英文字符串,可以調(diào)用display_pinyin(struct t9py_list *ptr)函數(shù),其中ptr為T9數(shù)字字母索引結(jié)果的指針。若要顯示漢字串,調(diào)用display_hanzi(struct t9py_list *ptr),顯示最后選中的漢字調(diào)用函數(shù) display_output_hanzi(struct t9py_list *ptr)。程序中用到的LCD驅(qū)動函數(shù)主要有:void LCD_Rest()。 //復(fù)位函數(shù)void LCD_Clear()。 //清除屏幕顯示內(nèi)容void LCD_Init()。 // LCD顯示初始化void LCD_Wdata(char d)。 //寫數(shù)據(jù)void LCD_Wcode(char c)。 //寫命令void LCD_Rbusy()。 //讀忙碌狀態(tài)程序中用到的顯示模塊函數(shù)為:display_pinyin(struct t9py_list *ptr);display_hanzi(struct t9py_list *ptr);display_output_hanzi(struct t9py_list *ptr); 文字輸入模塊拼音輸入法是本方案的核心內(nèi)容,它負(fù)責(zé)將鍵盤輸入的數(shù)字序列轉(zhuǎn)換為漢字。拼音輸入法大體可以分為兩個步驟:首先將鍵盤輸入的數(shù)字序列轉(zhuǎn)換為拼音編碼,然后搜索到該拼音編碼對應(yīng)的漢字編碼。整個過程采用查表方法查找拼音及其對應(yīng)漢字串。拼音輸入法設(shè)計框架如下:  圖 拼音輸入法設(shè)計框架(1)每個拼音編碼的數(shù)據(jù)結(jié)構(gòu)為: struct t9py_index { char code *t9_str。 //按鍵數(shù)字序列 char code *py_str。 //拼音編碼字符串 char code *py_mb。 //該拼音對應(yīng)的漢字碼表地址}?! ? 所有的拼音編碼組成一個數(shù)組常量t9py_table[],每個拼音編碼作為數(shù)組中的一個元素存在,下面是該數(shù)組的片段:struct t9py_index code t9py_table[] ={ {24,ai,PY_mb_ai}, {24,bi,PY_mb_bi}, {2,a,PY_mb_a}, {3,e,PY_mb_e},   …… …… {,}, //作為查找結(jié)束標(biāo)志 }(2)當(dāng)用戶通過按鍵輸入一個數(shù)字序列后,首先將鍵值轉(zhuǎn)化為字符,然后把字符添加到字符串末尾,將字符串與數(shù)字字母索引表中的t9_str。數(shù)字串從地址為0處開始依次比較,當(dāng)比較結(jié)果為相等時則把指向該數(shù)組的指針放到T9數(shù)字字母索引結(jié)果的結(jié)構(gòu)體中,指針繼續(xù)往下指,繼續(xù)比較,直到遇到結(jié)束標(biāo)志(“”),查找結(jié)束。 以下為按鍵數(shù)字序列查找到拼音的過程: uint t9_table_search() { int success。 char *str。 struct t9py_index *idx。 success = 0。 idx = amp。(t9py_table[0])。 str = idxt9_str。 t9py_result_clear()。 // 清空原來的結(jié)果 for (。strcmp(str,)。) { if (!strcmp(str, key_str)) { success=1。 t9py_result_add(idx)。 } idx++。 str = idxt9_str。 } return success。}(3)每次查詢T9索引表得到的所有匹配拼音結(jié)果,都放在 struct t9py_list t9py_result中,當(dāng)要顯示結(jié)果時,可以通過取這里的變量,進(jìn)行顯示。每個T9數(shù)字字母索引結(jié)果(多重表項)為:struct t9py_list { struct t9py_index * entry[8]。 int ele_num。 // 拼音個數(shù) char ele_idx。 // 當(dāng)前選中的拼音(index) int hanzi_num。 // 當(dāng)前選中拼音中的漢字個數(shù) char hanzi_idx。 // 當(dāng)前選中拼音中的選中的漢字(index) char code *hanzi_ptr。 // 當(dāng)前讀音候選漢字字符串指針}。(4)例如輸入數(shù)字224,比較t9py_table數(shù)組所有數(shù)字串元素,將獲得bai和cai兩組拼音編碼,程序?qū)⑦@些匹配的拼音通過LCD顯示出來,供用戶選擇。 拼音顯示程序如下: void display_pinyin(struct t9py_list *ptr){ char *dizhi。 int j。 LCD_Wcode(0x88)。 for(j=0。jptrele_num。j++) { dizhi=ptrentry[j]py_str。 LCD_ShowString(dizhi)。 }}(5)在用戶選定了拼音之后,程序同時也知道了拼音編碼對應(yīng)的漢字碼表地址。例如選擇了拼音bai,那么程序?qū)@得該拼音編碼對應(yīng)的漢字碼表地址PY_mb_bai。程序?qū)h字碼表數(shù)組中的所有漢字顯示在LCD上,漢字碼表是具有相同讀音的漢字組成的編碼數(shù)組,例如PY_mb_bai數(shù)組的定義如下:  code char PY_mb_bai[] ={白百佰柏擺敗拜稗}。 同音漢字串顯示函數(shù):display_hanzi(struct t9py_list *ptr){ int i, char_num。 char *hanzi。 hanzi=ptrhanzi_ptr。 char_num=ptrhanzi_num*2。 LCD_Wcode(0x98)。 for(i=0。ichar_num。i++) LCD_Wdata(*hanzi++)。}(6)所有相同讀音的漢字顯示出來后,這樣用戶就可以通過上下鍵選取所需的漢字了,選中字會有顯示光標(biāo)和閃動。在本設(shè)計中由于按鍵已全部用完,所以沒有設(shè)置上下翻頁鍵。 選擇漢字顯示函數(shù): display_output_hanzi(struct t9py_list *ptr){ char *hanzi。 int i。 char xx=0。 if(weizhi=7) LCD_Wcode(0x80+weizhi)。 else if(weizhi==16) { weizhi=0。 LCD_qingchu_12( )。 LCD_
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1