找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7094|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

51單片機ds1302時鐘lcd1602顯示匯編程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:83710 發(fā)表于 2015-6-23 20:39 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式


  1. ;時控開關(guān)項目起始時間2015、8、29
  2. ORG 0000H
  3. ;***1602端口定義開始
  4. RS EQU P1.0
  5. RW EQU P1.1
  6. E  EQU P1.2
  7. HOUR10 EQU 30H;小時十位
  8. HOUR1 EQU 31H  ;小時個位
  9. MINTE10 EQU 32H ;分鐘十位    緩沖區(qū)
  10. MINTE1 EQU 33H  ;分鐘個位
  11. SCNEDS10 EQU 34H  ;秒十位
  12. SCNEDS1 EQU 35H    ;秒個位


  13. ;*****按鍵設(shè)置
  14. SCNEDS EQU 36H    ;秒
  15. MINTE EQU 37H    ;分
  16. HOUR EQU 38H    ;時
  17. SETMY1 EQU 39H    ;選擇秒寄存器
  18. SETTM1 EQU 40H    ;選擇秒設(shè)定時間
  19.     SETMY2 EQU 41H    ;選擇分寄存器   緩沖區(qū)
  20. SETTM2 EQU 42H    ;選擇分設(shè)定時間
  21.   SETMY3 EQU 43H    ;選擇時寄存器
  22. SETTM3 EQU 44H    ;選擇時設(shè)定時間
  23. ;按鍵設(shè)置用*********

  24. ;*****************鬧鐘設(shè)置用
  25. STARTHOUR10 EQU 45H
  26. STARTHOUR1 EQU 46H  
  27. STARTMINTE10 EQU 47H   ;鬧鐘開始時間
  28. STARTMINTE1 EQU 48H
  29. ;;*****************8                          區(qū)間有效緩沖區(qū)
  30. STOPHOUR10 EQU 49H
  31. STOPHOUR1 EQU 50H  ; 鬧鐘停止時間
  32. STOPMINTE10 EQU 51H
  33. STOPMINTE1 EQU 52H
  34. ;*****************鬧鐘設(shè)置用
  35. STARTMINTE EQU 53H
  36. STOPMINTE EQU 54H
  37. STARTHOUR EQU 55H
  38. STOPHOUR EQU 56H







  39. ;***1602端口定義結(jié)束
  40. ;1302*****端口定義開始
  41. MOV DPTR,#TAB
  42. CE EQU P3.5
  43. IO EQU P3.3
  44. SCLK EQU P3.4
  45. AJMP MAIN
  46. ;1302*******端口定義結(jié)束



  47. ORG 0030H
  48. MAIN:;主函數(shù)
  49. lcall SETTIME ;設(shè)置時鐘
  50. LCALL SETCLOCK
  51. START:LCALL DATE1302 ; 讀1302實時數(shù)據(jù)


  52. AJMP MAIN

  53. ;**************************************************************************************
  54.   ;S設(shè)置液晶                       *
  55. ;                       *
  56. ;**************************************************************************************
  57. INIT:; 液晶初始化開始                  /
  58. ;*********                     /

  59. LCALL DELAY15MS
  60. LCALL WRINSTRUCT;寫指令

  61.   

  62. MOV P0,#38H ;設(shè)置61*2顯示,5*7點陣,8位數(shù)據(jù)口
  63. LCALL PULSE;高脈沖

  64. ;*****
  65. LCALL DELAY5MS

  66. MOV P0,#38H ;設(shè)置61*2顯示,5*7點陣,8位數(shù)據(jù)口
  67. LCALL PULSE;高脈沖

  68. LCALL DELAY5MS

  69. MOV P0,#38H ;設(shè)置61*2顯示,5*7點陣,8位數(shù)據(jù)口
  70. LCALL PULSE;高脈沖


  71. ;**************
  72. MOV P0,#06H ;設(shè)置1602為讀寫一個字符后地址指針加一,且光標加一
  73. LCALL PULSE;高脈沖
  74. ;*****
  75. LCALL DELAY5MS

  76. ;**************
  77. MOV P0,#0FH;設(shè)置1602位為開顯示顯示光標且閃爍
  78. LCALL PULSE;高脈沖
  79. ;*****
  80.   LCALL DELAY5MS

  81. ;**************
  82. MOV P0,#01H ;清屏
  83. LCALL PULSE;高脈沖
  84. ;**************

  85. LCALL DELAY5MS

  86. ;**************

  87. RET   ;    液晶初始化結(jié)束

  88. ;**********************************************************************************

  89. DATE1302:; 讀1302實時數(shù)據(jù)開始

  90. LCALL REST
  91. lcall write1302 ;設(shè)置時鐘寫入1302芯片
  92.    nop
  93.   nop
  94.   nop
  95.   nop
  96.   nop
  97.   nop
  98.   nop
  99.   nop    ;哈哈哈原來如此!這里果然得加延時,不加的話1302反應(yīng)不過來啊,哈哈哈
  100.   nop    ;至今天我終于把DS1302`搞定了,這也是努力得來的啊,我雖然笨,但別人做到了,我通過努力也一定辦得到。
  101.                       ;至今天板子上的器件都搞定了2010年8月1日,這個值得紀念的 日子,
  102.   nop     ;
  103.   nop
  104.   nop
  105.   nop
  106.   nop

  107. KK: MOV A,#81H
  108. LCALL READ1302
  109. MOV 55H,A
  110. ANL A,#0FH    ; 秒處理
  111. MOV SCNEDS1,A
  112. MOV A,55H
  113. SWAP A
  114. ANL A,#0FH
  115. MOV SCNEDS10,A

  116. MOV A,#83H
  117. LCALL READ1302
  118. MOV 55H,A
  119. ANL A,#0FH    ;分鐘處理
  120. MOV MINTE1,A
  121. MOV A,55H
  122. SWAP A
  123. ANL A,#0FH
  124. MOV MINTE10,A

  125.   MOV A,#85H
  126. LCALL READ1302
  127. MOV 55H,A
  128. ANL A,#0FH
  129. MOV HOUR1,A   ;小時處理
  130. MOV A,55H
  131. SWAP A
  132. ANL A,#03H
  133. MOV HOUR10,A
  134. LCALL DELAY900MS
  135. LCALL CLOCKS  ;定時器查詢
  136. LCALL DISPLAY1602;液晶顯示
  137. AJMP KK






  138. RET ; 讀1302實時數(shù)據(jù)結(jié)束

  139. ;***********************************************************************************

  140. DISPLAY1602:;1602液晶顯示開始
  141. LCALL INIT ;液晶初始化
  142. ;第一行顯示TIME**:**:
  143. LCALL WRINSTRUCT;寫指令
  144. MOV P0,#82H;從02號地址開始顯示
  145. LCALL PULSE;高脈沖

  146. LCALL DELAY1MS

  147. LCALL WDATE;寫數(shù)據(jù)

  148. MOV P0,#54H;顯示T;
  149. LCALL PULSE;高脈沖

  150. LCALL DELAY1MS
  151. MOV P0,#49H;顯示I;     TIME
  152. LCALL PULSE;高脈沖

  153. LCALL DELAY1MS
  154. MOV P0,#4DH;顯示M;
  155. LCALL PULSE;高脈沖

  156. LCALL DELAY1MS
  157. MOV P0,#45H;顯示E;
  158. LCALL PULSE;高脈沖

  159. LCALL DELAY1MS
  160. MOV A,HOUR10
  161. MOVC A,@A+DPTR;顯示小時十位;
  162. MOV P0,A
  163. LCALL PULSE;高脈沖

  164. LCALL DELAY1MS

  165. MOV A,HOUR1;顯示小時個位;
  166. MOVC A,@A+DPTR
  167. MOV P0,A
  168. LCALL PULSE;高脈沖

  169. LCALL DELAY1MS
  170.   
  171. MOV P0,#3AH;顯示:;
  172. LCALL PULSE;高脈沖

  173. LCALL DELAY1MS

  174. MOV A,MINTE10;顯示分鐘十位;
  175. MOVC A,@A+DPTR
  176. MOV P0,A
  177. LCALL PULSE;高脈沖
  178. LCALL DELAY1MS

  179. MOV A,MINTE1;顯示分鐘個位;
  180. MOVC A,@A+DPTR
  181. MOV P0,A
  182. LCALL PULSE;高脈沖
  183. LCALL DELAY1MS
  184.    
  185. MOV P0,#3AH;顯示:;
  186. LCALL PULSE;高脈沖

  187. LCALL DELAY1MS

  188. MOV A,SCNEDS10;顯示秒十位;
  189. MOVC A,@A+DPTR
  190. MOV P0,A
  191. LCALL PULSE;高脈沖

  192. LCALL DELAY1MS

  193. MOV A,SCNEDS1;顯示秒個位;
  194.   MOVC A,@A+DPTR
  195. MOV P0,A
  196. LCALL PULSE;高脈沖
  197. ;******************************************************第二行顯示,以上是第一行顯示
  198. LCALL DELAY20MS

  199. LCALL WRINSTRUCT;寫指令
  200. MOV P0,#0C0H;從第二行00號40H顯示地址開始顯示
  201. LCALL PULSE;高脈沖
  202. LCALL DELAY1MS

  203. LCALL WDATE;寫數(shù)據(jù)

  204. MOV P0,#53H;顯示S;
  205. LCALL PULSE;高脈沖

  206. LCALL DELAY1MS
  207. MOV P0,#54H;顯示T;     STR
  208. LCALL PULSE;高脈沖

  209. LCALL DELAY1MS
  210. MOV P0,#52H;顯示R;
  211. LCALL PULSE;高脈沖

  212. LCALL DELAY1MS
  213. MOV A,STARTHOUR10
  214. MOVC A,@A+DPTR;顯示定時開始小時十位;
  215. MOV P0,A
  216. LCALL PULSE;高脈沖

  217. LCALL DELAY1MS

  218. MOV A,STARTHOUR1;顯示定時開始小時個位;
  219. MOVC A,@A+DPTR
  220. MOV P0,A
  221. LCALL PULSE;高脈沖

  222. LCALL DELAY1MS
  223.   
  224. MOV P0,#3AH;顯示:;
  225. LCALL PULSE;高脈沖

  226. LCALL DELAY1MS

  227. MOV A,STARTMINTE10;顯示定時開始分鐘十位;
  228. MOVC A,@A+DPTR
  229. MOV P0,A
  230. LCALL PULSE;高脈沖
  231. LCALL DELAY1MS

  232. MOV A,STARTMINTE1;顯示定時開始分鐘個位;
  233. MOVC A,@A+DPTR
  234. MOV P0,A
  235. LCALL PULSE;高脈沖
  236. ;××××××××××××××××××××××以上是開始鬧鐘設(shè)置時間顯示××××××××××××××××××××××××××××
  237. LCALL DELAY1MS

  238. LCALL WDATE;寫數(shù)據(jù)

  239. MOV P0,#53H;顯示S;
  240. LCALL PULSE;高脈沖

  241. LCALL DELAY1MS
  242. MOV P0,#54H;顯示T;     STP
  243. LCALL PULSE;高脈沖

  244. LCALL DELAY1MS
  245. MOV P0,#50H;顯示P;
  246. LCALL PULSE;高脈沖

  247. LCALL DELAY1MS
  248. MOV A,STOPHOUR10
  249. MOVC A,@A+DPTR;顯示定時結(jié)束小時十位;
  250. MOV P0,A
  251. LCALL PULSE;高脈沖

  252. LCALL DELAY1MS

  253. MOV A,STOPHOUR1;顯示定時結(jié)束小時個位;
  254. MOVC A,@A+DPTR
  255. MOV P0,A
  256. LCALL PULSE;高脈沖

  257. LCALL DELAY1MS
  258.   
  259. MOV P0,#3AH;顯示:;
  260. LCALL PULSE;高脈沖

  261. LCALL DELAY1MS

  262. MOV A,STOPMINTE10;顯示定時結(jié)束分鐘十位;
  263. MOVC A,@A+DPTR
  264. MOV P0,A
  265. LCALL PULSE;高脈沖
  266. LCALL DELAY1MS

  267. MOV A,STOPMINTE1;顯示定時結(jié)束分鐘個位;
  268. MOVC A,@A+DPTR
  269. MOV P0,A
  270. LCALL PULSE;高脈沖


















  271. RET;1602液晶顯示結(jié)束

  272. ;************************************************************************************

  273. SETTIME:  ;按鍵設(shè)置時間開始
  274. MOV P2,#0FH
  275. LCALL DISPLAY1602
  276. pp:JB P2.0,$
  277. LCALL DELAY20MS
  278. JB P2.0,PP
  279. ;**************
  280. CLR P1.7
  281. LCALL DELAY20MS   ;蜂鳴器
  282. LCALL DELAY20MS
  283. SETB P1.7
  284. ;*****************
  285. MOV SETMY1,#80H;秒指令
  286. LCALL DISPLAY1602
  287. JB P2.1,$
  288. LCALL DELAY20MS
  289. L3:JB P2.1,YY1
  290.    LCALL DELAY20MS
  291.    JB P2.1,L3

  292.    MOV B,#10
  293.    MOV A,SCNEDS
  294.    DIV AB
  295.    CJNE A,#05,LINE1
  296.    MOV A,B
  297.    CJNE A,#09,LINE1
  298.    MOV SETTM1,#00H
  299.    MOV SCNEDS,#00H
  300.    AJMP O1
  301. LINE1:CLR C;#########################||||特別注意這里啊C一定要清零,負責DA轉(zhuǎn)換是不對的|||||||=+++++++++++++++vvvvvvvvvvvvvvbbbbbbbbbb
  302. MOV A,SETTM1 ;設(shè)置加秒時間
  303. INC A
  304. DA A
  305. MOV SETTM1,A


  306. ;*************************
  307. INC SCNEDS;用來同步顯示
  308. O1:MOV A,SCNEDS
  309. MOV B,#10
  310. DIV AB
  311. MOV SCNEDS10,A
  312. MOV SCNEDS1,B    ; 秒處理



  313. LCALL DISPLAY1602
  314. ;********************
  315. YY1: JB P2.0,L3
  316. ;************************************已上是秒設(shè)置
  317.   LCALL DISPLAY1602
  318. pp2:JB P2.0,$
  319. LCALL DELAY20MS
  320. JB P2.0,PP2

  321. ;**************
  322. CLR P1.7
  323. LCALL DELAY20MS
  324. LCALL DELAY20MS
  325. SETB P1.7
  326. ;*****************

  327. MOV SETMY2,#82H;分指令
  328. LCALL DISPLAY1602
  329. JB P2.1,$
  330. L32:JB P2.1,YY2
  331.    LCALL DELAY20MS
  332.    JB P2.1,L32

  333. MOV B,#10
  334.    MOV A,MINTE
  335.    DIV AB
  336.    CJNE A,#05,LINE2
  337.    MOV A,B
  338.    CJNE A,#09,LINE2
  339.    MOV SETTM2,#00H
  340.    MOV MINTE,#00H
  341.    AJMP O2
  342. LINE2:
  343. CLR C ;######################################||||特別注意這里啊C一定要清零,負責DA轉(zhuǎn)換是不對的|||||||=+++++++++++++++vvvvvvvvvvvvvvbbbbbbbbbb
  344. MOV A,SETTM2 ;設(shè)置加分時間
  345. INC A
  346. DA A
  347. MOV SETTM2,A

  348. ;*************************
  349. INC MINTE;用來同步顯示
  350. O2:MOV A,MINTE
  351. MOV B,#10
  352. DIV AB
  353. MOV MINTE10,A
  354. MOV MINTE1,B
  355.    LCALL DISPLAY1602
  356. ;********************
  357. YY2: JB P2.0,L32
  358. ;**************************已上是分設(shè)置

  359.   LCALL DISPLAY1602
  360. pp3:JB P2.0,$
  361. LCALL DELAY20MS
  362. JB P2.0,PP3
  363. ;**************
  364. CLR P1.7
  365. LCALL DELAY20MS
  366. LCALL DELAY20MS
  367. SETB P1.7
  368. ;*****************

  369. MOV SETMY3,#84H  ;小時指令
  370. LCALL DISPLAY1602
  371. JB P2.1,$
  372. LCALL DELAY20MS
  373. L33:JB P2.1,YY3
  374.    LCALL DELAY20MS;去抖動
  375.    JB P2.1,L33

  376. MOV B,#10
  377.    MOV A,HOUR
  378.    DIV AB
  379.    CJNE A,#02,LINE3
  380.    MOV A,B
  381.    CJNE A,#03,LINE3
  382.    MOV SETTM3,#00H
  383.    MOV HOUR,#00H
  384.    AJMP O3
  385. LINE3:CLR C;################################# ||||特別注意這里啊C一定要清零,負責DA轉(zhuǎn)換是不對的媽個比我費了老大的時|||||||=+++++++++++++++vvvvvvvvvvvvvvbbbbbbbbbb
  386. MOV A,SETTM3
  387. INC A
  388. DA A
  389. MOV SETTM3,A ;設(shè)置加時時間


  390. ;*************************
  391. INC HOUR;用來同步顯示
  392. O3:MOV A,HOUR
  393. MOV B,#10
  394. DIV AB
  395. MOV HOUR10,A
  396. MOV HOUR1,B
  397. LCALL DISPLAY1602
  398. ;********************
  399. YY3: JB P2.0,L33
  400. ;******************************已上是時設(shè)置

  401. RET ;按鍵設(shè)置時間結(jié)束
  402. ;*************************************************************************************
  403. ;************************************************************************************

  404. SETCLOCK:  ;按鍵設(shè)置鬧鐘開始
  405.   UR1:JB P2.0,$
  406. LCALL DELAY20MS  ;進入定時器開始時間設(shè)制 ××設(shè)置完時間按下2.0則進入設(shè)置定時器模式,按2.1加2.2減設(shè)置想要退出則按2.0鍵
  407. JB P2.0,UR1

  408. ;**************
  409. CLR P1.7
  410. LCALL DELAY20MS
  411. LCALL DELAY20MS

  412. SETB P1.7
  413. ;*****************

  414.   LCALL DISPLAY1602
  415.   JB P2.1,$;很重要啊,關(guān)鍵啊,如果沒有則直接向下了,正是他
  416.   LCALL DELAY20MS
  417. UR2:JB P2.1,YF
  418.    LCALL DELAY20MS;去抖動
  419.    JB P2.1,UR2
  420.    ;********************

  421. MOV B,#10
  422.    MOV A,STARTMINTE
  423.    DIV AB
  424.    CJNE A,#05,LINE21
  425.    MOV A,B
  426.    CJNE A,#09,LINE21
  427.    MOV STARTMINTE,#00H
  428.    AJMP O21
  429. LINE21:INC STARTMINTE ;鬧鐘開始時間設(shè)置加分
  430.   O21:MOV A,STARTMINTE
  431. MOV B,#10
  432. DIV AB
  433. MOV STARTMINTE10,A
  434. MOV STARTMINTE1,B

  435. LCALL DISPLAY1602
  436. ;********************

  437. YF: JB P2.0,UR2

  438. ;**************
  439. CLR P1.7
  440. LCALL DELAY20MS
  441. LCALL DELAY20MS
  442. SETB P1.7
  443. ;*****************


  444. JB P2.1,$;很重要啊,關(guān)鍵啊,如果沒有則直接向下了,正是他
  445.   LCALL DELAY20MS
  446. UR22:JB P2.1,YF2
  447.    LCALL DELAY20MS;去抖動
  448.    JB P2.1,UR22

  449.    MOV B,#10
  450.    MOV A,STARTHOUR
  451.    DIV AB
  452.    CJNE A,#02,LINE22
  453.    MOV A,B
  454.    CJNE A,#03,LINE22
  455.    MOV STARTHOUR,#00H
  456.    SJMP O22
  457. LINE22:INC STARTHOUR ;鬧鐘開始時間置加時
  458. O22:MOV A,STARTHOUR
  459. MOV B,#10
  460. DIV AB
  461. MOV STARTHOUR10,A
  462. MOV STARTHOUR1,B

  463. LCALL DISPLAY1602
  464. ;********************
  465. YF2: JB P2.0,UR22
  466. ;***************
  467. ;******************************************************************************
  468.   ;**************
  469. CLR P1.7
  470. LCALL DELAY20MS
  471. LCALL DELAY20MS

  472. SETB P1.7
  473. ;*****************


  474. JB P2.1,$;很重要啊,關(guān)鍵啊,如果沒有則直接向下了,正是他
  475.   LCALL DELAY20MS
  476. UR23:JB P2.1,YF3
  477.    LCALL DELAY20MS;去抖動
  478.    JB P2.1,UR23

  479.    MOV B,#10
  480.    MOV A,STOPMINTE
  481.    DIV AB
  482.    CJNE A,#05,LINE23
  483.    MOV A,B
  484.    CJNE A,#09,LINE23
  485.    MOV STOPMINTE,#00H
  486.    SJMP O23
  487. LINE23:INC STOPMINTE ;鬧鐘結(jié)束時間設(shè)置加分
  488. O23:MOV A,STOPMINTE
  489. MOV B,#10
  490. DIV AB
  491. MOV STOPMINTE10,A
  492. MOV STOPMINTE1,B

  493. LCALL DISPLAY1602
  494. ;********************
  495. YF3: JB P2.0,UR23
  496. ;***************
  497. ;**************
  498. CLR P1.7
  499. LCALL DELAY20MS
  500. LCALL DELAY20MS

  501. SETB P1.7
  502. ;*****************


  503. JB P2.1,$;很重要啊,關(guān)鍵啊,如果沒有則直接向下了,正是他
  504.   LCALL DELAY20MS
  505. UR24:JB P2.1,YF4
  506.    LCALL DELAY20MS;去抖動
  507.    JB P2.1,UR24

  508.    MOV B,#10
  509.    MOV A,STOPHOUR
  510.    DIV AB
  511.    CJNE A,#02,LINE24
  512.    MOV A,B
  513.    CJNE A,#03,LINE24
  514.    MOV STOPHOUR,#00H
  515.    SJMP O24
  516. LINE24:INC STOPHOUR ;鬧鐘結(jié)束時間設(shè)置加時
  517. O24:MOV A,STOPHOUR
  518. MOV B,#10
  519. DIV AB
  520. MOV STOPHOUR10,A
  521. MOV STOPHOUR1,B

  522. LCALL DISPLAY1602
  523. ;********************
  524. YF4: JB P2.0,UR24
  525. ;***************

  526. RET



  527. CLOCKS:                      ;定時器查詢
  528. MOV A,HOUR10
  529. CJNE A,STARTHOUR10,ED
  530. MOV A,HOUR1
  531. CJNE A,STARTHOUR1,ED
  532. MOV A,MINTE10      ;鬧鐘開始時間
  533. CJNE A,STARTMINTE10,ED
  534. MOV A,MINTE1
  535. CJNE A,STARTMINTE1,ED
  536. clr P1.7

  537. ED:
  538. MOV A,HOUR10
  539. CJNE A,STOPHOUR10,EN
  540. MOV A,HOUR1
  541. CJNE A,STOPHOUR1,EN
  542. MOV A,MINTE10    ;鬧鐘停止時間
  543. CJNE A,STOPMINTE10,EN
  544. MOV A,MINTE1
  545. CJNE A,STOPMINTE1,EN
  546. setb P1.7

  547. EN:RET ;按鍵設(shè)置鬧鐘結(jié)束
  548. ;*************************************************************************************
  549. DELAY5MS:MOV R6,#0FH
  550. DL1:
  551.     MOV R5,#98H
  552.     DJNZ R5,$  ;延時5ms
  553.     DJNZ R6,DL1
  554. RET
  555. DELAY20MS:  MOV R7,#01H
  556. DL111:
  557.     MOV R6,#0DEH
  558. DL011:
  559.     MOV R5,#28H
  560.     DJNZ R5,$
  561.     DJNZ R6,DL011
  562.     DJNZ R7,DL111
  563.     RET


  564. WRINSTRUCT :
  565. CLR RS
  566. CLR RW ;寫指令允許
  567. CLR E
  568. RET
  569. WDATE:
  570. SETB RS
  571. CLR RW ;寫數(shù)據(jù)允許        1602使用區(qū)
  572. CLR E
  573. RET
  574. PULSE:;高脈沖
  575. SETB E
  576. NOP
  577. NOP
  578. NOP
  579. CLR E
  580. RET
  581. DELAY1MS:
  582.   MOV R6,#66H
  583. DL10:
  584.     MOV R5,#03H
  585.     DJNZ R5,$    ;延時1ms
  586.     DJNZ R6,DL10
  587.     RET
  588. DELAY15MS:

  589.   
  590.     MOV R6,#33H    ;延時15ms
  591. DL20:
  592.     MOV R5,#86H
  593.     DJNZ R5,$
  594.     DJNZ R6,DL20
  595.     RET
  596. DELAY900MS:
  597.   MOV R7,#7FH
  598. DL1E:
  599.     MOV R6,#80H
  600. DL0E:
  601.     MOV R5,#18H
  602.     DJNZ R5,$
  603.     DJNZ R6,DL0E
  604.     DJNZ R7,DL1E
  605.     RET

  606. ;********以下是1302時鐘程序開始***********************以下是1302時鐘程序開始 ***********************************
  607. deley:mov r0,#001h
  608. loop:mov r1,#0ffh

  609. lo:nop
  610.     nop
  611.     nop    ;延時子程序
  612.     NOP
  613.     NOP
  614. NOP
  615.     djnz r1,lo
  616.     djnz r0,loop
  617.     ret
  618. ;**********1302
  619. READ1302:;注意這里啊,這里的讀貝內(nèi)置到肚里面,原因再與如果分開在時序上是不成立的,
  620.         CLR SCLK
  621.         SETB CE
  622.         SETB IO
  623.         NOP
  624.         NOP
  625.       CLR C
  626.            NOP
  627.         NOP
  628.       MOV R1,#08
  629.    Ro:
  630.    CLR SCLK
  631.     RRC A
  632.     MOV IO,C
  633.     NOP
  634.     SETB SCLK
  635.     NOP
  636.     NOP
  637.     DJNZ R1,Ro



  638.       mov r1,#08
  639.        RUD:
  640.        setb sclk
  641.          NOP
  642.          NOP
  643.          CLR SCLK
  644.          NOP
  645.          NOP
  646.          MOV C,IO
  647.                   NOP
  648.          RRC A
  649.          DJNZ R1,RUD
  650.          CLR SCLK
  651.          CLR CE
  652.          RET
  653.          ;************1302
  654. write1302:LCALL DELAY5MS
  655.          mov a,SETMY1;選擇秒寄存器
  656.          LCALL WRITE1
  657.          mov a,SETTM1;選擇秒時間
  658.   LCALL WRITE2
  659.    LCALL  DELAY10US

  660.    mov a,SETMY2;分寄存器
  661.          LCALL WRITE1
  662.          mov a,SETTM2;設(shè)分時間
  663.     LCALL WRITE2
  664.    LCALL  DELAY10US

  665.    mov a,SETMY3;時寄存器
  666.         LCALL WRITE1
  667.         mov a,SETTM3 ;設(shè)為20,am,24小時制  
  668.        LCALL WRITE2
  669.          RET

  670.           WRITE1:clr sclk
  671.            SETB CE
  672.    
  673.     MOV R1,#08
  674.    WUR: RRC A
  675.     MOV IO,C
  676.     NOP
  677.     NOP
  678.    
  679.     SETB SCLK
  680.     NOP
  681.     NOP
  682.     CLR SCLK
  683.     DJNZ R1,WUR
  684.    RET
  685.   
  686. WRITE2:      MOV R1,#08
  687.    WURt: RRC A
  688.     MOV IO,C
  689.     NOP
  690.     NOP
  691.     NOP
  692.     SETB SCLK
  693.     NOP
  694.     NOP
  695.     CLR SCLK
  696.     DJNZ R1,WURt

  697.     CLR SCLK
  698.     NOP
  699.     NOP
  700.     NOP
  701.     CLR CE
  702.     RET
  703.     ;********1302
  704.    
  705. REST:CLR SCLK
  706.    CLR CE
  707.    clr io
  708.    clr c
  709.        NOP
  710.     NOP
  711.     NOP
  712.    NOP
  713.    NOP
  714.    RET
  715.    ;********1302
  716.    DELAY10US:
  717.    NOP
  718.    NOP
  719.    NOP
  720.    NOP    ;延時10us
  721.    NOP
  722.    NOP
  723.    NOP
  724.    NOP
  725.    NOP
  726.    NOP
  727.    RET
  728. ;1302程序結(jié)束*********************************************************
  729. TAB:DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H

  730. END;2015年8月30日于天津,完成主體9月1日完成初步修飾
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:204419 發(fā)表于 2017-5-25 20:15 | 只看該作者
#在請問樓主能給我發(fā)一份51單片機lcd1602和DS1302原理圖嗎,我最近一直在做這個程序可是做不出來,所以急需樓主程序相應(yīng)原理圖研究一下這里快速回復(fù)#
回復(fù)

使用道具 舉報

板凳
ID:316515 發(fā)表于 2018-6-16 21:37 | 只看該作者
樓主求電路圖
回復(fù)

使用道具 舉報

地板
ID:61140 發(fā)表于 2022-4-29 13:32 | 只看該作者
整個程序條理清楚,功能分明,看著一目了然
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表