基于ATmega16單片機(jī)的電子時(shí)鐘設(shè)計(jì)畢業(yè)設(shè)計(jì)_第1頁(yè)
基于ATmega16單片機(jī)的電子時(shí)鐘設(shè)計(jì)畢業(yè)設(shè)計(jì)_第2頁(yè)
基于ATmega16單片機(jī)的電子時(shí)鐘設(shè)計(jì)畢業(yè)設(shè)計(jì)_第3頁(yè)
基于ATmega16單片機(jī)的電子時(shí)鐘設(shè)計(jì)畢業(yè)設(shè)計(jì)_第4頁(yè)
基于ATmega16單片機(jī)的電子時(shí)鐘設(shè)計(jì)畢業(yè)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于atmega16單片機(jī)的電子時(shí)鐘設(shè)計(jì)物理與電子工程學(xué)院 電子信息科學(xué)與技術(shù)專業(yè)(職教) 2009級(jí) 羅德龍指導(dǎo)教師 宋培森摘 要:隨著科學(xué)技術(shù)的發(fā)展電子時(shí)鐘在日常的生活中應(yīng)用的相當(dāng)?shù)亩?。本文介紹了一款基于atmega16單片機(jī)為主控芯片的數(shù)字電子時(shí)鐘設(shè)計(jì)。其中主要包括atmega16單片機(jī)、獨(dú)立鍵盤、ds1302芯片、lcd1602液晶顯示、以及相關(guān)外圍電路并在protues仿真平臺(tái)上運(yùn)行。關(guān)鍵詞:atmega16單片機(jī);ds1302芯片;獨(dú)立鍵盤;lcd1602 abstract:with the development of science and technology electro

2、nic clock in the daily life of the application is quite long. this paper introduces a single chip processor as the main control chip based on atmega16 digital electronic clock design. include atmega16 microcontroller, independent keyboard, ds1302 chip lcd1602, liquid crystal display (lcd), and relat

3、ed peripheral circuit and in protues simulation platform operation. key words:atmega16 microcontroller;ds1302 chip;independent keyboard;lcd1602 1 前言液晶顯示器以其微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧等許多優(yōu)點(diǎn),在袖珍式儀表和低功耗應(yīng)用系統(tǒng)中得到越來越廣泛的應(yīng)用。本文中詳細(xì)介紹了基于atmega16單片機(jī)控制下的162液晶屏顯示設(shè)計(jì),此設(shè)計(jì)基于ds1302的時(shí)鐘電路方便實(shí)用,電路設(shè)計(jì)簡(jiǎn)單。2 avr單片機(jī)介紹2.1 avr單片機(jī)簡(jiǎn)介avr單片機(jī)是1

4、997年由atmel公司研發(fā)出的增強(qiáng)型內(nèi)置flash的risc精簡(jiǎn)指令集高速8位單片機(jī)。avr的單片機(jī)可以廣泛應(yīng)用于計(jì)算機(jī)外部設(shè)備、工業(yè)實(shí)時(shí)控制、儀表儀器、通訊設(shè)備、家用電器等各個(gè)領(lǐng)域。1997年,由atmel公司挪威設(shè)計(jì)中心的a先生和v先生,利用atmel公司的flash新技術(shù),共同研發(fā)出risc精簡(jiǎn)指令集高速8位單片機(jī),簡(jiǎn)稱avr。2.2 atmega16簡(jiǎn)介atmega16是基于增強(qiáng)的avr risc結(jié)構(gòu)的低功耗8 位cmos微控制器。由于其先進(jìn)的指令集以及單時(shí)鐘周期指令執(zhí)行時(shí)間,atmega16 的數(shù)據(jù)吞吐率高達(dá)1 mips/mhz,從而可以減緩系統(tǒng)在功耗和處理速度之間的矛盾。atme

5、ga16 avr 內(nèi)核具有豐富的指令集和32 個(gè)通用工作寄存器。所有的寄存器都直接與運(yùn)算邏單元(alu) 相連接,使得一條指令可以在一個(gè)時(shí)鐘周期內(nèi)同時(shí)訪問兩個(gè)獨(dú)立的寄存器。這種結(jié)構(gòu)大大提高了代碼效率,并且具有比普通的cisc 微控制器最高至10 倍的數(shù)據(jù)吞吐率。atmega16 有如下特點(diǎn):16k字節(jié)的系統(tǒng)內(nèi)可編程flash(具有同時(shí)讀寫的能力),512 字節(jié)eeprom,1k 字節(jié)sram,32 個(gè)通用i/o 口線,32 個(gè)通用工作寄存器,用于邊界掃描的jtag 接口,支持片內(nèi)調(diào)試與編程,三個(gè)具有比較模式的靈活的定時(shí)器/ 計(jì)數(shù)器(t/c),片內(nèi)/外中斷,可編程串行usart,有起始條件檢測(cè)器

