導航:首頁 > 操作系統 > 單片機的數字

單片機的數字

發布時間:2022-03-07 03:19:05

單片機關於數字鍾

用DS1302,上網查查這個晶元,非常好用,不要用DS12C887,這個晶元雖然內部帶鋰電池,但是經常時間出錯!

② 51單片機的共陰數碼管怎麼顯示數字(c語言)

要讓51單片機共陰數碼管顯示數字,只需要將單片機的P2埠輸出數字對應的段碼即可。

以顯示數字「0」為例,c語言程序如下:

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

//數碼管的段碼編碼

Uchar table[10] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void main(){//主函數

P0 = table[0];//顯示0,大家可以修改裡面的數據。

while(1);//程序不再執行其他步驟;

}

(2)單片機的數字擴展閱讀:

數字0-9的對應段碼:

數字0 0x3f

數字1 0x06

數字2 0x5b

數字3 0x4f

數字4 0x66

數字5 0x6d

數字6 0x7d

數字7 0x07

數字8 0x7f

數字9 0x6f

③ 單片機怎麼編寫數字啊

請重新問你的問題,字數>20個字,免得你說不清楚。
編寫數字?幹嘛用的?怎麼用的?在哪用的?

④ 單片機上的數字

24PC:24個針腳
0422:04年第22個周生產的
呵呵,上個周老師剛講的.

⑤ 單片機數字顯示

實際上,是一個秒錶。
在 P0 口,外接一個共陽數碼管,執行下列程序,即可。

ORG 0000H
MAIN:
MOV DPTR, #TAB
MOV TMOD, #01H
SETB TR0
LOP0:
MOV R3, #10
LOP1:
MOV A, R3
MOVC A, @A + DPTR
MOV P0, A
MOV R4, #20
LOP2:
MOV TH0, #3CH
MOV TL0, #0B0H
JNB TF0, $
CLR TF0
DJNZ R4, LOP2
DJNZ R3, LOP1
SJMP LOP0
TAB:;共陽極
DB 00H, 90H, 80H,0F8H, 82H, 92H
DB 99H, 0B0H,0A4H,0F9H,0C0H
END

⑥ 單片機數字鍾

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DISP_BUFF DATA 30H ;顯示緩沖區(請保留6個連續的RAM單元)
SLA_W DATA 3AH ;器件從地址,PCF8563P從地址寫操作為0A2H
SLA_R DATA 3BH ;器件從地址,PCF8563P從地址讀操作為0A3H
SUBA DATA 3CH ;器件子地址,器件子地址秒單元操作為02H
NUMBYTE DATA 3DH ;讀/寫的位元組數
KEY_DATA DATA 3EH

MTD DATA 40H ;發送數據緩沖區首址 (緩沖區40H46H)
MRD DATA 47H ;接收數據緩沖區首址 (緩沖區47H4DH)

SEC DATA 50H ;秒 (子地址02H)
MIN DATA 51H ;分 (子地址03H)
HOUR DATA 52H ;時 (子地址04H)
DAY DATA 53H ;日 (子地址05H)
WEEK DATA 54H ;星期 (子地址06H)
MOON DATA 55H ;月 (子地址07H)
YEAS DATA 56H ;年 (子地址08H)

;;;;;;;;;;;;;;;;;;;;初始化程序;;;;;;;;;;;;;;;;;;;;;;;;;
START:
MOV R0,#10 ;清空RAM數據存儲區
MOV A,#0 ;地址為10H到0FFH
NEXT: ;
MOV @R0,A ;
INC R0 ;
CJNE R0,#0FFH,NEXT ;
MOV R0,#00H

MOV P0,#0FFH ;初始化P0口為高
MOV P1,#0FFH ;初始化P1口為高
MOV P2,#0FFH ;初始化P2口為高
MOV P3,#0FFH ;初始化P3口為高

MOV SP,#60H ;設定堆棧棧低為61H
CLR OE_595

