版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、.具有記憶功能的電子時鐘一、題義分析及解決方案1.題義需求分析用STAR ES598PCI單板開發(fā)機和接口芯片設(shè)計一電子時鐘,具有以下功能:(1)電子時鐘能夠正常工作,顯示小時、分、秒;(2)斷電后再啟動,要求電子鐘能夠按照斷電前的時間繼續(xù)計數(shù);(3)預設(shè)時間為23:59:59。2.解決問題方法及思路硬件部分選用8255作為IO擴展芯片選用8279驅(qū)動8位數(shù)碼管作為時間顯示模塊。選用24C02A存儲斷電前的時間。軟件部分讀取8563中的時間顯示,將正確的時間寫入EEPROM,將EEPROM中的數(shù)據(jù)讀入完成系統(tǒng)斷電后復位。二、硬件設(shè)計8255在本設(shè)計中的作用IO擴展,以完成按鍵輸入檢測功能分析8
2、255是可編程并行I/O接口芯片,有3個8位并行I/O口。具有3個通道3種工作方式的可編程并行接口芯片(40引腳)。 其各口功能可由軟件選擇,使用靈活,通用性強。8255可作為單片機與多種外設(shè)連接時的中間接口電路。(1)一個并行輸入、輸出的LSI芯片,多功能的I/O器件,可作為CPU總線與外圍的接口。(2)具有24個可編程設(shè)置的I/O口,即3組8位的I/O口為PA口,PB口和PC口。它們又可分為兩組12位的I/O口,A組包括A口及C口(高4位,PC4PC7),B組包括B口及C口(低4位,PC0PC3)。A組可設(shè)置為基本的I/O口,閃控(STROBE)的I/O閃控式,雙向I/O3種模式;B組只能
3、設(shè)置為基本I/O或閃控式I/O兩種模式,而這些操作模式完全由控制寄存器的控制字決定。技術(shù)參數(shù) RESET:復位輸入線,當該輸入端處于高電平時,所有內(nèi)部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成輸入方式。CS:芯片選擇信號線,當這個輸入引腳為低電平時,即/CS=0時,表示芯片被選中,允許8255與CPU進行通訊;/CS=1時,8255無法與CPU做數(shù)據(jù)傳輸.RD:讀信號線,當這個輸入引腳為低跳變沿時,即/RD產(chǎn)生一個低脈沖且/CS=0時,允許8255通過數(shù)據(jù)總線向CPU發(fā)送數(shù)據(jù)或狀態(tài)信息,即CPU從8255讀取信息或數(shù)據(jù)。WR:寫入信號,當這個輸入引腳為低跳變沿時,即/WR產(chǎn)生一個低
4、脈沖且/CS=0時,允許CPU將數(shù)據(jù)或控制字寫入8255。D0D7:三態(tài)雙向數(shù)據(jù)總線,8255與CPU數(shù)據(jù)傳送的通道,當CPU 執(zhí)行輸入輸出指令時,通過它實現(xiàn)8位數(shù)據(jù)的讀/寫操作,控制字和狀態(tài)信息也通過數(shù)據(jù)總線傳送。8255具有3個相互獨立的輸入/輸出通道端口,用+5V單電源供電,能在以下三種方式下工作。方式0基本輸入輸出方式;方式1選通輸入/出方式;方式2雙向選通輸入/輸出方式;PA0PA7:端口A輸入輸出線,一個8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個8位的數(shù)據(jù)輸入鎖存器。 工作于三種方式中的任何一種;PB0PB7:端口B輸入輸出線,一個8位的I/O鎖存器, 一個8位的輸入輸出緩沖器。 不能工
5、作于方式二;PC0PC7:端口C輸入輸出線,一個8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個8位的數(shù)據(jù)輸入緩沖器。端口C可以通過工作方式設(shè)定而分成2個4位的端口, 每個4位的端口包含一個4位的鎖存器,分別與端口A和端口B配合使用,可作為控制信號輸出或狀態(tài)信號輸入端口。'不能工作于方式一或二。A1,A0:地址選擇線,用來選擇8255的PA口,PB口,PC口和控制寄存器.當A1=0,A0=0時,PA口被選擇;當A1=0,A0=1時,PB口被選擇;當A1=1,A0=0時,PC口被選擇;當A1=1.A0=1時,控制寄存器被選擇.24C02A在本設(shè)計中的作用記錄掉電前的時間。功能分析E2PROM技術(shù)參數(shù)
6、1.寬范圍的工作電壓1.8v5.5v2.低電壓技術(shù):1mA典型工作電流1uA典型待機電流3.儲存器組織結(jié)構(gòu)4.2線串行接口,完全兼容I2C總線5.施密特觸發(fā)輸入噪聲抑制6.硬件數(shù)據(jù)寫保護7.內(nèi)部與周期(最大5ms)8.自動遞增地址9.可按照字節(jié)寫10.esd保護大于2.5kV11.高可靠性:-擦寫壽命:100萬次 數(shù)據(jù)保持時間:100年12.無鉛工藝,符合RoHS標準8279在本設(shè)計中的作用驅(qū)動數(shù)碼管顯示時間值功能分析(1)可同時進行鍵盤掃描及文字顯示;(2)鍵盤掃描模式(Scanned Keyboard Mode);(3)傳感器掃描模式(Scanned Sensor Mode);(4)激發(fā)輸
7、入模式(Strobe Input Entry Mode);(5)8乘8鍵盤FIFO(先進先出);(6)具有接點消除抖動,2鍵鎖定及N鍵依此讀出模式;(7)雙排8位數(shù)或雙排16位數(shù)的顯示器;(8)右邊進入或左邊進入。16位字節(jié)顯示存儲器。技術(shù)參數(shù)RESET:復位輸入線,當該輸入端處于高電平時,所有內(nèi)部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成輸入方式。CS:芯片選擇信號線,當這個輸入引腳為低電平時,即/CS=0時,表示芯片被選中,允許8255與CPU進行通訊;/CS=1時,8255無法與CPU做數(shù)據(jù)傳輸.RD:讀信號線,當這個輸入引腳為低跳變沿時,即/RD產(chǎn)生一個低脈沖且/CS=0時
8、,允許8255通過數(shù)據(jù)總線向CPU發(fā)送數(shù)據(jù)或狀態(tài)信息,即CPU從8255讀取信息或數(shù)據(jù)。WR:寫入信號,當這個輸入引腳為低跳變沿時,即/WR產(chǎn)生一個低脈沖且/CS=0時,允許CPU將數(shù)據(jù)或控制字寫入8255。D0D7:三態(tài)雙向數(shù)據(jù)總線,8255與CPU數(shù)據(jù)傳送的通道,當CPU 執(zhí)行輸入輸出指令時,通過它實現(xiàn)8位數(shù)據(jù)的讀/寫操作,控制字和狀態(tài)信息也通過數(shù)據(jù)總線傳送。8255具有3個相互獨立的輸入/輸出通道端口,用+5V單電源供電,能在以下三種方式下工作。方式0基本輸入輸出方式;方式1選通輸入/出方式;方式2雙向選通輸入/輸出方式;PA0PA7:端口A輸入輸出線,一個8位的數(shù)據(jù)輸出鎖存器/緩沖器,
9、 一個8位的數(shù)據(jù)輸入鎖存器。 工作于三種方式中的任何一種;PB0PB7:端口B輸入輸出線,一個8位的I/O鎖存器, 一個8位的輸入輸出緩沖器。 不能工作于方式二;PC0PC7:端口C輸入輸出線,一個8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個8位的數(shù)據(jù)輸入緩沖器。端口C可以通過工作方式設(shè)定而分成2個4位的端口, 每個4位的端口包含一個4位的鎖存器,分別與端口A和端口B配合使用,可作為控制信號輸出或狀態(tài)信號輸入端口。'不能工作于方式一或二。A1,A0:地址選擇線,用來選擇8255的PA口,PB口,PC口和控制寄存器.當A1=0,A0=0時,PA口被選擇;當A1=0,A0=1時,PB口被選擇;當A
10、1=1,A0=0時,PC口被選擇;當A1=1.A0=1時,控制寄存器被選擇.4.硬件總邏輯圖及其說明使用了E4區(qū)的24C02A,需要將P1.0和P1.1接到SDA和SCL使用了E5區(qū)的8279模塊,需要將CLK接時鐘,CS接A3區(qū)CS5片選,數(shù)碼管段選和位選對應插好使用了B4區(qū)的8255,需要將CS接A3區(qū)CS1,PA口接按鍵三、控制程序設(shè)計1.控制程序設(shè)計思路說明初始化讀取EEPROM中的數(shù)據(jù),判斷時間是否被初始化過,如果不是,那么設(shè)置初始時間,并改寫初始化標志狀態(tài);如果是,那么讀取時間來初始化時鐘芯片。走時讀取內(nèi)存中的時間數(shù)值,送入數(shù)碼管顯示,并送入EEPROM更新數(shù)值,遇到計時中斷后更新
11、內(nèi)存中的時間,當按鍵被按下,根據(jù)按鍵調(diào)整時間參數(shù)2.程序流程圖3.控制程序SDABITP1.0SCLBITP1.1;24C02的片選地址:100HA24C02_WRITEEQU0A8HA24C02_READEQU0A9HTIMEEQU30H;時間數(shù)據(jù)緩沖區(qū)MS50DATA31H;存放多少個50msSECDATA32H;秒MINDATA33H;分HOURDATA34H;時HOUR_MAXDATA35H;12/24時制KSDATA36HBUFFERDATA37H;顯示緩沖區(qū)COM_ADDXDATA0F003HPA_ADDXDATA0F000HEXTRNCODE(Display8)ORG0000HL
12、JMPMAINORG000BHLJMPINT_Timer0ORG0100H;=;主程序代碼區(qū);=MAIN:MOVSP,#60HMOVMS50,#00HLCALLI2C_INIT;I2C總線初始化MOVDPTR,#COM_ADD;8255初始化MOVA,#90H;PA輸入MOVXDPTR,AMOVTH0,#76;定時中斷計數(shù)器初值MOVTL0,#00;定時50msMOVTMOD,#01H;定時器工作方式1MOVIE,#82H;允許定時器0中斷SETBTR0;開定時器T0MOVR7,#06H;讀取6個數(shù)據(jù)到內(nèi)存MOVR0,#TIME;設(shè)置存取地址L_R:MOVA,R0LCALLRead_ByteM
13、OVR0,AINCR0DJNZR7,L_RMOVA,TIMEMOVKS,#10;初始化按鍵消抖計數(shù)器CJNEA,#01H,INIT_M;判斷是否已經(jīng)進行過時間初始化JMPMainLoopINIT_M:;初始化時間MOVSEC,#59MOVMIN,#59MOVHOUR,#12MOVTIME,#01H;記錄初始化信息MainLoop:MOVR0,#TIMEMOVA,#TIMELCALLWrite_Page;A24C02存時間LCALLDisplay;調(diào)用顯示W(wǎng)AIT:JBF0,CHANGED;每50MS進行一次顯示更新MOVR0,#MS50MOVA,KSCLRCSUBBA,MS50CJNEA,#0
14、0H,WAIT;判斷當前時間是否等于按鍵消抖計數(shù)器數(shù)值MOVA,KSCJNEA,#10,KS_10;更改按鍵消抖計數(shù)器值,在250MS后再進行按鍵掃描MOVKS,#0;消抖JMPKSCANKS_10:MOVKS,#10KSCAN:MOVDPTR,#PA_ADDMOVXA,DPTR;讀入按鍵狀態(tài)MOVR0,AANLA,#01HCJNEA,#00H,TEST_SW;初始化按鍵JMPINIT_MTEST_SW:;切換時制按鍵MOVA,R0ANLA,#02HCJNEA,#00H,TEST_HPMOVA,HOUR_MAXCJNEA,#24,SET_24MOVHOUR_MAX,#13JMPWAITSET_
15、24:MOVHOUR_MAX,#24JMPWAITTEST_HP:;小時增加調(diào)整鍵MOVA,R0ANLA,#08HCJNEA,#00H,TEST_MPJMPHOUR_PTEST_MP:;分鐘增加調(diào)整鍵MOVA,R0ANLA,#20HCJNEA,#00H,TEST_HMJMPMIN_PTEST_HM:;小時減小調(diào)整鍵MOVA,R0ANLA,#04HCJNEA,#00H,TEST_MMJMPHOUR_MTEST_MM:;分鐘減小調(diào)整鍵MOVA,R0ANLA,#10HCJNEA,#00H,RETURNJMPMIN_MCHANGED:CLRF0JMPMainLoop;=RETURN:;2K尋址中繼,避
16、免CJNE無法返回到WAITJMPWAIT;時間調(diào)整代碼塊MIN_P:MOVR1,#MININCR1;分加一CJNER1,#60,RETURNMOVR1,#00HJMPWAITHOUR_P:MOVR1,#HOURINCR1;時加一JMPWAITMIN_M:MOVR1,#MINDECR1;分減一CJNER1,#0FFH,RETURNMOVR1,#59JMPWAITHOUR_M:MOVR1,#HOURDECR1;時減一MOVA,HOUR_MAXCJNEA,#24,HM_T12;是否為24小時制CJNER1,#0FFH,RETURNJMPHM_MHM_T12:CJNER1,#00H,RETURNHM
17、_M:MOVR1,HOUR_MAXDECR1JMPWAITINT_Timer0:MOVTL0,#0MOVTH0,#76PUSHACCPUSH01HMOVR1,#MS50INCR1;50MS單元加一SETBF0CJNER1,#20,HOUR_EXTRAMOVR1,#00H;恢復初值INCR1INCR1;秒加一CJNER1,#60,HOUR_EXTRAMOVR1,#00HINCR1INCR1;分加一CJNER1,#60,HOUR_EXTRAMOVR1,#00HINCR1INCR1;時加一HOUR_EXTRA:;時制判斷并準備退出MOVR1,#HOURMOVA,HOUR_MAXSETBCSUBBA,
18、R1JNCExitIntMOVA,HOUR_MAXCJNEA,#24,Z_01MOVR1,#00HJMPExitIntZ_01:MOVR1,#01HExitInt:POP01HPOPACCRETI;十六進制轉(zhuǎn)BCD碼HexToBCD:MOVB,#10DIVABMOVR0,BINCR0MOVR0,AINCR0RET;準備數(shù)碼管顯示緩沖區(qū)Display:MOVR0,#BUFFERMOVA,SECACALLHexToBCDMOVA,MINACALLHexToBCDMOVA,HOURACALLHexToBCDMOVR0,#10H;第七位不顯示INCR0MOVR0,#10H;第八位不顯示INCR0MOV
19、R0,#BUFFERLCALLDisplay8RET;=;24C02代碼區(qū);=A24C02_Init:MOVR3,#TIMEMOVR2,#01HMOVR0,#TIMEA24C02_Write_1:MOVR0,02HINCR0INCR2CJNER0,#TIME+08H,A24C02_Write_1MOVR0,#TIMEMOVA,R3LCALLWrite_PageRET;I2C總線初始化I2C_INIT:SETBSCLSETBSDARET;寫操作,分字節(jié)寫和頁寫模式;字節(jié)寫,一次寫入一個字節(jié)數(shù)據(jù),A-寫入地址,B-數(shù)據(jù)Write_Byte:PUSHACC;A中地址壓棧MOVA,#A24C02_WR
20、ITE;寫操作指令LCALLStart;開始信號LCALLWrite_8bits;寫入8位數(shù)據(jù)LCALLAcknowledge;查詢接收端應答信號POPACC;寫入A中地址LCALLAcknowledgeMOVA,BLCALLWrite_8bits;寫入B中數(shù)據(jù)LCALLAcknowledgeLCALLStop;結(jié)束信號LCALLAckPolling;等待寫操作完成RET;頁寫,一次寫入8個字節(jié)數(shù)據(jù),A中存放起始寫入地址,R0中存放數(shù)據(jù)首地址Write_Page:PUSH07HMOVR7,#8PUSHACC;A中地址壓棧MOVA,#A24C02_WRITE;寫操作指令LCALLStartLCA
21、LLWrite_8bits;寫入8位數(shù)據(jù)LCALLAcknowledge;查詢接收端應答信號POPACC;寫入A中地址LCALLWrite_8bitsLCALLAcknowledgePUSHACCWrite_Page_1:MOVA,R0;緩沖區(qū)數(shù)據(jù)逐一寫入LCALLWrite_8bitsLCALLAcknowledgeINCR0DJNZR7,Write_Page_1;寫8次LCALLStopCLRALCALLAckPolling;等待寫操作完成POPACCPOP07HRET;等待寫操作完成AckPolling:MOVA,#A24C02_Write;寫操作指令LCALLStart;開始信號LCA
22、LLWrite_8bitsSETBSDA;從機應答SETBSCL;應答占用一個脈沖LCALLDelay_TimeJBSDA,AckPolling;接收端應答標志:將SDA置低CLRSCLLCALLStop;停止信號RET;讀操作,分為字節(jié)讀和連續(xù)讀取操作;字節(jié)讀,一次讀取一個字節(jié),A-讀取地址Read_Byte:PUSHACC;A中地址壓棧LCALLStart;開始信號MOVA,#A24C02_Write;寫操作指令LCALLWrite_8bitsLCALLAcknowledgePOPACCLCALLWrite_8bitsLCALLAcknowledge;立即讀,讀取當前內(nèi)部地址的數(shù)據(jù),一個字
23、節(jié)Read_Current:LCALLStart;開始信號,下面讀取數(shù)據(jù)MOVA,#A24C02_Read;讀操作指令LCALLWrite_8bitsLCALLAcknowledgeLCALLRead_8bits;讀取數(shù)據(jù),放在A中LCALLStop;停止信號RET;寫入8位數(shù)據(jù)Write_8bits:PUSH07HMOVR7,#8Write_8bits_1:CLRSCL;數(shù)據(jù)在SCL為低時SDA上的數(shù)據(jù)可以改變,此時送上欲寫數(shù)據(jù)NOPRLCAMOVSDA,CLCALLDelay_Time;延時SETBSCLLCALLDelay_TimeDJNZR7,Write_8bits_1CLRSCLPOP07HRET;讀取8位數(shù)據(jù)Read_8bits:PUSH07HMOVR7,#8Read_8bits_1:CLRSCLLCALLDelay_TimeSETBSCLMOVC,SDARLCADJNZR7,Read_8bits_1CLRSCLPOP07HRET;I2C總線開始信號Start:SETBSDA;I2C總線開始信號:SCL為高時,SDA由高->低SETBSCLLCALLDelay_TimeCLRSDALCALLDelay_TimeRET;I2C總線結(jié)束信號Stop:CLRSDA;I2C總線操作結(jié)束信號:SCL為高時,SDA由低->高
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度工業(yè)廠房交易全程服務(wù)合同4篇
- 2024音樂制作方與影視制作公司版權(quán)許可合同
- 二零二五年度交通樞紐害蟲防治與消毒作業(yè)合同3篇
- 專業(yè)水電安裝及消防系統(tǒng)承包合同2024年版版B版
- 2025年度12年首次智慧旅游項目合作協(xié)議3篇
- 2025年度叉車租賃合同范本(叉車租賃與維護)4篇
- 2025年度智慧城市基礎(chǔ)設(shè)施場地平整與物聯(lián)網(wǎng)協(xié)議4篇
- 2025年度奶牛養(yǎng)殖牛場租賃合同范本3篇
- 2025年廠房租賃合同風險評估與管理規(guī)范4篇
- 2024年04月廣西桂林銀行南寧分行社會招考筆試歷年參考題庫附帶答案詳解
- 聚焦任務(wù)的學習設(shè)計作業(yè)改革新視角
- 足球訓練基地管理制度
- 太平洋藍鯨計劃制度和基本法
- (承諾書)安防監(jiān)控售后服務(wù)承諾書范文
- 高低溫交變濕熱試驗檢測報告
- 蘇教版四年級數(shù)學下冊《全冊》完整課件ppt
- 《高一地理必修一全套課件》
- 新點軟件算量基礎(chǔ)知識內(nèi)部培訓講義
- 幼兒園學前-《拍蚊子》教學課件設(shè)計
- 移動商務(wù)內(nèi)容運營(吳洪貴)任務(wù)三 APP的品牌建立與價值提供
- 北師大版三年級數(shù)學上冊《總復習》教案及教學反思
評論
0/150
提交評論