6、的通用串行接口,8路10位具有可選差分輸入級(jí)可編程增益的adc ,具有片內(nèi)振蕩器的可編程看門狗定時(shí)器,一個(gè)spi串行端口,以及六個(gè)可以通過軟件進(jìn)行選擇的省電模式。2.3 atmega16產(chǎn)品特性高性能、低功耗的8位avr微處理器先進(jìn)的risc 結(jié)構(gòu)131條指令大多數(shù)指令執(zhí)行時(shí)間為單個(gè)時(shí)鐘周期32個(gè)8位通用工作寄存器全靜態(tài)工作工作于16mhz時(shí)性能高達(dá)16mips只需兩個(gè)時(shí)鐘周期的硬件乘法器非易失性程序和數(shù)據(jù)存儲(chǔ)器16k 字節(jié)的系統(tǒng)內(nèi)可編程flash,擦寫壽命: 10,000次具有獨(dú)立鎖定位的可選boot代碼區(qū),通過片上boot程序?qū)崿F(xiàn)系統(tǒng)內(nèi)編程,真正的同時(shí)讀寫操作512 字節(jié)的eeprom,擦

7、寫壽命: 100,000次1k字節(jié)的片內(nèi)sram可以對(duì)鎖定位進(jìn)行編程以實(shí)現(xiàn)用戶程序的加密jtag 接口( 與ieee 1149.1 標(biāo)準(zhǔn)兼容)符合jtag 標(biāo)準(zhǔn)的邊界掃描功能支持?jǐn)U展的片內(nèi)調(diào)試功能通過jtag 接口實(shí)現(xiàn)對(duì)flash、eeprom、熔絲位和鎖定位的編程外設(shè)特點(diǎn)兩個(gè)具有獨(dú)立預(yù)分頻器和比較器功能的8位定時(shí)器/計(jì)數(shù)器一個(gè)具有預(yù)分頻器、比較功能和捕捉功能的16位定時(shí)器/計(jì)數(shù)器具有獨(dú)立振蕩器的實(shí)時(shí)計(jì)數(shù)器rtc四通道pwm8路10位adc,8個(gè)單端通道,2個(gè)具有可編程增益(1x, 10x, 或200x)的差分通道面向字節(jié)的兩線接口兩個(gè)可編程的串行usart可工作于主機(jī)/ 從機(jī)模式的spi串行

8、接口具有獨(dú)立片內(nèi)振蕩器的可編程看門狗定時(shí)器片內(nèi)模擬比較器特殊的處理器特點(diǎn)上電復(fù)位以及可編程的掉電檢測(cè)片內(nèi)經(jīng)過標(biāo)定的rc振蕩器片內(nèi)/片外中斷源6種睡眠模式: 空閑模式、adc 噪聲抑制模式、省電模式、掉電模式、standby 模式以及擴(kuò)展的standby模式 u i/o和封裝32個(gè)可編程的i/o口2.4 工作電壓:atmega16l:2.7 - 5.5vatmega16: 4.5 - 5.5v2.5 atmega16 引腳功能vcc 電源正gnd電源地端口a (pa7.pa0)做為a/d轉(zhuǎn)換器的模擬輸入端。端口a 為8 位雙向i/o 口,具有可編程的內(nèi)部上拉電阻。其輸出緩沖器具atmega引腳圖

9、有對(duì)稱的驅(qū)動(dòng)特性,可以輸出和吸收大電流。作為輸入使用時(shí),若內(nèi)部上拉電阻使能,端口被外部電路拉低時(shí)將輸出電流。在復(fù)位過程中,即使系統(tǒng)時(shí)鐘還未起振,端口a 處于高阻狀態(tài)。端口b(pb7.pb0)為8位雙向i/o 口,具有可編程的內(nèi)部上拉電阻。其輸出緩沖器具有對(duì)稱的驅(qū)動(dòng)特性,可以輸出和吸收大電流。作為輸入使用時(shí),若內(nèi)部上拉電阻使能,端口被外部電路拉低時(shí)將輸出電流。在復(fù)位過程中,即使系統(tǒng)時(shí)鐘還未起振,端口b 處于高阻狀態(tài)。端口b也可以用做其他不同的特殊功能.端口c(pc7.pc0) 為8 位雙向i/o 口,具有可編程的內(nèi)部上拉電阻。其輸出緩沖器具有對(duì)稱的驅(qū)動(dòng)特性,可以輸出和吸收大電流。作為輸入使用時(shí),

10、若內(nèi)部上拉電阻使能,端口被外部電路拉低時(shí)將輸出電流。在復(fù)位過程中,即使系統(tǒng)時(shí)鐘還未起振,端口c 處于高阻狀態(tài)。如果jtag接口使能,即使復(fù)位出現(xiàn)引腳 pc5(tdi)、 pc3(tms)與 pc2(tck)的上拉電阻被激活。端口c 也可以用做其他不同的特殊功能。 端口d(pd7.pd0)為8 位雙向i/o 口,具有可編程的內(nèi)部上拉電阻。其輸出緩沖器具有對(duì)稱的驅(qū)動(dòng)特性,可以輸出和吸收大電流。作為輸入使用時(shí),若內(nèi)部上拉電阻使能,則端口被外部電路拉低時(shí)將輸出電流。在復(fù)位過程中,即使系統(tǒng)時(shí)鐘還未起振,端口d 處于高阻狀態(tài)。端口d 也可以用做其他不同的特殊功能.reset 復(fù)位輸入引腳。持續(xù)時(shí)間超過最小

