找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5990|回复: 3
收起左侧

51单片机ds1302时钟lcd1602显示汇编程序

[复制链接]
ID:83710 发表于 2015-6-23 20:39 | 显示全部楼层 |阅读模式


  1. ;时控开关项目起始时间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 ;分钟十位    缓冲区
  10. MINTE1 EQU 33H  ;分钟个位
  11. SCNEDS10 EQU 34H  ;秒十位
  12. SCNEDS1 EQU 35H    ;秒个位


  13. ;*****按键设置
  14. SCNEDS EQU 36H    ;秒
  15. MINTE EQU 37H    ;分
  16. HOUR EQU 38H    ;时
  17. SETMY1 EQU 39H    ;选择秒寄存器
  18. SETTM1 EQU 40H    ;选择秒设定时间
  19.     SETMY2 EQU 41H    ;选择分寄存器   缓冲区
  20. SETTM2 EQU 42H    ;选择分设定时间
  21.   SETMY3 EQU 43H    ;选择时寄存器
  22. SETTM3 EQU 44H    ;选择时设定时间
  23. ;按键设置用*********

  24. ;*****************闹钟设置用
  25. STARTHOUR10 EQU 45H
  26. STARTHOUR1 EQU 46H  
  27. STARTMINTE10 EQU 47H   ;闹钟开始时间
  28. STARTMINTE1 EQU 48H
  29. ;;*****************8                          区间有效缓冲区
  30. STOPHOUR10 EQU 49H
  31. STOPHOUR1 EQU 50H  ; 闹钟停止时间
  32. STOPMINTE10 EQU 51H
  33. STOPMINTE1 EQU 52H
  34. ;*****************闹钟设置用
  35. STARTMINTE EQU 53H
  36. STOPMINTE EQU 54H
  37. STARTHOUR EQU 55H
  38. STOPHOUR EQU 56H







  39. ;***1602端口定义结束
  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*******端口定义结束



  47. ORG 0030H
  48. MAIN:;主函数
  49. lcall SETTIME ;设置时钟
  50. LCALL SETCLOCK
  51. START:LCALL DATE1302 ; 读1302实时数据


  52. AJMP MAIN

  53. ;**************************************************************************************
  54.   ;S设置液晶                       *
  55. ;                       *
  56. ;**************************************************************************************
  57. INIT:; 液晶初始化开始                  /
  58. ;*********                     /

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

  61.   

  62. MOV P0,#38H ;设置61*2显示,5*7点阵,8位数据口
  63. LCALL PULSE;高脉冲

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

  66. MOV P0,#38H ;设置61*2显示,5*7点阵,8位数据口
  67. LCALL PULSE;高脉冲

  68. LCALL DELAY5MS

  69. MOV P0,#38H ;设置61*2显示,5*7点阵,8位数据口
  70. LCALL PULSE;高脉冲


  71. ;**************
  72. MOV P0,#06H ;设置1602为读写一个字符后地址指针加一,且光标加一
  73. LCALL PULSE;高脉冲
  74. ;*****
  75. LCALL DELAY5MS

  76. ;**************
  77. MOV P0,#0FH;设置1602位为开显示显示光标且闪烁
  78. LCALL PULSE;高脉冲
  79. ;*****
  80.   LCALL DELAY5MS

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

  85. LCALL DELAY5MS

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

  87. RET   ;    液晶初始化结束

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

  89. DATE1302:; 读1302实时数据开始

  90. LCALL REST
  91. lcall write1302 ;设置时钟写入1302芯片
  92.    nop
  93.   nop
  94.   nop
  95.   nop
  96.   nop
  97.   nop
  98.   nop
  99.   nop    ;哈哈哈原来如此!这里果然得加延时,不加的话1302反应不过来啊,哈哈哈
  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实时数据结束

  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;写数据

  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;写数据

  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. ;××××××××××××××××××××××以上是开始闹钟设置时间显示××××××××××××××××××××××××××××
  237. LCALL DELAY1MS

  238. LCALL WDATE;写数据

  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;显示定时结束小时十位;
  250. MOV P0,A
  251. LCALL PULSE;高脉冲

  252. LCALL DELAY1MS

  253. MOV A,STOPHOUR1;显示定时结束小时个位;
  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;显示定时结束分钟十位;
  263. MOVC A,@A+DPTR
  264. MOV P0,A
  265. LCALL PULSE;高脉冲
  266. LCALL DELAY1MS

  267. MOV A,STOPMINTE1;显示定时结束分钟个位;
  268. MOVC A,@A+DPTR
  269. MOV P0,A
  270. LCALL PULSE;高脉冲


















  271. RET;1602液晶显示结束

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

  273. SETTIME:  ;按键设置时间开始
  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转换是不对的|||||||=+++++++++++++++vvvvvvvvvvvvvvbbbbbbbbbb
  302. MOV A,SETTM1 ;设置加秒时间
  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. ;************************************已上是秒设置
  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转换是不对的|||||||=+++++++++++++++vvvvvvvvvvvvvvbbbbbbbbbb
  344. MOV A,SETTM2 ;设置加分时间
  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. ;**************************已上是分设置

  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转换是不对的妈个比我费了老大的时|||||||=+++++++++++++++vvvvvvvvvvvvvvbbbbbbbbbb
  386. MOV A,SETTM3
  387. INC A
  388. DA A
  389. MOV SETTM3,A ;设置加时时间


  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. ;******************************已上是时设置

  401. RET ;按键设置时间结束
  402. ;*************************************************************************************
  403. ;************************************************************************************

  404. SETCLOCK:  ;按键设置闹钟开始
  405.   UR1:JB P2.0,$
  406. LCALL DELAY20MS  ;进入定时器开始时间设制 ××设置完时间按下2.0则进入设置定时器模式,按2.1加2.2减设置想要退出则按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,$;很重要啊,关键啊,如果没有则直接向下了,正是他
  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 ;闹钟开始时间设置加分
  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,$;很重要啊,关键啊,如果没有则直接向下了,正是他
  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,$;很重要啊,关键啊,如果没有则直接向下了,正是他
  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 ;闹钟结束时间设置加分
  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,$;很重要啊,关键啊,如果没有则直接向下了,正是他
  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 ;闹钟结束时间设置加时
  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 ;按键设置闹钟结束
  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 ;写数据允许        1602使用区
  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:;注意这里啊,这里的读贝内置到肚里面,原因再与如果分开在时序上是不成立的,
  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;设分时间
  663.     LCALL WRITE2
  664.    LCALL  DELAY10US

  665.    mov a,SETMY3;时寄存器
  666.         LCALL WRITE1
  667.         mov a,SETTM3 ;设为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程序结束*********************************************************
  729. TAB:DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H

  730. END;2015年8月30日于天津,完成主体9月1日完成初步修饰
复制代码


回复

使用道具 举报

ID:204419 发表于 2017-5-25 20:15 | 显示全部楼层
#在请问楼主能给我发一份51单片机lcd1602和DS1302原理图吗,我最近一直在做这个程序可是做不出来,所以急需楼主程序相应原理图研究一下这里快速回复#
回复

使用道具 举报

ID:316515 发表于 2018-6-16 21:37 | 显示全部楼层
楼主求电路图
回复

使用道具 举报

ID:61140 发表于 2022-4-29 13:32 | 显示全部楼层
整个程序条理清楚,功能分明,看着一目了然
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表