MOV DISP_BUFF,#6
MOV DISP_BUFF+1,#5
MOV DISP_BUFF+2,#4
MOV DISP_BUFF+3,#3
MOV DISP_BUFF+4,#2
MOV DISP_BUFF+5,#1

MOV MTD,#08H
MOV MTD+1,#00H
MOV NUMBYTE,#02H
MOV SUBA,#00H
LCALL IWRNBYTE

MOV MTD,#00H
MOV MTD+1,#02H
MOV MTD+2,#18H
MOV MTD+3,#26H
MOV MTD+4,#05H
MOV MTD+5,#12H
MOV MTD+6,#08H

MOV SLA_W,#0A2H
MOV SLA_R,#0A3H
MOV SUBA,#02H

LCALL DISP
MOV NUMBYTE,#07H

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;向器件指定子地址讀取N個數據
;入口參數: 器件從地址SLA,器件子地址SUBA,接收位元組數NUMBYTE
;出口參數: 接收數據緩沖區MTD
;佔用A R0 R1 R2 CY
IRDNBYTE:
MOV R2,NUMBYTE ;接收位元組數送入工作寄存器
LCALL STAR ;啟動IIC匯流排
MOV A,SLA_W ;器件寫操作從地址送入累加器A
LCALL WRBYTE ;發送器件從地址
LCALL CACK ;檢查是否有應答
JNB ACK,RETRDN ;沒有應答跳轉退出

MOV A,SUBA ;器件子地址送入累加器A
LCALL WRBYTE ;發送器件子地址
LCALL CACK ;檢查是否有應答
JNB ACK,RETRDN ;沒有應答跳轉退出

LCALL STAR ;有應答重新起動匯流排
MOV A,SLA_R ;器件讀操作從地址送入累加器A
LCALL WRBYTE ;發送器件從地址
LCALL CACK ;檢查是否有應答

JNB ACK,IRDNBYTE ;沒有應答跳轉退出
MOV R1,#MRD ;載入接收數據緩沖區首址
RDN1:
LCALL RDBYTE ;讀操作開始
MOV @R1,A ;接收的數據載入接收緩沖區

LCALL MACK ;發送應答信號

INC R1 ;接收緩沖區地址加1
DJNZ R2,RDN1 ;數據全部讀取完了嗎?沒完轉移讀取下一位
LCALL MNACK ;讀取完了,最後一位元組發非應答位
RETRDN:
LCALL STOP ;讀取完成,結束匯流排
NOP
NOP
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;讀取位元組子程序
;讀出的值在ACC
;每取一位元組要發送一個應答/非應答信號
RDBYTE:
MOV R0,#08H ;每位元組讀取8位
RLP:
SETB SDA ;置高數據線
NOP
NOP
SETB SCL ;時鍾線為高接收數據位
NOP
NOP
NOP
NOP
NOP
MOV C,SDA ;讀取數據位(從D7位開始讀取一直到D0位)
CLR SCL ;將SCL拉低時間大於4.7us
RLC A ;進行數據位的處理
NOP
NOP
DJNZ R0,RLP ;未夠8位再來一次
RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;向器件指定子地址寫N個數據
;入口參數: 器件從地址SLA器件子地址SUBA 發送數據緩沖區MTD發送位元組數NUMBYTE
; 佔用 A R0 R1 R2 CY
IWRNBYTE:
MOV R2,NUMBYTE ;接收位元組數送入工作寄存器
LCALL STAR ;起動匯流排
MOV A,SLA_W ;器件寫操作從地址送入累加器A
LCALL WRBYTE ;發送器件從地址
LCALL CACK ;檢查是否有應答
JNB ACK,RETWRN ;無應答則轉移退出
MOV A,SUBA ;器件子地址送入累加器A
LCALL WRBYTE ;發送器件子地址
LCALL CACK ;檢查是否有應答
JNB ACK,RETWRN ;無應答則轉移退出
MOV R1,#MTD ;有應答載入寫入數據緩沖區首址
WRDA:
MOV A,@R1 ;寫入數據緩沖區數據送入累加器A
LCALL WRBYTE ;開始寫入數據
LCALL CACK ;檢查是否有應答
JNB ACK,IWRNBYTE ;無應答則轉移退出
INC R1 ;有應答寫入數據緩沖區地址加1
DJNZ R2,WRDA ;數據全部寫入完了嗎?沒完轉移寫入下一位
LCALL MNACK ;寫入完了,最後一位元組發非應答位
RETWRN:
LCALL STOP ;寫入完成,結束匯流排
NOP
NOP
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;發送位元組子程序
;位元組數據放入ACC
;每發送一位元組要調用一次CACK子程序取應答位
WRBYTE:
MOV R0,#08H ;每位元組寫入8位
WLP:
RLC A ;進行數據位的處理
MOV SDA,C ;寫入數據位(從D7位開始寫入一直到D0位)
NOP
NOP
SETB SCL ;時鍾線為高時寫入數據位
NOP
NOP
NOP
NOP
NOP
CLR SCL ;將SCL拉低時間大於4.7us
NOP
NOP
NOP
NOP
NOP
DJNZ R0,WLP ;未夠8位再來一次
NOP
RET