11、門限時(shí)間的低電平將引起系統(tǒng)復(fù)位。持續(xù)時(shí)間小于門限間的脈沖不能保證可靠復(fù)位。xtal1 反向振蕩放大器與片內(nèi)時(shí)鐘操作電路的輸入端。xtal2 反向振蕩放大器的輸出端。avcc avcc是端口a與a/d轉(zhuǎn)換器的電源。不使用adc時(shí),該引腳應(yīng)直接與vcc連接。使用adc時(shí)應(yīng)通過一個(gè)低通濾波器與vcc 連接。aref a/d 的模擬基準(zhǔn)輸入引腳。2.6 avr單片機(jī)的應(yīng)用區(qū)域avr單片機(jī)應(yīng)用區(qū)域包括:空調(diào)控制板、打印機(jī)控制板、智能電表、智能手電筒、led控制屏和醫(yī)療設(shè)備等領(lǐng)域。3 162液晶顯示屏介紹162液晶模塊是一種用5x7點(diǎn)陣圖形來顯示字符的液晶顯示器,根據(jù)顯示的容量可以分為1行16個(gè)字、2行1

12、6個(gè)字等。3.1 162液晶屏顯示屏的引腳定義首先,我們來看162的引腳定義,162的引腳是很整齊的sip單列直插封裝。表1是液晶屏的引腳定義。表1 接口信號(hào)說明表編號(hào)符號(hào)引腳說明編號(hào)符號(hào)引腳說明1vss電源地9d2data 1/02vdd電源正極10d3data 1/03vee液晶顯示偏壓信號(hào)11d4data 1/04rs數(shù)據(jù)命令/選擇端(h/l)12d5data 1/05r/w讀/寫信號(hào)(h/l)13d6data 1/06e使能信號(hào)14d7data 1/07d0data 1/015leda背光源正極8d1data 1/016ledk背光源該液晶屏采用標(biāo)準(zhǔn)的16腳接口,我們只需要關(guān)注一下幾個(gè)

13、管腳:1 腳:vss 為地電源。 2 腳:vdd 接 5v 正電源。3腳:vee,液晶屏顯示偏壓信號(hào),用于調(diào)整液晶屏的顯示對(duì)比度,一般會(huì)外界電位器用以調(diào)整偏壓信號(hào),接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高,對(duì)比度過高時(shí)會(huì)產(chǎn)生“陰影”,使用時(shí)可以通過一個(gè)10k的電位器調(diào)整對(duì)比度。4腳:rs,數(shù)據(jù)/命令選擇端,即對(duì)寄存器進(jìn)行選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。5腳:r/w,讀寫選擇端,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。6腳:e,使能信號(hào),其實(shí)時(shí)162的逐句控制時(shí)鐘信號(hào),利用該信號(hào)的上升沿實(shí)現(xiàn)對(duì)液晶屏的數(shù)據(jù)傳輸。714腳:8位雙向數(shù)據(jù)線。15腳:背光陽(yáng)極。16腳:背光陰極。

14、3.2 162液晶顯示屏的指令說明162液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的。(說明:1為高電平、0為低電平)。162液晶屏內(nèi)部模塊共有11條控制指令,如表2所示。表2 控制命令表序號(hào)指令rsr/wd7d6d5d4d3d2d1d01清屏00000000012光標(biāo)返回000000001*3輸入方式00000001i/ds4顯示開關(guān)0000001dcb5移位000001s/cr/l*6功能設(shè)置00001dlnf*7cgram地址設(shè)置0001a5 a4 a3 a2 a1 a08ddram地址設(shè)置001a6 a5 a4 a3 a2 a1 a09忙標(biāo)志/讀地址計(jì)數(shù)器01bfac6

15、 ac5 ac4 ac3 ac2 ac1 ac010cgram/ddram數(shù)據(jù)寫10寫數(shù)據(jù)11cgram/ddram數(shù)據(jù)讀11讀數(shù)據(jù)指令1:清顯示,指令碼01h,光標(biāo)復(fù)位到地址00h位置 指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00h 指令3:光標(biāo)和顯示模式設(shè)置 i/d:光標(biāo)移動(dòng)方向,高電平右移,低電平左移s: 屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效 指令4:顯示開關(guān)控制。 d:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示c:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo)b:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍 指令5:光標(biāo)或顯示移位 s/c:高電平時(shí)移動(dòng)

16、顯示的文字,低電平時(shí)移動(dòng)光標(biāo) 指令6:功能設(shè)置命令 dl:高電平時(shí)為4位總線,低電平時(shí)為8位總線 n:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 f: 低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符 指令7:字符發(fā)生器ram地址設(shè)置 指令8:ddram地址設(shè)置 指令9:讀忙信號(hào)和光標(biāo)地址 bf:忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。 指令10:寫數(shù)據(jù) 指令11:讀數(shù)據(jù) 3.3 162液晶顯示屏的時(shí)序在操作液晶屏,我們應(yīng)該對(duì)它的工作時(shí)序非常熟悉,這里介紹了162液晶顯示屏的兩個(gè)寫時(shí)序:寫指令和寫入數(shù)據(jù)。寫指令,即設(shè)置162液晶顯示屏的工作方式:需要把

