![11電信趙仵龍51_課設(shè)報(bào)告1.docx_第1頁(yè)](http://file.renrendoc.com/FileRoot1/2019-7/14/d551b69d-8613-4b9a-a6eb-1a7b3ae5123c/d551b69d-8613-4b9a-a6eb-1a7b3ae5123c1.gif)
![11電信趙仵龍51_課設(shè)報(bào)告1.docx_第2頁(yè)](http://file.renrendoc.com/FileRoot1/2019-7/14/d551b69d-8613-4b9a-a6eb-1a7b3ae5123c/d551b69d-8613-4b9a-a6eb-1a7b3ae5123c2.gif)
![11電信趙仵龍51_課設(shè)報(bào)告1.docx_第3頁(yè)](http://file.renrendoc.com/FileRoot1/2019-7/14/d551b69d-8613-4b9a-a6eb-1a7b3ae5123c/d551b69d-8613-4b9a-a6eb-1a7b3ae5123c3.gif)
![11電信趙仵龍51_課設(shè)報(bào)告1.docx_第4頁(yè)](http://file.renrendoc.com/FileRoot1/2019-7/14/d551b69d-8613-4b9a-a6eb-1a7b3ae5123c/d551b69d-8613-4b9a-a6eb-1a7b3ae5123c4.gif)
![11電信趙仵龍51_課設(shè)報(bào)告1.docx_第5頁(yè)](http://file.renrendoc.com/FileRoot1/2019-7/14/d551b69d-8613-4b9a-a6eb-1a7b3ae5123c/d551b69d-8613-4b9a-a6eb-1a7b3ae5123c5.gif)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
目 錄一、設(shè)計(jì)任務(wù)要求2 1.1、任務(wù)選擇2 1.2、任務(wù)要求分析及實(shí)現(xiàn)2二、設(shè)計(jì)方案與原理2 2.1.硬件電路方案選擇2 2.2、硬件電路設(shè)計(jì)原理 2 2.3軟件部分的設(shè)計(jì)11三、運(yùn)行結(jié)果及分析17 3.1.電子鐘仿真結(jié)果17 3.2.ad轉(zhuǎn)換器仿真結(jié)果18四、設(shè)計(jì)總結(jié)18五、參考文獻(xiàn)18一、設(shè)計(jì)任務(wù)及要求 1.1、任務(wù)選擇 按照老師要求,必須完成課程設(shè)計(jì)任務(wù)書(shū)的兩項(xiàng)任務(wù),任務(wù)書(shū)中總共有30項(xiàng)任務(wù),可任選兩項(xiàng)。經(jīng)仔細(xì)閱讀任務(wù)書(shū),結(jié)合自己對(duì)stc89c51的掌握情況,我選擇任務(wù)24和任務(wù)30。分別如下: (1)、任務(wù) 24:可調(diào)數(shù)字鐘系統(tǒng),要求支持小時(shí)、分、秒數(shù)字顯示,并且支持小時(shí)、分手動(dòng)調(diào)節(jié)與復(fù)位功能。 (2)、任務(wù) 30:設(shè)計(jì)單片機(jī)外接 a/d 控制器,并將 ad 轉(zhuǎn)換的數(shù)據(jù)送數(shù)碼管顯示。 1.2、任務(wù)要求分析及實(shí)現(xiàn): (1)、任務(wù)24分析:本任務(wù)要求制作簡(jiǎn)易電子鐘,并且時(shí)、分、秒可手動(dòng)調(diào)節(jié),可用stc89c51內(nèi)部定時(shí)器t0或t1實(shí)現(xiàn)準(zhǔn)確定時(shí),用6位數(shù)碼管分別顯示時(shí)、分、秒,也可用1602液晶顯時(shí)間。 (2)、任務(wù)30分析:由于硬件電路限制,此a/d轉(zhuǎn)換器只能用stc89c51開(kāi)發(fā)板上的adc0804芯片結(jié)合數(shù)碼管來(lái)完成8位a/d轉(zhuǎn)換。二、設(shè)計(jì)方案與原理 2.1.硬件電路方案選擇 (1)、可調(diào)數(shù)字鐘方案選擇與論證: 方案一:用內(nèi)部定時(shí)器t1通過(guò)計(jì)算初值和循環(huán)實(shí)現(xiàn)定時(shí)1秒,用六位數(shù)碼管分別顯示時(shí)、分、秒。 方案二:用內(nèi)部定時(shí)器t1通過(guò)計(jì)算初值和循環(huán)實(shí)現(xiàn)定時(shí)1秒,用1602液晶顯示屏顯示時(shí)間。 用六位數(shù)碼管雖然可以分別顯示時(shí)、分、秒,但是的stc89c51i/o口并不是直接和數(shù)碼管的7段相連,來(lái)傳輸數(shù)據(jù)。由于stc89c51的i/o較少,為了節(jié)省i/o,通過(guò)74ls573做擴(kuò)展同時(shí)對(duì)i/o輸出數(shù)據(jù)進(jìn)行鎖存。所以數(shù)碼管的片選和段選均要經(jīng)過(guò)74ls573來(lái)進(jìn)行數(shù)據(jù)鎖存,而,電子鐘要求顯示時(shí)、分、秒用到的數(shù)碼管較多,編寫程序就比較麻煩。而,1602液晶顯示屏只要求定義好寫地址和寫命令即可顯示時(shí)間,方便快捷,美觀。 綜上所述:可調(diào)數(shù)字鐘選用方案二進(jìn)行設(shè)計(jì)。 (2)、a/d轉(zhuǎn)換電路設(shè)計(jì)思路: 選用stc89c51開(kāi)發(fā)板上的adc0804進(jìn)行ad采樣,并將采樣結(jié)果量化后送到51的p1口,然后通過(guò)控制鎖存器打開(kāi)數(shù)碼管的片選和段選將采樣值顯示出來(lái)。 2.2、硬件電路設(shè)計(jì)原理 1、stc89c51簡(jiǎn)介: stc系列單片機(jī)是美國(guó)stc公司最新推出的一種新型51內(nèi)核的單片機(jī)。片內(nèi)含有flash程序存儲(chǔ)器、sram、uart、spi、ad、pwm等模塊。該器件的基本功能與普通的51單片機(jī)完全兼容。主要功能、性能參數(shù):(1).內(nèi)置標(biāo)準(zhǔn)51內(nèi)核,機(jī)器周期:增強(qiáng)型為6時(shí)鐘,普通型為12時(shí)鐘;(2).工作頻率范圍:040mhz,相當(dāng)于普通8051的080mhz;(3).stc89c5xrc對(duì)應(yīng)flash空間:4kb8kb15kb;(4).內(nèi)部存儲(chǔ)器(ram):512b;(5).定時(shí)器計(jì)數(shù)器:3個(gè)16位;(6).通用異步通信口(uart)1個(gè);(7).中斷源:8個(gè);(8).有isp(在系統(tǒng)可編程)iap(在應(yīng)用可編程),無(wú)需專用編程器仿真器;(9).通用io口:3236個(gè);(10).工作電壓:3.85.5v;(11).外形封裝:40腳pdip、44腳plcc和pqfp等2. 89c51單片機(jī)的引腳功能說(shuō)明(1)vcc:電源電壓(2)gnd:地(3)p0口:p0口是一組8位漏極開(kāi)路型雙向i/o口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動(dòng)8個(gè)ttl邏輯門電路,對(duì)端口p0寫“1”時(shí)可作為高阻抗輸入端用。在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)位,在訪問(wèn)期間激活內(nèi)部上拉電阻。 (4)p1口:p1是一個(gè)帶內(nèi)部上拉電阻的8位雙向i/o口,p1的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)tte邏輯門電路。對(duì)端口寫“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(ill)。與at89c51不同之處是,p1.0和p1.1還可分別作為定時(shí)/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(p 1.0/t2)和輸入(p 1.1/t2ex ), flash編程和程序校驗(yàn)期間,p1接收低8位地址。表2-2-1 p1.0和p1.1的第二功能引 腳 號(hào) 功能特性p1.0t2(定時(shí)/計(jì)數(shù)器2外部計(jì)數(shù)脈沖輸入),時(shí)鐘輸出p1.1t2ex(定時(shí)/計(jì)數(shù)2捕獲/重裝載觸發(fā)和方向控制) 表2-2-1(5)p2口:p2是一個(gè)帶有內(nèi)部上拉電阻的8位雙向i/o口,p2的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)ttl邏輯門電路。對(duì)端口p2寫“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(ill)。在訪問(wèn)外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行movx dptr指令)時(shí),p2口送出高8位地址數(shù)據(jù)。在訪問(wèn)8位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行movx ri指令)時(shí),p2口輸出p2鎖存器的內(nèi)容。(6)p3口:p3口是一組帶有內(nèi)部上拉電阻的8位雙向i/o口。p3口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)ttl邏輯門電路。對(duì)p3口寫入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時(shí),被外部拉低的p3口將用上拉電阻輸出電流(ill)。p3口除了作為一般的i/o口線外,更重要的用途是它的第二功能,如表4-2所示。 (7) rst:復(fù)位輸入。當(dāng)振蕩器工作時(shí),rst引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。表2-2-2 p3口的第二功能:端口引腳第二功能p3.0rxd(串行輸入口)p3.1txd(串行輸出口)p3.2(外中斷0)p3.3(外中斷1)p3.4t0(定時(shí)/計(jì)數(shù)0)p3.5t1(定時(shí)/計(jì)數(shù)1)p3.6(外部數(shù)據(jù)存儲(chǔ)器寫選通)p3.7(外部數(shù)據(jù)存儲(chǔ)器讀選通) 表2-2-2(8)/vpp:外部訪問(wèn)允許。欲使cpu僅訪問(wèn)外部程序存儲(chǔ)器(地址為0000h-ffffh ) 。端必須保持低電平(接地)。需注意的是:如果加密位lb1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存端狀態(tài)。如端為高電平(接vcc端),cpu則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。flash存儲(chǔ)器編程時(shí),該引腳加上+12v的編程允許電源vpp,當(dāng)然這必須是該器件是使用12v編程電壓vcc 。(9)xtal1:振蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端。(10)xtal2:振蕩器反相放大器的輸出端。3、74ls573鎖存器工作原理: (1)、74ls573 的八個(gè)鎖存器都是透明的d 型鎖存器,當(dāng)使能(g)為高時(shí),q 輸出將隨數(shù)據(jù)(d)輸入而變。當(dāng)使能為低時(shí),輸出將鎖存在已建立的數(shù)據(jù)電平上。輸出控制不影響鎖存器的內(nèi)部工作,即老數(shù)據(jù)可以保持,甚至當(dāng)輸出被關(guān)閉時(shí),新的數(shù)據(jù)也可以置入。這種電路可以驅(qū)動(dòng)大電容或低阻抗負(fù)載,可以直接與系統(tǒng)總線接口并驅(qū)動(dòng)總線,而不需要外接口。特別適用于緩沖寄存器,i/o 通道,雙向總線驅(qū)動(dòng)器和工作寄存器。 真值表: 輸出 enablelatch enable啟用d輸出olhhhlhllllxqohxxz 表2-2-3h=高電平 l=低電平 =不定 z=高阻態(tài)qo=建立穩(wěn)態(tài)輸入條件前q的電平引腳功能表: pin names管腳號(hào) description 功能d0d7 data inputs數(shù)據(jù)輸入le latch enable input (active high) 鎖存使能輸入(高電平有效) oe 3-state output enable input (active low) 3態(tài)輸出使能輸入(低電平有效)o0o7 3-state latch outputs 3態(tài)鎖存輸出 表2-2-4(2)51開(kāi)發(fā)板的原理圖: 表2-2-54、7段數(shù)碼管工作原理及原理圖: (1)、7段數(shù)碼管一般由8個(gè)發(fā)光二極管組成,其中由7個(gè)細(xì)長(zhǎng)的發(fā)光二極管組成數(shù)字顯示,另外一個(gè)圓形的發(fā)光二極管顯示小數(shù)點(diǎn)。當(dāng)發(fā)光二極管導(dǎo)通時(shí),相應(yīng)的一個(gè)點(diǎn)或一個(gè)筆畫(huà)發(fā)光??刂葡鄳?yīng)的二極管導(dǎo)通,就能顯示出各種字符,盡管顯示的字符形狀有些失真,能顯示的數(shù)符數(shù)量也有限,但其控制簡(jiǎn)單,使有也方便。發(fā)光二極管的陽(yáng)極連在一起的稱為共陽(yáng)極數(shù)碼管,陰極連在一起的稱為共陰極數(shù)碼管。 (2)、硬件電路原理圖: 表2-2-65、1602液晶顯示原理 (1)、液晶顯示原理 液晶顯示的原理是利用液晶的物理特性,通過(guò)電壓對(duì)其顯示區(qū)域進(jìn)行控制,有電就有顯示,這樣即可以顯示出圖形。液晶顯示器具有厚度薄、適用于大規(guī)模集成電路直接驅(qū)動(dòng)、易于實(shí)現(xiàn)全彩色顯示的特點(diǎn),目前已經(jīng)被廣泛應(yīng)用在便攜式電腦、數(shù)字?jǐn)z像機(jī)、pda移動(dòng)通信工具等眾多領(lǐng)域。 (2)、液晶顯示器的分類 液晶顯示的分類方法有很多種,通??砂雌滹@示方式分為段式、字符式、點(diǎn)陣式等。除了黑白顯示外,液晶顯示器還有多灰度有彩色顯示等。如果根據(jù)驅(qū)動(dòng)方式來(lái)分,可以分為靜態(tài)驅(qū)動(dòng)(static)、單純矩陣驅(qū)動(dòng)(simplematrix)和主動(dòng)矩陣驅(qū)動(dòng)(activematrix)三種。液晶顯示器各種圖形的顯示原理:線段的顯示點(diǎn)陣圖形式液晶由mn個(gè)顯示單元組成,假設(shè)lcd顯示屏有64行,每行有128列,每8列對(duì)應(yīng)1字節(jié)的8位,即每行由16字節(jié),共168=128個(gè)點(diǎn)組成,屏上6416個(gè)顯示單元與顯示ram區(qū)1024字節(jié)相對(duì)應(yīng),每一字節(jié)的內(nèi)容和顯示屏上相應(yīng)位置的亮暗對(duì)應(yīng)。例如屏的第一行的亮暗由ram區(qū)的000h00fh的16字節(jié)的內(nèi)容決定,當(dāng)(000h)=ffh時(shí),則屏幕的左上角顯示一條短亮線,長(zhǎng)度為8個(gè)點(diǎn);當(dāng)(3ffh)=ffh時(shí),則屏幕的右下角顯示一條短亮線;當(dāng)(000h)=ffh,(001h)=00h,(002h)=00h,(00eh)=00h,(00fh)=00h時(shí),則在屏幕的頂部顯示一條由8段亮線和8條暗線組成的虛線。這就是lcd顯示的基本原理。字符的顯示用lcd顯示一個(gè)字符時(shí)比較復(fù)雜,因?yàn)橐粋€(gè)字符由68或88點(diǎn)陣組成,既要找到和顯示屏幕上某幾個(gè)位置對(duì)應(yīng)的顯示ram區(qū)的8字節(jié),還要使每字節(jié)的不同位為“1”,其它的為“0”,為“1”的點(diǎn)亮,為“0”的不亮。這樣一來(lái)就組成某個(gè)字符。但由于內(nèi)帶字符發(fā)生器的控制器來(lái)說(shuō),顯示字符就比較簡(jiǎn)單了,可以讓控制器工作在文本方式,根據(jù)在lcd上開(kāi)始顯示的行列號(hào)及每行的列數(shù)找出顯示ram對(duì)應(yīng)的地址,設(shè)立光標(biāo),在此送上該字符對(duì)應(yīng)的代碼即可。 (3)原理圖如下: 表2-2-77、a/d轉(zhuǎn)換模塊: adc0804工作原理: (1)、(a/d轉(zhuǎn)換概念:即模數(shù)轉(zhuǎn)換(analog to digital),輸入模擬量(比如電壓信號(hào)),輸出一個(gè)與模擬量相對(duì)應(yīng)的數(shù)字量(常為二進(jìn)制形式)。例如參考電壓vref為5v,采用8位的模數(shù)轉(zhuǎn)換器時(shí),當(dāng)輸入電壓為0v時(shí),輸出的數(shù)字量為0000 0000,當(dāng)輸入的電壓為5v時(shí),輸出的數(shù)字量為1111 1111。當(dāng)輸入的電壓從從0v到5v變化時(shí),輸出的數(shù)字量從0000 0000到1111 1111變化。這樣每個(gè)輸入電壓值對(duì)應(yīng)一個(gè)輸出數(shù)字量,即實(shí)現(xiàn)了模數(shù)轉(zhuǎn)換。 (3)、分辨率概念:分辨率是指使輸出數(shù)字量變化1時(shí)的輸入模擬量,也就是使輸出數(shù)字量變化一個(gè)相鄰數(shù)碼所需輸入模擬量的變化值。分辨率與a/d轉(zhuǎn)換器的位數(shù)有確定的關(guān)系,可以表示成fs / 2 n 。fs表示滿量程輸入值,n為a/d轉(zhuǎn)換器的位數(shù)。例如,對(duì)于5v的滿量程,采用4位的adc時(shí),分辨率為5v/16=0.3125v (也就是說(shuō)當(dāng)輸入的電壓值每增加0.3125v,輸出的數(shù)字量增加;采用8位的adc時(shí),分辨率為5v/25619.5mv(也就是說(shuō)當(dāng)輸入的電壓值每增加19.5mv,則輸出的數(shù)字量增加1);當(dāng)采用12位的adc時(shí),分辨率則為5v/40961.22mv(也就是說(shuō)當(dāng)輸入的電壓值每增加1.22mv ,則輸出的數(shù)字量增加1)。顯然,位數(shù)越多,分辨率就越高。 (4)、adc0804引腳功能:cs:芯片片選信號(hào),低電平有效。即cs=0時(shí),該芯片才能正常工作,高電平時(shí)芯片不工作。在外接多個(gè)adc0804芯片時(shí),該信號(hào)可以作為選擇地址使用,通過(guò)不同的地址信號(hào)使能不同的adc0804芯片,從而可以實(shí)現(xiàn)多個(gè)adc通道的分時(shí)復(fù)用。wr:?jiǎn)?dòng)adc0804進(jìn)行adc采樣,該信號(hào)低電平有效,即wr信號(hào)由低電平變成高電平時(shí),觸發(fā)一次adc轉(zhuǎn)換。rd:低電平有效,即rd=0時(shí),dac0804把轉(zhuǎn)換完成的數(shù)據(jù)加載到db口,可以通過(guò)數(shù)據(jù)端口db0db7讀出本次的采樣結(jié)果。vin(+)和vin(-):模擬電壓輸入端,單邊輸入時(shí)模擬電壓輸入接vin(+)端,vin(-)端接地。雙邊輸入時(shí)vin(+)、vin(-)分別接模擬電壓信號(hào)的正端和負(fù)端。當(dāng)輸入的模擬電壓信號(hào)存在“零點(diǎn)漂移電壓”時(shí),可在vin(-)接一等值的零點(diǎn)補(bǔ)償電壓,變換時(shí)將自動(dòng)從vin(+)中減去這一電壓。vref/2:參考電壓接入引腳,該引腳可外接電壓也可懸空,若外接電壓,則adc的參考電壓為該外界電壓的兩倍,如不外接,則vref與vcc共用電源電壓,此時(shí)adc的參考電壓即為電源電壓vcc的值。clkin和clkr:外接rc振蕩電路產(chǎn)生模數(shù)轉(zhuǎn)換器所需的時(shí)鐘信號(hào),時(shí)鐘頻率clk = 1/1.1rc,一般要求頻率范圍100khz1460khz。agnd和dgnd:分別接模擬地和數(shù)字地。 intr:轉(zhuǎn)換結(jié)束輸出信號(hào),低電平有效,當(dāng)一次a/d轉(zhuǎn)換完成后,將引起intr=0,實(shí)際應(yīng)用時(shí),該引腳應(yīng)與微處理器的外部中斷輸入引腳相連(如51單片機(jī)的int0,int1腳),當(dāng)產(chǎn)生intr信號(hào)有效時(shí),還需等待rd=0才能正確讀出a/d轉(zhuǎn)換結(jié)果,若adc0804單獨(dú)使用,則可以將intr引腳懸空。db0db7:輸出a/d轉(zhuǎn)換后的8位二進(jìn)制結(jié)果。 (5)、 adc0804工作過(guò)程: a.啟動(dòng)轉(zhuǎn)換:由圖2-2-8中的上部“figure 10a”可知,在cs信號(hào)為低電平的情況下,將wr引腳先由高電平變成低電平,經(jīng)過(guò)至少tw(wr)i 延時(shí)后,再將wr引腳拉成高電平,即啟動(dòng)了一次ad轉(zhuǎn)換。 b延時(shí)等待轉(zhuǎn)換結(jié)束:依然由圖6中的上部“figure 10a”可知,由拉低wr信號(hào)啟動(dòng)ad采樣后,經(jīng)過(guò)1到8個(gè)tclk+internal tc延時(shí)后,ad轉(zhuǎn)換結(jié)束,因此,啟動(dòng)轉(zhuǎn)換后必須加入一個(gè)延時(shí)以等待ad采樣結(jié)束。 c.讀取轉(zhuǎn)換結(jié)果:由圖2-2-8的下部“figure 10b”可知,采樣轉(zhuǎn)換完畢后,在cs信號(hào)為低的前提下,將rd腳由高電平拉成低電平后,經(jīng)過(guò)tacc的延時(shí)即可從db腳讀出有效的采樣結(jié)果。圖2-2-8:adc0804手冊(cè)給出的adc轉(zhuǎn)換時(shí)序圖(6)原理圖如下: 圖2-2-98、矩陣鍵盤原理及電路圖 (1)、矩陣鍵盤又稱為行列式鍵盤,它是用4條i/o線作為行線,4條i/o線作為列線組成的鍵盤。在行線和列線的每一個(gè)交叉點(diǎn)上,設(shè)置一個(gè)按鍵。這樣鍵盤中按鍵的個(gè)數(shù)是44個(gè)。這種行列式鍵盤結(jié)構(gòu)能夠有效地提高單片機(jī)系統(tǒng)中i/o口的利用率。 (2)、44矩陣鍵盤的編程方法:先讀取鍵盤的狀態(tài),得到按鍵的特征編碼。先從p1口的高四位輸出低電平,低四位輸出高電平,從p1口的低四位讀取鍵盤狀態(tài)。再?gòu)膒1口的低四位輸出低電平,高四位輸出高電平,從p1口的高四位讀取鍵盤狀態(tài)。將兩次讀取結(jié)果組合起來(lái)就可以得到當(dāng)前按鍵的特征編碼。使用上述方法我們得到16個(gè)鍵的特征編碼。舉例說(shuō)明如何得到按鍵的特征編碼: 假設(shè)“1”鍵被按下,找其按鍵的特征編碼。從p1口的高四位輸出低電平,即p1.4p1.7為輸出口。低四位輸出高電平,即p1.0p1.3為輸入口。讀p1口的低四位狀態(tài)為“1101”,其值為“0dh”。再?gòu)膒1口的高四位輸出高電平,即p1.4p1.7為輸入口。低四位輸出低電平,即p10p13為輸出口,讀p1口的高四位狀態(tài)為“1110”,其值為“e0h”。將兩次讀出的p0口狀態(tài)值進(jìn)行邏輯或運(yùn)算就得到其按鍵的特征編碼為“edh”。用同樣的方法可以得到其它15個(gè)按鍵的特征編碼。 (3)原理圖如下: 圖2-2-102.3軟件部分的設(shè)計(jì): 1、計(jì)時(shí)模塊流程圖如下圖所示。保護(hù)現(xiàn)場(chǎng)重裝定時(shí)器初值循環(huán)次數(shù)減1否滿20次?是秒單元加1否60s到?是秒單元清0,分單元加1否60分到?是分單元清0,時(shí)單元加1否24小時(shí)到?是時(shí)單元清0恢復(fù)現(xiàn)場(chǎng)返回 2、電子鐘c語(yǔ)言程序如下: /*lcd數(shù)字中顯示,時(shí),分,秒手動(dòng)按鍵可調(diào),按下s4時(shí),光標(biāo)第一次顯示到秒,此刻再按s8秒加1,按s12秒減1,同來(lái)可調(diào)時(shí),分,當(dāng)時(shí)調(diào)節(jié)完后,再按s4依次,光標(biāo)消失,數(shù)字鐘開(kāi)始走*/#include#define uchar unsigned char#define uint unsigned intsbit dula=p26;/關(guān)閉所有數(shù)碼管和二極管sbit wela=p27;sbit lcdrs=p35; /申明lcd使能端sbit lcden=p34;sbit s1=p30;sbit s2=p31;sbit s3=p32;sbit rd=p37;uchar code table=dx zhao-wu-long;uchar code table1= 00:00:00;uchar count,num,s1num; char shi,fen,miao;void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write_com(uchar com)/寫指令lcdrs=0; p0=com; delay(5); lcden=1; delay(5); lcden=0;void write_date(uchar date) /寫數(shù)據(jù)lcdrs=1; p0=date; delay(5); lcden=1; delay(5);lcden=0;void init() /初始化函數(shù)dula=0;wela=0;lcden=0; write_com(0x38); /設(shè)置顯示16*2,5*7點(diǎn)陣,8位數(shù)據(jù)接口 write_com(0x0c); /設(shè)置光標(biāo) write_com(0x06); /設(shè)置移位 write_com(0x01); /顯示清屏 write_com(0x80); for(num=0;num15;num+) /第一行顯示的數(shù)組 write_date(tablenum);delay(5); write_com(0x80+0x40);/第二行顯示數(shù)組 for(num=0;num12;num+) write_date(table1num);delay(5);tmod=0x01; /選擇定時(shí)器t0,工作方式1th0=(65536-50000)/256; /初始化tl0=(65536-50000)%256;ea=1; /開(kāi)總中斷et0=1; /打開(kāi)t0中斷tr0=1; /啟動(dòng)t0void write_sfm(uchar add,uchar date)/定位顯示數(shù)據(jù)函數(shù) uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge);void keyscan() /鍵盤掃描函數(shù)rd=0; if(s1=0) delay(1);if(s1=0); s1num+; while(!s1); /松手檢測(cè) if(s1num=1) tr0=0; write_com(0x80+0x40+10); /時(shí)間調(diào)整 write_com(0x0f); if(s1num=2) /調(diào)整分 write_com(0x80+0x40+7); if(s1num=3) /調(diào)整秒 write_com(0x80+0x40+4); if(s1num=4) tr0=1; write_com(0x0c); s1num=0; if(s1num!=0) if(s2=0) /s2按下時(shí)時(shí)分秒相應(yīng)的加1 delay(5);if(s2=0) while(!s2); if(s1num=1) miao+; /按s2秒加1 if(miao=60)miao=0; write_sfm(10,miao); write_com(0x80+0x40+10); if(s1num=2) fen+; /分加1 if(fen=60)fen=0; write_sfm(7,fen); write_com(0x80+0x40+7); if(s1num=3) shi+; /時(shí)加1 if(shi=24) shi=0; write_sfm(4,shi); write_com(0x80+0x40+4); if(s3=0) /按下s3鍵時(shí)分時(shí)秒 減1 delay(5);if(s3=0) while(!s3); if(s1num=1) miao-; /秒減1 if(miao=-1) miao=59; write_sfm(10,miao); write_com(0x80+0x40+10); if(s1num=2) fen-; if(fen=-1) fen=59 /分減1 write_sfm(7,fen); write_com(0x80+0x40+7); if(s1num=3) shi-;/時(shí)時(shí) 減1 if(shi=-1) shi=23; write_sfm(4,shi); write_com(0x80+0x40+4); void main() init(); tmod=0x01; /選擇定時(shí)器t0,工作方式0 th0=(65536-50000)/256; /初始化 tl0=(65536-50000)%256; ea=1; /開(kāi)總中斷 et0=1; /打開(kāi)t0中斷 tr0=1; /啟動(dòng)t0 while(1) keyscan(); if(count=20) count=0;miao+; if(miao=60) miao=0; fen+; if(fen=60) fen=0; shi+;if(shi=24)shi=0;write_sfm(4,shi); write_sfm(7,fen); write_sfm(10,miao);void time0() interrupt 1 /中斷函數(shù)th0=(65536-50000)/256; tl0=(65536-50000)%256; /重裝初值count+;3.a/d轉(zhuǎn)換電路c程序如下: /*調(diào)節(jié)w3電位器adc0804模數(shù)轉(zhuǎn)換后的數(shù)字量會(huì)顯示在數(shù)碼管上*/#include #define uchar unsigned char #define uint unsigned intsbit wr=p36;sbit rd=p37;sbit wela=p27;sbit dula=p26;sbit dio=p25;uchar dispbuf6;uchar code disptab=0x3f,0x6,0x5b,0x4f,0x66,0x6d,0x7d,0x27,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x0;uchar code dispbit=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;uchar a;void delay(uint x)uchar i,j;for(i=x;i0;i-)for(j=110;j0;j-);void init_timer0()tmod=0x01;th0=(65535-5000)/256;tl0=(65535-5000)%256;ea=1;et0=1;tr0=1;void timer0() interrupt 1uchar tmp;staticuchar count;p0|=0x3f; /關(guān)閉所有數(shù)碼管,wela=1;tmp=dispbitcount; /數(shù)碼管位選數(shù)組p0&=tmp;wela=0;dula=1;t
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 房地產(chǎn)買賣合同
- 車輛駕駛承包合同范本
- 外貿(mào)代理合同仲裁條款
- 正規(guī)個(gè)人借款合同范本
- 無(wú)償借用車間合同范本
- 綠化綠植買賣合同范本
- 2025合法的工程合同樣式
- 專利申請(qǐng)委托合同書(shū)樣本
- 項(xiàng)目咨詢服務(wù)合同范本
- 貨物運(yùn)輸公司的勞務(wù)合同
- 保安服務(wù)項(xiàng)目信息反饋溝通機(jī)制
- 全國(guó)各省(直轄市、自治區(qū))市(自治州、地區(qū))縣(縣級(jí)市)區(qū)名稱一覽表
- 《團(tuán)隊(duì)介紹模板》課件
- 常用中醫(yī)適宜技術(shù)目錄
- 沖壓模具價(jià)格估算方法
- 碳納米管應(yīng)用研究
- 運(yùn)動(dòng)技能學(xué)習(xí)與控制課件第十一章運(yùn)動(dòng)技能的練習(xí)
- 蟲(chóng)洞書(shū)簡(jiǎn)全套8本
- 2023年《反電信網(wǎng)絡(luò)詐騙法》專題普法宣傳
- 小學(xué)數(shù)學(xué)五年級(jí)上、下冊(cè)口算題大全
- 和平精英電競(jìng)賽事
評(píng)論
0/150
提交評(píng)論