久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12780|回復: 6
打印 上一主題 下一主題
收起左側

單片機制作DS1302 LCD1602顯示年歷時鐘 匯編程序+電路圖

[復制鏈接]
跳轉到指定樓層
樓主
ID:85192 發表于 2015-7-10 02:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式


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

  3. H_ADJ  BIT P2.0 ;時/年調整
  4. M_ADJ  BIT P2.1 ;分/月調整
  5. S_ADJ  BIT P2.2 ;秒/日調整
  6. DT_SET  BIT P2.3 ;時間/日期選擇
  7. W_ADJ  BIT P2.4 ;星期調整
  8. STR  BIT P2.5 ;啟動走時

  9. T_RST  BIT P3.2  ;實時時鐘復位線引腳
  10. T_CLK   BIT  P3.3  ;實時時鐘時鐘線引腳
  11. T_IO   BIT  P3.4  ;實時時鐘數據線引腳

  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 ;時低位
  26. HH_BIT  EQU 2BH ;時高位

  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 ;上電預置日期、時間
  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,開始走時。走時前寫,不讀。走時后讀,不寫。
  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標志
  97. CLR 7CH
  98. LCALL WEEKCOV         ;星期數字轉換成英語縮寫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  ;點亮日期設定
  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為日期/時間切換鍵標志。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 ;開始振蕩
  205. MOV DS1302_DATA,SEC
  206. LCALL WRITE
  207. MOV DS1302_ADDR,#8EH ;禁止寫入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        ;允許寫1302
  216. LCALL WRITE
  217. MOV DS1302_ADDR,#80H
  218. MOV DS1302_DATA,#80H      ;1302停止振蕩
  219. LCALL  WRITE

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

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

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

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

  232. MOV DS1302_ADDR,#84H ;時寫入1302
  233. MOV DS1302_DATA,HOUR
  234. LCALL WRITE

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

  238. MOV DS1302_ADDR,#82H ;秒寫入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         ;時讀出
  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進制轉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  ;星期顯示英文縮寫3個字母

  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位數據,16X2,5X7點陣
  476. MOV   A, #0CH
  477. LCALL  WR_CMD ;開顯示,關光標,不閃爍
  478. MOV   A, #06H
  479. LCALL  WR_CMD ;讀寫字符時地址+1,整屏不移動
  480. RET

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

  489. WR_DATA:
  490. MOV  P1, A
  491. SETB  RS ;寫入數據
  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為高電平表示忙就循環等待
  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
復制代碼


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

使用道具 舉報

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

使用道具 舉報

板凳
ID:74784 發表于 2016-12-19 16:44 | 只看該作者
沒看到數據表代碼~~~~~~~~~~~
回復

使用道具 舉報

地板
ID:316515 發表于 2018-6-16 21:49 | 只看該作者
功能可調嗎?

回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

上面有按鍵程序的,只有加鍵,沒有減鍵,我在找減鍵程序,
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天插天天操 | 日韩 欧美 二区 | 日韩视频中文字幕 | 超碰在线97国产 | 自拍视频精品 | 国产亚洲精品久久久久久牛牛 | 孰女乱色一区二区三区 | 成人一区二区三区在线观看 | 亚洲精品在线观看网站 | 久久91精品国产 | 91精品国产91久久综合桃花 | wwwww在线观看 | 日韩和的一区二在线 | 亚洲人人 | 99热播放 | 国产精久久久久久久妇剪断 | 亚洲一区二区三区四区五区午夜 | 超碰伊人久久 | 人操人人干人 | 久久亚洲综合 | 高清一区二区三区 | 97在线观视频免费观看 | 日韩一区二区三区视频 | 拍真实国产伦偷精品 | 99久久精品国产一区二区三区 | av国产精品毛片一区二区小说 | 九一在线观看 | 日韩一区二区三区精品 | 亚洲欧美一区在线 | 黄色片网站国产 | 国产精品1区 | 亚洲欧洲一区二区 | 亚洲 精品 综合 精品 自拍 | 久久噜噜噜精品国产亚洲综合 | 超碰97人人人人人蜜桃 | 91激情电影 | 亚洲免费一区二区 | 国产精品成人一区二区三区 | 国产精品久久久久久av公交车 | 91久久国产综合久久 | 综合天天久久 |