欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
LCD1602 時鐘顯示 匯編語言編程帶proteus仿真
[打印本頁]
作者:
51黑ff
時間:
2016-9-27 18:27
標題:
LCD1602 時鐘顯示 匯編語言編程帶proteus仿真
一個用51單片機做的LCD1602 時鐘顯示 下面是仿真原理圖,采用匯編語言來編程.
0.png
(24.58 KB, 下載次數: 58)
下載附件
2016-9-27 18:24 上傳
0.png
(64.67 KB, 下載次數: 60)
下載附件
2016-9-27 18:26 上傳
時鐘程序的所有資料打包下載:
數字時鐘.rar
(248.57 KB, 下載次數: 22)
2016-9-27 18:27 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
源程序:
;/********************************************************************************
; LCD1602 時鐘顯示Cekong time測控何小雙
;********************************************************************************/
RS EQU P2.0; //控制端接口
R_W EQU P2.1
E EQU P2.2
DB0_DB7 EQU P0
;***********定義時、分、秒及50ms單元*******
DI_DA DATA 20H
SEC DATA 21H
MIN DATA 22H
HOUR DATA 23H
;************程序開始***********************
ORG 000H
LJMP MAIN
ORG 000BH //定時器TO的中斷入口地址
LJMP CLOCK
ORG 0030H
MAIN:MOV TMOD,#01H //工作方式1.16位定時計數
MOV TL0,#0B0H //設置初值
MOV TH0,#03CH
SETB ET0 //允許T0中斷
SETB TR0 //啟動T0
MOV DI_DA,#00H
SETB EA //總中斷開放
MOV SP,#60H //設置堆棧指針
LCALL INITIAL //初始化
LCALL CLS //清屏
;*************顯示Cekong time**************
MOV A,#10000000B
LCALL WRITE_COM
MOV DPTR,#LINE0
LCALL DISP
;***********************************************
MOV A,#11000000B
LCALL WRITE_COM
MOV DPTR,#LINE1
LCALL DISP
;***********************************************
MOV A,#11001100B
LCALL WRITE_COM
MOV DPTR,#LINE1
LCALL DISP
;****************計時開始***********************
BEGIN:MOV P1,#7FH
MOV A,P1
CJNE A,#7FH,NEXT //首先對兩個規定的操作數進行比較,然后根據比較的結果來決定是否轉移--若兩個操作數相等,程序按順序往下執行NEXT;
; SETB P1.7
ACALL CONV //計時轉換
ACALL DIS //顯示出時間
AJMP BEGIN
NEXT: ACALL KEY
AJMP BEGIN
;****************掃描按鍵***********************
KEY: ACALL DEL10MS //軟件濾波 delay后檢測
JB P1.4,HOUR_KEY //1.4和1.5硬件設計
MIN_ADJ:CLR C
MOV A,MIN
INC A
DA A
CJNE A,#60H,X1
CLR A
X1: MOV MIN,A
ACALL DIS
ACALL DEL200MS
MOV P1,#7FH
JNB P1.4,MIN_ADJ
HOUR_KEY:JB P1.5,X2
HOUR_ADJ:CLR C
MOV A,HOUR
INC A
DA A
CJNE A,#24H,X3
CLR A
X3: MOV HOUR,A
ACALL DIS
ACALL DEL200MS
X2: MOV P1,#7FH
JNB P1.5,HOUR_ADJ
// SETB P1.7
RET
;**********************計時轉換*************************
CONV: MOV A,DI_DA
CJNE A,#14H,DONE
MOV DI_DA,#00H
MOV A,SEC
ADD A,#01H
DA A
MOV SEC,A
CJNE A,#60H,DONE
MOV SEC,#00H
MOV A,MIN
ADD A,#01H
DA A
MOV MIN,A
CJNE A,#60H,DONE
MOV MIN,#00H
MOV A,HOUR
ADD A,#01H
DA A
MOV HOUR,A
CJNE A,#24H,DONE
MOV HOUR,#00H
DONE: RET
;******************顯示時間****************************
DIS: MOV A,#11000100B
//MOV A,#00111000B 當為這個值是能在lcd顯示跳秒,但就是不知道上面的值在protues中怎么就不能正常顯示,而實際中能顯示
LCALL WRITE_COM
MOV A,HOUR
SWAP A ///累加器內高低半字節交換
ANL A,#0FH
ADD A,#30H
LCALL WRITE_DATA
MOV A,HOUR
ANL A,#0FH
ADD A,#30H
LCALL WRITE_DATA
MOV A,#3AH
LCALL WRITE_DATA
;********************************************
MOV A,MIN
SWAP A
ANL A,#0FH
ADD A,#30H
LCALL WRITE_DATA
MOV A,MIN
ANL A,#0FH
ADD A,#30H
LCALL WRITE_DATA
MOV A,#3AH
LCALL WRITE_DATA //分
;******************************************
MOV A,SEC
SWAP A
ANL A,#0FH
ADD A,#30H
LCALL WRITE_DATA
MOV A,SEC
ANL A,#0FH
ADD A,#30H
LCALL WRITE_DATA
RET //秒
;*****************50ms定時中斷服務子程序***************
CLOCK: MOV TL0,#0B0H
MOV TH0,#3CH
INC DI_DA //增加1
RETI
;*****************顯示字符串到LCD子程序****************
DISP: PUSH ACC
DISP_LOOP:CLR A
MOVC A,@A+DPTR
JZ END_DISP
LCALL WRITE_DATA
INC DPTR
SJMP DISP_LOOP
END_DISP: POP ACC
RET
;***************************************************************
; LCD1602初始化設定子程序
;***************************************************************
INITIAL: MOV A,#00111000B //顯示模式設置
LCALL WRITE_COM
MOV A,#00001100B //開顯示及光標顯示
LCALL WRITE_COM
MOV A,#00000110B
LCALL WRITE_COM
RET
;*****************清除LCD1602子程序**********************
CLS: MOV A,#00000001B
LCALL WRITE_COM
RET
;*****************寫指令程序*********************************
WRITE_COM: LCALL CHECK_BUSY
CLR E
CLR RS
CLR R_W // RS與RW低電平
SETB E //E引腳來脈沖 從而實現寫指令
MOV DB0_DB7,A
CLR E
RET
;****************寫數據到LCD子程序******************
WRITE_DATA: LCALL CHECk_BUSY
CLR E
SETB RS
CLR R_W
SETB E
MOV DB0_DB7,A
CLR E
RET
;***************查詢忙碌標志信號子程序**********
CHECK_BUSY: PUSH ACC //壓進去
BUSY_LOOP: CLR E
SETB R_W
CLR RS
SETB E
MOV A,DB0_DB7
CLR E
JB ACC.7,BUSY_LOOP //直接尋址位為1則轉移
POP ACC //推出來
LCALL DEL
RET //DB7=1則忙反之不忙則可以接收數據與命令
;*******************************************************************************延時2.5ms子程序********************
DEL: MOV R6,#5
TX0: MOV R7,#248
DJNZ R7,[ DISCUZ_CODE_2 ]nbsp; //248*2us*5
DJNZ R6,TX0
RET
;*****************延時10ms子程序*********************
DEL10MS: MOV R5,#10H
TX1: MOV R4,#0FFH
DJNZ R4,$
DJNZ R5,TX1
RET
;*****************延時200ms子程序********************
DEL200MS: MOV R3,#14H //20*10ms
TX2: ACALL DEL10MS
DJNZ R3,TX2
RET
;*****************字符串*****************************
LINE0: DB "**CeKong2 Time**",00H //第一行
LINE1: DB " ",00H //第二行標記
END
復制代碼
作者:
songxia8013
時間:
2017-12-18 17:38
坑人的程序,不好用!
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1