;;;;;;;;;;;;;;;;;;;;啟動I2C匯流排子程序;;;;;;;;;;;;;;;;;;;;;
;;在時鍾線為高電平時,數據線從高向低切換,這個情況表示起始條件
STAR:
SETB SDA
NOP
SETB SCL ;起始條件建立時間大於4.7us
NOP
NOP
NOP
NOP
NOP
CLR SDA ;起始條件鎖定時大於4.7us
NOP
NOP
NOP
NOP
NOP
CLR SCL ;鉗住匯流排准備發數據
NOP
RET
;;;;;;;;;;;;;;;;;;;;結束匯流排子程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;在時鍾線為高電平時,數據線從低向高切換,這個情況表示停止條件
STOP:
CLR SDA
NOP
SETB SCL ;發送結束條件的時鍾信號
NOP ;結束匯流排時間大於4.7us
NOP
NOP
NOP
NOP
SETB SDA ;結束匯流排
NOP ;保證一個終止信號和起始信號的空閑時間大於4.7us
NOP
NOP
NOP
RET
;;;;;;;;;;;;;;;;;;;;發送應答信號;;;;;;;;;;;;;;;;
MACK:
CLR SDA ;將SDA置0
NOP
NOP
SETB SCL
NOP ;保持數據時間即SCL為高時間大於4.7us
NOP
NOP
NOP
NOP
CLR SCL
NOP
NOP
RET

;;;;;;;;;;;;;;;;;;;;發送非應答信號;;;;;;;;;;;;;;;
MNACK:
SETB SDA ;將SDA置1
NOP
NOP
SETB SCL
NOP
NOP ;保持數據時間即SCL為高時間大於4.7us
NOP
NOP
NOP
CLR SCL
NOP
NOP
RET
;;;;;;;;;;;;;;;;;;;;檢查應答位子程序,返回值ACK=1時表示有應答;;;;;;;;;;;;;;;;;;;;;;;;;;
CACK:
SETB SDA
NOP
NOP
SETB SCL
NOP
NOP
CLR ACK ;無應答,應答標志位置0
MOV C,SDA ;串列數據讀入CY
JC CEND ;CY=1無應答轉移
SETB ACK ;CY為0,有應答,應答標志位置1
CEND:
CLR SCL
NOP
NOP
RET

⑦ 基於單片機的數字時鍾

就是調時定時還用的著DS1302啊,直接用單片機連顯示就可以了,你把你的時鍾功能列清楚,我幫你寫一個

⑧ 基於單片機的數字鍾

電子鍾(DS1302+AT89C2051的紅外遙控鍾)

http://hi..com/lyzhangxiang/blog/item/84c87508738259a92eddd487.html(電路圖)

