2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  緒論</b></p><p>  目前,全球印制電路板(Printed Circuit Board,簡(jiǎn)稱(chēng)為PCB)產(chǎn)業(yè)產(chǎn)值占電子元件產(chǎn)業(yè)總產(chǎn)值的四分之一以上,是各個(gè)電子元件細(xì)分產(chǎn)業(yè)中比重最大的產(chǎn)業(yè),產(chǎn)業(yè)規(guī)模達(dá)400億美元。同時(shí),由于其在電子基礎(chǔ)產(chǎn)業(yè)中的獨(dú)特地位,已經(jīng)成為當(dāng)代電子元件業(yè)中最活躍的產(chǎn)業(yè),2003和2004年,全球PCB產(chǎn)值分別是344億美元和401億

2、美元,同比增長(zhǎng)率分別為5.27%和16.47%。我國(guó)的PCB研制工作始于1956年,1963.1978年,逐步擴(kuò)大形成PCB產(chǎn)業(yè)。改革開(kāi)放后20多年,由于引進(jìn)國(guó)外先進(jìn)技術(shù)和設(shè)備,單面板、雙面板和多層板均獲得快速發(fā)展,國(guó)內(nèi)PCB產(chǎn)業(yè)由d,N大逐步發(fā)展起來(lái)。2002年,中國(guó)PCB產(chǎn)值超過(guò)臺(tái)灣,成為第三大PCB產(chǎn)出國(guó)。2003年,PCB產(chǎn)值和進(jìn)出口額均超過(guò)60億美元,成為世界第二大PCB產(chǎn)出國(guó)。2005年中國(guó)PCB的產(chǎn)量為1.1057億平方米

3、, 產(chǎn)值達(dá)到969億人民幣(折約107億美元),產(chǎn)值及進(jìn)出口總額雙超100億美元p4l。PCB的產(chǎn)值將首次超過(guò)日本(據(jù)預(yù)測(cè)日本2005年產(chǎn)值約96億美元),成為世界PCB 第一生產(chǎn)大國(guó)。</p><p>  國(guó)外尤其是歐洲、美國(guó)和同本PCB研制丌發(fā)和生產(chǎn)較早,廢水處理也起步較早,在20世紀(jì)70年代已刀:始進(jìn)行PCB廢水污染及其治理方法的研究。早期主要應(yīng)用混凝沉淀、活性碳、離子交換等工藝進(jìn)行處理PCB廢水。這此方法

4、工藝只是針對(duì)PCB廢水中的某些成份進(jìn)行處理,隨著PCB行業(yè)的發(fā)展,產(chǎn)品越來(lái)越豐富, 生產(chǎn)工藝也越來(lái)越復(fù)雜,體現(xiàn)在PCB藥劑成份更多更復(fù)雜,生產(chǎn)流程更長(zhǎng)技術(shù)含量更高,PCB廢水污染物的種類(lèi)多、濃度高,環(huán)境保護(hù)要求也更嚴(yán)格,原來(lái)處理某種單一污染物或某一類(lèi)廢水的工藝越來(lái)越不適應(yīng)發(fā)展的要求,于是,又相繼研究開(kāi)發(fā)了新的處理方法,能同時(shí)去除多種重金屬離子和有機(jī)污染物。這此方法具有代表性有氣態(tài)凝聚法、膠束增強(qiáng)超濾法、重捕劑法和反滲透膜法等。</

5、p><p>  氣態(tài)凝聚——電過(guò)濾法是美國(guó)在80年代開(kāi)發(fā)出來(lái)的一種不加化學(xué)藥劑的新穎廢水處理法,屬于一種物理方法來(lái)處理印制電路板廢水。包括三個(gè)部分,第一部分是離子化氣體發(fā)生器,空氣被吸入該發(fā)生器,能過(guò)離子化磁場(chǎng)改變其化學(xué)結(jié)構(gòu),變成高度活化的磁性氧離子和氮離子,用射流裝置把這種氣體引入廢水中,使廢水中的金屬離子、有機(jī)物等有害物質(zhì)氧化并聚集成團(tuán),易于過(guò)濾除去;第二部分是電解質(zhì)過(guò)濾器,過(guò)濾除去第一部產(chǎn)生的聚團(tuán)物質(zhì):第三部分

