找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

單片機(jī)制作DS1302 LCD1602顯示年歷時(shí)鐘 匯編程序+電路圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:85192 發(fā)表于 2015-7-10 02:47 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式


程序清單:
  1. ;DS1302 1602LCD顯示
  2. ;2016 04 26    E:\D[J\DS1302LCD\DS1302LCD.ASM

  3. H_ADJ  BIT P2.0 ;時(shí)/年調(diào)整
  4. M_ADJ  BIT P2.1 ;分/月調(diào)整
  5. S_ADJ  BIT P2.2 ;秒/日調(diào)整
  6. DT_SET  BIT P2.3 ;時(shí)間/日期選擇
  7. W_ADJ  BIT P2.4 ;星期調(diào)整
  8. STR  BIT P2.5 ;啟動(dòng)走時(shí)

  9. T_RST  BIT P3.2  ;實(shí)時(shí)時(shí)鐘復(fù)位線引腳
  10. T_CLK   BIT  P3.3  ;實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳
  11. T_IO   BIT  P3.4  ;實(shí)時(shí)時(shí)鐘數(shù)據(jù)線引腳

  12. E   BIT  P3.5  
  13. RW   BIT  P3.6
  14. RS   BIT  P3.7


  15. DL_BIT   EQU  20H ;日低位
  16. DH_BIT   EQU  21H  ;日高位
  17. MOL_BIT   EQU  22H  ;月低位
  18. MOH_BIT   EQU  23H  ;月高位
  19. YL_BIT   EQU  24H  ;年低位
  20. YH_BIT   EQU  25H  ;年高位

  21. SL_BIT  EQU 26H ;秒低位
  22. SH_BIT  EQU 27H ;秒高位
  23. ML_BIT  EQU 28H ;分低位
  24. MH_BIT  EQU 29H ;分高位
  25. HL_BIT  EQU 2AH ;時(shí)低位
  26. HH_BIT  EQU 2BH ;時(shí)高位

  27. SEC  EQU 30H
  28. MIN  EQU 31H
  29. HOUR  EQU  32H
  30. DAY  EQU  33H
  31. MONTH  EQU  34H
  32. WEEK  EQU  35H
  33. YEAR  EQU  36H

  34. DS1302_ADDR  EQU  5EH
  35. DS1302_DATA  EQU  5FH


  36. ORG  00H
  37. LJMP  MAIN
  38. ORG 0BH
  39. AJMP T0INT
  40. ORG  30H
  41. MAIN:
  42. MOV SP,#60H

  43. MOV TMOD,#01H
  44. MOV TH0,#3CH
  45. MOV TL0,#0B0H
  46. MOV R0,#10
  47. SETB EA
  48. SETB ET0
  49. SETB TR0
  50. MOV R1,37H

  51. MOV YEAR,#11H ;上電預(yù)置日期、時(shí)間
  52. MOV WEEK,#00H ;周1 MON
  53. MOV MONTH,#04H ;2011 04 25 12:00:00
  54. MOV DAY,#25H
  55. MOV HOUR,#12H
  56. MOV MIN,#00H
  57. MOV SEC,#00H

  58. MAIN1:
  59. LCALL KEY
  60. JB F0,MAIN10 ;F0=1,開(kāi)始走時(shí)。走時(shí)前寫(xiě),不讀。走時(shí)后讀,不寫(xiě)。
  61. LCALL WR1302  
  62. AJMP MAIN2
  63. MAIN10:
  64. LCALL RD1302   
  65. MAIN2:
  66. MOV A,YEAR  
  67. MOV B,#10H
  68. DIV AB
  69. MOV YL_BIT,B
  70. MOV YH_BIT,A
  71. MOV A,MONTH
  72. MOV B,#10H
  73. DIV AB
  74. MOV MOL_BIT,B
  75. MOV MOH_BIT,A
  76. MOV A,DAY
  77. MOV B,#10H
  78. DIV AB
  79. MOV DL_BIT,B
  80. MOV DH_BIT,A

  81. MOV A,HOUR  
  82. MOV B,#10H
  83. DIV AB
  84. MOV HL_BIT,B
  85. MOV HH_BIT,A
  86. MOV A,MIN
  87. MOV B,#10H
  88. DIV AB
  89. MOV ML_BIT,B
  90. MOV MH_BIT,A
  91. MOV A,SEC
  92. MOV B,#10H
  93. DIV AB
  94. MOV SL_BIT,B
  95. MOV SH_BIT,A

  96. JNB 7CH,MAIN1 ;0.5S標(biāo)志
  97. CLR 7CH
  98. LCALL WEEKCOV         ;星期數(shù)字轉(zhuǎn)換成英語(yǔ)縮寫(xiě)3 字母
  99. LCALL DISP

  100. AJMP MAIN1

  101. KEY: ;按鍵子程序

  102. KEY_SET:
  103. JB DT_SET,KEY_H
  104. ACALL D10MS
  105. JNB DT_SET,$-2
  106. CPL 7FH
  107. JB F0,RT
  108. CPL P2.7  ;點(diǎn)亮日期設(shè)定
  109. AJMP RT
  110. KEY_H:
  111. JB H_ADJ,KEY_M
  112. ACALL D10MS
  113. JNB H_ADJ,$-2
  114. AJMP H_ADD
  115. KEY_M:
  116. JB M_ADJ,KEY_S
  117. ACALL D10MS
  118. JNB M_ADJ,$-2
  119. AJMP M_ADD
  120. KEY_S:
  121. JB S_ADJ,KEY_W
  122. ACALL D10MS
  123. JNB S_ADJ,$-2
  124. AJMP S_ADD
  125. KEY_W:
  126. JB W_ADJ,KEY_ST
  127. ACALL D10MS
  128. JNB W_ADJ,$-2
  129. AJMP W_ADD
  130. KEY_ST:
  131. JB STR,RT
  132. ACALL D10MS
  133. JNB STR,$-2
  134. AJMP K_STR
  135. RT:
  136. RET

  137. H_ADD:
  138. JB 7FH,Y_ADD ;7FH為日期/時(shí)間切換鍵標(biāo)志。1為年月日。
  139. MOV A,HOUR
  140. ADD     A,#01H
  141. DA   A
  142. CJNE A,#24H,H_ADD1
  143. MOV A,#0
  144. H_ADD1:
  145. MOV HOUR,A
  146. AJMP RT
  147. Y_ADD:
  148. MOV A,YEAR
  149. ADD A,#01H
  150. DA A
  151. CJNE A,#20H,Y_ADD1
  152. MOV A,#0
  153. Y_ADD1:
  154. MOV YEAR,A
  155. AJMP RT

  156. M_ADD:
  157. JB 7FH,MO_ADD
  158. MOV A,MIN
  159. ADD     A,#01H
  160. DA   A
  161. CJNE A,#60H,M_ADD1
  162. MOV A,#00H
  163. M_ADD1:
  164. MOV MIN,A
  165. AJMP RT
  166. MO_ADD:
  167. MOV A,MONTH
  168. ADD     A,#01H
  169. DA   A
  170. CJNE A,#13H,MO_ADD1
  171. MOV A,#1
  172. MO_ADD1:
  173. MOV MONTH,A
  174. AJMP RT

  175. S_ADD:
  176. JB 7FH,D_ADD
  177. MOV A,SEC
  178. ADD     A,#01H
  179. DA   A
  180. CJNE A,#60H,S_ADD1
  181. MOV A,#00H
  182. S_ADD1:
  183. MOV SEC,A
  184. AJMP RT
  185. D_ADD:
  186. MOV A,DAY
  187. ADD A,#01H
  188. DA   A
  189. CJNE A,#32H,D_ADD1
  190. MOV A,#01H
  191. D_ADD1:
  192. MOV DAY,A
  193. AJMP RT

  194. W_ADD:
  195. MOV A,WEEK
  196. ADD A,#01H
  197. DA   A
  198. CJNE A,#7H,W_ADD1
  199. MOV A,#0
  200. W_ADD1:
  201. MOV WEEK,A
  202. AJMP RT

  203. K_STR:
  204. MOV DS1302_ADDR,#80H ;開(kāi)始振蕩
  205. MOV DS1302_DATA,SEC
  206. LCALL WRITE
  207. MOV DS1302_ADDR,#8EH ;禁止寫(xiě)入1302
  208. MOV DS1302_DATA,#80H
  209. LCALL WRITE
  210. SETB F0
  211. CLR P2.7
  212. AJMP RT

  213. WR1302:
  214. MOV DS1302_ADDR,#8EH
  215. MOV DS1302_DATA,#00H        ;允許寫(xiě)1302
  216. LCALL WRITE
  217. MOV DS1302_ADDR,#80H
  218. MOV DS1302_DATA,#80H      ;1302停止振蕩
  219. LCALL  WRITE

  220. MOV DS1302_ADDR,#8CH ;年寫(xiě)入1302
  221. MOV DS1302_DATA,YEAR
  222. LCALL WRITE

  223. MOV DS1302_ADDR,#8AH ;周寫(xiě)入1302
  224. MOV DS1302_DATA,WEEK
  225. LCALL WRITE

  226. MOV DS1302_ADDR,#88H ;月寫(xiě)入1302
  227. MOV DS1302_DATA,MONTH
  228. LCALL WRITE

  229. MOV DS1302_ADDR,#86H ;日寫(xiě)入1302
  230. MOV DS1302_DATA,DAY
  231. LCALL WRITE

  232. MOV DS1302_ADDR,#84H ;時(shí)寫(xiě)入1302
  233. MOV DS1302_DATA,HOUR
  234. LCALL WRITE

  235. MOV DS1302_ADDR,#82H ;分寫(xiě)入1302
  236. MOV DS1302_DATA,MIN
  237. LCALL WRITE

  238. MOV DS1302_ADDR,#82H ;秒寫(xiě)入1302
  239. MOV DS1302_DATA,MIN
  240. LCALL WRITE

  241. RET


  242. WRITE:  
  243. CLR  T_CLK
  244. NOP
  245. SETB  T_RST
  246. NOP
  247. MOV  A,DS1302_ADDR
  248. MOV  R4,#8
  249. WRITE1:
  250. RRC  A                       
  251. NOP
  252. NOP
  253. CLR  T_CLK
  254. NOP
  255. NOP
  256. NOP
  257. MOV  T_IO,C
  258. NOP
  259. NOP
  260. NOP
  261. SETB  T_CLK
  262. NOP
  263. NOP
  264. DJNZ  R4,WRITE1
  265. CLR  T_CLK
  266. NOP
  267. MOV  A,DS1302_DATA
  268. MOV  R4,#8
  269. WRITE2:
  270. RRC  A
  271. NOP                        
  272. CLR  T_CLK
  273. NOP
  274. NOP
  275. MOV  T_IO,C
  276. NOP
  277. NOP
  278. NOP
  279. SETB  T_CLK
  280. NOP
  281. NOP
  282. DJNZ R4,WRITE2
  283. CLR  T_RST
  284. RET

  285. RD1302:
  286. MOV  DS1302_ADDR,#8DH         ;年讀出
  287. LCALL  READ
  288. MOV  YEAR,DS1302_DATA
  289. MOV  DS1302_ADDR,#8BH         ;周讀出
  290. LCALL  READ
  291. MOV  WEEK,DS1302_DATA
  292. MOV  DS1302_ADDR,#89H         ;月讀出
  293. LCALL  READ
  294. MOV  MONTH,DS1302_DATA
  295. MOV  DS1302_ADDR,#87H         ;日讀出
  296. LCALL  READ
  297. MOV  DAY,DS1302_DATA
  298. MOV  DS1302_ADDR,#85H         ;時(shí)讀出
  299. LCALL  READ
  300. MOV  HOUR,DS1302_DATA
  301. MOV  DS1302_ADDR,#83H         ;分讀出
  302. LCALL  READ
  303. MOV  MIN,DS1302_DATA
  304. MOV  DS1302_ADDR,#81H         ;秒讀出
  305. LCALL  READ
  306. MOV  SEC,DS1302_DATA
  307. RET
  308.                                    
  309. READ:  
  310. CLR  T_CLK
  311. NOP
  312. NOP
  313. SETB  T_RST
  314. NOP
  315. MOV  A,DS1302_ADDR
  316. MOV  R4,#8
  317.                            
  318. READ1:  
  319. RRC  A
  320. MOV  T_IO,C
  321. NOP
  322. NOP
  323. NOP
  324. SETB  T_CLK
  325. NOP
  326. NOP
  327. NOP
  328. CLR  T_CLK
  329. NOP
  330. NOP
  331. DJNZ  R4,READ1
  332. MOV  R4,#8
  333.                     
  334. READ2:  
  335. CLR  T_CLK
  336. NOP
  337. NOP
  338. NOP
  339. MOV  C,T_IO
  340. NOP
  341. NOP
  342. NOP
  343. NOP
  344. NOP
  345. RRC  A
  346. NOP
  347. NOP
  348. NOP
  349. NOP
  350. SETB  T_CLK
  351. NOP
  352. DJNZ  R4,READ2
  353. MOV  DS1302_DATA,A
  354. CLR  T_RST
  355. RET



  356. DISP:  

  357. MOV  A,#30H   ;16進(jìn)制轉(zhuǎn)ASCII
  358. ORL  YH_BIT, A
  359. ORL  YL_BIT, A
  360. ORL  MOH_BIT, A
  361. ORL  MOL_BIT, A
  362. ORL DH_BIT, A
  363. ORL DL_BIT, A

  364. ;LCALL WEEKCOV

  365. ORL  HH_BIT, A
  366. ORL  HL_BIT, A
  367. ORL  MH_BIT, A
  368. ORL  ML_BIT, A
  369. ORL SH_BIT, A
  370. ORL SL_BIT, A


  371. LCALL  INIT_1602
  372. MOV  A, #10000000B          ; LINE1
  373. LCALL   WR_CMD
  374. MOV  A,#"2"  
  375. LCALL WR_DATA

  376. MOV  A,#"0"
  377. LCALL   WR_DATA
  378. MOV  A, YH_BIT  
  379. LCALL WR_DATA

  380. MOV  A, YL_BIT
  381. LCALL   WR_DATA
  382. MOV  A,#" "
  383. LCALL   WR_DATA

  384. MOV  A,MOH_BIT
  385. LCALL   WR_DATA
  386. MOV  A,MOL_BIT
  387. LCALL   WR_DATA
  388. MOV  A,#" "
  389. LCALL   WR_DATA
  390. MOV  A,DH_BIT
  391. LCALL   WR_DATA
  392. MOV  A,DL_BIT
  393. LCALL   WR_DATA
  394. MOV  A,#" "
  395. LCALL  WR_DATA
  396. MOV  A,#" "
  397. LCALL  WR_DATA
  398. LCALL WEEKDISP  ;星期顯示英文縮寫(xiě)3個(gè)字母

  399. MOV A, #11000000B           ; LINE2
  400. LCALL  WR_CMD

  401. MOV  A,HH_BIT  
  402. LCALL WR_DATA

  403. MOV  A,HL_BIT
  404. LCALL   WR_DATA
  405. MOV A,#":"
  406. LCALL   WR_DATA

  407. MOV  A,MH_BIT
  408. LCALL   WR_DATA
  409. MOV  A,ML_BIT
  410. LCALL   WR_DATA
  411. MOV A,#":"
  412. LCALL   WR_DATA
  413. MOV  A,SH_BIT
  414. LCALL   WR_DATA
  415. MOV  A,SL_BIT
  416. LCALL   WR_DATA

  417. RET

  418. WEEKCOV:

  419. MOV A,WEEK
  420. CJNE A,#0,W2
  421. MOV 37H,#"M"
  422. MOV 38H,#"O"
  423. MOV 39H,#"N"

  424. W2:
  425. MOV A,WEEK
  426. CJNE A,#1,W3
  427. MOV 37H,#"T"
  428. MOV 38H,#"U"
  429. MOV 39H,#"E"          ;星期一 MON 星期二 TUE 星期三 WED 星期四 THU
  430.       ;星期五 FRI 星期六 SAT 星期天 SUN
  431. W3:
  432. MOV A,WEEK
  433. CJNE A,#2,W4
  434. MOV 37H,#"W"
  435. MOV 38H,#"E"
  436. MOV 39H,#"D"
  437. W4:
  438. MOV A,WEEK
  439. CJNE A,#3,W5
  440. MOV 37H,#"T"
  441. MOV 38H,#"H"
  442. MOV 39H,#"U"
  443. W5:
  444. MOV A,WEEK
  445. CJNE A,#4,W6
  446. MOV 37H,#"F"
  447. MOV 38H,#"R"
  448. MOV 39H,#"I"
  449. W6:
  450. MOV A,WEEK
  451. CJNE A,#5,W7
  452. MOV 37H,#"S"
  453. MOV 38H,#"A"
  454. MOV 39H,#"T"
  455. W7:
  456. MOV A,WEEK
  457. CJNE A,#6,W8
  458. MOV 37H,#"S"
  459. MOV 38H,#"U"
  460. MOV 39H,#"N"   
  461. W8:
  462. RET

  463. WEEKDISP:
  464. MOV  A,37H
  465. LCALL   WR_DATA
  466. MOV  A,38H
  467. LCALL   WR_DATA
  468. MOV  A,39H
  469. LCALL   WR_DATA
  470. RET

  471. INIT_1602:
  472. MOV   A, #01H
  473. LCALL  WR_CMD ;清屏
  474. MOV   A, #38H
  475. LCALL  WR_CMD ;8位數(shù)據(jù),16X2,5X7點(diǎn)陣
  476. MOV   A, #0CH
  477. LCALL  WR_CMD ;開(kāi)顯示,關(guān)光標(biāo),不閃爍
  478. MOV   A, #06H
  479. LCALL  WR_CMD ;讀寫(xiě)字符時(shí)地址+1,整屏不移動(dòng)
  480. RET

  481. WR_CMD:
  482. MOV  P1, A
  483. CLR  RS ;寫(xiě)入控制命令
  484. CLR  RW
  485. CLR  E
  486. LCALL  BUSY
  487. SETB  E
  488. RET

  489. WR_DATA:
  490. MOV  P1, A
  491. SETB  RS ;寫(xiě)入數(shù)據(jù)
  492. CLR  RW
  493. CLR  E
  494. LCALL  BUSY ;判斷液晶模塊是否忙?
  495. SETB  E
  496. RET

  497. BUSY:   ;查看LCD是否忙
  498. MOV  P1,#0FFH
  499. CLR  RS
  500. SETB  RW
  501. CLR  E
  502. NOP
  503. SETB  E
  504. JB  P1.7,BUSY ;如果P1.7為高電平表示忙就循環(huán)等待
  505. RET

  506. T0INT:
  507. MOV TH0,#3CH
  508. MOV TL0,#0B0H
  509. DJNZ R0,RTI
  510. MOV R0,#10
  511. setb 7CH
  512. RTI:
  513. RETI

  514. D1MS:   
  515. MOV  R7,#250
  516. LOOP0:  
  517. NOP
  518. NOP
  519. DJNZ  R7,LOOP0
  520. RET

  521. D10MS:
  522. MOV R4,#25
  523. MOV R3,#200
  524. DJNZ R3,$
  525. DJNZ R2,$-4
  526. RET

  527. END
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:99809 發(fā)表于 2015-12-21 14:24 | 只看該作者
題目要求是什么??
回復(fù)

使用道具 舉報(bào)

板凳
ID:74784 發(fā)表于 2016-12-19 16:44 | 只看該作者
沒(méi)看到數(shù)據(jù)表代碼~~~~~~~~~~~
回復(fù)

使用道具 舉報(bào)

地板
ID:316515 發(fā)表于 2018-6-16 21:49 | 只看該作者
功能可調(diào)嗎?

回復(fù)

使用道具 舉報(bào)

5#
ID:316515 發(fā)表于 2018-6-16 22:57 | 只看該作者
跪求按鍵程序
回復(fù)

使用道具 舉報(bào)

6#
ID:353831 發(fā)表于 2018-6-18 20:14 | 只看該作者
有用LED的電路圖嗎
回復(fù)

使用道具 舉報(bào)

7#
ID:72088 發(fā)表于 2018-11-8 08:54 | 只看該作者

上面有按鍵程序的,只有加鍵,沒(méi)有減鍵,我在找減鍵程序,
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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