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

正文內(nèi)容

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

2024-08-14 20:36 本頁面
 

【文章內(nèi)容簡介】 2 字節(jié)時,應(yīng)先寫入高位字節(jié),再寫入低位字節(jié)。 第 7 頁 共 28 頁 模塊在接收指令前,向處理器必須先確認(rèn)模塊內(nèi)部處于非忙狀態(tài),即讀取 BF 標(biāo)志時 BF 需為 “0”,方可接受新的指令。如果在送出一個指令前不檢查 BF 標(biāo)志,則在前一個指令和這個指令中間必須延遲一段較長的時間,即等待前一個指令確定執(zhí)行完成。指令執(zhí)行的時間請參考指令表中的指令執(zhí)行時間說明。在此設(shè)計(jì)中采用的是并口通訊模式,所以直接將 PSB 接固定高電平,數(shù)據(jù)由單片機(jī)的 P0 口傳送進(jìn)來,使 能端 E,讀寫RW, 寄存器選擇 RS 用單片機(jī)進(jìn)行控制。 圖 單片機(jī)與液晶顯示接口電路 液晶顯示模塊的漢字顯示通過專用接口命令來控制 , 下面是液晶顯示模塊 12864 清除顯示和位址歸位命令的組成結(jié)構(gòu) , 其中清除顯示命令的組成結(jié)構(gòu)和功能如下 : 功能 : 清除顯示屏幕 , 把 DDRAM 位址計(jì)數(shù)器調(diào)整為“ 00H” 。 位址歸位命令的組成結(jié)構(gòu)和功能如下 : 功能 : 把 DDRAM 位址計(jì)數(shù)器調(diào)整為“ 00H” , 游標(biāo)回原點(diǎn) , 該功能不影響顯示DDRAM。 對 于 帶有中文字庫的 12864 液晶模塊 , 只要傳入所要顯示的英文字符的 ASCII 碼和漢字的區(qū)位編碼 , 液晶顯示模塊會自動計(jì)算國標(biāo)碼和機(jī)內(nèi)碼 , 根據(jù)命令立即將字符在指 第 8 頁 共 28 頁 定位置顯示出來。圖 和圖 是單片機(jī)對液晶顯示模塊的讀寫時序: 圖 單片機(jī) 寫資料到模塊時序圖 圖 單片機(jī) 從模塊 讀出資料 時序圖 3 軟件設(shè)計(jì) 由 鍵盤傳來 一個鍵值, 單片機(jī)據(jù)此確定是否是合法的預(yù)定義的字母( a~z)鍵, 若是,由鍵值(已轉(zhuǎn)換為 ASCⅡ 碼)經(jīng)過換算得到對應(yīng)西文字模在存儲器中的起始位置,然后從存儲器中提取與該鍵匹配的西文字模并放入到 LCD中顯示 , 再查找與該字母(注:如果不是首次輸入則應(yīng)當(dāng)與以前輸入的字母組合成一個字符串,即一個音節(jié))發(fā)音相同的第一個漢字內(nèi)碼在存儲器中的位置,得到該內(nèi)碼并經(jīng)過換算得出該內(nèi)碼對應(yīng)漢字字模在存儲器中的起始位置 , 然后依次查找下一個漢字的內(nèi)碼在存儲器中的位置,再換算找到漢字字模在存儲器中的位置,最后 將它們分別提取出來并送至 LCD 上顯示 。 本 中文拼音輸入法 的軟件系統(tǒng)主要包含下列模塊 : 按鍵掃描 : 掃描 44 鍵盤,獲取鍵 值 ,進(jìn)行鍵值處理。 LCD 顯示 : LCD 顯示驅(qū)動程序,實(shí)現(xiàn) 中文,數(shù)字,英文, 符 號 輸出 等功能。 文字輸入 : 通過 44 鍵盤輸入漢字(拼音輸入法 )、英文、 字符、數(shù)字等 , 并在 LCD 上顯示出來,以便于用戶編輯通訊錄條目。 第 9 頁 共 28 頁 按鍵掃描模塊 按鍵掃描是 采用查詢方式獲得按鍵,單片機(jī)不斷的查詢是否有按鍵按下,如果 有按鍵按下, 就執(zhí)行相應(yīng)的語句 , 跳出查詢函數(shù)進(jìn)行數(shù)字序列到拼音碼表轉(zhuǎn)換運(yùn)算, 否則繼續(xù)查詢。 44 鍵盤的 按鍵與字母組合 采取手機(jī)按鍵排布方式 。下圖是根據(jù)實(shí)物圖列出來的 , 1 到 9 為數(shù)字鍵 , “ 數(shù) ” 表示按下該鍵轉(zhuǎn)入數(shù)字輸入狀 態(tài) , “ 英 ” 表示按下該鍵轉(zhuǎn)入英文輸入狀態(tài) , “ 標(biāo) ” 表示按下該鍵轉(zhuǎn)入標(biāo)點(diǎn)符號輸入狀態(tài) , “ 取 ” 表示取消 ,“ Up” 表示選擇下一個 , “ Dn” 表示選擇上一個 , “ 確 ” 表示確定。 圖 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ù) 4 3 2 1 8 7 6 5 4 3 2 1 確定 Dn Up 取消 標(biāo) 英文 數(shù)字 9 第 10 頁 共 28 頁 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è)計(jì)框架 如下 : 圖 拼音輸入法設(shè)計(jì)框架 ( 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ù)組的片段: 第 11 頁 共 28 頁 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é)果(多重表項(xiàng))為: struct t9py_list { 第 12 頁 共 28 頁 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_Wcod
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1