6、是高速紫外線(xiàn)照射裝置,紫外線(xiàn)射入水中可氧化有機(jī)物和化學(xué)絡(luò)合劑,降低CODer和BOD5。目前,已開(kāi)發(fā)出成套一體化設(shè)備可直接應(yīng)用. 國(guó)外八十年代以來(lái)開(kāi)始研究一種新的水處理技術(shù),以去除廢水中的有機(jī)污染物和金屬離子,即膠束增強(qiáng)超濾法(Mieellar-enhaneed ultrafiltration,簡(jiǎn)稱(chēng)MEUF3,這是一種將表面活性劑和超濾膜耦合起來(lái)的新技術(shù)。某些陰離子與陽(yáng)離子或非離子表面活性劑混合后具有協(xié)同作用,能形成較大的膠束,增強(qiáng)對(duì)金

7、屬離子的去除效果。膠束增強(qiáng)超濾法處理印制電路板廢水具有工藝簡(jiǎn)單、處理效果好的特點(diǎn),適用于處理濃度較低的印制電路板廢水。砷垤T(三巰三嗪三鈉鹽)是最近美國(guó)開(kāi)發(fā)</p><p>  1 本設(shè)計(jì)課題的背景及現(xiàn)狀</p><p>  1.1國(guó)內(nèi)環(huán)境保護(hù)帶來(lái)了嚴(yán)重影響</p><p>  PCB在給我國(guó)帶來(lái)經(jīng)濟(jì)發(fā)展的同時(shí),也給國(guó)內(nèi)環(huán)境保護(hù)帶來(lái)了嚴(yán)重影響。特別是PCB用水量和排

8、污量都較大“1[21[3"10根據(jù)資料顯示,我國(guó)2004年P(guān)CB行業(yè)總用水量約】.5x 100噸。未經(jīng)處理捧放的污水含有大量的有毒有害污染物,不但污染江河湖泊,而且嚴(yán)重污染地下水資源,印制線(xiàn)路板行業(yè)的環(huán)境保護(hù)問(wèn)題更加突出。PCB廢水中含有大量的Cu2-、NP、Ag+、All+、Sna+/Sn4+、pb2+等會(huì)屬離子, 含量變化較大,濃度高,成分復(fù)雜,形態(tài)不一,既有固體懸浮金屬顆粒,也有游離態(tài)非絡(luò)合金屬離子,同時(shí)還有絡(luò)合態(tài)的絡(luò)合

9、金屬離子。這些金屬離子如不處理,直接捧放到自然界中,會(huì)對(duì)環(huán)境和人類(lèi)造成極大的危害。Cu會(huì)引發(fā)呼吸系統(tǒng)病癥, Ni會(huì)引發(fā)各種皮炎、腸胃疾病和腫瘤,Pb會(huì)引發(fā)血液系統(tǒng)、泌尿系統(tǒng)等病癥。金屬離子不僅會(huì)對(duì)人類(lèi)的健康造成損害,同時(shí)會(huì)對(duì)自然界的生物造成危害。淡水或海洋中的水生生物對(duì)水體中的金屬離子非常敏感,即使很低的濃度也會(huì)對(duì)其構(gòu)成威脅; 土壤或灌溉水中的金屬離子會(huì)對(duì)植物生長(zhǎng)產(chǎn)生不利的影響,并且將在植物的葉莖或根部富集,以至影響波及整個(gè)食物鏈14]

10、. PCB廢水中還含有大量有機(jī)物,體現(xiàn)在混</p><p>  沫、浮垢和引起的渾濁、惡臭等,都足以降低水體的使用價(jià)值。廢水若沒(méi)有妥善處理就排放,造成受納水體污染、影響水體功能、破壞生態(tài)環(huán)境。氰化物是極毒的物質(zhì),廢水中的氰化物可以成為氰化氫氣體逸出,氰化物和氫氰酸能通過(guò)皮膚、肺、胃進(jìn)入體內(nèi)。氟化物能危害人的骨骼和皮膚。氨氮和磷是造成湖泊和近海富養(yǎng)鹽化的主要營(yíng)養(yǎng)物質(zhì),每年造成極大的經(jīng)濟(jì)損失。</p>

11、<p>  1.2擇應(yīng)綜合考慮各處理工藝的優(yōu)缺點(diǎn)</p><p>  工藝選選擇經(jīng)濟(jì)、有效、方便、安全的工藝組合。不僅要注重廢水的處理工藝,還要從環(huán)保角度熟悉PCB生產(chǎn)線(xiàn)的特點(diǎn), 掌握PCB廢水分類(lèi)的方法。各類(lèi)廢水的調(diào)節(jié)池(收集池)的容積應(yīng)不小于一個(gè)班的廢水排放量。調(diào)節(jié)池(收集池)應(yīng)設(shè)置攪拌混合裝置,將水質(zhì)混合均勻。由于PCB企業(yè)產(chǎn)品種類(lèi)、生產(chǎn)工藝、產(chǎn)品比例的不同,PCB廢水的水量及水質(zhì)成分就會(huì)有明顯差

12、異;各個(gè)地區(qū)執(zhí)行的排放標(biāo)準(zhǔn)的差異、PCB企業(yè)的廢水循環(huán)回用率的不同、企業(yè)排放的水量大小,都會(huì)對(duì)PCB廢水的處理工藝的選擇產(chǎn)生一定的影響。PCB廢水分類(lèi)較多,要統(tǒng)籌考慮每股水的處理和每種污染物的去除,還要結(jié)合一般酸堿水洗水的稀釋能力的特點(diǎn),選擇最優(yōu)化的工藝組合,降低投資和運(yùn)行成本,確保廢水達(dá)標(biāo)捧放。</p><p>  1.3本設(shè)計(jì)課題的研究現(xiàn)狀</p><p>  我國(guó)R=B企業(yè)所產(chǎn)生的三

13、廢治理還不能達(dá)到歐、美、閂等發(fā)達(dá)國(guó)家的水平。對(duì)于PCB </p><p>  廢水的治理,國(guó)內(nèi)采用較多的處理方法有化學(xué)沉淀法、鐵屑混合物微電解法、生化法、離子交換法、化學(xué)氧化法等,各有優(yōu)劣。這些技術(shù)在處理PCB廢水中的某種污染物方面都有一定的優(yōu)勢(shì),也有成功的PCB廢水處理實(shí)例。國(guó)內(nèi)的PCB處理與國(guó)外的差距主要在以下幾個(gè)方面。</p><p>  第一:PCB企業(yè)環(huán)保意識(shí)、環(huán)保管理上有差距,

14、比不上歐美同等國(guó)家; </p><p>  第二:環(huán)保投資上有差距,預(yù)留的廢水處理設(shè)施面積狹窄,投資較少,設(shè)備和儀表產(chǎn)品質(zhì)量較低檔; </p><p>  第三:環(huán)保監(jiān)管不到位,標(biāo)準(zhǔn)的執(zhí)行差異較大。</p><p>  第四:廢水分流不徹底和治理工藝不完善,PCB廢水處理技術(shù)上也有不少差距。上述的四個(gè)方面,前三個(gè)方面不是本次研究的內(nèi)容,本研究著重在第四個(gè)方面.具體來(lái)

15、說(shuō),許多PcB廢水處理不達(dá)標(biāo),是因?yàn)闆](méi)有對(duì)生產(chǎn)線(xiàn)排水合理的分類(lèi)收集;只所以沒(méi)有合理的分類(lèi)收集,是因?yàn)椴涣私馍a(chǎn)線(xiàn),不了解生產(chǎn)線(xiàn)的排污特點(diǎn),因而也就無(wú)法有效地將p(m廢水合理地分類(lèi)。PCB廢水治理方法也經(jīng)歷了一個(gè)過(guò)程,從最初的只注重重金屬污染物的去除,到目前的全因子達(dá)標(biāo)監(jiān)控,氨氮、CODer等污染物的去除也成為PCB廢水治理的重點(diǎn)。在目前國(guó)內(nèi)環(huán)保投資還不是很到位的情況下,PCB廢水的治理技術(shù)(或工藝)優(yōu)化組合,對(duì)于降低投資和節(jié)約運(yùn)行成本都

16、具有重要意義。</p><p><b>  2.1系統(tǒng)設(shè)計(jì)方案</b></p><p><b>  圖1 系統(tǒng)組成</b></p><p>  鍵盤(pán)按鍵密碼輸入,送AT89C51處理,顯示輸出用于及時(shí)顯示按鍵輸入的數(shù)字,便于修改,聲音輸出當(dāng)密碼錯(cuò)誤時(shí)候的報(bào)警信息,開(kāi)鎖部分采用電磁鎖接受芯片送來(lái)的信號(hào)后自動(dòng)開(kāi)鎖。</p

17、><p><b>  2.2系統(tǒng)功能</b></p><p>  本電子密碼鎖具備以下功能:</p><p>  1.沒(méi)有set time時(shí)液晶顯示器只顯示當(dāng)時(shí)時(shí)間,在主界面下如果按set time 鍵,就可以重設(shè)時(shí)間。</p><p>  2.在主界面下按set psw鍵后進(jìn)入設(shè)置密碼狀態(tài),密碼可在1-15 位范圍內(nèi)自由設(shè)

18、置,最多達(dá)1015 種組合,使窮舉法套解密碼成為不可能。</p><p>  3.在主界面下按input鍵后輸入密碼,密碼正確時(shí),在輸出口1 輸出0.5 秒的高脈沖開(kāi)鎖電平,在輸出口2 輸出0.5 秒的低脈沖開(kāi)鎖電平,用于開(kāi)鎖。如果連續(xù)三次輸入錯(cuò)誤密碼,則啟動(dòng)報(bào)警系統(tǒng)并鎖定鍵盤(pán)一段時(shí)間。</p><p>  4.退格和按鍵提示功能。每次按鍵都有發(fā)光二極管發(fā)光和聲光提示音,用于指示按鍵有效。

19、同時(shí)液晶顯示可以顯示所輸入的數(shù)字是不是錯(cuò)誤,錯(cuò)誤的話(huà)用退格修改并從輸入,可返回主界面。</p><p>  5.系統(tǒng)設(shè)有超級(jí)用戶(hù)密碼,用于解除用戶(hù)忘記其所設(shè)密碼時(shí)使用,抑或當(dāng)密碼鎖用于賓館,房客走后,賓館管理員用于清除舊密碼。</p><p>  6.在外部掉電時(shí),內(nèi)部電源會(huì)使芯片繼續(xù)工作原來(lái)設(shè)置的密碼也不會(huì)丟失。</p><p>  2.3硬件部分的相關(guān)介紹<

20、;/p><p>  2.3.1 AT89C51 簡(jiǎn)介</p><p>  AT89C51 是美國(guó)Atmel 公司生產(chǎn)的低功耗,高性能CMOS 8 位單片機(jī),片內(nèi)含4k bytes的系統(tǒng)可編程的Flash 只讀程序存儲(chǔ)器,器件采用Atmel 公司的高密度,非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)8051 指令系統(tǒng)及引腳。它集成Flash 程序存儲(chǔ)器,既可在線(xiàn)編程(ISP)也可采用傳統(tǒng)的方法進(jìn)行編程。集8

