




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、等級(jí):湖南工程學(xué)院課 程 設(shè) 計(jì)課程名稱 單片機(jī)原理與應(yīng)用 課題名稱 基于單片機(jī)的密碼鎖設(shè)計(jì) 專 業(yè) 電氣工程及其自動(dòng)化 班 級(jí) 1005班 學(xué) 號(hào) 201001010523 姓 名 蘇 款 指導(dǎo)教師 汪超、王迎旭、李曉秀等 2013 年 6 月 21 日湖南工程學(xué)院課 程 設(shè) 計(jì) 任 務(wù) 書課程名稱 單片機(jī)原理與應(yīng)用 課 題 基于單片機(jī)的密碼鎖設(shè)計(jì) 專業(yè)班級(jí) 電氣工程1005班 學(xué)生姓名 蘇 款 學(xué) 號(hào) 201001010523 指導(dǎo)老師 汪 超 審 批 任務(wù)書下達(dá)日期 2013 年 6 月 7 日任務(wù)完成日期 2011 年 6 月 21 日設(shè)計(jì)內(nèi)容與設(shè)計(jì)要求設(shè)計(jì)內(nèi)容:1、歡迎界面 :上電后
2、 顯示 歡迎字樣,約3s后自動(dòng)跳到登錄界面; 2、登錄界面 : 提示輸入密碼,按09鍵輸入6位密碼,每輸入一位顯示一個(gè) * ;密碼長(zhǎng)度限制在6位,超過(guò)6位按鍵無(wú)效;按一次【刪除】鍵可刪除一位密碼;密碼輸入完成后,按【確認(rèn)】鍵判斷密碼是否正確,若正確則轉(zhuǎn)到登錄成功界面,同時(shí)LED亮表示打開鎖;否則 轉(zhuǎn)到密碼錯(cuò)誤提示界面,當(dāng)三次密碼輸入錯(cuò)誤時(shí) 提示重啟,同時(shí)按鍵均無(wú)效;3、登錄成功界面: 顯示 登錄成功字樣, 同時(shí)LED點(diǎn)亮;在此界面按下【鎖定】鍵 或者 15s內(nèi)無(wú)按鍵按下自動(dòng)轉(zhuǎn)到 鎖定界面,同時(shí)LED滅表示關(guān)閉鎖;4、密碼修改界面: 在登錄界面或登錄成功界面 按下【設(shè)置】鍵即可跳到該界面;該界面
3、有提示輸入原密碼字樣,與登錄界面一樣輸入錯(cuò)誤次數(shù)超過(guò)三次后,被鎖定;輸入密碼成功后 提示輸入新密碼字樣,按【確認(rèn)】鍵 提示再次輸入新密碼字樣,再按【確認(rèn)】鍵后比較兩次輸入的密碼是否一樣,若一樣提示修改成功,否則,再次提示輸入新密碼字樣, 一直到兩個(gè)密碼一樣為止;5、密碼修改后斷電保持功能:該功能是利用了單片機(jī)的內(nèi)部自帶的EEPROM,在系統(tǒng)上電初始化過(guò)程中,從EEPROM中讀取密碼,每次修改成功后會(huì)將新密碼寫入到EEPROM中;在下次上電后又會(huì)將該密碼讀取出來(lái)。6、按鍵音功能: 按下按鍵后蜂鳴器會(huì)短“滴”一聲,提示按鍵按下;7、自動(dòng)關(guān)閉背光功能: 系統(tǒng)上電后 打開背光,最后一次按下按鍵開始計(jì)時(shí)
4、 約30s后背光自動(dòng)關(guān)閉,按下任意鍵激活背光,并每次按下按鍵后都從零開始計(jì)時(shí)。8、 在密碼輸入過(guò)程中加入光標(biāo)閃爍功能;設(shè)計(jì)要求: 1、設(shè)計(jì)方案要合理、正確; 2、系統(tǒng)硬件設(shè)計(jì)及焊接制作; 3、系統(tǒng)軟件設(shè)計(jì)及調(diào)試; 4、系統(tǒng)聯(lián)調(diào); 5、寫出設(shè)計(jì)報(bào)告。主 要 設(shè) 計(jì) 條 件1、 MCS-51單片機(jī)實(shí)驗(yàn)操作臺(tái)1臺(tái);2、 PC機(jī)及單片機(jī)調(diào)試軟件;3、 單片機(jī)應(yīng)用系統(tǒng)板1套;4、 制作工具1套;5、 系統(tǒng)設(shè)計(jì)所需的元器件。說(shuō) 明 書 格 式1. 封面2. 課程設(shè)計(jì)任務(wù)書3. 目錄4. 系統(tǒng)總體方案設(shè)計(jì)5. 系統(tǒng)硬件設(shè)計(jì)6. 軟件設(shè)計(jì)(包括流程圖)7. 系統(tǒng)的安裝調(diào)試說(shuō)明8、 設(shè)計(jì)總結(jié) 9、參考文獻(xiàn)10、
5、附錄11、課程設(shè)計(jì)成績(jī)?cè)u(píng)分表。 進(jìn) 度 安 排 設(shè)計(jì)時(shí)間為兩周第一周星期一、上午:布置課題任務(wù),講課及課題介紹 下午:借閱有關(guān)資料,總體方案討論星期二、確定總體設(shè)計(jì)方案星期三、硬件模塊方案設(shè)計(jì)星期四、軟件模塊方案設(shè)計(jì)星期五、設(shè)計(jì)及調(diào)試第二周星期一、設(shè)計(jì)及調(diào)試星期二、設(shè)計(jì)及調(diào)試星期三、總調(diào)星期四、寫說(shuō)明書星期五、上午:寫說(shuō)明書,整理資料下午:交設(shè)計(jì)資料,答辯參 考 文 獻(xiàn)1、吳秀清.微型計(jì)算機(jī)原理與接口技術(shù)M.中國(guó)科學(xué)技術(shù)出版社.20012、鄧亞平.微型計(jì)算機(jī)接口技術(shù)M.清華大學(xué)出版社.20013、王迎旭.單片機(jī)原理及及應(yīng)用M.機(jī)械工業(yè)出版社.20014、周航慈.單片機(jī)應(yīng)用程序設(shè)計(jì)技術(shù)M.北京航
6、空航天大學(xué)出版 社.2002 5、謝宜仁.單片機(jī)實(shí)用技術(shù)問(wèn)答M.人民郵電出版社.20026、電子發(fā)燒友論壇PIC單片機(jī) 吳堅(jiān)鴻單片機(jī)程序風(fēng)格賞析(連載)ad&tid=2888467、電子書 STC89C52RC-RD使用手冊(cè)目錄第1章 概述11.1 設(shè)計(jì)內(nèi)容:11.2 設(shè)計(jì)要求:2第2章 系統(tǒng)總體方案設(shè)計(jì)32.1單片機(jī)系統(tǒng):32.2矩陣鍵盤接口電路:42.3 LCD1602液晶顯示:42.4開鎖提示:52.5 STC89C52RC單片機(jī)內(nèi)部EEPROM介紹:5第3章 硬件電路設(shè)計(jì)93.1 鍵盤電路設(shè)計(jì)93.1.1矩陣式鍵盤電路如圖3.1:93.1.2矩陣式鍵盤工作原理:93.1.3 矩
7、陣式鍵盤的識(shí)別方法:103.2 LCD1602液晶顯示電路設(shè)計(jì)103.2.1 LCD1602液晶屏簡(jiǎn)介:103.2.2.LCD1602液晶顯示電路圖:113.3開鎖機(jī)構(gòu)設(shè)計(jì)11第4章 軟件設(shè)計(jì)124.1 軟件總體設(shè)計(jì)124.2 各子程序的設(shè)計(jì)134.2.1 4X4矩陣鍵盤掃描:134.2.2人機(jī)對(duì)話界面程序:164.2.3STC89C52RCE單片機(jī)內(nèi)部EPROM讀寫程序:204.2.5 中斷服務(wù)函數(shù):22第5章 實(shí)物連接效果圖245.1 歡迎界面245.2 登錄界面245.4 登錄密碼錯(cuò)誤界面255.5鍵盤鎖定界面265.6 上鎖界面265.7 密碼修改界面之Old Passwd275.8
8、密碼修改界面之 New Passwd-1275.9 密碼修改界面之 New Passwd-2285.10 密碼修改成功界面28設(shè)計(jì)總結(jié)29參考文獻(xiàn)30附錄 硬件實(shí)物圖31附錄 軟件源代碼32第1章 概述在日常的生活和工作中, 住宅與部門的安全防范、單位的文件檔案、財(cái)務(wù)報(bào)表以及一些個(gè)人資料的保存多以加鎖的辦法來(lái)解決。若使用傳統(tǒng)的機(jī)械式鑰匙開鎖,人們常需攜帶多把鑰匙, 使用極不方便, 且鑰匙丟失后安全性即大打折扣。為滿足人們對(duì)鎖的使用要求,用密碼代替鑰匙的密碼鎖應(yīng)運(yùn)而生。此次關(guān)于智能密碼鎖的單片機(jī)課程設(shè)計(jì)內(nèi)容及要求如下:1.1 設(shè)計(jì)內(nèi)容: 1、歡迎界面: 上電后顯示歡迎字樣,約3s后自動(dòng)跳到登錄界
9、面。2、登錄界面: 提示輸入密碼,按0-9鍵輸入6位密碼,每輸入一位顯示一個(gè) * 。密碼長(zhǎng)度限制在6位,超過(guò)6位按鍵無(wú)效。按一次【刪除】鍵可刪除一位密碼。密碼輸入完成后,按【確認(rèn)】鍵判斷密碼是否正確,若正確則轉(zhuǎn)到登錄成功界面,同時(shí)LED亮表示打開鎖。否則 轉(zhuǎn)到密碼錯(cuò)誤提示界面,當(dāng)三次密碼輸入錯(cuò)誤時(shí) 提示重啟,同時(shí)按鍵均無(wú)效。3、登錄成功界面: 顯示登錄成功字樣,同時(shí)LED點(diǎn)亮。在此界面按下【鎖定】鍵或者15s內(nèi)無(wú)按鍵按下自動(dòng)轉(zhuǎn)到鎖定界面,同時(shí)LED滅表示關(guān)閉鎖。4、密碼修改界面: 在登錄界面或登錄成功界面 按下【設(shè)置】鍵即可跳到該界面。該界面有提示輸入原密碼字樣,與登錄界面一樣輸入錯(cuò)誤次數(shù)超過(guò)
10、三次后被鎖定。輸入密碼成功后 提示輸入新密碼字樣,按【確認(rèn)】鍵 提示再次輸入新密碼字樣,再按【確認(rèn)】鍵后比較兩次輸入的密碼是否相同,若相同則提示修改成功,否則再次提示輸入新密碼字樣, 一直到兩個(gè)密碼一樣為止。5、密碼修改后斷電保持功能: 該功能是利用了單片機(jī)的內(nèi)部自帶的EEPROM存儲(chǔ)器,在系統(tǒng)上電初始化過(guò)程中,從EEPROM中讀取密碼。每次修改成功后會(huì)將新密碼寫入到EEPROM中,在下次上電后又會(huì)將該密碼讀取出來(lái),從而達(dá)到密碼掉電保持功能。6、按鍵音功能: 按下按鍵后蜂鳴器會(huì)短“滴”一聲,提示按鍵按下。7、自動(dòng)關(guān)閉背光功能: 系統(tǒng)上電后打開背光,最后一次按下按鍵開始計(jì)時(shí)約30s后背光自動(dòng)關(guān)閉
11、。按下任意鍵激活背光,并且每次按下按鍵后都從零開始計(jì)時(shí)。8、在密碼輸入過(guò)程中加入光標(biāo)閃爍功能;1.2 設(shè)計(jì)要求: (1)設(shè)計(jì)方案要合理、正確; (2)系統(tǒng)硬件設(shè)計(jì)及焊接制作; (3)系統(tǒng)軟件設(shè)計(jì)及調(diào)試; (4)系統(tǒng)聯(lián)調(diào);第2章 系統(tǒng)總體方案設(shè)計(jì)本次密碼鎖采用了4X4矩陣鍵盤讀入數(shù)據(jù),采用LCD1602液晶顯示器顯示相關(guān)數(shù)據(jù),用LED燈作為開鎖提示標(biāo)志。密碼初始值為123456組成,一旦經(jīng)過(guò)修改后密碼將存入EEPROM存儲(chǔ)器。當(dāng)在鍵盤輸入密碼時(shí),輸入密碼會(huì)以 * 形式依次顯示在液晶顯示器上,且在輸入過(guò)程中還有光標(biāo)一閃一閃的提示當(dāng)前為密碼輸入狀態(tài)。當(dāng)輸入密碼與系統(tǒng)上電時(shí)從EEPROM中讀取出來(lái)的密
12、碼相同時(shí),密碼正確,LED燈點(diǎn)亮,表示鎖開。當(dāng)輸入密碼與原有的密碼不相同時(shí),LED燈不會(huì)點(diǎn)亮,即鎖不會(huì)打開,且顯示器上會(huì)有提示密碼錯(cuò)誤字樣和剩余次數(shù)。當(dāng)3次輸入密碼錯(cuò)誤時(shí),系統(tǒng)會(huì)提示重啟且所有按鍵無(wú)效。為了防止意外,該系統(tǒng)不僅加入了手動(dòng)上鎖功能,還能在鎖打開后若15S內(nèi)系統(tǒng)無(wú)任何操作,會(huì)自動(dòng)的上鎖。這樣就更加有效的保證了系統(tǒng)的安全性。當(dāng)今時(shí)代不僅要求使用方便、操作簡(jiǎn)單、安全性能高等要求,還要求節(jié)能省電,所以該系統(tǒng)加入了自動(dòng)關(guān)閉背光功能。系統(tǒng)上電后,不論在什么模式下,30s內(nèi)無(wú)任何操作則會(huì)自動(dòng)關(guān)閉液晶顯示器的背光燈。這樣就組成了智能密碼鎖。2.1單片機(jī)系統(tǒng):?jiǎn)纹瑱C(jī)作為整個(gè)硬件系統(tǒng)的核心,它既是協(xié)
13、調(diào)整機(jī)工作的控制器,又是數(shù)據(jù)處理器。它由單片機(jī)、時(shí)鐘電路、復(fù)位電路等組成。為了簡(jiǎn)化電路、降低成本、提高可靠性,本系統(tǒng)采用STC89C52RC作為主控制器。利用單片機(jī)靈活的編程設(shè)計(jì)和豐富的I/O端口,及其控制的準(zhǔn)確性,進(jìn)行智能密碼鎖的設(shè)計(jì)。該系統(tǒng)采用單片機(jī)P3口與4X4矩陣鍵盤相連,做輸入口,P0口與顯示器相連做顯示。P17為開鎖指示燈,P13為模擬背光控制(即LED燈亮?xí)r表示背光開,LED燈滅是表示背光關(guān))。該系統(tǒng)采用外部振蕩方式產(chǎn)生時(shí)鐘信號(hào)。2.2矩陣鍵盤接口電路:該密碼系統(tǒng)采用4*4矩陣鍵盤,4行4列分別與P3口相連,采用行列反轉(zhuǎn)掃描法。設(shè)有10個(gè)數(shù)字鍵(0到9)、刪除鍵、設(shè)置鍵、鎖定鍵、
14、確認(rèn)鍵共14個(gè)按鍵,剩余的兩個(gè)鍵暫未定義功能,留作后期升級(jí)改造用。矩陣鍵盤功能圖如下:圖2.1 矩陣鍵盤功能圖2.3 LCD1602液晶顯示:顯示器是用于提示用戶系統(tǒng)處于什么狀態(tài),提示用戶如何操作的一個(gè)人機(jī)對(duì)話界面。在輸入密碼過(guò)程中,每輸入一個(gè)值顯示器就會(huì)顯示一位 * 號(hào),以防止他人剽竊。依此類推,當(dāng)?shù)?位輸入完成后就不能再輸入了。密碼輸入完成后按【確認(rèn)】鍵,系統(tǒng)進(jìn)行密碼比較密碼對(duì)則執(zhí)行開鎖動(dòng)作,對(duì)應(yīng)的發(fā)光二極管亮。2.4開鎖提示:當(dāng)輸入密碼與系統(tǒng)上電時(shí)從EEPROM中讀取出來(lái)的密碼相同時(shí),密碼正確,LED燈點(diǎn)亮,表示鎖被打開。當(dāng)3次輸入密碼錯(cuò)誤時(shí),系統(tǒng)會(huì)提示重啟且所有按鍵無(wú)效禁止輸入。2.5
15、 STC89C52RC單片機(jī)內(nèi)部EEPROM介紹:?jiǎn)纹瑱C(jī)運(yùn)行時(shí)的數(shù)據(jù)都存在于RAM(隨機(jī)存儲(chǔ)器)中,在掉電后RAM 中的數(shù)據(jù)是無(wú)法保留的,那么怎樣使數(shù)據(jù)在掉電后不丟失呢?這就需要使用EEPROM 或FLASHROM 等存儲(chǔ)器來(lái)實(shí)現(xiàn)。在傳統(tǒng)的單片機(jī)系統(tǒng)中,一般是在片外擴(kuò)展存儲(chǔ)器,單片機(jī)與存儲(chǔ)器之間通過(guò)IIC 或SPI 等接口來(lái)進(jìn)行數(shù)據(jù)通信。這樣不光會(huì)增加開發(fā)成本,同時(shí)在程序開發(fā)上也要花更多的心思。在STC 單片機(jī)中內(nèi)置了EEPROM(其實(shí)是采用ISP/IAP 技術(shù)讀寫內(nèi)部FLASH 來(lái)實(shí)現(xiàn)EEPROM),這樣就節(jié)省了片外資源,使用起來(lái)也更加方便。 STC 各型號(hào)單片機(jī)內(nèi)置的EEPROM 的容量最
16、小有2K,最大有16K,基本上很好地滿足項(xiàng)目的需要,更方便之處就是節(jié)省了周邊的EEPROM 器件,達(dá)到節(jié)省成本的目的,而且內(nèi)部EEPROM 的速度比外部的EEPROM 的速度快很多。STC 各型號(hào)單片機(jī)內(nèi)置的EEPROM 是以512 字節(jié)為一個(gè)扇區(qū),EEPROM 的起始地址=FALSH 容量值+1,那么STC89C52RC 的起始地址為0x2000,第一扇區(qū)的起始地址和結(jié)束地址0x20000x21FF,第二扇區(qū)的起始地址和結(jié)束地址0x22000x23FF,其他扇區(qū)如此類推。STC89C52RC 的EEPROM 是通過(guò)ISP/IAP 技術(shù)讀寫內(nèi)部FLASH 來(lái)實(shí)現(xiàn)EEPROM。STC89C52R
17、C 的EEPROM 起始地址為0x2000,以512 字節(jié)為一個(gè)扇區(qū),EERPOM 的大小為2K 字節(jié)。STC89C52RC 與EEPORM 實(shí)現(xiàn)的寄存器有6 個(gè),分別是ISP_DATA、ISP_ADDRH、ISP_ADDRL、ISP_TRIG、ISP_CMD、ISP_CONTR。 1. ISP_DATA 寄存器ISP_DATA 寄存器:ISP/IAP 操作時(shí)的數(shù)據(jù)寄存器。ISP/IAP 從Flash 的數(shù)據(jù)在此處,向Flash 寫的數(shù)據(jù)也須放在此處。示例1:讀單個(gè)字節(jié)UINT8 EEPROMRead(UINT16 addr) return ISP_DATA;示例2:寫單個(gè)字節(jié)void EEP
18、ROMWrite(UINT8 byte) ISP_DATA=byte;2.ISP_ADDRH、ISP_ADDRL 寄存器ISP_ADDRH: ISP/IAP 操作時(shí)的地址寄存器高八位ISP_ADDRL: ISP/IAP 操作時(shí)的地址寄存器低八位示例1:設(shè)置地址void EEPROMSetAddress(UINT16 Addr) ISP_ADDRH=(UINT8)(Addr>>8); ISP_ADDRL=(UINT8) Addr; 3.ISP_CMD 寄存器ISP_CMD: ISP/IAP 操作時(shí)的命令模式寄存器,需要通過(guò)ISP_TRIG 命令觸發(fā)寄存器才能生效。表 2.1 ISP_
19、CMD 寄存器命令模式4. ISP_TRIG 寄存器ISP/IAP 命令要生效即ISP_CMD 設(shè)置的命令要生效,必須通過(guò)ISP_TRIG 命令觸發(fā)寄存器進(jìn)行觸發(fā)。觸發(fā)過(guò)程很特別,只需要連續(xù)二次對(duì)ISP_TRIG 寄存器賦值就可以的了,對(duì)ISP_TRIG 寄存器先寫入0x46,再寫入0xB9 就完成命令觸發(fā)的過(guò)程。示例1:命令觸發(fā)void EEPROMCmdTrig(void) ISP_TRIG=0x46; ISP_TRIG=0xB9; 5.ISP_CONTR 寄存器ISP_CONTR:ISP/IAP 控制寄存器圖2.2 ISP_CONTR 寄存器ISPEN:ISP/IAP 功能允許位。0:禁
20、止ISP/IAP 編程改變Flash。SWBS: 0:軟件選擇從用戶主程序區(qū)啟動(dòng)1:ISP 程序區(qū)啟動(dòng)SWRST: 0:不操作1:產(chǎn)生軟件系統(tǒng)復(fù)位,硬件自動(dòng)清零WT2、WT1、WT0:設(shè)置等待時(shí)間表2.2 WT2、WT1、WT0:設(shè)置等待時(shí)間 假如STC89C52RC 的工作頻率為12MHz,那么機(jī)器周期為1us,參照?qǐng)D2-3,EEPROM 的讀單個(gè)字節(jié)、寫單個(gè)字節(jié)、扇區(qū)擦除的所需要的時(shí)間大致如下:讀單字節(jié): 11*1us=11us寫單字節(jié): 60*1us=60us扇區(qū)擦除: 10942*1us=10.942ms 無(wú)論單片機(jī)運(yùn)行在什么工作頻率下,EEPROM 的讀、寫、擦除操作的所需要的時(shí)間分
21、別約為10us、60us、10ms,因而要對(duì)ISP_CONTR 設(shè)置好等待時(shí)間,否則數(shù)據(jù)容易出現(xiàn)問(wèn)題。第3章 硬件電路設(shè)計(jì)3.1 鍵盤電路設(shè)計(jì)3.1.1矩陣式鍵盤電路如圖3.1:圖3.1 4x4矩陣鍵盤3.1.2矩陣式鍵盤工作原理: 在鍵盤中按鍵數(shù)量較多時(shí),為了減少I/O口的占用,通常將按鍵排列成矩陣形式,如圖3-1所示。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過(guò)一個(gè)按鍵加以連接。這樣,一個(gè)端口(如P3口)就可以構(gòu)成4*4=16個(gè)按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,在需要的鍵數(shù)比較多時(shí),采用矩陣法來(lái)做鍵盤。 矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜
22、一些,識(shí)別也要復(fù)雜一些,圖3.1中,如果將行線掃描為全0,當(dāng)按鍵沒(méi)有按下時(shí),所有的列線都是高電平,代表無(wú)鍵按下。一旦有鍵按下,則列線就會(huì)被拉低。這樣,通過(guò)讀入列線的狀態(tài)就可得知是否有鍵按下了。3.1.3 矩陣式鍵盤的識(shí)別方法:確定矩陣式鍵盤上何鍵被按下介紹一種“行掃描法”。行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識(shí)別方法,如上圖所示。判斷鍵盤中有無(wú)鍵按下具體步驟如下:1、判斷鍵盤中有無(wú)鍵按下 將全部行線Y0-Y3置低電平,然后檢測(cè)列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個(gè)按鍵之中。若所有列線均為高電平,則鍵盤中無(wú)鍵按
23、下。2、判斷閉合鍵所在的位置 在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過(guò)程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時(shí),其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測(cè)各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。3.2 LCD1602液晶顯示電路設(shè)計(jì)3.2.1 LCD1602液晶屏簡(jiǎn)介:1602液晶也叫1602字符型液晶,它是一種專門用來(lái)顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊。它由若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符,每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正
24、因?yàn)槿绱怂运荒芎芎玫仫@示圖形。1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個(gè)字符液晶模塊(顯示字符和數(shù)字)。市面上字符液晶大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780寫的控制程序可以很方便地應(yīng)用于市面上大部分的字符型液晶。3.2.2.LCD1602液晶顯示電路圖:圖3.2 LCD1602液晶顯示電路3.3開鎖機(jī)構(gòu)設(shè)計(jì)信號(hào)通過(guò)單片機(jī)送給開鎖執(zhí)行機(jī)構(gòu),電路驅(qū)動(dòng)電磁鎖吸合,從而達(dá)到開鎖的目的。當(dāng)用戶輸入的密碼正確,單片機(jī)便輸出開門信號(hào),送到開鎖驅(qū)動(dòng)電路,然后驅(qū)動(dòng)電磁鎖,達(dá)到開門的目的,此次設(shè)計(jì)無(wú)電磁鎖,利用一個(gè)發(fā)光二極管來(lái)代表門鎖,亮表示
25、鎖開,燈滅表示鎖合。第4章 軟件設(shè)計(jì) 4.1 軟件總體設(shè)計(jì)軟件的設(shè)計(jì)主要包括:主程序、鍵盤掃描識(shí)別、人機(jī)界面、密碼修改、密碼匹配、開鎖控制、按鍵音、自動(dòng)上鎖、自動(dòng)關(guān)閉背光等功能。主程序在完成初始化、歡迎界面后就進(jìn)入死循環(huán)狀態(tài),此時(shí)的按鍵服務(wù)程序與顯示程序交替運(yùn)行。主程序模塊如圖4.1左邊所示:按鍵掃描中斷函數(shù)開始 系統(tǒng)初始化自動(dòng)上鎖計(jì)時(shí)自動(dòng)關(guān)閉背光計(jì)時(shí)光標(biāo)閃爍處理蜂鳴器控制結(jié)束顯示程序按鍵服務(wù)歡迎界面圖4.1 主程序模塊(左)和中斷函數(shù)模塊(右)4.2 各子程序的設(shè)計(jì)4.2.1 4X4矩陣鍵盤掃描:1、如果中斷一次就把所有的按鍵都掃描完,中斷占用的時(shí)間片就會(huì)太多,勢(shì)必會(huì)影響main函數(shù)里其他子
26、程序的運(yùn)行,為了避免一口氣把所有的按鍵都掃描完,此處把按鍵分成4等分,一次中斷只掃描4個(gè)按鍵。具體如下圖所示:開始 第一組掃描 第一組掃描 第一組掃描 第一組掃描結(jié)束圖4.2 4X4矩陣鍵盤掃描主流程圖2、每組的按鍵掃描如下圖:開始 行線拉低 小延時(shí)列線檢測(cè)是否為低電平? NY 去抖動(dòng)延時(shí) 返回鍵值結(jié)束圖4.3 4X4矩陣鍵盤掃描分流程圖3、 按鍵掃描程序:void key_scan() /按鍵掃描函數(shù) /補(bǔ)充說(shuō)明:如果中斷一次就把所有的按鍵都掃描完,中斷占用的時(shí)間片就會(huì)太多,勢(shì)必會(huì)影響main函數(shù)里其他子程序的運(yùn)行,為了避免一口氣把所有的按鍵都掃描完,此處把按鍵分成4等分,一次中斷只掃描4個(gè)
27、按鍵switch(key_step) /按鍵掃描步驟, case 1: /掃描 key_dr1=0; /按鍵行掃描輸出第一行低電平 key_dr2=1; key_dr3=1; key_dr4=1; delay_cnt2=0; /延時(shí)計(jì)數(shù)器清零 key_step+; /切換到下一個(gè)運(yùn)行步驟 break; case 2: delay_cnt2+; if(delay_cnt2>cnt_delay_cnt2) /小延時(shí),但不是去抖動(dòng)延時(shí) delay_cnt2=0; key_step+; /切換到下一個(gè)運(yùn)行步驟 break; case 3: if(key_sr1=1&&key_sr
28、2=1&&key_sr3=1&&key_sr4=1) /如果沒(méi)有按鍵按下,則4個(gè)IO輸入都是高電平 key_step+; /如果沒(méi)有按鍵按下,下一個(gè)中斷掃描下組按鍵 key_lock1=0; /按鍵自鎖標(biāo)志清零 delay_cnt1=0; /按鍵去抖動(dòng)延時(shí)計(jì)數(shù)器清零,此行非常巧妙 else if(key_sr1=0&&key_sr2=1&&key_sr3=1&&key_sr4=1&&key_lock1=0) / key_lock1按鍵自鎖,避免按鍵一直觸發(fā),下降沿有效 +delay_cnt1; /延
29、時(shí)計(jì)數(shù)器 if(delay_cnt1>cnt_delay_cnt1) /延時(shí)計(jì)數(shù)器超過(guò)一定的數(shù)值 delay_cnt1=0; key_lock1=1; /自鎖按鍵置位,避免一直觸發(fā),只有松開按鍵,/此標(biāo)志位才會(huì)被清零 key_sec=1; /觸發(fā)1號(hào)鍵 . .(由于篇幅的原因,就不全部列出,具體請(qǐng)看附錄)4、 按鍵服務(wù)程序:void key_service() /按鍵服務(wù)函數(shù) / 補(bǔ)充說(shuō)明:voice_time_cnt只要不為0蜂鳴器就會(huì)響,中斷里判斷voice_time_cnt不為0時(shí),會(huì)不斷自減,一直到它為0時(shí),自動(dòng)把蜂鳴器關(guān)閉。 switch(key_sec) /按鍵服務(wù)狀態(tài)切換
30、case 1:/ 1號(hào)鍵/此處加入該按鍵要實(shí)現(xiàn)的功能 voice_time_cnt= cnt_voice_time; /蜂鳴器響“滴”一聲就停 key_sec=0; /按鍵處理程序之后,把按鍵選擇變量清零,避免一直觸發(fā)。 break; case 2:/ 2號(hào)鍵 voice_time_cnt= cnt_voice_time; /蜂鳴器響“滴”一聲就停 key_sec=0; /按鍵處理程序之后,把按鍵選擇變量清零,避免一直觸發(fā) break; case 3: . .(由于篇幅的原因,就不全部列出,具體請(qǐng)看附錄) 4.2.2人機(jī)對(duì)話界面程序:1、 LCD1602液晶顯示驅(qū)動(dòng)程序:void WriteC
31、ommand(unsigned char c) /命令寫入 DelayMs(5);/short delay before operation E=0; RS=0; RW=0; _nop_(); E=1; Data=c; E=0;void WriteData(unsigned char c) / 數(shù)據(jù)寫入 DelayMs(5); /short delay before operation E=0; RS=1; RW=0; _nop_(); E=1; Data=c; E=0; RS=0;void ShowChar(unsigned char pos,unsigned char c) / 指定位置顯
32、示單個(gè)字符 unsigned char p; if (pos>=0x10) p=pos+0xb0; /是第二行則命令代碼高4位為0xc else p=pos+0x80; /是第二行則命令代碼高4位為0x8 WriteCommand (p);/write command WriteData (c); /write datavoid ShowString (unsigned char line,char *ptr) /指定行顯示字符串 unsigned char l,i; l=line<<4; for (i=0;i<16;i+) ShowChar (l+,*(ptr+i);
33、/循環(huán)顯示16個(gè)字符2、人機(jī)對(duì)話窗口:在編寫液晶顯示程序中,有兩個(gè)最核心的要素。它們分別是窗口變量與更新變量。(a) 窗口變量:在編寫整個(gè)程序中,必須要有一條主線,然后按鍵等所有操作都圍繞著這條主線展開,這樣無(wú)論程序有多復(fù)雜也不會(huì)亂。這條主線就是窗口(變量名為wd_sec),在窗口的主線下,再分出一個(gè)局部窗口(變量名為part_sec)。(b) 更新變量:液晶屏是屬于靜態(tài)控制的屏,因?yàn)樯婕暗秸粮拢╳d_update)和局部更新(part_X_Y_update)。把不用經(jīng)常更新顯示的內(nèi)容放到整屏更新里,把要經(jīng)常更新顯示的內(nèi)容放到局部更新里。-以上這段話出自電子發(fā)燒友論壇的一篇帖子 顯示程序:
34、void display() / 顯示子程序if(wd_up) /更新變量為真時(shí)更新wd_up = 0; / 清零更新變量,避免重復(fù)更新switch(wd_sec)case 1: /登錄界面WriteCommand(0x01); /顯示清屏ShowString(0,"Pls input passwd");a = 20;ShowChar(a+,':');break;case 2: /成功界面WriteCommand(0x01); /顯示清屏ShowString(0,"Login successful"); ShowString(1,&quo
35、t; Lock-Open "); / 提示鎖已打開break;case 3: / 登錄錯(cuò)誤界面WriteCommand(0x01); /顯示清屏ShowString(0," Passwd Error! ");c1-; / 密碼錯(cuò)誤剩余次數(shù)switch (c1)case 0:ShowString(1," Pls Reboot ");break;case 1:ShowChar(24,'1');break;case 2:ShowChar(24,'2');break;break; case 4: /密碼修改 之 old
36、passwd WriteCommand(0x01); /顯示清屏ShowString(0," Old Passwd "); a = 20;ShowChar(a+,':');break; case 5: /密碼修改 之 New passwd - 1 WriteCommand(0x01); /顯示清屏ShowString(0," New Passwd-1 "); a = 20;ShowChar(a+,':');break; case 6: /密碼修改 之 New passwd - 2 WriteCommand(0x01); /
37、顯示清屏ShowString(0," New Passwd-2 "); a = 20;ShowChar(a+,':');break; case 7: /密碼修改之修改成功 WriteCommand(0x01); /顯示清屏ShowString(0," Seting success!"); break; case 8: / 密碼修改之old passwd錯(cuò)誤界面WriteCommand(0x01); /顯示清屏ShowString(0," Passwd Error! ");c1-; / 密碼錯(cuò)誤剩余次數(shù)switch (c
38、1)case 0:ShowString(1," Pls Reboot "); break;case 1:ShowChar(24,'1');break;case 2:ShowChar(24,'2');break;break;case 9: /鎖定界面WriteCommand(0x01); /顯示清屏ShowString(0," Lock-Close! ");break;switch(wd_sec) / 光標(biāo)閃爍功能顯示case 1:case 4:case 5:case 6: / 在1、4、5、6號(hào)窗口顯示光標(biāo)閃爍功能if(b
39、iaozhi) / 閃爍標(biāo)志位 為真時(shí)光標(biāo)亮ShowChar(a+i, '_'); / 光標(biāo)亮elseShowChar(a+i, ' '); / 光標(biāo)滅break;4.2.3STC89C52RCE單片機(jī)內(nèi)部EPROM讀寫程序:unsigned char EEPROM_read(unsigned int address) / eeprom 讀數(shù)據(jù)char a;EA = 0; / 關(guān)中斷 防止被打擾ISP_ADDRH = address/256;ISP_ADDRL = address%256;ISP_CONTR = 0x83;ISP_CMD = 0x01;ISP_T
40、RIG = 0x46;ISP_TRIG = 0xb9;for(a=3;a>0;a-);ISP_CONTR =0x00;ISP_CMD =0x00;ISP_TRIG =0x00;ISP_ADDRH =0x00;ISP_ADDRL =0x00;EA=1; /開中斷return (ISP_DATA);void EEPROM_write(unsigned int address, unsigned char data_tmp) /eeprom寫數(shù)據(jù)char a;EA=0;ISP_DATA = data_tmp;ISP_ADDRH = address/256;ISP_ADDRL = address
41、%256;ISP_CONTR = 0x83;ISP_CMD = 0x02;ISP_TRIG = 0x46;ISP_TRIG = 0xb9;for(a=26;a>0;a-);ISP_CONTR =0x00;ISP_CMD =0x00;ISP_TRIG =0x00;ISP_ADDRH =0x00;ISP_ADDRL =0x00;EA= 1;void EEPROM_delete(unsigned int address) / 扇區(qū)擦除函數(shù)unsigned char i;ISP_ADDRH = address/256;ISP_ADDRL = address%256;ISP_CONTR = 0x8
42、3;ISP_CMD = 0x03;ISP_TRIG = 0x46;ISP_TRIG = 0xb9;for(i = 0; i<3 ; i+);ISP_CONTR =0x00;ISP_CMD =0x00;ISP_TRIG =0x00;ISP_ADDRH =0x00;ISP_ADDRL =0x00;4.2.4密碼判斷程序:for (k = 0; k<6; k+) / 6位密碼比較程序,具體請(qǐng)看附錄if(passwdk != passwd_bufk)break; / 不同則退出循環(huán); if (k>5) / 密碼正確 / 開鎖,并更新窗口,提示登錄成功else /密碼錯(cuò)誤/ 更新窗口,
43、提示登錄密碼錯(cuò)誤4.2.5 中斷服務(wù)函數(shù):void Timer0Interrupt(void) interrupt 1 / 中斷函數(shù)static unsigned int biaozhi_time=0; ET0=0; /定時(shí)中斷開關(guān)關(guān)閉key_scan(); /按鍵掃描函數(shù)ET0=1; if(+biaozhi_time>= 2000) / 光標(biāo)閃爍標(biāo)志位控制biaozhi_time = 0;biaozhi = biaozhi;if(-voice_time_cnt) /控制蜂鳴器聲音的長(zhǎng)短 beep_dr=0; /蜂鳴器響else beep_dr=1; /蜂鳴器停止if (+dleay_t
44、ime1 >= 25000)if(+dleay_time3>= 6) /自動(dòng)關(guān)閉背光計(jì)時(shí)led1 = 1;dleay_time3 =0;if(led=0) / 在鎖被打開后if(+dleay_time2 >= 3) /自動(dòng)上鎖計(jì)時(shí)/ 上鎖操作dleay_time1 = 0;TH0 = 0x0FF; TL0 = 0x9C; /重新設(shè)置定時(shí)時(shí)間間隔第5章 實(shí)物連接效果圖單片機(jī)應(yīng)用系統(tǒng)的調(diào)試,包括硬件調(diào)試和軟件調(diào)試兩部分,軟件調(diào)試是設(shè)計(jì)一個(gè)很重要的環(huán)節(jié)。硬件調(diào)試和軟件調(diào)試并不能完全分開,許多軟件錯(cuò)誤都是在硬件調(diào)試過(guò)程中被發(fā)現(xiàn)和糾正的。5.1 歡迎界面圖5.1 歡迎界面如圖5.1所示
45、,系統(tǒng)上電后會(huì)顯示該歡迎界面。等待3S后會(huì)自動(dòng)轉(zhuǎn)入登錄界面。5.2 登錄界面圖5.2 登錄界面如圖5.2所示,該界面為登錄界面,在此界面輸入正確密碼后,按下確認(rèn)鍵即可打開鎖LED燈被點(diǎn)亮,并轉(zhuǎn)到登錄成功界面如圖5.3所示。5.3 登錄成功界面如下圖就是登錄成功界面,在此界面表示鎖已被打開。若在15S內(nèi)無(wú)任何操作或者按下【鎖定】鍵,則系統(tǒng)會(huì)自動(dòng)上鎖并轉(zhuǎn)到上鎖界面如圖5-7所示。圖5.3 登錄成功界面 5.4 登錄密碼錯(cuò)誤界面如下圖所示就是登錄密碼錯(cuò)誤界面,圖5.4表示還剩余2次輸入機(jī)會(huì),圖5.5 表示還剩余1次輸入機(jī)會(huì),圖5.4 密碼錯(cuò)誤界面-2圖5.5 密碼錯(cuò)誤界面-15.5鍵盤鎖定界面如下圖
46、所示,該界面表示輸入密碼錯(cuò)誤次數(shù)已到達(dá)3次,在此界面按任何按鍵均無(wú)效,只能斷電重啟才能解除該鎖定。圖5.6 鍵盤鎖定界面5.6 上鎖界面如下圖所示,該界面為上鎖界面,在此界面按下【確認(rèn)】鍵即可轉(zhuǎn)到登錄界面圖5.2。圖5.7 上鎖界面5.7 密碼修改界面之Old Passwd在登錄界面(圖5.2)或登錄成功界面(圖5.3)按下【設(shè)置】鍵即可轉(zhuǎn)到此界面,此界面是原密碼輸入界面(即要想修改登錄密碼,必須先輸入正確的當(dāng)前密碼才能對(duì)密碼進(jìn)行修改,這樣做加強(qiáng)了系統(tǒng)的安全性。)此界面如下圖所示,與系統(tǒng)登錄界面一樣必須輸入正確密碼后才能進(jìn)行下一步操作。圖5.8 密碼修改界面之Old Passwd5.8 密碼修
47、改界面之 New Passwd-1如下圖所示,輸入6位新密碼后按下【確認(rèn)】鍵即可轉(zhuǎn)到重復(fù)新密碼輸入界面如圖5.10所示。圖5.9 密碼修改界面之 New Passwd-15.9 密碼修改界面之 New Passwd-2如下圖便是重復(fù)新密碼輸入界面了。在輸入完密碼后按【確認(rèn)】鍵,系統(tǒng)會(huì)自動(dòng)判斷當(dāng)前輸入密碼是否與第一次輸入的密碼相同,若相同則會(huì)提示密碼修改成功如圖5.11,同時(shí)會(huì)將新密碼寫入單片機(jī)內(nèi)部的EEPROM存儲(chǔ)器中,下次重新啟動(dòng)時(shí)會(huì)將改密碼從EEPROM中讀取出來(lái)。若不相同則會(huì)轉(zhuǎn)到圖5.9所示的界面中,直到兩次輸入的密碼相同或者按下【設(shè)置】鍵轉(zhuǎn)入登錄界面。圖5.10 密碼修改界面之 New
48、 Passwd-25.10 密碼修改成功界面該界面如下圖。在此界面按【確認(rèn)】鍵即可轉(zhuǎn)到登錄界面。圖5.11 密碼修改成功界面設(shè)計(jì)總結(jié) 兩星期的單片機(jī)原理與應(yīng)用課程設(shè)計(jì)結(jié)束了,我學(xué)到了很多同時(shí)認(rèn)識(shí)到自己所學(xué)知識(shí)的不足,以前學(xué)習(xí)書本知識(shí)都只是用來(lái)應(yīng)付考試的,現(xiàn)在感覺(jué)到了知識(shí)的靈活性和實(shí)用性,設(shè)計(jì)過(guò)程中遇到這樣那樣的問(wèn)題,有的通過(guò)看書或者仔細(xì)研究能弄懂,有的東西從來(lái)沒(méi)學(xué)過(guò)或是學(xué)的時(shí)候只是學(xué)到了皮毛,似懂非懂,用到實(shí)際上來(lái)確實(shí)比較困難,比如矩陣鍵盤的掃描,微機(jī)接口和單片機(jī)原理上課的時(shí)候只是粗略的講了一下行掃描法的最簡(jiǎn)單的實(shí)現(xiàn)方法,智能密碼鎖需用到4x4矩陣鍵盤的掃描,原理我還是懂的,具體到編程我就遇到
49、困難了,怎么樣讓程序一直在執(zhí)行鍵盤掃描,不斷調(diào)用顯示,變量與存儲(chǔ)空間的分配問(wèn)題等。這些問(wèn)題都需要重新學(xué)習(xí),慢慢解決,程序編譯后進(jìn)行仿真的時(shí)候會(huì)出現(xiàn)原本意料不到的問(wèn)題,跟自己想象的調(diào)試結(jié)果完全不一樣,只能聯(lián)系現(xiàn)象回到程序中去尋找相關(guān)問(wèn)題,一直在執(zhí)行編譯與調(diào)試的步驟,知道出現(xiàn)理想的結(jié)果為止。課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn)、提出、分析和解決實(shí)際問(wèn)題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過(guò)程.隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機(jī)已經(jīng)成為當(dāng)今計(jì)算機(jī)應(yīng)用中空前活躍的領(lǐng)域, 在生活中可以說(shuō)得是無(wú)處不在。因此作為二十一世紀(jì)的大學(xué)來(lái)說(shuō)掌握單片機(jī)的開發(fā)技術(shù)是十分重要的。課程設(shè)計(jì)是結(jié)束了,不過(guò)學(xué)習(xí)單片機(jī)知識(shí)的過(guò)程還沒(méi)有終結(jié),探索學(xué)習(xí)的奧妙,培養(yǎng)學(xué)習(xí)的興趣,養(yǎng)成良好的學(xué)習(xí)習(xí)慣對(duì)我們來(lái)說(shuō)才是最重要的,學(xué)習(xí)不僅僅是學(xué)習(xí)書本知識(shí),不是為了學(xué)習(xí)本身而去學(xué)習(xí),方法很重要,以后要更加努力,多搞一些實(shí)際性的東西,做對(duì)自己
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 出租充氣皮艇合同范本
- 幾人共同購(gòu)房合同范本
- 電纜外貿(mào)合同范本
- 包裝合同范本8篇
- 公司合同范本梳理審核
- 倉(cāng)庫(kù)流轉(zhuǎn)合同范本
- 單位集資建房轉(zhuǎn)讓合同范本
- 勞防用品采購(gòu)合同范本
- 出售立軸制砂機(jī)合同范本
- 出售玻璃蓋板合同范本
- 電子商務(wù)運(yùn)營(yíng)(第二版) 課件 項(xiàng)目1 認(rèn)識(shí)電商運(yùn)營(yíng)
- 冰淇淋店選址與競(jìng)爭(zhēng)環(huán)境分析
- 領(lǐng)導(dǎo)干部離任交接表
- 儲(chǔ)運(yùn)安全檢查分析(SCL)評(píng)價(jià)記錄
- 人教版六年級(jí)上冊(cè)道德與法治教案(5篇)
- 2024年無(wú)人駕駛環(huán)衛(wèi)行業(yè)研究報(bào)告-通渠有道
- (中職)中職生創(chuàng)新創(chuàng)業(yè)能力提升教課件完整版
- 中班健康課件《我不挑食》
- 人教版(2024新版)七年級(jí)上冊(cè)英語(yǔ)各單元重點(diǎn)語(yǔ)法知識(shí)點(diǎn)講義
- 生豬屠宰獸醫(yī)衛(wèi)生人員考試題庫(kù)答案(414道)
- 《完善中國(guó)特色社會(huì)主義法治體系》課件
評(píng)論
0/150
提交評(píng)論