我的博客hi..com/lyzhangxiang(有空去看看都是講單片機和有關製作的問題的)QQ8250932729(我也很喜歡單片機)

;遙控器各按鍵數據碼,可根據不同的遙控器修改對應的鍵碼
muteM EQU 10h ;靜音鍵 鬧鈴開/關
timerT EQU 0Ch ;菜單鍵 進入/退出設置狀態
leftL EQU 46h ;左移鍵
rightR EQU 47h ;右移鍵
upU EQU 19h ;增加鍵
downD EQU 1dh ;減少鍵
d_off EQU 16H ;顯示鍵 LED數碼管顯示/關閉
recall EQU 44H ;日歷鍵 DS1302初始化操作

K_on BIT P3.0 ;鬧鈴輸出
LED1 BIT P3.3
LED2 BIT P3.4
LED3CLK BIT P3.5 ;DS1302
LED4IO BIT P3.7
RST BIT P3.1

SECOND EQU 60H
;60H 秒
;61h 分
;62h 時
;63h 日
;64h 月 ;65h DAY
;66h 年
;6Ah 鬧分 from 00(1302)
;6BH 鬧時 from 01(1302)
;***************************
ORG 0000H
AJMP START
ORG 0003H
LJMP S_INT ;IRF
ORG 000BH ;200Us
LJMP P_INT ;
ORG 001BH ;display LED
LJMP DISPLAY
;**************************** ;main program
ORG 0030H
START: CLR RST
MOV SP,#2AH
SETB 05H
CLR 06H
SETB 07H;CLR 07H
CLR 08H
CLR 09H
CLR 0AH
CLR 0BH
CLR 0CH
SETB 0DH
CLR 0EH
CLR 0FH
CLR 10H
CLR 11H

MOV R2,#00H ;
MOV R3,#00H ;

MOV TMOD,#12H
MOV TL1,#0e5H ;wait
MOV TH1,#0BeH
MOV TH0,#3FH ;200uS 3f
MOV TL0,#3FH
SETB ET0
SETB ET1
setb pt0
SETB TR0
SETB TR1
SETB IT0 ;
SETB EX0 ;
CLR PX0 ;LCALL SET1302 ;初始化
MOV R1,#0C1H ;取定時參數從1302中
acall T_6061
MOV 6AH,A ;M
MOV R1,#0C3H
ACALL T_6061
MOV 6BH,A ;H

MOV 61H,#0
MOV 62H,#0
SETB EA
sjmp $
;********************************
DISPLAY: PUSH ACC
PUSH PSW
MOV TL1,#0e0H ;wait how long to display (20ms)
MOV TH1,#0b0H
MOV dptr,#tab1
JB 0EH,DIS2
JB 0FH,DIS3
JB 10H,DIS4
JB 11H,DIS5
JNB 0DH,D_OUT

JNB 08H,D_GO ;定時到時,顯示閃爍
JNB 07H,D_OUT
D_G MOV DPTR,#TAB1
MOV A,62H
ANL A,#0FH
MOV B,A
MOV A,62H
SWAP A
ANL A,#07H
MOVC A,@A+DPTR
MOV P1,A
CLR LED1
LCALL DL2M
SETB LED1
MOV A,B
MOVC A,@A+DPTR
MOV C,07H
MOV acc.7,C ;秒燈閃爍
MOV P1,A
CLR LED2
LCALL DL2M
SETB LED2

MOV dptr,#tab2 ;倒裝LED欄位表
MOV A,61H
ANL A,#0FH
MOV B,A
MOV A,61H
SWAP A
ANL A,#0FH

MOVC A,@A+DPTR

MOV C,07H
MOV acc.6,C ;秒燈閃爍
MOV P1,A
CLR LED3CLK
LCALL DL2M
SETB LED3CLK