21、位微處理器于單片芯片中,功能強(qiáng)大,價(jià)位低的AT89C51 提供許多高性?xún)r(jià)比的應(yīng)用場(chǎng)合,可靈活應(yīng)用于各種控制領(lǐng)域。</p><p>  AT89C51的功能與結(jié)構(gòu)如下: 128 字節(jié)內(nèi)部RAM,32 個(gè)I/O 口線(xiàn), 4K 字節(jié)Flash 閃速存儲(chǔ)器,看門(mén)狗(WDT),兩個(gè)16 位定時(shí)/計(jì)數(shù)器,兩個(gè)數(shù)據(jù)指針,一個(gè)5 向量?jī)杉?jí)中斷結(jié)構(gòu),片內(nèi)振蕩器及時(shí)鐘電路,同時(shí)AT89C51 可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟

22、件可選的節(jié)電工作模式,空閑方式停止CPU 的工作,但允許RAM 定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM 中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個(gè)硬件復(fù)位。</p><p>  1602 液晶顯示器簡(jiǎn)介</p><p>  LCD顯示大體分為字符型液晶、點(diǎn)陣圖形液晶、筆段型液晶等幾大類(lèi)。</p><p><b>  

23、圖2 1602引腳</b></p><p>  液晶顯示模塊是一類(lèi)專(zhuān)門(mén)用于顯示數(shù)字、字母、符號(hào)、圖形等的點(diǎn)陣型液晶顯示模塊,每一個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符,點(diǎn)陣字符位之間的一個(gè)點(diǎn)距的間隔起字符間距和行距的作用。它是由若干個(gè)5×7 或5×11 等點(diǎn)陣字符組成。</p><p>  液晶顯示模塊LCD1602 的引腳功能如下:</p><

24、p>  LCD1602 的引腳功能排列如上圖2所示,它采用的是16 腳接口,而且引腳都分布在LCD1602的一側(cè)使用時(shí)只要把對(duì)應(yīng)的電源、數(shù)據(jù)線(xiàn)等接好就可以其中:</p><p>  第1 腳:VSS 為電源</p><p>  第2 腳:VDD 接地</p><p>  第3 腳:V0 用于調(diào)節(jié)LCD1602的亮度,為液晶顯示器對(duì)比度調(diào)整端,很多時(shí)候液晶顯示沒(méi)

25、顯示可能就是這里的原因,LCD 驅(qū)動(dòng)電壓范圍為VDD~VO 接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可通過(guò)一個(gè)10K 的電位器調(diào)整對(duì)比度。</p><p>  第4 腳:RS 為寄存器選擇位,低電平時(shí)選擇命令寄存器IR、高電平時(shí)選擇數(shù)據(jù)寄器DR。</p><p>  第5 腳:RW 為讀寫(xiě)控制位,高電平時(shí)進(jìn)行讀操作。當(dāng)RS 和RW共同為低電平時(shí)可以寫(xiě)入

26、指令或者顯示地址,當(dāng)RS 為低電平RW 為高電平時(shí)可以讀忙信號(hào),當(dāng)RS 為高電平RW 為低電平時(shí)可以寫(xiě)入數(shù)據(jù)。</p><p>  第6 腳:Enable 端為使能控制位,當(dāng)E 端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。</p><p>  第7~14 腳:D0~D7 為8 位的雙向數(shù)據(jù)總線(xiàn)。</p><p>  第15~16 腳:背光燈的正負(fù)極</p>

27、;<p>  圖3 1602的內(nèi)部框圖</p><p>  2.液晶顯示模塊1602 的內(nèi)部結(jié)構(gòu)</p><p>  液晶顯示模塊LCD1602 的內(nèi)部結(jié)構(gòu)如上圖3所示,它主要由CGROM、CGRAM、DDRAM、BF、IR、DR、AC 等大規(guī)模集成電路組成。</p><p>  2.3.3 Protel99SE簡(jiǎn)介</p><p

28、>  Protel99se主要組成軟件有:</p><p>  原理圖編輯器(advanced schematic ) 用于原理圖的輸入、編輯、查錯(cuò)。</p><p>  仿真器(Simulator) 用于對(duì)原理圖的仿真,包含了常用的直流、交流特性、瞬態(tài)響應(yīng)等常用的仿真測(cè)度,并可以查看波形。</p><p>  PCB編輯器(Advanced PCB) 用于

29、PCB的設(shè)計(jì)、查錯(cuò)。</p><p>  PLD設(shè)計(jì)工具(PLD designer) 簡(jiǎn)單PLD的設(shè)計(jì)工具。</p><p>  文本編輯器(Text editor) 用于說(shuō)明文檔、網(wǎng)絡(luò)表等的編輯,不支持中文。</p><p>  表格處理軟件(Spread) 用于處理元件表,相當(dāng)于excel 97。</p><p>  Protel 99s

30、e集成了從原理圖設(shè)計(jì)、仿真到PCB過(guò)程中可能涉及到的常用工具,只用它幾科可以完成整個(gè)設(shè)計(jì)的所有工作,功能非常強(qiáng)大,需要一定的時(shí)間與精力去學(xué)習(xí)。</p><p>  Protel 99 的主要特點(diǎn):</p><p>  1.集成設(shè)計(jì)管理系統(tǒng)(Design Explore)</p><p>  2.使用了智能工具(SmartTool)技術(shù),在設(shè)計(jì)環(huán)境中集成了所有設(shè)計(jì)所用