17、rs置為低電平,rw置為低電平,然后將數(shù)據(jù)送到數(shù)據(jù)口d0d7,最后e引腳一個(gè)高脈沖將數(shù)據(jù)寫入。寫數(shù)據(jù),即在液晶屏上實(shí)現(xiàn)顯示時(shí):需要把rs置為高電平,rw置為低電平,然后將數(shù)據(jù)送到d0d7,最后e引腳一個(gè)高脈沖將數(shù)據(jù)寫入。圖1 162液晶顯示屏?xí)r序圖注意:162液晶顯示模塊是一個(gè)慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。當(dāng)然,162提供了讀忙信號(hào)的方法:當(dāng)rs和rw共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)rs為低電平rw為高電平時(shí)可以讀忙信號(hào)。3.4 162液晶屏的ram地址映射及標(biāo)準(zhǔn)字庫(kù)表液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(cgrom)已經(jīng)存儲(chǔ)了1

18、28個(gè)不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫和常用的符號(hào)等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“a”的代碼是01000001b(41h),顯示時(shí)模塊把地址41h中的點(diǎn)陣字符圖形顯示出來,我們就能看到字母“a” 。要顯示字符時(shí)要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符。液晶屏第一行的首地址是80h,第二行的首地址是c0h。表3是液晶屏的grom中的字符代碼與圖形對(duì)應(yīng)關(guān)系。表3 字符代碼與圖形對(duì)應(yīng)表高位低位00000010001101000101011001110000gram0pp0001!1aqaq0010”2brbr0011#3cscs0100$4

19、dtdt0101%5eueu0110&6fvfv01117gwgw1000(8hxhx1001)9iyiy1010*:jzjz1011+;kk1100,nn1111/?o_o4 ds1302芯片介紹 ds1302是美國(guó)dallas公司推出的一種高性能、低功耗的實(shí)時(shí)時(shí)鐘芯片,附加31字節(jié)靜態(tài)ram,采用spi 三線接口與cpu進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)和ram數(shù)據(jù)。實(shí)時(shí)時(shí)鐘可提供秒、分、時(shí)、日、星期、月和年,一個(gè)月小與31天時(shí)可以自動(dòng)調(diào)整,且具有閏年補(bǔ)償功能。工作電壓寬達(dá)2.55.5v 。采用雙電源供電(主電源和備用電源),可設(shè)置備用電源充電方式,提供了對(duì)后背電源進(jìn)

20、行涓細(xì)電流充電的能力。ds1302的外部引腳分配如圖2所示及內(nèi)部結(jié)構(gòu)如圖3 所示。ds1302用于數(shù)據(jù)記錄,特別是對(duì)某些具有特殊意義的數(shù)據(jù)點(diǎn)的記錄上,能實(shí)現(xiàn)數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時(shí)間同時(shí)記錄,因此廣泛應(yīng)用于測(cè)量系統(tǒng)中。圖2 引腳圖圖3 內(nèi)部結(jié)構(gòu)各引腳的功能為: vcc1 :主電源;vcc2:備份電源。當(dāng)vcc2vcc1+0.2v時(shí),由vcc2向ds1302供電,當(dāng)vcc2 vcc1時(shí),由vcc1向ds1302供電。 sclk:串行時(shí)鐘,輸入,控制數(shù)據(jù)的輸入與輸出; i/o :三線接口時(shí)的雙向數(shù)據(jù)線; ce :輸入信號(hào),在讀、寫數(shù)據(jù)期間,必須為高。該引腳有兩個(gè)功能:第一,ce開始控制字訪問移位寄存器

21、的控制邏輯;其次,ce提供結(jié)束單字節(jié)或多字節(jié)數(shù)據(jù)傳輸?shù)姆椒ā?ds1302有下列幾組寄存器: ds1302有關(guān)日歷、時(shí)間的寄存器共有12個(gè),其中有7 個(gè)寄存器(讀時(shí)81h 8dh ,寫時(shí)80h 8ch ),存放的數(shù)據(jù)格式為bcd碼形式。 表4 ds1302有關(guān)日歷、時(shí)間的寄存器度寄存器寫寄存器bit7bit6bit5bit4bit3bit2bit1bit0范圍81h80hch10秒秒005983h82h10分分005985h84h12/24010a/p時(shí)時(shí)1-12/0-2387h86h0010日日13189h88h00010月月1128bh8ah00000周日178dh8ch10年年00998

22、fh8ehwp0000000小時(shí)寄存器(85h 、84h )的位7 用于定義ds1302是運(yùn)行于12小時(shí)模式還是24小時(shí)模式。當(dāng)為高時(shí),選擇12小時(shí)模式。在12小時(shí)模式時(shí),位5 是 ,當(dāng)為 1 時(shí),表示 pm。在 24小時(shí)模式時(shí),位5 是第二個(gè)10小時(shí)位。 秒寄存器(81h 、80h )的位 7 定義為時(shí)鐘暫停標(biāo)志(ch)。當(dāng)該位置為1 時(shí),時(shí)鐘振蕩器停止,ds1302處于低功耗狀態(tài);當(dāng)該位置為0 時(shí),時(shí)鐘開始運(yùn)行。 控制寄存器(8fh 、8eh )的 位7 是寫保護(hù)位(wp),其它 7 位均置為0 。在任何的對(duì)時(shí)鐘和ram的寫操作之前,wp位必須為0 。當(dāng)wp位為1 時(shí),寫保護(hù)位防止對(duì)任一寄