MOV dptr,#tab1
MOV A,B
MOVC A,@A+DPTR
MOV C,06H
cpl c
MOV acc.7,C ;鬧鈴指示燈
MOV P1,A
CLR LED4IO
LCALL DL2M
SETB LED4IO
D_OUT: SETB TR1
POP PSW
POP ACC
RETI
;*********************
DIS2: AJMP DIS_2
DIS3: AJMP DIS_3
DIS4: AJMP DIS_4
DIS5: AJMP DIS_5
;********************
DIS_2: MOV dptr,#tab1 ;顯示設置小時
MOV 6FH,62H
ACALL BCD_HEX
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P1,A
CLR LED1
LCALL DL2M
SETB LED1
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR LED2
LCALL DL2M
SETB LED2

SETB TR1
POP PSW
POP ACC
RETI
;*****************
DIS_3: MOV DPTR,#TAB2 ;顯示設置分
MOV 6FH,61H
ACALL BCD_HEX
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P1,A
CLR LED3CLK
LCALL DL2M
SETB LED3CLK
MOV A,B
MOV DPTR,#TAB1
MOVC A,@A+DPTR
MOV P1,A
CLR LED4IO
LCALL DL2M
SETB LED4IO

SETB TR1
POP PSW
POP ACC
RETI
;*****************
DIS_4: MOV dptr,#tab1 ;顯示設置鬧時
JNB 07H,D4_OUT ;顯示時閃爍
MOV A,6BH
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,A
CLR LED1
LCALL DL2M
SETB LED1
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR LED2
LCALL DL2M
SETB LED2
D4_OUT: SETB TR1
POP PSW
POP ACC
RETI
;***********************
DIS_5: MOV DPTR,#TAB2
JNB 07H,D5_OUT ;顯示時閃爍
MOV A,6AH ;顯示設置鬧分
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,A
CLR LED3CLK
LCALL DL2M
SETB LED3CLK
MOV DPTR,#TAB1
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR LED4IO
LCALL DL2M
SETB LED4IO
D5_OUT: SETB TR1
POP PSW
POP ACC
RETI
;*****************************
DL2M: MOV 43H,#14H ; every LED(2ms)
DL2: MOV 44H,#14H
DL1: NOP
NOP
DJNZ 44H,DL1
DJNZ 43H,DL2
RET
;************************定時讀取1302時間及判斷鬧鈴時間是否到*******
P_INT: PUSH ACC
PUSH PSW
INC R2
CJNE R2,#250D,P_OUT
MOV R2,#00H
INC R3
CJNE R3,#10D,P_OUT
MOV R3,#00H
CPL 07H
MOV P1,#0FFH
ACALL R_1302
OUT: JNB 06H,P_OUT
MOV A,6BH

MOV B,#10
DIV AB
SWAP A
ADD A,B

CJNE A,62H,PP_OUT
MOV A,6AH

MOV B,#10
DIV AB
SWAP A
ADD A,B
CJNE A,61H,PP_OUT
SETB 08H ;定時到標志
MOV C,07H
cpl c
MOV K_ON,C