31、到的工具。</p><p>  3.使用了智能文檔(SmartDoc)管理技術(shù),把所有設(shè)計(jì)時(shí)用到的文檔都保存在一個(gè)數(shù)據(jù)庫(kù)中,在工作中可以使用各種文檔。</p><p>  4.使用了智能組(SmartTeam)管理技術(shù),允許多個(gè)設(shè)計(jì)者通過(guò)網(wǎng)絡(luò)安全地為同一</p><p>  工程工作。通過(guò)集成的設(shè)計(jì)管理系統(tǒng),可以方便地管理用戶(hù)、設(shè)置訪問(wèn)權(quán)限等。</p>

32、<p>  5.提供了功能強(qiáng)大的各種文檔的快速瀏覽工具,使用戶(hù)可以快速方便地查詢(xún)、定位、修改文檔。</p><p>  6.提供了全面而方便使用的幫助系統(tǒng)[3]。</p><p>  2.4 各個(gè)硬件模塊的設(shè)計(jì)</p><p>  2.4.1 電源部分的設(shè)計(jì)</p><p>  電源部分是先通過(guò)一個(gè)變壓器把220 伏的交流電變換為

33、9 伏的交流電,再通過(guò)全橋整流電路整流成單向脈動(dòng)的直流電,大容量電解電容C1 用于使脈動(dòng)的直流電波形更加平直,C2 用于抵消輸入線(xiàn)較長(zhǎng)時(shí)的電感效應(yīng),以防止電路產(chǎn)生自激振蕩,其容量較小,一般小于1μF。在輸出端加接電容C6,一般取值0.1μF,其目的是改善負(fù)載的瞬態(tài)響應(yīng)、防止自激振蕩和減少高頻聲,輸出端輸出較為穩(wěn)定的5V 電壓為整個(gè)系統(tǒng)提供工作電壓。E為備用電池一端接地另一端通過(guò)二極管接電源,當(dāng)芯片工作時(shí),二極管反向,當(dāng)?shù)綦姇r(shí),二極管正向

34、導(dǎo)通,繼續(xù)工作。</p><p><b>  圖4電源部分</b></p><p>  2.4.2最小系統(tǒng)部分的設(shè)計(jì)</p><p>  最小部分的設(shè)計(jì)如下圖5所示,時(shí)鐘周期是芯片工作時(shí)候的最小周期,時(shí)鐘電路是計(jì)算機(jī)的心臟,它控制著計(jì)算機(jī)的工作節(jié)奏。AT89C51內(nèi)部有一個(gè)帶反饋的線(xiàn)性反相放大器,外接晶振(或陶瓷諧振器)和電容就組成振蕩器,產(chǎn)生

35、時(shí)鐘送至單片機(jī)的內(nèi)部工作部件。加電以后延遲一段時(shí)間(約10ms)振蕩起振產(chǎn)生時(shí)鐘,不受軟件控制(XTAL2輸出幅度為3V左右的正弦波)。振蕩器產(chǎn)生的時(shí)鐘頻率主要由晶振上標(biāo)明的頻率參數(shù)確定,電容C4和C5的作用有兩個(gè):其一是使振蕩器起振,其二是對(duì)振蕩器的頻率f起微調(diào)作用(C4、C5變大,則f變小),其值一般是30pF左右。</p><p>  復(fù)位電路由電容串聯(lián)電阻構(gòu)成,復(fù)位電路的基本功能是:系統(tǒng)上電時(shí)提供復(fù)位信號(hào)

36、,直至系統(tǒng)電源穩(wěn)定后,撤銷(xiāo)復(fù)位信號(hào)。</p><p><b>  圖5 最小系統(tǒng)部分</b></p><p>  2.4.3輸出部分的設(shè)計(jì)</p><p>  輸出部分主要包括聲光提示部分和電磁鎖部分。</p><p>  圖中三極管Q1 工作于飽和狀態(tài),復(fù)位后單片機(jī)輸出口的初始狀態(tài)是高電平,三極管截止,蜂鳴器得不到工作

37、電壓而不能發(fā)聲;當(dāng)用軟件控制此端口為低電平時(shí),三極管導(dǎo)通,蜂鳴器得電而工作,發(fā)出聲音。通過(guò)程序控制此三極管的間歇導(dǎo)通和截止以及導(dǎo)通和截止的時(shí)間長(zhǎng)短,就可以達(dá)到控制聲音頻率和發(fā)聲長(zhǎng)短的目的,得到我們所需要的不同聲音。</p><p>  發(fā)光二極管LED1 和一個(gè)470 歐的電阻口串接到地,當(dāng)輸出口P3.4 為高電平時(shí),發(fā)光二極管導(dǎo)通發(fā)光,當(dāng)輸出口為低電平時(shí),發(fā)光二極管截止熄滅。在程序的初始化部分,要加一條clr

38、p3.4 指令以熄滅此發(fā)光二極管。</p><p>  開(kāi)鎖部分,使用了P3口的兩跟口線(xiàn),實(shí)際應(yīng)用中應(yīng)加上光電隔離以及緩沖放大電路。光電隔離用于防止后面電路的尖峰脈沖干擾通過(guò)單片機(jī)端口串?dāng)_進(jìn)來(lái),影響單片機(jī)的正常運(yùn)行。緩沖放大電路進(jìn)行電平轉(zhuǎn)換和提高驅(qū)動(dòng)能力以直接驅(qū)動(dòng)電磁鎖。做好電磁鎖在市面上就可以買(mǎi)到這里就不介紹了。</p><p><b>  圖6 輸出部分</b>&

39、lt;/p><p>  2.4.4液晶接口部分的設(shè)計(jì)</p><p>  表1 1602 接口信號(hào)說(shuō)明</p><p>  LCD 接口設(shè)計(jì)可以分為8 位及4 位控制方式,由于本電路采用多達(dá)32 個(gè)I/O 口的AT89C51 芯片,不存在I/O 口資源使用緊張,不夠使用的情況,為方便程序的編寫(xiě),采用最為常見(jiàn)的8 位接口設(shè)計(jì)。V0 為液晶顯示器對(duì)比度調(diào)整端,LCD 驅(qū)動(dòng)電

40、壓范圍為Vss~Vdd,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,故通過(guò)一個(gè)10K 的電位器調(diào)整顯示屏的對(duì)比度。15 和16 腳是液晶背光電壓輸入端,通過(guò)一 個(gè)單向自鎖開(kāi)關(guān)控制背光的開(kāi)啟和關(guān)閉。</p><p><b>  圖7液晶接口部分</b></p><p>  2.4.5系統(tǒng)PCB圖</p><p>  

41、通過(guò)自動(dòng)布線(xiàn)和手工布線(xiàn)后得到的PCB圖 如下:</p><p><b>  圖8 PCB圖</b></p><p><b>  3軟件部分</b></p><p>  3.1軟件的總體編寫(xiě)思路和流程圖</p><p>  整個(gè)流程采用調(diào)用子程序的方式增強(qiáng)可讀性,住循環(huán)為無(wú)限循環(huán),程序在KEIL C