23、存器的寫操作。 ds1302有關(guān)ram的地址 ds1302 中附加31字節(jié)靜態(tài)ram的地址見表所示。表5 靜態(tài)ram讀地址寫地址數(shù)據(jù)范圍c1hc0h00ffhc3hc2h00ffhc5hc4h00ffh、fdhfch00ffhds1302的工作模式寄存器 所謂突發(fā)模式是指一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)和ram數(shù)據(jù)。表6 工作模式工作模式寄存器讀寄存器寫寄存器時(shí)鐘突發(fā)模式寄存器clock burstbfhbehram突發(fā)模式寄存器ram burstffhfeh此外,ds1302還有充電寄存器等。2 讀寫時(shí)序說明 ds1302是spi 總線驅(qū)動(dòng)方式。它不僅要向寄存器寫入控制字,還需要讀取相應(yīng)寄存器的數(shù)

24、據(jù)。 要想與ds1302通信,首先要先了解ds1302的控制字。1rama4a3a2a1a0rdckwr控制字(即地址及命令字節(jié))控制字的最高有效位(位7 )必須是邏輯 1 ,如果它為 0 ,則不能把數(shù)據(jù)寫入到ds1302中。 位6 :如果為 0 ,則表示存取日歷時(shí)鐘數(shù)據(jù),為1 表示存取ram數(shù)據(jù); 位5 至位1 (a4a0):指示操作單元的地址; 位0 (最低有效位):如為0 ,表示要進(jìn)行寫操作,為1 表示進(jìn)行讀操作。 控制字總是從最低位開始輸出。在控制字指令輸入后的下一個(gè)sclk 時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫入ds1302,數(shù)據(jù)輸入從最低位(0位)開始。同樣,在緊跟8 位的控制字指令后的下一個(gè)

25、sclk 脈沖的下降沿,讀出ds1302的數(shù)據(jù),讀出的數(shù)據(jù)也是從最低位到最高位。數(shù)據(jù)讀寫時(shí)序如圖4 。圖4 數(shù)據(jù)讀寫時(shí)序5 仿真軟件介紹5.1 protues簡(jiǎn)介protues軟件是英國(guó)labcenter electronics公司出版的eda工具軟件。它不僅具有其它eda工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。proteus是世界上著名的eda工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到pcb設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。目前世界上唯一將電路仿真軟件、pcb設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái),

26、其處理器模型支持8051、hc11、pic10/12/16/18/24/30/dspic33、avr、arm、8086和msp430等。5.2 protues的特點(diǎn) 1. 原理布圖 2. pcb自動(dòng)或人工布線3. spice電路仿真 4. 互動(dòng)的電路仿真。用戶甚至可以實(shí)時(shí)采用諸如ram,rom,鍵盤,馬達(dá),led,lcd,ad/da,部分spi器件,部分iic器件。 5. 仿真處理器及其外圍電路??梢苑抡?1系列、avr、pic、arm、等常用主流單片機(jī)。還可以直接在基于原理圖的虛擬原型上編程,再配合顯示及輸出,能看到運(yùn)行后輸入輸出的效果。配合系統(tǒng)配置的虛擬邏輯分析儀、示波器等,protues

27、建立了完備的電子設(shè)計(jì)開發(fā)環(huán)境。5.3 protues工作界面介紹protues的工作界面是一種標(biāo)準(zhǔn)的windows界面,如下圖所示,包括標(biāo)題欄、主菜單、標(biāo)準(zhǔn)工具欄、繪圖工具欄、狀態(tài)欄、對(duì)象選擇按鈕、預(yù)覽對(duì)象方位控制按鈕、仿真進(jìn)程控制按鈕、預(yù)覽窗口、對(duì)象選擇器窗口、圖形編輯窗口。 圖5 protues界面圖6 硬件設(shè)計(jì)6.1系統(tǒng)框圖本系統(tǒng)所包含模塊:主控芯片atmega16、lcd1602液晶顯示模塊、獨(dú)立鍵盤模塊、指示燈電路、ds1302時(shí)鐘模塊、以及電源。另外還有背光電壓顯示電路。圖6 6.2 protues仿真圖及電路原理圖protues仿真圖電路原理圖6.3 獨(dú)立鍵盤該鍵盤是三路獨(dú)立的按