P_OUT: POP PSW
POP ACC
RETI
PP_OUT: SETB K_ON
CLR 08H
POP PSW
POP ACC
RETI
;************************有接收到遙控器信號*******
S_INT:CLR EA
PUSH ACC
PUSH PSW
PUSH DPH
PUSH DPL
PUSH 02H
PUSH 03H
MOV R6,#10D ;
SB: ACALL YS1
JB P3.2,EXIT
DJNZ R6, SB
JNB P3.2, $ ;
ACALL YS2 ;
JB P3.2,EXIT
MOV R1,#1AH ;
MOV R2,#4D
PP: MOV R3,#8D
JJJJ: JNB P3.2,$
ACALL YS1
MOV C,P3.2
JNC UUU
JB P3.2,$
UUU: MOV A,@R1
RRC A
MOV @R1,A
DJNZ R3,JJJJ
INC R1
DJNZ R2,PP
;-------------------------------------
MOV A,1AH ;
XRL A,#40h ;判斷1AH的值是否等於遙控器低8位地址(40h)
JNZ EXIT ;
MOV A,1bH
XRL A,#0bfh ;再判斷高8位地址是否正確(0bfh)
JNZ EXIT
MOV A,1CH
CPL A
XRL A,1DH ;將1CH的值取反後和1DH比較 不同則無效丟棄(核對數據是否准確)
JNZ EXIT
ACALL DO ;相應按鍵的處理
EXIT: SETB EA
POP 03H
POP 02H
POP DPL
POP DPH
POP PSW
POP ACC
RETI
;--------------------delay-----------------------
YS1: MOV 70H,#16D ;延時1
D1: MOV 71H,#21D
DJNZ 71H,$
DJNZ 70H,D1
RET
YS2: MOV 70H,#09D ;延時2
D2: MOV 71H,#220D
DJNZ 71H,$
DJNZ 70H,D2
RET
;---------------------------------------------------------
TAB: DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H ;TAB1 LED數碼管顯示表 TAB遙控器鍵值表(未用)
;TAB1: DB 3FH,11H,5EH,5BH,71H,6BH,6FH,19H,7FH,7bH,77H,7CH,39H,5EH,79H,71H
tab1: DB 0C0H,0F9H,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0a7h,0a1h,86h,8EH
TAB2: DB 0c0H,0f9H,64H,70H,59H,52H,42H ;倒裝LED段碼表
;0CH 為設置標志,0DH為全顯示標志,0EH為顯示設置小時標志,0FH為顯示設置分標志
;10H 為顯示設置鬧時標志,11H為顯示設置鬧分標志
;增加鬧時靜音功能
;mute-10h,timer-0eh,left-46h,right-47h,up-19h,down-1dh

D MOV A,1CH
CJNE A,#TIMERT,REDO ;代碼不是設置/退出鍵
JNB 0CH,SET1 ;是,則進入
CLR 0CH ;是,已經進入,則退出
SETB 0DH ;恢復正常顯示
CLR 0EH
CLR 0FH
CLR 10H
CLR 11H
RET

SET1: SETB 0CH
SETB 0EH
CLR 0DH
CLR 0FH
CLR 10H
CLR 11H
RET

RED CJNE A,#MUTEM,REDO1 ;不是設置鍵的處理REDO1,2,3,4...
LJMP MUTE ;MUTE?
REDO1: CJNE A,#D_OFF,DO_SET2
LJMP DIS_OFF ;關閉顯示
DO_SET2:JB 0CH,SET2 ;時間設置的處理
RET
SET2: CJNE A,#UPU,SET2A
LJMP INC1 ;+加(^)
SET2A: CJNE A,#DOWND,SET2B
LJMP DEC2 ;- 減
SET2B: CJNE A,#RIGHTR,SET2C
LJMP RIGHT ;RIGHT右移(>)
SET2C: CJNE A,#LEFTL,SET2D LJMP LEFT ;LEFT左移(<)
SET2D: CJNE A,#RECALL,SET2EXT ;DS1302初始化
LJMP SET1302
SET2EXT:RET
;--------------------------------INC------------------------
INC1: JB 0EH,INCH
JB 0FH,INCM
JB 10H,INC_H
JB 11H,INC_M
RET

INC_H: INC 6BH ;鬧鍾小時增加
MOV A,6BH
CJNE A,#24D,INCH3
MOV 6BH,#0
INCH3: MOV R1,#0C2H
MOV R0,6BH
ACALL SETONE ;寫入DS1302
RET

INC_M: INC 6AH ;鬧鍾分增加
MOV A,6AH
CJNE A,#60D,INCH4
MOV 6AH,#0
INCH4: MOV R1,#0C0H
MOV R0,6AH
ACALL SETONE ;
RET

INCH: ;INC 62H ;
MOV 6FH,62H
ACALL BCD_HEX
INC A
CJNE A,#24D,INCH1
MOV A,#0
INCH1: MOV 6FH,A
ACALL HEX_BCD
MOV 62H,A
MOV R1,#84H
MOV R0,62H
ACALL SETONE ;
RET