42、51的環(huán)境下運(yùn)行。先調(diào)試出液晶驅(qū)動(dòng)程序,鍵盤(pán)掃描程序兩個(gè)最基本的子程序,在需要使用時(shí)直接調(diào)用即可。在接下來(lái)的主循環(huán)中進(jìn)行時(shí)鐘的更新查詢(xún)和是否有按鍵的判斷,如果時(shí)間有更新(過(guò)了一秒)就轉(zhuǎn)去處理時(shí)間更新;如果有按鍵按下,則轉(zhuǎn)去按鍵處理,并判斷是否是相應(yīng)的幾個(gè)鍵,是就跳轉(zhuǎn)到相應(yīng)的功能模塊,不是則返回主界面。</p><p>  由于51 單片機(jī)架構(gòu)的原因,容易會(huì)受到外界干擾而出錯(cuò),故程序?qū)懲旰筮€要進(jìn)行進(jìn)行抗干擾方面的優(yōu)

43、化。通過(guò)指令冗余,軟件陷阱等措施將受到干擾而亂飛的程序納入正軌。比如在未開(kāi)的中斷入口處加入RETI 指令等等。在程序的按鍵部分加延時(shí)或者RS觸發(fā)器去鍵盤(pán)抖動(dòng)。</p><p><b>  圖9流程圖</b></p><p>  3.2各個(gè)軟件子模塊的編寫(xiě)</p><p>  3.2.1 1602 液晶驅(qū)動(dòng)程序</p><p&

44、gt;  表2 1602液晶時(shí)序參數(shù)</p><p><b>  驅(qū)動(dòng)程序:</b></p><p>  硬件端口定義及軟件資源分配:</p><p>  rs bit p1.4 ;//寄存器選擇線(xiàn)</p><p>  rw bit p1.5 ;//LCD 讀寫(xiě)線(xiàn)</p><p>  en bit

45、 p1.6 ;//啟用控制線(xiàn),高電平動(dòng)作</p><p>  lcd equ p0 ;//LCD 雙向數(shù)據(jù)總線(xiàn)</p><p>  pos_flag bit 20h.0 ;//字符串顯示位置標(biāo)志,為0 時(shí)顯示在第一行;為1 時(shí)顯示在第二行</p><p>  blank equ 30h ;//清行時(shí)填入的空格個(gè)數(shù)控制變量 </p><p>&

46、lt;b>  LCD 初始化:</b></p><p>  液晶顯示模塊1602 的控制指令1602 的控制指令共11 條,其中9 條針對(duì)命令寄存器IR 的,另外2 條是針對(duì)數(shù)據(jù)寄存器DR 的,具體指令如下表所列:</p><p>  表3 1602 指令表</p><p>  指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置</p&g

47、t;<p>  指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H</p><p>  指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無(wú)效</p><p>  指令4:顯示開(kāi)關(guān)控制。 D:控制整體顯示的開(kāi)與關(guān),高電平表示開(kāi)顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開(kāi)與關(guān),高電平表示有光標(biāo),低電平表示無(wú)光標(biāo)

48、 B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍</p><p>  指令5:光標(biāo)或顯示移位 S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)</p><p>  指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線(xiàn),低電平時(shí)為8位總線(xiàn) N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 F: 低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符</p><p>  指令7

49、:字符發(fā)生器RAM地址設(shè)置</p><p>  指令8:DDRAM地址設(shè)置</p><p>  指令9:讀忙信號(hào)和光標(biāo)地址 BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。</p><p><b>  指令10:寫(xiě)數(shù)據(jù)</b></p><p><b>  指令11:讀數(shù)據(jù)&l

50、t;/b></p><p>  init_lcd: mov a,#01h ;clr display</p><p>  call write_cmd</p><p>  mov a,#02h</p><p>  call write_cmd ;clear address pointer</p><p>  mov

51、 a,#06h</p><p>  call write_cmd; </p><p>  mov a,#0fh</p><p>  mov a,#0ch</p><p>  call write_cmd ;cursor on,blink</p><p>  mov a,#1ch</p><p>

52、  call write_cmd ;display&cursor rotate right</p><p>  mov a,#38h</p><p>  call write_cmd;two lines,8 bits,5*7</p><p><b>  Ret</b></p><p>  LCD 忙標(biāo)志位檢測(cè)程序

53、</p><p><b>  圖10讀操作時(shí)序</b></p><p><b>  表4 狀態(tài)字說(shuō)明</b></p><p>  對(duì)控制器每次進(jìn)行讀寫(xiě)操作之前,都必須進(jìn)行讀寫(xiě)檢測(cè),確保STA7 為0</p><p>  check: push acc</p><p>  mo

54、v lcd,#0ffh</p><p><b>  clr en</b></p><p><b>  clr rs</b></p><p><b>  setb rw</b></p><p><b>  setb en</b></p><

55、;p><b>  ck: nop</b></p><p>  jb lcd.7,ck</p><p><b>  clr en</b></p><p><b>  pop acc</b></p><p><b>  Ret</b></p>

56、<p><b>  寫(xiě)指令子程序</b></p><p><b>  圖11 寫(xiě)操作時(shí)序</b></p><p>  writec: call check</p><p><b>  mov lcd,a</b></p><p><b>  clr en&

57、lt;/b></p><p><b>  clr rs</b></p><p><b>  clr rw</b></p><p><b>  setb en</b></p><p><b>  nop</b></p><p>

58、<b>  nop</b></p><p><b>  nop</b></p><p><b>  clr en</b></p><p><b>  Ret</b></p><p><b>  寫(xiě)數(shù)據(jù)子程序</b></p>

59、<p>  writed: call check</p><p><b>  mov lcd,a</b></p><p><b>  clr en</b></p><p><b>  setb rs</b></p><p><b>  clr rw<

60、;/b></p><p><b>  setb en</b></p><p><b>  nop</b></p><p><b>  nop</b></p><p><b>  nop</b></p><p><b>

61、;  clr en</b></p><p><b>  Ret</b></p><p>  3.2.2鍵盤(pán)掃描程序</p><p>  鍵盤(pán)掃描程序主要有下面五個(gè)方面:</p><p>  1.在主程序中判斷有無(wú)鍵閉合:其方法為在四根列線(xiàn)輸出全“0”,讀取四根行線(xiàn)的電平狀態(tài),若四根行線(xiàn)電平全為“1”,則鍵盤(pán)上

62、沒(méi)有閉合鍵;若四根行線(xiàn)不全為1,則有鍵處于閉合狀態(tài)。</p><p>  2.去除按鍵的機(jī)械抖動(dòng):其方法為判別到鍵盤(pán)上有鍵閉合后,延遲一段時(shí)間再判別鍵盤(pán)的狀態(tài),若仍有按鍵閉合,則認(rèn)為鍵盤(pán)上有一個(gè)按鍵處于穩(wěn)定的閉合期;否則,認(rèn)為是按鍵的抖動(dòng)或單片機(jī)受到干擾。</p><p>  3.判別閉合按鍵的鍵號(hào):方法為對(duì)鍵盤(pán)的列線(xiàn)P2.0-P2.3 進(jìn)行掃描,讀取行線(xiàn)P2.4-P2.7 返回的電平狀態(tài)