28、鍵回路,當(dāng)d端口讀取的電平為高電平時(shí)不動(dòng)作,說明沒有按鍵按下;當(dāng)任意一個(gè)電路的按鍵按下時(shí),該段口讀取的電平就為低電平執(zhí)行相應(yīng)的操作。按鈕主要功能:k1:按下此按鈕可以執(zhí)行對(duì)時(shí)間的更改且相應(yīng)的時(shí)間指示燈點(diǎn)亮;對(duì)應(yīng)鍵值為:00001011。k2:按下此按鈕可以實(shí)現(xiàn)時(shí)間地址的切換并且相應(yīng)的指示燈點(diǎn)亮;對(duì)應(yīng)鍵值為:00001101。k3:按下此按鈕可以執(zhí)行對(duì)時(shí)間的增1操作,對(duì)應(yīng)鍵值為:00001110。 圖7 6.4 背光電壓顯示電位器的中間分為兩路,一路接液晶的vee端,另一路接單片機(jī)pa3端。經(jīng)過軟件處理后將值顯示在液晶屏上。模數(shù)轉(zhuǎn)換:ad轉(zhuǎn)換結(jié)果:adc=vin*1024/vrefadc 多工選

29、擇寄存器 admux圖8圖9bit 7:6 refs1:0: 參考電壓選擇如table 83所示,通過這幾位可以選擇參考電壓。如果在轉(zhuǎn)換過程中改變了它們的設(shè)置,只有等到當(dāng)前轉(zhuǎn)換結(jié)束 (adcsra寄存器的adif置位 ) 之后改變才會(huì)起作用。如果在aref引腳上施加了外部參考電壓,內(nèi)部參考電壓就不能被選用了。表7 參考電壓選擇refs1refs0參考電壓選擇00aref,內(nèi)部vref關(guān)閉01avcc,aref引腳外加濾波電容10保留112.56v的片內(nèi)基準(zhǔn)電壓源,aref引腳外加濾波電容在本文我們選擇avcc,aref引腳外加濾波電容。bit 5 adlar: adc轉(zhuǎn)換結(jié)果 左對(duì)齊adlar

30、影響adc轉(zhuǎn)換結(jié)果在adc數(shù)據(jù)寄存器中的存放形式。adlar置位時(shí)轉(zhuǎn)換結(jié)果為左對(duì)齊,否則為右對(duì)齊。adlar的改變將立即影響adc數(shù)據(jù)寄存器的內(nèi)容,不論是否有轉(zhuǎn)換正在進(jìn)行。關(guān)于這一位的完整描述請(qǐng)見p207“adc數(shù)據(jù)寄存器 adcl及adch” 。bits 4:0 mux4:0: 模擬通道與增益選擇位通過這幾位的設(shè)置,可以對(duì)連接到adc的模擬輸入進(jìn)行選擇。也可對(duì)差分通道增益進(jìn)行選擇。如果在轉(zhuǎn)換過程中改變這幾位的值,那么只有到轉(zhuǎn)換結(jié)束(adcsra寄存器的adif置位)后新的設(shè)置才有效。表8 模擬通道與增益選擇mux4.0單端輸入正差分輸入負(fù)差分輸入增益00000adc0n/a00001adc1

31、00010adc200011adc300100adc400101adc500110adc600111adc701000n/aadc0adc010x01001adc1adc010x01010adc0adc0200x01011adc1adc0200x01100adc2adc210x01101adc3adc210x01110adc2adc2200x01111adc3adc2200x10000adc0adc11x10001adc1adc11x10010adc2adc11x10011adc3adc11x10100adc4adc11x10101adc5adc11x10110adc6adc11x10111a

32、dc7adc11x11000adc0adc21x11001adc1adc21x11010adc2adc21x11011adc3adc21x11100adc4adc21x11101adc5adc21x111101.22 v (vbg)n/a111110 v (gnd)adc 控制和狀態(tài)寄存器 a adcsra圖10bit 7 aden: adc使能aden置位即啟動(dòng)adc,否則adc功能關(guān)閉。在轉(zhuǎn)換過程中關(guān)閉adc將立即中止正在進(jìn)行的轉(zhuǎn)換。bit 6 adsc: adc開始轉(zhuǎn)換在單次轉(zhuǎn)換模式下,adsc置位將啟動(dòng)一次adc轉(zhuǎn)換。在連續(xù)轉(zhuǎn)換模式下,adsc置位將啟動(dòng)首次轉(zhuǎn)換。第一次轉(zhuǎn)換(在adc啟

33、動(dòng)之后置位adsc,或者在使能adc的同時(shí)置位adsc)需要25 個(gè)adc時(shí)鐘周期,而不是正常情況下的13個(gè)。第一次轉(zhuǎn)換執(zhí)行adc初始化的工作。在轉(zhuǎn)換進(jìn)行過程中讀取adsc的返回值為1”,直到轉(zhuǎn)換結(jié)束。adsc清零不產(chǎn)生任何動(dòng)作。bit 5 adate: adc 自動(dòng)觸發(fā)使能adate置位將啟動(dòng)adc自動(dòng)觸發(fā)功能。觸發(fā)信號(hào)的上跳沿啟動(dòng)adc轉(zhuǎn)換。觸發(fā)信號(hào)源通過sfior寄存器的adc觸發(fā)信號(hào)源選擇位adts設(shè)置。bit 4 adif: adc中斷標(biāo)志在adc轉(zhuǎn)換結(jié)束,且數(shù)據(jù)寄存器被更新后,adif置位。如果adie及sreg中的全局中斷使能位i也置位,adc轉(zhuǎn)換結(jié)束中斷服務(wù)程序即得以執(zhí)行,同時(shí)