INCM: ;INC 61H ;
MOV 6FH,61H
ACALL BCD_HEX
INC A
CJNE A,#60D,INCH2
MOV A,#0
INCH2: MOV 6FH,A
ACALL HEX_BCD
MOV 61H,A
MOV R1,#82H
MOV R0,61H
ACALL SETONE ;
RET

;----------------------------------DEC----------------------
DEC2: JB 0EH,DECH
JB 0FH,DECM
JB 10H,DEC_H
JB 11H,DEC_M
RET
DECH: MOV 6FH,62H
ACALL BCD_HEX
DEC A
CJNE A,#0FFH,DECH1
MOV A,#23
DECH1: MOV 6FH,A
ACALL HEX_BCD
MOV 62H,A
MOV R1,#84H
MOV R0,62H
ACALL SETONE
RET

DECM: MOV 6FH,61H
ACALL BCD_HEX
DEC A
CJNE A,#0FFH,DECM1
MOV A,#59
DECM1: MOV 6FH,A
ACALL HEX_BCD
MOV 61H,A
MOV R1,#82H
MOV R0,61H
ACALL SETONE
RET

DEC_H: DEC 6BH
MOV A,6BH
CJNE A,#0FFH,DECH3
MOV 6BH,#23D
DECH3: MOV R1,#0C2H
MOV R0,6BH
ACALL SETONE
RET

DEC_M: DEC 6AH
MOV A,6AH
CJNE A,#0FFH,DECH4
MOV 6AH,#59D
DECH4: MOV R1,#0C0H
MOV R0,6AH
ACALL SETONE
RET
;--------------------------------RIGHT----------------------
RIGHT: JB 0EH,RIGHT1
JB 0FH,RIGHT2
JB 10H,RIGHT3
JB 11H,RIGHT4
RET ;右移
RIGHT1: CLR 0EH
SETB 0FH
RET
RIGHT2: CLR 0FH
SETB 10H
RET
RIGHT3: CLR 10H
SETB 11H
RET
RIGHT4: CLR 11H
SETB 0EH
RET
;--------------------------------LEFT-----------------------
LEFT: JB 0EH,LEFT1
JB 0FH,LEFT2
JB 10H,LEFT3
JB 11H,LEFT4
RET ;左移
LEFT1: SETB 11H
CLR 0EH
RET
LEFT2: SETB 0EH
CLR 0FH
RET
LEFT3: SETB 0FH
CLR 10H
RET
LEFT4: SETB 10H
CLR 11H
RET
;------------------------------MUTE--------------
MUTE: setb k_ON
CPL 06H ;靜音
CLR 08H
RET
;-----------------------------DISPLAY OFF--------
DIS_OFF:CLR ET1
CPL 05H
JNB 05H,REDORE
SETB ET1
REDORE: RET
;------------------------------------初始化1302
SET1302: CLR RST ;2002年1月1日12:00:00
CLR LED3CLK
MOV SECOND,#0
MOV 61H,#0
MOV 62H,#18 ;
MOV 63H,#1
MOV 64H,#1
MOV 65H,#1
MOV 66H,#2
SETB RST
MOV A,#8EH
LCALL R_BIT
MOV A,#00H
LCALL R_BIT
SETB LED3CLK
CLR RST

MOV R0,#SECOND
MOV R7,#7
MOV R1,#80H
SET1302A:CLR RST
CLR LED3CLK
SETB RST
MOV A,R1
LCALL R_BIT
MOV A,@R0
LCALL R_BIT
INC R0
INC R1
INC R1
SETB LED3CLK
CLR RST
DJNZ R7,SET1302A
CLR RST
CLR LED3CLK

sETB LED3CLK
nop
CLR RST
nop
clr led3clk
SETB RST

MOV A,#90H
LCALL R_BIT
MOV A,#10100101B ;充電器設置
LCALL R_BIT
SETB LED3CLK
CLR RST
CLR LED3CLK