63、,若P2.4-P2.7 為全“1”,則列線(xiàn)輸出“0”的這一列上沒(méi)有鍵閉合。設(shè)立一按鍵編號(hào)計(jì)數(shù)單元,每次判斷一個(gè)鍵就加1,直到找到閉合鍵,此時(shí)計(jì)數(shù)單元中的值就是此閉合鍵的編號(hào)。</p><p>  4.使CPU 對(duì)按鍵的一次閉合作一次處理:設(shè)立一按鍵標(biāo)志key_flag,為1 表明有鍵閉合,為0 表明無(wú)鍵閉合。當(dāng)有鍵按下后,CPU 循環(huán)檢測(cè)此按鍵標(biāo)志,為1 則繼續(xù)檢測(cè),直到該標(biāo)志量等于0,等待按鍵放開(kāi),保證CPU

64、對(duì)每一次按鍵僅作一次處理。</p><p>  5.取自已定義的鍵盤(pán)布局:取到按鍵編號(hào)后,通過(guò)查表的方法,取到自己定義的按鍵值。</p><p><b>  軟件資源分配:</b></p><p>  key_flag bit 20h.1</p><p>  cnt_loop2 equ 31h</p>&l

65、t;p>  key_cnt equ 32h</p><p>  key_num equ 33h</p><p>  scan_sig equ 34h</p><p><b>  掃描主程序:</b></p><p>  get_key:call key_scan</p><p>  jb k

66、ey_flag,get_key</p><p>  mov a,key_num</p><p>  mov dptr,#key_pad</p><p>  movc a,@a+dptr</p><p><b>  call beep</b></p><p><b>  ret</b

67、></p><p>  ;=======================================</p><p>  key_scan;clr key_flag</p><p>  mov p2,#0f0h</p><p><b>  mov a,p2</b></p><p>  a

68、nl a,#0f0h</p><p>  cjne a,#0f0h,key_in</p><p>  jmp key_scan</p><p> ?。?-----------------------------------</p><p>  key_in: clr key_flag</p><p>  mov key

69、_cnt,#0</p><p>  mov scan_sig,#0f7h</p><p><b>  mov r5,#3</b></p><p>  call delay</p><p>  scan_loop1:mov a,scan_sig</p><p><b>  mov p2,a

70、</b></p><p><b>  mov a,p2</b></p><p>  mov cnt_loop2,#4</p><p>  scan_loop2: jb acc.4,next_key</p><p>  setb key_flag</p><p>  mov key_nu

71、m,key_cnt</p><p><b>  ret</b></p><p>  next_key: inc key_cnt</p><p><b>  rr a</b></p><p>  djnz cnt_loop2,scan_loop2</p><p><b&g

72、t;  setb c</b></p><p>  mov a,scan_sig</p><p><b>  rrc a</b></p><p>  mov scan_sig,a</p><p>  jc scan_loop1</p><p><b>  ret</b&g

73、t;</p><p>  3.2.3密碼輸入和處理部分程序</p><p><b>  軟件資源分配:</b></p><p>  pass_flag bit 20h.2</p><p>  pass0 equ 40h;40h to 4Eh</p><p>  pass1 equ 4fh ;4F

74、h to 5Dh</p><p>  lenth0 equ 35h</p><p>  lenth1 equ 36h</p><p>  cnt_err equ 37h;error time</p><p>  c_alm1 equ 38h ;alarm_time control</p><p>  c_alm2 eq

75、u 39h</p><p>  1.密碼輸入程序(含退格功能)</p><p>  編寫(xiě)思路:執(zhí)行清屏指令和開(kāi)啟光標(biāo)顯示和閃爍,取字符串“Input Password”并送到屏幕上顯示,移動(dòng)光標(biāo)到第二行第一個(gè)位置。把密碼計(jì)數(shù)單元清為0,并把指針指向輸入密碼存儲(chǔ)RAM 的首地址,長(zhǎng)度為15(可根據(jù)需要進(jìn)行增減)。在輸入主循環(huán)中一直調(diào)用等待按鍵,取到鍵值后,用一特定算法判斷是否是確定鍵,退格鍵

76、和數(shù)字鍵,如果不是則丟棄,如果是確定鍵,則返回;如果是退格鍵,則把密碼計(jì)數(shù)單元減1 并把指針指向上一個(gè)RAM 單元;如果是數(shù)字鍵,則把它存儲(chǔ)到當(dāng)前指針?biāo)赶虻腞AM 單元,密碼計(jì)數(shù)單元加1,同時(shí)把指針指向下一RAM 單元。每次密碼計(jì)數(shù)單元加1 都要判斷是否已經(jīng)滿(mǎn)15 位,如果滿(mǎn)15 位則等待退格鍵和確定鍵,遇到其它鍵丟棄。</p><p>  input_psw:mov a,#01h</p><

77、;p>  call write_cmd</p><p>  mov a,#0fh</p><p>  call write_cmd</p><p>  mov dptr,#ipt</p><p>  clr pos_flag</p><p>  call print</p><p>  m

78、ov a,#0c0h</p><p>  call write_cmd</p><p>  mov lenth1,#0</p><p>  mov r1,#pass1</p><p>  input_loop: call get_key</p><p><b>  mov b,a</b></

79、p><p>  key_enter1:cjne a,#0ch,key_bk1 ;enter key</p><p><b>  ret</b></p><p>  key_bk1: cjne a,#0dh,n1;backspace key</p><p>  bk_in1: mov a,lenth1</p>&

80、lt;p><b>  clr c</b></p><p><b>  subb a,#1</b></p><p>  jc relay1 ;jump to main_loop,but target out of range</p><p>  dec lenth1</p><p><b&

81、gt;  dec r1</b></p><p>  call lcd_add</p><p>  setb acc.7</p><p><b>  dec a</b></p><p><b>  mov b,a</b></p><p>  call write_c

82、md</p><p><b>  mov a,' '</b></p><p>  call write_data</p><p><b>  mov a,b</b></p><p>  call write_cmd</p><p>  jmp input_lo

83、op</p><p><b>  n1:clr c</b></p><p>  subb a,#10</p><p>  jnc input_loop ;function key</p><p>  mov a,b ;digital key</p><p><b>  mov @r1,a

84、</b></p><p>  mov a,#'*'</p><p>  call write_data</p><p><b>  inc r1</b></p><p>  inc lenth1</p><p>  mov a,lenth1</p><

85、;p>  cjne a,#15,input_loop</p><p>  n2:call get_key</p><p>  cjne a,#0ch,n3</p><p><b>  ret</b></p><p>  n3:cjne a,#0dh,n2</p><p>  jmp bk_i