34、adif硬件清零。此外,還可以通過向此標(biāo)志寫1來清adif。要注意的是,如果對(duì)adcsra進(jìn)行讀修改寫操作,那么待處理的中斷會(huì)被禁止。這也適用于sbi及cbi指令。bit 3 adie: adc中斷使能若adie及sreg的位i置位,adc轉(zhuǎn)換結(jié)束中斷即被使能。bits 2:0 adps2:0: adc 預(yù)分頻器選擇位由這幾位來確定xtal與adc輸入時(shí)鐘之間的分頻因子。表9 預(yù)分頻adps2adps1adps0分頻因子0002001201040118100161013211064111128adc 數(shù)據(jù)寄存器 adcl 及adchadlar = 0圖11adlar = 1圖12adc轉(zhuǎn)換結(jié)束

35、后,轉(zhuǎn)換結(jié)果存于這兩個(gè)寄存器之中。如果采用差分通道,結(jié)果由2的補(bǔ)碼形式表示。讀取adcl之后,adc數(shù)據(jù)寄存器一直要等到adch也被讀出才可以進(jìn)行數(shù)據(jù)更新。因此,如果轉(zhuǎn)換結(jié)果為左對(duì)齊,且要求的精度不高于8比特,那么僅需讀取adch就足夠了。否則必須先讀出adcl再讀adch。admux寄存器的adlar及muxn會(huì)影響轉(zhuǎn)換結(jié)果在數(shù)據(jù)寄存器中的表示方式。如果adlar為1,那么結(jié)果為左對(duì)齊;反之 ( 系統(tǒng)缺省設(shè)置 ),結(jié)果為右對(duì)齊。6.5 指示燈電路每路指示燈指示功能:pc0路:秒寄存器顯示pc1路:分寄存器顯示pc2路:時(shí)寄存器顯示pc3路:日寄存器顯示pc4路:月寄存器顯示pc5路:星期寄存

36、器顯示pc6路:年寄存器顯示pd4路:是否允許調(diào)節(jié)時(shí)間顯示,燈亮為允許。 圖136.6 ds1302外圍電路22pf電容和32768hz晶振組成振蕩電路,提供ds1302正常工作頻率。vcc2為主電源,vcc1為輔助電源。rst為讀寫使能端,i/o 為三線接口時(shí)的雙向數(shù)據(jù)線,sclk為串行時(shí)鐘,輸入,控制數(shù)據(jù)的輸入與輸出。圖146.7 單片機(jī)外圍電路22pf電容和8mhz晶振組成振蕩電路,提供單片機(jī)正常工作頻率。reset為上電復(fù)位端,當(dāng)通電后單片即不管以前的程序工作在哪里,一切復(fù)位從“零”開始。avcc是端口a與a/d轉(zhuǎn)換器的電源。aref是a/d 的模擬基準(zhǔn)輸入引腳。圖157 軟件設(shè)計(jì)在前

37、面幾節(jié)中,我們了解了atmega16單片機(jī)、162液晶顯示屏與ds1302的接口設(shè)計(jì)以及液晶屏的時(shí)序,那么這部分闡述的是單片機(jī)對(duì)液晶屏顯示和ds1302的驅(qū)動(dòng)控制。軟件工作流程如下:程序流程圖8 結(jié)束語(yǔ)經(jīng)過幾個(gè)月的研究與實(shí)驗(yàn),終于完成了這篇論文。在做這個(gè)課題的時(shí)侯遇到了許多困難,大部分通過查閱資料和看書以及研究別人成功的例子就能解決了,但少部分問題任不能解決,通過老師和同學(xué)的幫助終于解決。感謝幫助我的老師和同學(xué)。參考文獻(xiàn):1 hs162-4液晶顯示使用說明資料.2 ds1302_數(shù)據(jù)手冊(cè).3 atmega16中文資料.4 proteus中文入門教程.5 賀敬凱,劉德新,管明祥.單片機(jī)系統(tǒng)設(shè)計(jì)、

38、仿真與應(yīng)用。西安電子科技大學(xué)出版社,2011.6沈文. avr單片機(jī)c語(yǔ)言開發(fā)入門指導(dǎo). 清華大學(xué)出版社,2003年.7丁化成,耿德根,李軍凱. avr單片機(jī)應(yīng)用設(shè)計(jì). 北京航空航天大學(xué)出版社,2002年.8金春林,邱慧芳,張皆喜. avr系列單片機(jī)c語(yǔ)言編程與應(yīng)用實(shí)例. 清華大學(xué)出版社,2003年.附件:/* 設(shè)計(jì)介紹:使用8mhz的晶振,ds1302芯片以及1602液晶屏。使用獨(dú)立鍵盤設(shè)置或者調(diào)節(jié)時(shí)間。13個(gè)10k的電阻,1個(gè)100歐的電阻,8個(gè)led指示燈。2個(gè)22pf的電容。*/#include #define io porta.0#define sclk porta.1#define

