1. 求一電子時鍾電路和匯編語言源程序,能實現年月日和時間的顯示以及調
cursor equ 45H
attrib equ 2fh
code segment
assume cs:code,ds:code
start:
jmp go
oldcur dw ?
OLD1C DW 2 DUP(?)
NEWINT1C:
PUSHF
CALL DWORD PTR CS:OLD1C
push ax
PUSH BX
PUSH CX
PUSH DX
XOR BH,BH
MOV AH,3
INT 10H
MOV CS:OLDCUR,DX
MOV AH,2
xor bh,bh
MOV DX,CURSOR
INT 10H
MOV AH,2; ;讀取系統時鍾
INT 1AH
PUSH DX
PUSH CX
POP BX
PUSH BX
CALL SHOWBYTE
CALL SHOWCOLON
POP BX
XCHG BH,BL
CALL SHOWBYTE
CALL SHOWCOLON
POP BX
CALL SHOWBYTE
MOV DX,CS:OLDCUR
MOV AH,2
XOR BH,BH
INT 10H
POP DX
POP CX
POP BX
POP AX
IRET
SHOWBYTE PROC NEAR
PUSH BX
MOV CL,4
MOV AL,BH
SHR AL,CL
ADD AL,30H
CALL SHOW
CALL CURMOVE
POP BX
MOV AL,BH
AND AL,0FH
ADD AL,30H
CALL SHOW
CALL CURMOVE
RET
SHOWBYTE ENDP
SHOWCOLON PROC NEAR
MOV AL,':'
CALL SHOW
CALL CURMOVE
RET
SHOWCOLON ENDP
CURMOVE PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AH,3
MOV BH,0
INT 10H
INC DL
MOV AH,2
INT 10H
POP DX
POP CX
POP BX
POP AX
RET
CURMOVE ENDP
SHOW PROC NEAR
PUSH AX
PUSH BX
PUSH CX
MOV AH,09H
MOV BX,attrib
MOV CX,1
INT 10H
POP CX
POP BX
POP AX
RET
SHOW ENDP
GO:
PUSH CS
POP DS
MOV AX,351CH ;取中斷向量
INT 21H
MOV OLD1C,BX; ;保存原中斷向量
MOV BX,ES
MOV OLD1C+2,BX
MOV DX,OFFSET NEWINT1C; ;置新的中斷向量
MOV AX,251CH
INT 21H
MOV DX,OFFSET GO
SUB DX,OFFSET START
MOV CL,4
SHR DX,CL
ADD DX,11H
MOV AX,3100H; ;結束並駐留
INT 21H
CODE ENDS
END START
-----------------------------------------------------------------------------------
cursor equ 45H ;定義顯示位置
attrib equ 2fh ;定義時鍾顯示顏色,綠底白字
code segment
assume cs:code,ds:code
start:
jmp go ;轉到程序預處理,設置中斷並駐留
oldcur dw ? ;用於保存原來游標位置
OLD1C DW 2 DUP(?) ;用於保存原來的 int 1c 入口地址
NEWINT1C: ;新的 int 1c 入口
PUSHF ;標志壓棧
CALL DWORD PTR CS:OLD1C ;調用原來的 int 1c 中斷
push ax
PUSH BX
PUSH CX
PUSH DX
XOR BH,BH
MOV AH,3
INT 10H ;int10 子功能 03 取當前游標位置
MOV CS:OLDCUR,DX ;當前游標位置存入CS:OLDCUR
MOV AH,2
xor bh,bh
MOV DX,CURSOR ;DX=CURSOR=45h,表示游標定位在1 行70 列
INT 10H ;int10 子功能 02 設置游標位置
MOV AH,2
INT 1AH ;INT 1AH 子功能 02 讀取系統時鍾,返回CH/CL/DH=BCD碼小時/BCD碼分鍾/BCD碼秒
PUSH DX
PUSH CX
POP BX ;小時分鍾數給BX
PUSH BX
CALL SHOWBYTE ;調用子程序顯示小時,小時在bh中
CALL SHOWCOLON ;調用子程序顯示時間分隔符 ":"
POP BX
XCHG BH,BL ;分鍾給bh
CALL SHOWBYTE ;調用子程序顯示分鍾,bh是分鍾數
CALL SHOWCOLON ;調用子程序顯示時間分隔符 ":"
POP BX ;秒數給bh
CALL SHOWBYTE ;調用子程序顯示秒數
MOV DX,CS:OLDCUR ;讀取備份的游標位置
MOV AH,2
XOR BH,BH
INT 10H ;int10 子功能 02 還原原來的游標位置
POP DX
POP CX
POP BX
POP AX
IRET ;中斷返回
SHOWBYTE PROC NEAR ;BCD值顯示子程序,BCD值在BH中
PUSH BX ;壓棧BX值,以防沖掉
MOV CL,4 ;以下代碼BH中BCD十位值轉ASCLL碼
MOV AL,BH
SHR AL,CL
ADD AL,30H
CALL SHOW ;調用子程序顯示AL,當前AL為時間值十位上的數值
CALL CURMOVE ;調用子程序後移游標
POP BX ;還原BX值
MOV AL,BH ;以下代碼BH中BCD個位值轉ASCLL碼
AND AL,0FH
ADD AL,30H
CALL SHOW ;調用子程序顯示AL,當前AL為時間值個位上的數值
CALL CURMOVE ;調用子程序後移游標
RET
SHOWBYTE ENDP
SHOWCOLON PROC NEAR ;顯示字元 ":" 子程序,用於時間分隔符
MOV AL,':'
CALL SHOW ;調用子程序顯示":"
CALL CURMOVE ;調用子程序後移游標
RET
SHOWCOLON ENDP
CURMOVE PROC NEAR ;游標後移子程序
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AH,3
MOV BH,0
INT 10H ;取游標位置
INC DL ;游標列位置加1
MOV AH,2
INT 10H ;設游標位置
POP DX
POP CX
POP BX
POP AX
RET
CURMOVE ENDP
SHOW PROC NEAR ;顯示一個ASCLL字元子程序,AL為所顯字元
PUSH AX
PUSH BX
PUSH CX
MOV AH,09H
MOV BX,attrib ;BH/BL=字元背景色/字元顏色 ,attrib=2fh=綠底白字
MOV CX,1 ;顯示個數 1
INT 10H ;int 10 子功能 09 顯示一個字元
POP CX
POP BX
POP AX
RET
SHOW ENDP
GO:
PUSH CS
POP DS
MOV AX,351CH ;取時鍾中斷 int 1c中斷原入口
INT 21H
MOV OLD1C,BX ;保存原中斷向量
MOV BX,ES
MOV OLD1C+2,BX
MOV DX,OFFSET NEWINT1C ;設置新的時鍾中斷 int 1c 入口
MOV AX,251CH
INT 21H
MOV DX,OFFSET GO
SUB DX,OFFSET START ;計算駐留內存位元組數
MOV CL,4
SHR DX,CL ;駐留內存值轉換為節
ADD DX,11H ;內存數加psp 11節
MOV AX,3100H ;結束並駐留
INT 21H
CODE ENDS
END STAR
2. 時鍾電路的工作原理以及作用是什麼菜鳥求解釋
時鍾電路的工作原理是單片機外部接上振盪器(也可以是內部振盪器)提供高頻脈沖經過分頻處理後,成為單片機內部時鍾信號,作為片內各部件協調工作的控制信號。作用是來配合外部晶體實現振盪的電路,這樣可以為單片機提供運行時鍾。
以MCS一5l單片機為例隨明:MCS一51單片機為l2個時鍾周期執行一條指令。也就是說單片機運行一條指令,必須要用r2個時鍾周期。沒有這個時鍾,單片機就跑不起來了,也沒有辦法定時和進行和時間有關的操作。
時鍾電路是微型計算機的心臟,它控制著計算機的二個節奏。CPU就是通過復雜的時序電路完成不同的指令功能的。
MCS一51的時鍾信號可以由兩種方式產生:一種是內部方式,利用晶元內部的振盪電路,產生時鍾信號:另一種為外部方式,時鍾信號由外部引入。
如果沒有時鍾電路來產生時鍾驅動單片機,單片機是無法工作的。
(2)時鍾電路實現擴展閱讀
在內部方式時鍾電路中,必須在XTAL1和XTAL2引腳兩端跨接石英晶體振盪器和兩個微調電容構成振盪電路,通常C1和C2一般取30pF,晶振的頻率取值在1.2MHz~12MHz之間。
對於外接時鍾電路,要求XTAL1接地,XTAL2腳接外部時鍾,對於外部時鍾信號並無特殊要求,只要保證一定的脈沖寬度,時鍾頻率低於12MHz即可。
晶體振盪器的振盪信號從XTAL2端送入內部時鍾電路,它將該振盪信號二分頻,產生一個兩相時鍾信號P1和P2供單片機使用。
時鍾信號的周期稱為狀態時間S,它是振盪周期的2倍,P1信號在每個狀態的前半周期有效,在每個狀態的後半周期P2信號有效。CPU就是以兩相時鍾P1和P2為基本節拍協調單片機各部分有效工作的。
3. 問一下,時鍾電路的原理及應用
實時時鍾電路的原理及應用
[日期:2006-11-16] 來源:互聯網 作者:未知 [字體:大 中 小]
1 引言
現在流行的串列時鍾電路很多,如DS1302、DS1307、PCF8485等。這些電路的介面簡單、價格低廉、使用方便,被廣泛地採用。本文介紹的實時時鍾電路DS1302是DALLAS公司的一種具有涓細電流充電能力的電路,主要特點是採用串列數據傳輸,可為掉電保護電源提供可編程的充電功能,並且可以關閉充電功能。採用普通32.768kHz晶振。
2 DS1302的結構及工作原理
DS1302是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鍾電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.5V~5.5V。採用三線介面與CPU進行同步通信,並可採用突發方式一次傳送多個位元組的時鍾信號或RAM數據。DS1302內部有一個31×8的用於臨時性存放數據的RAM寄存器。DS1302是DS1202的升級產品,與DS1202兼容,但增加了主電源/後背電源雙電源引腳,同時提供了對後背電源進行涓細電流充電的能力。
2.1 引腳功能及結構
圖1示出DS1302的引腳排列,其中Vcc1為後備電源,VCC2為主電源。在主電源關閉的情況下,也能保持時鍾的連續運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當Vcc2大於Vcc1+0.2V時,Vcc2給DS1302供電。當Vcc2小於Vcc1時,DS1302由Vcc1供電。X1和X2是振盪源,外接32.768kHz晶振。RST是復位/片選線,通過把RST輸入驅動置高電平來啟動所有的數據傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單位元組或多位元組數據的傳送手段。當RST為高電平時,所有的數據傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RST置為低電平,則會終止此次數據傳送,I/O引腳變為高阻態。上電運行時,在Vcc≥2.5V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。I/O為串列數據輸入輸出端(雙向),後面有詳細說明。SCLK始終是輸入端。
2.2 DS1302的控制位元組
DS1302的控制字如圖2所示。控制位元組的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數據寫入DS1302中,位6如果為0,則表示存取日歷時鍾數據,為1表示存取RAM數據;位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制位元組總是從最低位開始輸出。
2.3 數據輸入輸出(I/O)
在控制指令字輸入後的下一個SCLK時鍾的上升沿時,數據被寫入DS1302,數據輸入從低位即位0開始。同樣,在緊跟8位的控制指令字後的下一個SCLK脈沖的下降沿讀出DS1302的數據,讀出數據時從低位0位到高位7。
2.4 DS1302的寄存器
DS1302有12個寄存器,其中有7個寄存器與日歷、時鍾相關,存放的數據位為BCD碼形式,其日歷、時間寄存器及其控制字見表1。
此外,DS1302還有年份寄存器、控制寄存器、充電寄存器、時鍾突發寄存器及與RAM相關的寄存器等。時鍾突發寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內容。DS1302與RAM相關的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態為一個8位的位元組,其命令控制字為C0H~FDH,其中奇數為讀操作,偶數為寫操作;另一類為突發方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個位元組,命令控制字為FEH(寫)、FFH(讀)。
3 DS1302實時顯示時間的軟硬體
DS1302與CPU的連接需要三條線,即SCLK(7)、I/O(6)、RST(5)。圖3示出DS1302與89C2051的連接圖,其中,時鍾的顯示用LCD。
3.1 DS1302與CPU的連接
實際上,在調試程序時可以不加電容器,只加一個32.768kHz的晶振即可。只是選擇晶振時,不同的晶振,誤差也較大。另外,還可以在上面的電路中加入DS18B20,同時顯示實時溫度。只要佔用CPU一個口線即可。LCD還可以換成LED,還可以使用北京衛信傑科技發展有限公司生產的10位多功能8段液晶顯示模塊LCM101,內含看門狗(WDT)/時鍾發生器及兩種頻率的蜂鳴器驅動電路,並有內置顯示RAM,可顯示任意欄位筆劃,具有3-4線串列介面,可與任何單片機、IC介面。功耗低,顯示狀態時電流為2μA(典型值),省電模式時小於1μA,工作電壓為2.4V~3.3V,顯示清晰。
3.2 DS1302實時時間流程
圖4示出DS1302的實時時間流程。根據此流程框圖,不難採集實時時間。下面結合流程圖對DS1302的基本操作進行編程:
根據本人在調試中遇到的問題,特作如下說明:
DS1302與微處理器進行數據交換時,首先由微處理器向電路發送命令位元組,命令位元組最高位MSB(D7)必須為邏輯1,如果D7=0,則禁止寫DS1302,即防寫;D6=0,指定時鍾數據,D6=1,指定RAM數據;D5~D1指定輸入或輸出的特定寄存器;最低位LSB(D0)為邏輯0,指定寫操作(輸入),D0=1,指定讀操作(輸出)。
在DS1302的時鍾日歷或RAM進行數據傳送時,DS1302必須首先發送命令位元組。若進行單位元組傳送,8位命令位元組傳送結束之後,在下2個SCLK周期的上升沿輸入數據位元組,或在下8個SCLK周期的下降沿輸出數據位元組。
DS1302與RAM相關的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態為一個8位的位元組,其命令控制字為C0H~FDH,其中奇數為讀操作,偶數為寫操作;再一類為突發方式下的RAM寄存器,在此方式下可一次性讀、寫所有的RAM的31個位元組。
要特別說明的是備用電源B1,可以用電池或者超級電容器(0.1F以上)。雖然DS1302在主電源掉電後的耗電很小,但是,如果要長時間保證時鍾正常,最好選用小型充電電池。可以用老式電腦主板上的3.6V充電電池。如果斷電時間較短(幾小時或幾天)時,就可以用漏電較小的普通電解電容器代替。100 μF就可以保證1小時的正常走時。DS1302在第一次加電後,必須進行初始化操作。初始化後就可以按正常方法調整時間。
4 結論
DS1302存在時鍾精度不高,易受環境影響,出現時鍾混亂等缺點。DS1302可以用於數據記錄,特別是對某些具有特殊意義的數據點的記錄,能實現數據與出現該數據的時間同時記錄。這種記錄對長時間的連續測控系統結果的分析及對異常數據出現的原因的查找具有重要意義。傳統的數據記錄方式是隔時采樣或定時采樣,沒有具體的時間記錄,因此,只能記錄數據而無法准確記錄其出現的時間;若採用單片機計時,一方面需要採用計數器,佔用硬體資源,另一方面需要設置中斷、查詢等,同樣耗費單片機的資源,而且,某些測控系統可能不允許。但是,如果在系統中採用時鍾晶元DS1302,則能很好地解決這個問題
4. 時鍾電路在硬體上是如何實現的
時鍾電路在硬體上就是由振盪電路,加穩頻的石英晶體,產生時鍾的基準頻率。
振盪電路也就開環增益大於1的放大器再由正反饋組成的電路。
5. 單片機中時鍾電路和定時器/計數器之間是什麼關系。時鍾電路還包括哪些部件,其功能是如何實現的。
單片機中時鍾電路為定時器/計數器提供計時脈沖,51單片機首先分頻版權12倍得到指令周期,然後再分頻16倍或32倍給定時器。有的單片機有專門控制分頻器的控制寄存器,可以通過軟體編程式控制制分頻大小。
時鍾電路即振盪電路,有與非門、電容和晶振組成。
6. 時鍾電路設計需要哪些元件
方案的論證與選擇
1.1方案論證
1.1.1採用MCS—51系列單片機和壓力感測器來完成
壓力感測器是雞蛋鬧鍾必須用到的感測器,它具有結構簡單、體積小、重量輕、使用壽命長等優異的特點。控制電路主要由單片機和程序來實現,這樣的設計具有性能穩定,做工可靠,價格低廉,結構簡單的優點,但也存在編程難度大的缺點。這種設計是目前工業中最常用的一種設計,產品整體價成本格較低,硬體結構簡單,容易實現。
1.1.2採用TTL集成門電路和壓力感測器來實現
這種設計同樣採用壓力感測器,但是控制電路採用集成門電路,電路主要由振盪器,分頻器,計數器,解碼器,顯示電路組成。它的特點在於精度高,抗干擾能力強,允許的工作電壓范圍大,不需要編程,但同時也在產品體積大,硬體結構復雜,工作不可靠,技術老化,成本相對較高的缺點。這種設計目前在市場上已經基本淘汰。
1.1.3採用MCS—51系列單片機,時鍾晶元和壓力感測器來設計
這種設計在控制電路中加入了一個時鍾晶元,總體來說,產品需要的編程難度降低,但是產品的硬體結構復雜了,而且時鍾晶元的價格也很昂貴,提高了成本,這種設計在目前的市場上很少見。
1.2方案的選擇
綜上所述,應選用方案一來完成雞蛋鬧鍾的設計。
這里介紹的電子鍾,電路可稱得上極簡,它僅使用單片的20引腳單片機完成電子鍾的全部功能,而筆者見到的其它設計方案均採用二片以上的多片IC實現。
電路見圖1。
一片20引腳的單片機AT89C2051為電子鍾主體,其顯示數據從P1口分時輸出,P3.0~3.3則輸出對應的位選通信號。由於LED數碼管點亮時耗電較大,故使用了四隻PNP型晶體管VT1~VT4進行放大。本來筆者還有一種更簡的設計方案(見圖2),可省去VT1~VT4及R1~R4八個元件,但這種設計由於單片機輸出口的灌入電流有限(約20mA),數碼管亮度較暗而不向讀者介紹,除非你採用了高亮度的發光數碼管。
P3.4、P3.5、3.7外接了三個輕觸式按鍵,這里我們分別命名為:模式設定鍵set(P3.4)、時調整鍵hour(P3.5)、分調整鍵min(P3.7)。C1、R13組成上電復位電路。VT5及蜂鳴器Bz為鬧時訊響電路。三端穩壓器7805輸出的5V電壓供整個系統工作。此電子鍾可與任何9~20V/100mA的交直流電源適配器配合工作,適應性強。
電子鍾功能
1.走時:通過模式設定鍵set選擇為走時,U1、U2顯示小時,U3、U4顯示分。U2的小數點為秒點,每秒閃爍一次。
2.走時調整:通過模式設定鍵set選擇為走時調整,按下hour鍵對U1、U2的走時「時」顯示進行調整(每0.2秒遞加1)。按下min鍵對U3、U4的走時「分」顯示進行調整(每0.2秒遞加1)。
3.鬧時調整:通過模式設定鍵set選擇為鬧時調整,按下hour鍵對U1、U2的鬧時「時」顯示進行調整(每0.2秒遞加1)。按下min鍵對U3、U4的鬧時「分」顯示進行調整(每0.2秒遞加1)。
4.鬧時啟/停設定:通過模式設定鍵set選擇為鬧時啟/停設定,按下min鍵U3的小數點點亮,鬧時功能啟動;按下hour鍵U3的小數點熄滅,鬧時功能關停。
由於電路設計得極其簡單,因此豐富的功能只能由軟體完成,這里軟體設計成為了關鍵。下面介紹軟體設計要點。
圖3為主程序狀態流程。
圖3
運行時建立的主要狀態標志如下:
flag—掉電標志。掉電後,flag內為一隨機數;重新設定時間後flag內寫入標志數55H。
set—工作模式設定標志。
hour—走時「時」單元。
min—走時「分」單元。
sec—走時「秒」單元。
deda—走時5mS計數單元
t_hour—鬧時「時」單元。
t_min—鬧時「分」單元。
d_05s—0.5秒位標志。每秒鍾的前0.5秒置1,後0.5秒置0,以使秒點閃爍。
o_f—鬧時啟/停位標志。鬧時啟動置1,鬧時關停置0。
另外將定時器T0設定為5mS的定時中斷。這里晶振頻率為12MHz,因此5mS的初值為-5000,但實際上程序還要作其它運算,使得時間偏長,經調整
很高興回答樓主的問題 如有錯誤請見諒
7. fpga時鍾電路怎麼設計的
FPGA內部NPLL電路(般14)PLL倍頻或頻50M輸入經內部PLL電路4倍頻200M鍾200M並數據吞吐量鍾周期
FPGA內部鍾信號電平敏事件處理高電平低電平事件邊沿觸發處理升沿或者降沿事件鍾關信號實際電平事件鍾周期高電平低電平都處理事件邊沿事件鍾周期處理組數據述前提FPGA內部設計組電路設計組電路數據吞吐相應提高至於電路速度其實設計關系
FPGA並行處理電路沒數據量概念請要CPU單片機概念混淆起應該FPGA想像塊PCB安裝互聯TTL晶元數據吞吐由設計電路決定
8. 設計數字時鍾電路原理圖
這個電路圖在電子系統設計(好像是第三版)這本書上有的,自己可以去查一下。
其實要是你能搞明白這個電路的所有功能,那你的數電還是OK的!
9. 時鍾電路的組成原件和如何實現
電容和晶振,圖上已經標出參數了。原理是諧振
10. 什麼是時鍾電路
在電子電路中,實時時鍾電路通常簡稱時鍾電路,實時時鍾的縮寫是RTC(Real_Time Clock).實時時鍾電路內通常由一個容時鍾集成電路和外圍的32.768KHZ晶體、匹配電容組成。實時時鍾集成電路內部實現自動計時,產生年月日及鬧鈴等相關數據,通過IIC介面和單片機等中央處理系統連接。常用的實時時鍾集成電路型號:DS1302,HT1380,HT1381,PCF8563等。還有的廠家直接把集成電路、晶體、電容、電池等做成一個小電路板,然後封裝起來,行成一個模塊,通常稱為時鍾模塊。