86、n1</p><p>  2.密碼比較和判斷程序</p><p>  編寫(xiě)思路:清除密碼正確標(biāo)志,比較內(nèi)部設(shè)置密碼的長(zhǎng)度存儲(chǔ)單元和待比較的密碼長(zhǎng)度存儲(chǔ)單元,如果不同,則跳到密碼錯(cuò)誤處理部分;如果兩者相等,則進(jìn)行下一步判斷,取兩指針,分別指向內(nèi)部設(shè)置的密碼存儲(chǔ)單元的首個(gè)RAM 地址,和待比較的密碼存儲(chǔ)單元的首個(gè)RAM 地址,如果兩者相等則把指針指向下一個(gè)RAM 地址,再進(jìn)行比較,遇到不相等就

87、跳到錯(cuò)誤處理部分。如果在密碼長(zhǎng)度范圍內(nèi)兩比較單元都相等,則跳轉(zhuǎn)到密碼正確處理部分。</p><p>  錯(cuò)誤處理部分:取字符串“Access Denied”并送到顯示屏顯示,同時(shí)蜂鳴器發(fā)出警示音。每進(jìn)入錯(cuò)誤處理部分一次就把密碼錯(cuò)誤計(jì)數(shù)單元加1,當(dāng)計(jì)到第三次時(shí),執(zhí)行報(bào)警部分,鎖定鍵盤(pán),鎖定時(shí)間過(guò)后返回主界面。</p><p>  密碼正確處理部分:清空密碼錯(cuò)誤計(jì)數(shù)單元,取字符串“Access

88、 Granted”并送到顯示屏顯示,同時(shí)蜂鳴器發(fā)出密碼正確的提示音,執(zhí)行開(kāi)鎖部分。</p><p>  Compare: clr pass_flag</p><p>  mov a,lenth1</p><p>  cjne a,lenth0,wrong</p><p>  mov r0,#pass0</p><p>

89、  mov r1,#pass1</p><p>  cmp_loop:mov a,@r0</p><p><b>  mov b,@r1</b></p><p>  cjne a,b,wrong</p><p><b>  inc r0</b></p><p><b&g

90、t;  inc r1</b></p><p>  djnz lenth1,cmp_loop</p><p><b>  jmp right</b></p><p>  wrong:clr pass_flag</p><p>  mov dptr,#error</p><p>  clr

91、 pos_flag</p><p>  call print</p><p>  mov r5,#150</p><p>  call delay</p><p>  inc cnt_err</p><p>  mov a,cnt_err</p><p>  cjne a,#3,n21</

92、p><p>  mov cnt_err,,#0</p><p>  mov dptr,#lock</p><p>  clr pos_flag</p><p>  call print;加上一段延時(shí)鎖定鍵盤(pán)</p><p>  mov c_alm1,#255</p><p>  n20: call

93、beep</p><p>  mov r5,#10</p><p>  call delay</p><p>  djnz c_alm1,n20</p><p>  n21:call beep</p><p>  mov r5,#15</p><p>  call delay</p>

94、<p><b>  call beep</b></p><p>  mov r5,#15</p><p>  call delay</p><p><b>  call beep</b></p><p>  mov r5,#15</p><p>  call d

95、elay</p><p>  mov r5,#100</p><p>  call delay</p><p><b>  ret</b></p><p>  right:setb pass_flag</p><p>  mov cnt_err,#0</p><p>  m

96、ov dptr,#ok</p><p>  clr pos_flag</p><p>  call print</p><p>  mov c_alm2,#25</p><p>  c22: call beep</p><p>  djnz c_alm2,c22</p><p>  mov r5

97、, #255</p><p>  call delay</p><p><b>  Ret</b></p><p>  3.密碼設(shè)置程序(含退格功能)</p><p>  編寫(xiě)思路:執(zhí)行清屏指令,取字符串“Input new....”并送到顯示屏進(jìn)行顯示,把光標(biāo)移動(dòng)到第二行第一個(gè)位置。 取一指針指向內(nèi)部設(shè)置密碼存儲(chǔ)單元的

98、首個(gè)RAM 的地址同時(shí)把內(nèi)設(shè)密碼長(zhǎng)度計(jì)數(shù)單元清為0。在設(shè)置密碼主循環(huán)中一直調(diào)用等待按鍵,取到鍵值后,用一特定算法判斷是否是確定鍵,退格鍵和數(shù)字鍵,如果不是則丟棄并跳到輸入循環(huán)中繼續(xù)等待按鍵。如果是確定鍵看是否已經(jīng)有輸入至少一位密碼,如果有則返回,如果還未有輸入則跳到設(shè)置密碼主循環(huán)中繼續(xù)等待按鍵。如果是退格鍵,則密碼長(zhǎng)度計(jì)數(shù)單元減1,同時(shí)把密碼計(jì)數(shù)單元減1 并把指針指向上一個(gè)RAM 單元。如果是數(shù)字鍵,則把它存儲(chǔ)到當(dāng)前指針?biāo)赶虻腞AM

99、單元,密碼計(jì)數(shù)單元加1,同時(shí)把指針指向下一RAM 單元。每次密碼長(zhǎng)度計(jì)數(shù)單元加1 都要判斷是否已經(jīng)滿(mǎn)15 位,如果滿(mǎn)15 則等等待退格鍵和確定鍵,遇到其它鍵丟棄。</p><p>  set_psw: mov a,#01h</p><p>  call write_cmd</p><p>  mov dptr,#new</p><p>  c

100、lr pos_flag</p><p>  call print</p><p>  mov a,#0c0h</p><p>  call write_cmd</p><p>  mov r0,#pass0</p><p>  mov lenth0,#0</p><p>  set_loop:

101、call get_key</p><p><b>  mov b,a</b></p><p>  key_enter2:cjne a,#0ch,key_bk2;enter key</p><p>  mov a,lenth0</p><p><b>  clr c</b></p>&l

102、t;p><b>  subb a,#1</b></p><p><b>  ret</b></p><p>  key_bk2: cjne a,#0dh,n11 ;backspace key </p><p>  jc set_loop</p><p>  bk_in2: mov a,lent

103、h0</p><p><b>  clr c</b></p><p><b>  subb a,#1</b></p><p>  jc set_loop</p><p>  dec lenth0</p><p><b>  dec r0</b></

104、p><p>  call lcd_add</p><p>  setb acc.7</p><p><b>  dec a</b></p><p><b>  mov b,a</b></p><p>  call write_cmd</p><p>  m

105、ov a,#' '</p><p>  call write_data</p><p><b>  mov a,b</b></p><p>  call write_cmd</p><p>  jmp set_loop</p><p><b>  n11:clr c<

106、;/b></p><p>  subb a,#10</p><p>  jnc set_loop ;function key</p><p><b>  mov a,b</b></p><p><b>  mov @r0,a</b></p><p>  add a,#3