39、 rst porta.2#define rs porta.5#define rw porta.6#define e porta.7#define uchar unsigned char#define uint unsigned int/*uchar l_dat = base on ; uchar f_dat = atmega16 design;*/uchar set_time 7 = 0x00,0x00,0x13,0x21,0x07,0x06,0x12; /初始時(shí)間緩沖區(qū)uchar address=0x7e; /時(shí)間地址中間變量uchar qiehuan; /切換時(shí)間標(biāo)志位uchar n=0;

40、 /定義時(shí)間調(diào)節(jié)變量uchar int0=0; /定義中斷變量uchar time8 =0x00; /定義時(shí)、分、秒顯示緩沖區(qū)uchar day8=0x00; /定義年、月、日、星期顯示緩沖區(qū) int d3=0,0,0; /定義電壓顯示緩沖區(qū)/*延時(shí)函數(shù)*/void delayus(uint us) /1us延時(shí)函數(shù) uint i; us=us*5/4; /5/4是在8mhz晶振下,通過軟件仿真反復(fù)實(shí)驗(yàn)得到的數(shù)值 for(i=0;ius;i+);void delayms(uint ms) /1ms延時(shí)函數(shù) uint i,j; for( i=0;ims;i+) for(j=0;j1141;j+)

41、;/1141是在8mhz晶振下,通過軟件仿真反復(fù)實(shí)驗(yàn)得到的數(shù)值/*液晶屏判斷忙函數(shù)*/void lcd_busy() uchar temp; /定義中間變量存取從lcd讀取的值 ddrb=0x00; /定義b端口為輸入 rs=0; /選擇指令寄存器 rw=1; /進(jìn)行讀操作 do e=1; delayms(1); /延時(shí)1ms temp=pinb; /讀取b端口信號(hào) e=0; delayms(1); /延時(shí)1ms while(temp&0x80); /判斷忙標(biāo)志位是否為1 ddrb=0xff; /b端口置為輸出,為想液晶屏寫數(shù)據(jù)準(zhǔn)備/* 寫指令函數(shù)*/void lcd_wcmd(uchar c

42、md) lcd_busy(); /判斷液晶屏是否忙 delayms(1); /延時(shí)1ms rs=0; /選擇指令寄存器 rw=0; /進(jìn)行寫操作 e=0; delayms(1); /延時(shí)1ms portb=cmd; /把數(shù)據(jù)賦值給b端口 e=1; /開始寫指令 delayms(1); /延時(shí)1ms e=0; delayms(1); /延時(shí)1ms/*寫數(shù)據(jù)函數(shù)*/void lcd_wdat(uchar dat) lcd_busy(); /判斷液晶屏是否忙 delayms(1); /延時(shí)1ms rs=1; /選擇數(shù)據(jù)寄存器 rw=0; /進(jìn)行寫操作 e=0; delayms(1); /延時(shí)1ms

43、portb=dat; /把數(shù)據(jù)賦值給b端口 e=1; /開始寫數(shù)據(jù) delayms(1); /延時(shí)1ms e=0;/*lcd 初始化函數(shù)*/void lcd_init() delayms(15); /等待lcd電源穩(wěn)定 lcd_wcmd(0x38); /16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù) delayms(5); /延時(shí)5ms lcd_wcmd(0x0c); /顯示開,關(guān)光標(biāo) delayms(5); /延時(shí)5ms lcd_wcmd(0x06); /移動(dòng)光標(biāo) delayms(5); /延時(shí)5ms lcd_wcmd(0x01); /清除lcd的顯示內(nèi)容 delayms(5); /延時(shí)5ms/*寫時(shí)間

44、函數(shù)*/void ds1302writebyte(uchar dat) uchar m; /定義循環(huán)變量 ddra=0xf7; /設(shè)置ds1302的io端口為輸入 sclk=0; /串行時(shí)鐘低電平 delayus(10); /延時(shí)10us for(m=0;m=1; /數(shù)據(jù)右移一位,準(zhǔn)備傳送下位數(shù)據(jù) /*讀時(shí)間函數(shù)*/uchar ds1302readbyte() uchar n,dat; /定義循環(huán)變量,存取數(shù)據(jù)變量 ddra=0xf6; /設(shè)置ds1302的io端口為輸出 delayus(10); /延時(shí)10us for(n=0;n=1; /數(shù)據(jù)右移一位,準(zhǔn)備接受下位數(shù)據(jù) ddra=0xf7;

45、 /設(shè)置ds1302的io端為輸入 return dat; /返回?cái)?shù)據(jù)/*向ds1302讀數(shù)據(jù)函數(shù)*/uchar ds1302read(uchar cmd) uchar dat; /定義存取ds1302讀取數(shù)據(jù)的變量 rst=0; /初始化rst置為0 sclk=0; /初始化sclk置為0 rst=1; /初始化rst置為1,傳輸開始 ds1302writebyte(cmd); /傳輸命令字,要讀取時(shí)間/日歷地址 dat=ds1302readbyte(); /讀取要得到的時(shí)間/日期 sclk=1; /時(shí)鐘拉高 rst=0; /讀取結(jié)束 return dat; /返回時(shí)間/日期/*向ds1302寫數(shù)據(jù)函數(shù)*/void ds1302write(uchar c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論