SETB RST
MOV A,#8EH
LCALL R_BIT
MOV A,#80H
LCALL R_BIT
SETB LED3CLK
CLR RST
RET
;----------------------讀取一RAM ------
T_6061: CLR RST
CLR LED3CLK
SETB RST
MOV A,R1
LCALL R_BIT
LCALL W_BIT
SETB LED3CLK
CLR RST
RET
;-----------------------------
R_1302: MOV R0,#SECOND
MOV R7,#7
MOV R1,#81H
R_1302A: CLR RST
CLR LED3CLK
SETB RST
MOV A,R1
LCALL R_BIT
LCALL W_BIT
MOV @R0,A
INC R0
INC R1
INC R1
SETB LED3CLK
CLR RST
DJNZ R7,R_1302A
RET
;------------------R_BIT------------------
R_BIT: MOV R4,#8
R_BIT1: RRC A
MOV LED4IO,C
SETB LED3CLK
CLR LED3CLK
DJNZ R4,R_BIT1
RET
;-------------------W_BIT-----------------------
W_BIT: MOV R4,#8
W_BIT1: MOV C,LED4IO
RRC A
SETB LED3CLK
CLR LED3CLK
DJNZ R4,W_BIT1
RET
;--------------------------------------------------
BCD_HEX:
MOV A,6FH
ANL A,#0FH
MOV B,A
MOV A,6FH
MOV 6FH,B
SWAP A
ANL A,#0FH
MOV B,#0AH
MUL AB
ADD A,6FH
;MOV 6FH,A
RET

HEX_BCD:
MOV A,6FH
MOV B,#10
DIV AB
SWAP A
ADD A,B
;MOV 6FH,A
RET

;-----寫一地址---R1 為地址,R0 為數據----------
SETONE: CLR LED3CLK
CLR RST
CLR LED3CLK
NOP
SETB RST
MOV A,#8EH
LCALL R_BIT
MOV A,#00H
LCALL R_BIT
SETB LED3CLK
CLR RST
CLR LED3CLK
NOP
CLR RST
CLR LED3CLK

SETB RST
MOV A,R1
LCALL R_BIT
MOV A,R0
LCALL R_BIT
NOP
SETB LED3CLK
CLR RST
NOP
NOP
CLR RST
CLR LED3CLK

SETB RST
MOV A,#8EH
LCALL R_BIT
MOV A,#80H
LCALL R_BIT
SETB LED3CLK
CLR RST
RET

⑨ 單片機和數字電路的聯系!!!

有聯系,數電是單片機的基礎

1、就單片機的電路設計而言,沒有多少數電的東西,主要是看外圍電路的一些晶元的數據手冊,知道簡單的邏輯就可以了。
2、單片機編程的話,不用多少數電知識。但必須對數電有所了解。
3、單片機內部運行的具體架構與方式就需要數電知識了,單片機內部也是數字電路搭起來的。

閱讀全文

與單片機的數字相關的資料

熱點內容
單片機的控制板 瀏覽:218
襄陽軟體編程 瀏覽:841
sshpass命令 瀏覽:106
logo伺服器怎麼下載 瀏覽:508
如何ftp連接伺服器 瀏覽:674
creo自動編程 瀏覽:161
雲伺服器在電腦怎麼開 瀏覽:432
ipad相冊如何在文件夾中建文件夾 瀏覽:621
和家親這個app有什麼用 瀏覽:575
什麼app裡面有種樹打折 瀏覽:374
編程外掛入門教學 瀏覽:974
pdf黑白轉彩色 瀏覽:725
英國投資加密貨幣嗎 瀏覽:887
看完程序員那麼可愛後的感受 瀏覽:131
廣播在什麼APP能聽 瀏覽:678
阿克曼小車連接什麼app 瀏覽:773
all100編程器 瀏覽:182
加密的內存卡能用嗎 瀏覽:923
linux在線環境 瀏覽:404
java保留兩位小數四捨五入 瀏覽:106