107、0h</p><p>  call write_data</p><p><b>  inc r0</b></p><p>  inc lenth0</p><p>  mov a,lenth0</p><p>  cjne a,#15,set_loop</p><p> 

108、 n12:call get_key</p><p>  cjne a,#0ch,n13</p><p><b>  ret</b></p><p>  n13:cjne a,#0dh,n12</p><p>  jmp bk_in2</p><p>  3.2.4時(shí)鐘部分程序</p>

109、<p><b>  軟件資源分配:</b></p><p>  hour equ 3ah</p><p>  min equ 3bh</p><p>  sec equ 3ch</p><p>  sec0 equ 3dh</p><p>  cnt_timer equ 3eh<

110、/p><p>  hour1 equ 21h</p><p>  hour0 equ 22h</p><p>  min1 equ 23h</p><p>  min0 equ 24h</p><p><b>  1.時(shí)鐘中斷程序</b></p><p>  在中斷入口處把A

111、和B 寄存器入堆棧保護(hù)起來(lái),重新載入定時(shí)器初值,并把時(shí)間計(jì)數(shù)單元加1,查看一下是否已經(jīng)累積到1 秒了,如果不是則退出中斷;如果已經(jīng)1 秒了,則查看是否已滿(mǎn)1 分鐘,如果不是則退出中斷;如果已經(jīng)滿(mǎn)1 分鐘則查看是否滿(mǎn)1 小時(shí),如果不是是退出中斷;如果已經(jīng)滿(mǎn)1 小時(shí)則查看是否滿(mǎn)24 小時(shí),如果不是則退出中斷;如果已經(jīng)滿(mǎn)24 小時(shí)則復(fù)位小時(shí)分鐘和秒計(jì)數(shù)單元并退出中斷。</p><p>  考慮到晶振頻率的誤差和并在兩端

112、的微調(diào)電容的誤差,實(shí)際的振蕩頻率不可能在我們所期望的理想值,結(jié)合中斷處理所占用的時(shí)間,時(shí)鐘實(shí)際上會(huì)有一定的誤差,這時(shí)我們可以進(jìn)行軟件微調(diào),對(duì)中斷中載入的定時(shí)器初值進(jìn)行微調(diào),先用載入標(biāo)準(zhǔn)初值進(jìn)行試調(diào),測(cè)試一段時(shí)間看是偏快還是偏慢,如果偏快則增加定時(shí)器初值,如果測(cè)試偏慢則減少定時(shí)器初值。在前面標(biāo)準(zhǔn)值的基礎(chǔ)上進(jìn)和相應(yīng)的處理,增加或減少定時(shí)器初值,再測(cè)試新的時(shí)鐘是偏快還是偏慢,再進(jìn)行調(diào)節(jié),直到時(shí)鐘的誤差到達(dá)一個(gè)讓人滿(mǎn)意的結(jié)果為止。</p&

113、gt;<p>  t0_int: push acc</p><p><b>  push b</b></p><p>  mov th0,#34h</p><p>  mov tl0,#0E0h ;subbtract 4T time</p><p>  inc cnt_timer</p>&l

114、t;p>  mov a,cnt_timer</p><p>  cjne a,#20,exit</p><p>  mov cnt_timer,#0</p><p><b>  inc sec</b></p><p><b>  mov a,sec</b></p><p&g

115、t;  cjne a,#60,exit</p><p>  mov sec,#0</p><p><b>  inc min</b></p><p><b>  mov a,min</b></p><p>  cjne a,#60,exit</p><p>  mov min

116、,#0</p><p><b>  inc hour</b></p><p>  mov a,hour</p><p>  cjne a,#24,exit</p><p>  mov hour,#0</p><p>  mov min,#0</p><p>  mov se

117、c,#0</p><p>  exit: pop b</p><p><b>  pop acc</b></p><p><b>  Reti</b></p><p><b>  2.秒刷新程序</b></p><p>  編寫(xiě)思路:把液晶顯示器地址指針

118、移到第二行第一個(gè)位置,依次填入三個(gè)空格位,分別把小時(shí)變量,分鐘變量和秒變量分離為高位和低位,并轉(zhuǎn)化為ASCII 碼,送到液晶數(shù)據(jù)口調(diào)用液晶寫(xiě)指令子程序,在液晶屏上顯示出來(lái),同時(shí)在小時(shí)和分鐘后插入“:”</p><p>  以符合日常習(xí)慣。在主程序中循環(huán)查看秒變量有沒(méi)有變化,有則刷新舊的時(shí)間內(nèi)容,新完畢后返回主界面。</p><p>  Reflash:mov a,#0c0h</p&g

119、t;<p>  call write_cmd</p><p>  mov a,#' '</p><p>  call write_data</p><p>  mov a,#' '</p><p>  call write_data</p><p>  mov a,#

120、9; '</p><p>  call write_data</p><p>  mov a,hour</p><p>  call convert</p><p>  mov a,#':'</p><p>  call write_data</p><p><b&

121、gt;  mov a,min</b></p><p>  call convert</p><p>  mov a,#':'</p><p>  call write_data</p><p><b>  mov a,sec</b></p><p>  call con

122、vert</p><p>  mov a,#0c0h</p><p>  call write_cmd</p><p><b>  Ret</b></p><p><b>  3.時(shí)間設(shè)置程序</b></p><p>  編寫(xiě)思路:此部分是整個(gè)程序中最復(fù)雜的部分之一。先開(kāi)啟光

123、標(biāo)顯示并開(kāi)閃爍;關(guān)閉定時(shí)器,清空秒變量;把小時(shí)變量和分鐘變量高低位分離并分別到保護(hù)到四個(gè)RAM 存儲(chǔ)單元中;每按set time 鍵一次,讀取當(dāng)前液晶顯示器地址計(jì)數(shù)器(Address Counter)的內(nèi)容,根據(jù)光標(biāo)所在的位置,把地址計(jì)數(shù)器的內(nèi)容進(jìn)行加1 或加2,使光標(biāo)移到下一個(gè)設(shè)置位。能根據(jù)取到的按鍵值分別判斷該次按鍵是不是有效,有效則存儲(chǔ)到相應(yīng)的存儲(chǔ)單元,否則丟棄。比如當(dāng)光標(biāo)在小時(shí)高位時(shí),只有按數(shù)字鍵1,2 或確定鍵才有效,其它鍵丟

124、棄。當(dāng)設(shè)置完成,按下確定鍵,把存儲(chǔ)小時(shí)和分鐘變量的四個(gè)存儲(chǔ)間RAM 單元進(jìn)行整合并還原到小時(shí)變量存儲(chǔ)單元和分鐘變量存儲(chǔ)單元,開(kāi)啟定時(shí)器,返回主界面。</p><p>  set_time: mov a,#0fh</p><p>  call write_cmd ;cursor on</p><p>  mov a,hour</p><p>&

125、lt;b>  mov b,#10</b></p><p><b>  div ab</b></p><p>  mov hour1,a</p><p>  mov hour0,b</p><p><b>  mov a,min</b></p><p><

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論