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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機匯編DS1302實時時鐘課程設計(Proteus仿真+代碼)

  [復制鏈接]
跳轉到指定樓層
樓主
實時時鐘課題要求:
實時時鐘系統設計
1、用 1 個撥動開關設定“工作狀態”和“設置狀態”;
2、“設置狀態”下,用 4 個獨立按鍵實現時間設置:“+”“-”、“移位”、“確認”,
對年(2 位)、月、日、時、分、秒進行每 1 位的數值設置;
3、采用 DS1302 時鐘芯片,采用 LCD 進行時鐘顯示  

Proteus7.8仿真效果如下:
(注:Proteus仿真源文件見附件)
匯編代碼如下:
  1. /*******************************實時時鐘實驗(Zidone)*************************************************/
  2. /***********LCD12864相關定義******************/
  3. //指定管腳
  4.                 LCD_E        BIT P2.0          /*12864使能口*/
  5.                 LCD_DI        BIT P3.0         /*12864數據命令選擇*/
  6.                 LCD_RW        BIT P3.1         /*12864讀寫選擇*/
  7.                 LCD_RST        BIT P3.3     /*12864復位*/
  8.                 LCD_CS1        BIT P3.2         /*12864選屏*/
  9.                 LCD_CS2        BIT P2.1         /*12864選屏*/
  10. //指定存放地址        
  11.                 LCD_CMD                EQU 30H             /*12864命令存放地址*/
  12.                 LCD_DATA        EQU 31H         /*12864數據存放地址*/
  13.                 LCD_PAGE        EQU 32H  /*起始B8H 存放頁數(用于字符或漢字)*/
  14.                 LCD_COLUMN        EQU 33H  /*起始40H  存放列數*/
  15. /***********DS1302相關定義******************/        
  16. //指定管腳
  17.                 T_CLK        BIT P2.6     /*DS1302時鐘口*/
  18.                 T_IO           BIT P2.7         /*DS1302輸入輸出口*/
  19.                 T_RST        BIT P2.5         /*DS1302復位口*/
  20. //指定存放地址
  21.                 SECOND        EQU 40H                /*秒分時日月周年低位年高位存儲地址*/
  22.                 MINUTE        EQU 41H
  23.                 HOUR        EQU 42H
  24.                 DAY                EQU 43H
  25.                 MONTH   EQU 44H
  26.                 WEEK    EQU 45H
  27.                 YEARL   EQU 46H
  28.                 YEARH        EQU 47H
  29. //命令字
  30.                 WR_SECOND EQU 80H
  31.                 RD_SECOND EQU 81H
  32.                 WR_MINUTE EQU 82H
  33.                 RD_MINUTE EQU 83H
  34.                 WR_HOUR   EQU 84H
  35.                 RD_HOUR   EQU 85H
  36.                 WR_DAY    EQU 86H
  37.                 RD_DAY          EQU 87H
  38.                 WR_MONTH  EQU 88H
  39.                 RD_MONTH  EQU 89H
  40.                 WR_WEEK   EQU 8AH
  41.                 RD_WEEK   EQU 8BH
  42.                 WR_YEAR   EQU 8CH
  43.                 RD_YEAR   EQU 8DH
  44.                 WR_PROTECT   EQU 8EH
  45.                 RD_PROTECT   EQU 8FH        
  46. /*********用戶開關及按鍵管腳定義***************/        
  47.                 MODE_SELECT BIT P0.0         /*模式選擇管腳:默認高電平,1-正常計時模式,0-時間設定模式*/
  48.                 BIT_SELECT        BIT P0.1        /*移位選擇需要修改的參數,使其閃爍,表明選中*/
  49.                 MODE_INC        BIT P0.2        /*加*/
  50.                 MODE_DEC        BIT P0.3        /*減*/
  51.                 MODE_ENSURE BIT P0.4        /*確認*/
  52. /**************主程序**************************/        
  53.                 ORG         0000H
  54.                 LJMP        MAIN
  55.                 ORG                0100H
  56. MAIN:        
  57.                 MOV                SP,#60H
  58. //DS1302初始默認時間設置
  59.                 MOV                YEARH,#20H  
  60.                 MOV                YEARL,#19H
  61.                 MOV                MONTH,#01H
  62.                 MOV                DAY,#05H
  63.                 MOV                WEEK,#06H
  64.                 MOV                HOUR,#21H
  65.                 MOV                MINUTE,#18H
  66.                 MOV                SECOND,#00H
  67.                
  68.                 LCALL        DS1302Init          /*DS1302初始設置*/
  69.                 LCALL         Lcd12864Init /*LCD12864初始化*/
  70. //選擇左半屏               
  71.                 SETB        LCD_CS2      
  72.                 CLR                LCD_CS1
  73. //左半屏需要顯示的固定漢字               
  74.                 LCALL Write_NIAN        /*’年‘*/
  75.                 LCALL Write_SHI                /*’時‘*/
  76.                 LCALL Write_XING        /*’星‘*/
  77.                 LCALL Write_QI_1        /*’期‘左一半*/
  78. //選擇右半屏
  79.                 SETB        LCD_CS1  
  80.                 CLR                LCD_CS2
  81. //右半屏需要顯示的固定漢字        
  82.                 LCALL Write_YUE                /*’月‘*/
  83.                 LCALL Write_RI                /*‘日’*/
  84.                 LCALL Write_FEN                /*‘分’*/
  85.                 LCALL Write_MIAO        /*‘秒’*/
  86.                 LCALL Write_QI_2        /*‘期’右邊一半*/
  87.                
  88. LOOP1:  
  89.                 JB                MODE_SELECT,LOOP2    /*狀態選擇,閉合低電平為時間設置狀態,斷開高電平(默認狀態)正常計時狀態*/
  90.                 LCALL         DELAY10MS        /*軟件消抖*/
  91.                 JB                MODE_SELECT,LOOP2
  92.                 LCALL        DS1302SetTime
  93. LOOP2:
  94.                 LCALL   DS1302GetData
  95.                 LCALL        DS1302ShowTime
  96.                 LCALL   DELAY800MS
  97.                 LJMP    LOOP1
  98. /***************通過按鍵設定DS1302的起始時間**************************/
  99. /*
  100. 首先判斷模式選擇開關:
  101.         1.沒有按下,執行正常顯示的程序(也是彈開后重新執行顯示程序)
  102.         2.按下后,執行時間設置程序
  103. 其次判斷移位選擇開關:
  104.         1.沒有按下,默認選擇修改年高位
  105.         2.按下,切換需要修改的參數(順序為:如下標識),并使其閃爍,證明選中
  106. 加按鈕:
  107.         1.沒有按下,等待
  108.         2.按下,判斷選擇的是哪一位,執行相應位的加程序
  109. 減按鈕:
  110.         1.沒有按下,等待
  111.         2.按下,判斷選擇的是哪一位,執行相應位的加程序
  112. 確認按鈕:
  113.         1.沒有按下,等待
  114.         2.按下,鎖定當前的值寫入DS1302
  115.         
  116. 使選中字符閃爍:
  117. 無法在主循環延時,可以嘗試開一個定時器中斷,每隔一秒插敘狀態,執行閃爍,寫空白字。
  118. */
  119. DS1302SetTime:
  120.                 MOV                R0,#8   /*R0默認為周*/
  121.                
  122. SELECT_BIT_IF_INC:
  123.                 JB                BIT_SELECT,EEE        /*彈開的說明是選擇好了,判斷執行的是加還是減*/
  124.                 LCALL         DELAY10MS
  125.                 JB                BIT_SELECT,EEE
  126.                 CJNE        R0,#0,SELECT_BIT
  127.                 MOV                R0,#8
  128. EEE:        LJMP        IF_INC
  129.                
  130. SELECT_BIT:        
  131.                 DEC                R0
  132.                 JNB                BIT_SELECT,$ /*鎖定,避免按下后不放就一直加*/
  133. //加判斷                        
  134. IF_INC:
  135.                 JB                MODE_INC,GGG        /*沒有按下,顯示默認狀態(被迫這么些短轉移JB距離不夠,只好中轉)*/
  136.                 LCALL         DELAY10MS
  137.                 JB                MODE_INC,GGG
  138.                 CJNE        R0,#8,SET_SECOND
  139.                 LJMP        SET_WEEK
  140. //減判斷               
  141. GGG:
  142.                 JB                MODE_DEC,AAA        /*沒有按下,顯示默認狀態(被迫這么些短轉移JB距離不夠,只好中轉)*/
  143.                 LCALL         DELAY10MS
  144.                 JB                MODE_DEC,AAA
  145.                 CJNE        R0,#8,HHH
  146.                 LJMP        SET_WEEK_2
  147.                
  148. HHH:        LJMP        SET_SECOND_2
  149. AAA:        
  150.                 LJMP        SHOW_PROCESS
  151. /**************************************************************************************************/               
  152. //設置周+(8)
  153. SET_WEEK:
  154.                 MOV                A,WEEK
  155.                 CJNE        A,#7,WEEK_INC
  156.                 MOV                WEEK,#1
  157.                
  158.             LJMP    SHOW_PROCESS
  159.                
  160. WEEK_INC:
  161.                 MOV                A,WEEK
  162.                 ADD                A,#1
  163.                 DA                A
  164.                 MOV                WEEK,A
  165.                 LJMP    SHOW_PROCESS
  166.                
  167. //設置秒+(7)
  168. SET_SECOND:
  169.                 CJNE        R0,#7,SET_MINUTE
  170.                 MOV                A,SECOND
  171.                 CJNE        A,#59H,SECOND_INC
  172.                 MOV                SECOND,#00H
  173.             LJMP    SHOW_PROCESS

  174. SECOND_INC:        
  175.                 MOV                A,SECOND
  176.                 ADD                A,#1
  177.                 DA                A
  178.                 MOV                SECOND,A
  179.                 LJMP    SHOW_PROCESS
  180.                
  181. //設置分+(6)               
  182. SET_MINUTE:        
  183.                 CJNE        R0,#6,SET_HOUR
  184.                 MOV                A,MINUTE
  185.                 CJNE        A,#59H,MINUTE_INC
  186.                 MOV                MINUTE,#00H
  187.                 LJMP    SHOW_PROCESS
  188.                
  189. MINUTE_INC:        
  190.                 MOV                A,MINUTE
  191.                 ADD                A,#1
  192.                 DA                A
  193.                 MOV                MINUTE,A
  194.                 LJMP    SHOW_PROCESS
  195.                
  196. //設置時+(5)               
  197. SET_HOUR:  
  198.                 CJNE        R0,#5,SET_DAY
  199.                 MOV                A,HOUR
  200.                 CJNE        A,#23H,HOUR_INC
  201.                 MOV                HOUR,#00
  202.                 LJMP    SHOW_PROCESS
  203.                
  204. HOUR_INC:        
  205.                 MOV                A,HOUR
  206.                 ADD                A,#1
  207.                 DA                A
  208.                 MOV                HOUR,A
  209.                 LJMP    SHOW_PROCESS
  210.                
  211. //設置天+(4)               
  212. SET_DAY:        
  213.                 CJNE        R0,#4,SET_MONTH
  214.                 MOV                A,DAY
  215.                 CJNE        A,#31H,DAY_INC
  216.                 MOV                DAY,#1
  217.                 LJMP    SHOW_PROCESS
  218.                
  219. DAY_INC:        
  220.                 MOV                A,DAY
  221.                 ADD                A,#1
  222.                 DA                A
  223.                 MOV                DAY,A
  224.                 LJMP    SHOW_PROCESS
  225.                
  226. //設置月+(3)               
  227. SET_MONTH:
  228.                 CJNE        R0,#3,SET_YEARL
  229.                 MOV                A,MONTH
  230.                 CJNE        A,#12H,MONTH_INC
  231.                 MOV                MONTH,#1
  232.                 LJMP    SHOW_PROCESS
  233.                
  234. MONTH_INC:        
  235.                 MOV                A,MONTH
  236.                 ADD                A,#1
  237.                 DA                A
  238.                 MOV                MONTH,A
  239.                 LJMP    SHOW_PROCESS
  240.                
  241. //設置年低位+(2)               
  242. SET_YEARL:  
  243.                 CJNE        R0,#2,SET_YEARH
  244.                 MOV                A,YEARL
  245.                 CJNE        A,#99H,YEARL_INC
  246.                 MOV                YEARL,#00H
  247.                 LJMP    SHOW_PROCESS
  248.                
  249. YEARL_INC:        
  250.                 MOV                A,YEARL
  251.                 ADD                A,#1
  252.                 DA                A
  253.                 MOV                YEARL,A
  254.                 LJMP    SHOW_PROCESS        
  255.                
  256. //設置年高位+(1)        
  257. SET_YEARH:  
  258.                 CJNE        R0,#1,FFF
  259.         MOV                A,YEARH
  260.                 CJNE        A,#99H,YEARH_INC
  261.                 MOV                YEARH,#00H
  262.                 LJMP    SHOW_PROCESS        

  263. YEARH_INC:        
  264.                 MOV                A,YEARH
  265.                 ADD                A,#1
  266.                 DA                A
  267.                 MOV                YEARH,A
  268.             LJMP    SHOW_PROCESS

  269. FFF:        LJMP        SET_WEEK  //回調,這個特別需要注意(頭疼死我了)
  270. /************************************************************************/
  271. //減部分咯
  272. //設置周-(8)
  273. SET_WEEK_2:
  274.                 MOV                A,WEEK
  275.                 CJNE        A,#1,WEEK_DEC
  276.                 MOV                WEEK,#7
  277.                
  278.             LJMP    SHOW_PROCESS
  279.                
  280. WEEK_DEC:
  281.                 MOV                A,WEEK
  282.                 CLR                AC
  283.                 SUBB        A,#1
  284.                 DA                A
  285.                 MOV                WEEK,A
  286.                 LJMP    SHOW_PROCESS
  287.                
  288. //設置秒-(7)
  289. SET_SECOND_2:
  290.                 CJNE        R0,#7,SET_MINUTE_2
  291.                 MOV                A,SECOND
  292.                 CJNE        A,#00H,SECOND_DEC
  293.                 MOV                SECOND,#59H
  294.             LJMP    SHOW_PROCESS

  295. SECOND_DEC:        
  296.                 MOV                A,SECOND
  297.                 CLR                AC
  298.                 SUBB        A,#1
  299.                 DA                A
  300.                 MOV                SECOND,A
  301.                 LJMP    SHOW_PROCESS
  302.                
  303. //設置分-(6)               
  304. SET_MINUTE_2:        
  305.                 CJNE        R0,#6,SET_HOUR_2
  306.                 MOV                A,MINUTE
  307.                 CJNE        A,#00H,MINUTE_DEC
  308.                 MOV                MINUTE,#59H
  309.                 LJMP    SHOW_PROCESS
  310.                
  311. MINUTE_DEC:        
  312.                 MOV                A,MINUTE
  313.                 CLR                AC
  314.                 SUBB        A,#1
  315.                 DA                A
  316.                 MOV                MINUTE,A
  317.                 LJMP    SHOW_PROCESS
  318.                
  319. //設置時-(5)               
  320. SET_HOUR_2:  
  321.                 CJNE        R0,#5,SET_DAY_2
  322.                 MOV                A,HOUR
  323.                 CJNE        A,#00H,HOUR_DEC
  324.                 MOV                HOUR,#23H
  325.                 LJMP    SHOW_PROCESS
  326.                
  327. HOUR_DEC:        
  328.                 MOV                A,HOUR
  329.                 CLR                AC
  330.                 SUBB        A,#1
  331.                 DA                A
  332.                 MOV                HOUR,A
  333.                 LJMP    SHOW_PROCESS
  334.                
  335. //設置天-(4)               
  336. SET_DAY_2:        
  337.                 CJNE        R0,#4,SET_MONTH_2
  338.                 MOV                A,DAY
  339.                 CJNE        A,#01H,DAY_DEC
  340.                 MOV                DAY,#31H
  341.                 LJMP    SHOW_PROCESS
  342.                
  343. DAY_DEC:        
  344.                 MOV                A,DAY
  345.                 CLR                AC
  346.                 SUBB        A,#1
  347.                 DA                A
  348.                 MOV                DAY,A
  349.                 LJMP    SHOW_PROCESS
  350.                
  351. //設置月-(3)               
  352. SET_MONTH_2:
  353.                 CJNE        R0,#3,SET_YEARL_2
  354.                 MOV                A,MONTH
  355.                 CJNE        A,#01H,MONTH_DEC
  356.                 MOV                MONTH,#12H
  357.                 LJMP    SHOW_PROCESS
  358.                
  359. MONTH_DEC:        
  360.                 MOV                A,MONTH
  361.                 CLR                AC
  362.                 SUBB        A,#1
  363.                 DA                A
  364.                 MOV                MONTH,A
  365.                 LJMP    SHOW_PROCESS
  366.                
  367. //設置年低位-(2)               
  368. SET_YEARL_2:  
  369.                 CJNE        R0,#2,SET_YEARH_2
  370.                 MOV                A,YEARL
  371.                 CJNE        A,#00H,YEARL_DEC
  372.                 MOV                YEARL,#99H
  373.                 LJMP    SHOW_PROCESS
  374.                
  375. YEARL_DEC:        
  376.                 MOV                A,YEARL
  377.                 CLR                AC
  378.                 SUBB        A,#1
  379.                 DA                A
  380.                 MOV                YEARL,A
  381.                 LJMP    SHOW_PROCESS        
  382.                
  383. //設置年高位-(1)        
  384. SET_YEARH_2:  
  385.                 CJNE        R0,#1,III        
  386.         MOV                A,YEARH
  387.                 CJNE        A,#00H,YEARH_DEC
  388.                 MOV                YEARH,#99H
  389.                 LJMP    SHOW_PROCESS        

  390. YEARH_DEC:        
  391.                 MOV                A,YEARH
  392.                 CLR                AC
  393.                 SUBB        A,#1
  394.                 DA                A
  395.                 MOV                YEARH,A
  396.             LJMP    SHOW_PROCESS

  397. III:        LJMP        SET_WEEK_2  //回調,這個特別需要注意(頭疼死我了)
  398. //把修改后的結果顯示               
  399. SHOW_PROCESS:        
  400.                 JNB                MODE_INC,[        DISCUZ_CODE_1        ]nbsp;       //加按鍵沒有彈起,就等待彈起
  401.                 JNB                MODE_DEC,[        DISCUZ_CODE_1        ]nbsp;       //減按鍵沒有彈起,就等待彈起
  402.                 LCALL        DS1302ShowTime //彈起了說明一次操作完成,就可以把結果顯示出來               
  403.                 JB                MODE_ENSURE,BBB //確認鍵沒有按下的話,跳轉回去等待移位選擇
  404.                 LCALL         DELAY10MS
  405.              JB                MODE_ENSURE,BBB
  406.                 LJMP        DDD
  407. BBB:        LJMP    SELECT_BIT_IF_INC
  408. DDD:        LCALL        DS1302Init                //如果確認鍵按下就把初始值寫入DS1302
  409.                 RET
  410.                
  411. /***************時間顯示**************************/
  412. DS1302ShowTime:
  413. //左半屏
  414.                 SETB        LCD_CS2  
  415.                 CLR                LCD_CS1
  416. //左半屏讀取到的內容
  417.                 LCALL        Write_YEARH        /*年份的高兩位,如“20”*/
  418.                 LCALL        Write_YEARL  /*年份的低兩位,如“18”*/
  419.                 LCALL   Write_MONTH_1        /*月份的十位,也就是左半部分,如12月的“1”*/
  420.                 LCALL   Write_HOUR   /*小時的兩位,如12點10分的“12”*/
  421.                 LCALL   Write_MINUTE   /*分鐘的兩位,如12點10分的“10”*/
  422. //右半屏               
  423.                 SETB        LCD_CS1
  424.                 CLR                LCD_CS2
  425. //右半屏讀取到的內容
  426.                 LCALL         Write_MONTH_2        /*月份的個位,也就是右半部分,如12月的“2”*/
  427.                 LCALL         Write_DAY                /*日期的兩位,如30號的“30”*/
  428.                 LCALL   Write_SECOND   /*秒的兩位,如45秒的“45”*/
  429.                 LCALL   Write_WEEK     /*周的一位漢字,如星期一的“一”*/
  430.                 RET
  431. /**************設置DS1302初始參數*************/
  432. DS1302Init:
  433.                 CLR                T_RST
  434.                 CLR                T_CLK
  435.                 SETB        T_RST
  436.                 MOV                B,#WR_PROTECT        /*寫保護寄存器地址8EH*/
  437.                 LCALL        DS1302WriteByte
  438.                 MOV                B,#00H  /*WP=0允許寫入*/
  439.                 LCALL        DS1302WriteByte               
  440.                 SETB        T_CLK        /*鎖定*/        
  441.                 CLR                T_RST
  442.                 MOV                R0,#SECOND
  443.                 MOV                R7,#7        /*秒,分,時,日,月,星期,年*/
  444.                 MOV                R1,#WR_SECOND        
  445. WR_LOOP6:
  446.                 CLR                T_RST
  447.                 CLR                T_CLK
  448.                 SETB        T_RST
  449.                 MOV                B,R1
  450.                 LCALL        DS1302WriteByte        
  451.                 MOV                A,@R0
  452.                 MOV                B,A
  453.                 LCALL        DS1302WriteByte        
  454.                 INC                R0
  455.                 INC                R1         /*寫命令字是隔一個地址的*/
  456.                 INC                R1
  457.                 SETB        T_CLK        /*鎖定*/               
  458.                 CLR                T_RST
  459.                 DJNZ        R7,WR_LOOP6
  460. //重新鎖定寫保護寄存器               
  461.                 CLR                T_RST
  462.                 CLR                T_CLK
  463.                 SETB        T_RST
  464.                 MOV                B,#WR_PROTECT
  465.                 LCALL        DS1302WriteByte        
  466.                 MOV                B,#80H
  467.                 LCALL        DS1302WriteByte        
  468.                 SETB        T_CLK
  469.                 CLR                T_RST
  470.                 RET               
  471. /************讀DS1302相關時間數據***********/
  472. DS1302GetData:
  473.                 MOV                R0,#SECOND
  474.                 MOV                R7,#7
  475.                 MOV                R1,#RD_SECOND
  476. RD_LOOP2:
  477.                 CLR                T_RST
  478.                 CLR                T_CLK
  479.                 SETB        T_RST
  480.                 MOV                B,R1
  481.                 LCALL        DS1302WriteByte
  482.                
  483.                 LCALL   DS1302ReadByte
  484.                 MOV                @R0,A
  485.                 INC                R0
  486.                 INC                R1
  487.                 INC                R1
  488.                 SETB        T_CLK
  489.                 CLR                T_RST
  490.                 DJNZ        R7,RD_LOOP2
  491.                 RET
  492. /***********串行讀出DS1302一字節子程序*******/        
  493. DS1302ReadByte:
  494.                 MOV                R4,#8
  495. RD_LOOP1:
  496.                 MOV                C,T_IO
  497.                 RRC                A
  498.                 SETB        T_CLK
  499.                 CLR                T_CLK
  500.                 DJNZ        R4,RD_LOOP1
  501.                 RET
  502. /***********串行寫入DS1302一字節子程序*******/
  503. DS1302WriteByte:
  504.                 MOV         R4,#8
  505. WR_LOOP5:
  506.                 MOV                A,B
  507.                 RRC         A
  508.                 MOV                B,A
  509.                 MOV                T_IO,C
  510.                 SETB    T_CLK
  511.                 CLR                T_CLK
  512.                 DJNZ        R4,WR_LOOP5
  513.                 RET        
  514. /***********寫字子程序*************************/
  515. /*1.固定部分*/
  516. //注:一個漢字占兩頁中間空一頁,正巧使用完8頁
  517. //寫‘年’
  518. Write_NIAN:                  
  519.                 MOV         LCD_PAGE,#0B8H    ;
  520.                 MOV                LCD_COLUMN,#67H
  521.                 MOV                DPTR,#HAN_NIAN
  522.                 MOV                A,#00H
  523.                 LCALL        WriteChinese
  524.                 RET
  525. //寫‘月’
  526. Write_YUE:               
  527.                 MOV         LCD_PAGE,#0B8H     
  528.                 MOV                LCD_COLUMN,#49H
  529.                 MOV                DPTR,#HAN_YUE
  530.                 MOV                A,#00H
  531.                 LCALL        WriteChinese
  532.                 RET
  533. //寫‘日’
  534. Write_RI:                        
  535.                 MOV         LCD_PAGE,#0B8H
  536.                 MOV                LCD_COLUMN,#6CH
  537.                 MOV                DPTR,#HAN_RI
  538.                 MOV                A,#00H
  539.                 LCALL        WriteChinese
  540.                 RET
  541. //寫‘時’               
  542. Write_SHI:               
  543.                 MOV                LCD_PAGE,#0BBH
  544.                 MOV                LCD_COLUMN,#5EH
  545.                 MOV                DPTR,#HAN_SHI
  546.                 MOV                A,#00H
  547.                 LCALL   WriteChinese
  548.                 RET
  549. //寫‘分’
  550. Write_FEN:               
  551.                 MOV         LCD_PAGE,#0BBH
  552.                 MOV                LCD_COLUMN,#40H
  553.                 MOV                DPTR,#HAN_FEN
  554.                 MOV                A,#00H
  555.                 LCALL        WriteChinese
  556.                 RET
  557. //寫‘秒’
  558. Write_MIAO:               
  559.                 MOV         LCD_PAGE,#0BBH
  560.                 MOV                LCD_COLUMN,#63H
  561.                 MOV                DPTR,#HAN_MIAO
  562.                 MOV                A,#00H
  563.                 LCALL        WriteChinese
  564.                 RET
  565. //寫‘星’
  566. Write_XING:               
  567.                 MOV         LCD_PAGE,#0BEH
  568.                 MOV                LCD_COLUMN,#67H
  569.                 MOV                DPTR,#HAN_XING
  570.                 MOV                A,#00H
  571.                 LCALL        WriteChinese
  572.                 RET
  573. //寫‘期’左邊一半                        
  574. Write_QI_1:        
  575.                 MOV                LCD_PAGE,#0BEH
  576.                 MOV                LCD_COLUMN,#78H
  577.                 MOV                DPTR,#YING_QI_1
  578.                 MOV                A,#00H
  579.                 LCALL   WriteChar        
  580.                 RET
  581. //寫‘期’右邊一半
  582. Write_QI_2:                        
  583.                 MOV                LCD_PAGE,#0BEH
  584.                 MOV                LCD_COLUMN,#40H
  585.                 MOV                DPTR,#YING_QI_2
  586.                 MOV                A,#00H
  587.                 LCALL   WriteChar        
  588.                 RET
  589. /*2.從DS1302獲取部分*/
  590. Write_YEARH:
  591. /*
  592. 注:YEARH=20H手動給定,A=20H/10H=02H->20H,正巧度過兩個字(8*2一個字符,20H為兩個字符)        
  593. */
  594. //‘2’
  595.                 MOV                A,YEARH  
  596.                 MOV     B,#10H
  597.                 DIV          AB
  598.                 SWAP    A
  599.                 MOV         LCD_PAGE,#0B8H
  600.                 MOV                LCD_COLUMN,#43H
  601.                 MOV                DPTR,#YING_LING   
  602.                 LCALL        WriteChar
  603.                
  604. //‘0’               
  605.                 MOV                A,B
  606.                 SWAP    A
  607.                 MOV                LCD_PAGE,#0B8H
  608.                 MOV                LCD_COLUMN,#4CH
  609.                 MOV                DPTR,#YING_LING
  610.                 LCALL   WriteChar
  611.                 RET
  612. Write_YEARL:               
  613.                 MOV                A,YEARL
  614.                 MOV     B,#10H
  615.                 DIV          AB
  616.                 SWAP    A
  617.                 MOV         LCD_PAGE,#0B8H
  618.                 MOV                LCD_COLUMN,#55H
  619.                 MOV                DPTR,#YING_LING   
  620.                 LCALL        WriteChar
  621.                
  622.                 MOV                A,B
  623.                 SWAP    A
  624.                 MOV                LCD_PAGE,#0B8H
  625.                 MOV                LCD_COLUMN,#5EH
  626.                 MOV                DPTR,#YING_LING
  627.                 LCALL   WriteChar
  628.                 RET
  629. Write_MONTH_1:        
  630. //顯示月份的十位,個位在右半屏顯示
  631.                 MOV                A,MONTH
  632.                 MOV     B,#10H
  633.                 DIV          AB
  634.                 SWAP    A
  635.                 MOV         LCD_PAGE,#0B8H
  636.                 MOV                LCD_COLUMN,#78H
  637.                 MOV                DPTR,#YING_LING   
  638.                 LCALL        WriteChar
  639.                 RET
  640. Write_HOUR:                        
  641.                 MOV                A,HOUR
  642.                 MOV     B,#10H
  643.                 DIV          AB
  644.                 SWAP    A
  645.                 MOV         LCD_PAGE,#0BBH
  646.                 MOV                LCD_COLUMN,#4CH
  647.                 MOV                DPTR,#YING_LING   
  648.                 LCALL        WriteChar
  649.                
  650.                 MOV                A,B
  651.                 SWAP    A
  652.                 MOV                LCD_PAGE,#0BBH
  653.                 MOV                LCD_COLUMN,#53H
  654.                 MOV                DPTR,#YING_LING
  655.                 LCALL   WriteChar
  656.                 RET
  657. Write_MINUTE:               
  658.                 MOV                A,MINUTE
  659.                 MOV     B,#10H
  660.                 DIV          AB
  661.                 SWAP    A
  662.                 MOV         LCD_PAGE,#0BBH
  663.                 MOV                LCD_COLUMN,#6FH
  664.                 MOV                DPTR,#YING_LING     
  665.                 LCALL        WriteChar
  666.                
  667.                 MOV                A,B
  668.                 SWAP    A
  669.                 MOV                LCD_PAGE,#0BBH
  670.                 MOV                LCD_COLUMN,#78H
  671.                 MOV                DPTR,#YING_LING
  672.                 LCALL   WriteChar
  673.                 RET
  674. //月份的右半部份,即個位
  675. Write_MONTH_2:
  676.                 MOV                A,MONTH
  677.                 MOV     B,#10H
  678.                 DIV          AB
  679.                 MOV                A,B
  680.                 SWAP    A
  681.                 MOV                LCD_PAGE,#0B8H
  682.                 MOV                LCD_COLUMN,#40H
  683.                 MOV                DPTR,#YING_LING
  684.                 LCALL   WriteChar
  685.                 RET
  686. Write_DAY:               
  687.                 MOV                A,DAY
  688.                 MOV     B,#10H
  689.                 DIV          AB
  690.                 SWAP    A
  691.                 MOV         LCD_PAGE,#0B8H
  692.                 MOV                LCD_COLUMN,#5AH
  693.                 MOV                DPTR,#YING_LING   
  694.                 LCALL        WriteChar
  695.                
  696.                 MOV                A,B
  697.                 SWAP    A
  698.                 MOV                LCD_PAGE,#0B8H
  699.                 MOV                LCD_COLUMN,#63H
  700.                 MOV                DPTR,#YING_LING
  701.                 LCALL   WriteChar
  702.                 RET
  703. Write_SECOND:               
  704.                 MOV                A,SECOND
  705.                 MOV     B,#10H
  706.                 DIV          AB
  707.                 SWAP    A
  708.                 MOV         LCD_PAGE,#0BBH
  709.                 MOV                LCD_COLUMN,#51H
  710.                 MOV                DPTR,#YING_LING   
  711.                 LCALL        WriteChar
  712.                
  713.                 MOV                A,B
  714.                 SWAP    A
  715.                 MOV                LCD_PAGE,#0BBH
  716.                 MOV                LCD_COLUMN,#5AH
  717.                 MOV                DPTR,#YING_LING
  718.                 LCALL   WriteChar
  719.                 RET
  720. Write_WEEK:        
  721. /*
  722. 00H-周一;10H-周二;20H-周三;30H-周四;40H-周五;50H-周六;60H-周日(周七)
  723. 而BCD碼取值范圍為01H-07H,故減一處理
  724. */
  725.                 MOV                A,WEEK
  726.                 DEC                A
  727.                 SWAP    A
  728.                 MOV                B,A
  729.                 ADD                A,B
  730.                 MOV         LCD_PAGE,#0BEH
  731.                 MOV                LCD_COLUMN,#49H
  732.                 MOV                DPTR,#HAN_YI   
  733.                 LCALL        WriteChinese
  734.                 RET
  735. /*****************寫漢字**********************/
  736. WriteChinese:
  737. //漢字上半部分8*16
  738.         MOV                R3,A
  739.                 MOV                LCD_CMD, LCD_PAGE                                         
  740.                 LCALL        Lcd12864WriteCmd
  741.                 MOV                LCD_CMD, LCD_COLUMN         
  742.                 LCALL        Lcd12864WriteCmd        
  743.                 MOV                R2, #16                                      
  744. WR_LOOP1:
  745.                 MOV                A,R3
  746.                 MOVC        A, @A+DPTR
  747.                 MOV                LCD_DATA, A
  748.                 LCALL        Lcd12864WriteData
  749.                 INC                DPTR
  750.                 DJNZ        R2, WR_LOOP1
  751. //漢字下半部分8*16               
  752.                 INC                LCD_PAGE
  753.                 MOV                LCD_CMD, LCD_PAGE               
  754.                 LCALL        Lcd12864WriteCmd
  755.                 MOV                LCD_CMD, LCD_COLUMN         
  756.                 LCALL        Lcd12864WriteCmd        
  757.                 MOV                R2, #16                        
  758. WR_LOOP2:
  759.                 MOV                A,R3
  760.                 MOVC        A, @A+DPTR
  761.                 MOV                LCD_DATA, A
  762.                 LCALL        Lcd12864WriteData
  763.                 INC                DPTR
  764.                 DJNZ        R2, WR_LOOP2
  765.             RET
  766. /*******************寫字符**********************/
  767. WriteChar:        
  768. //英文上半部分
  769.                 MOV                R3,A
  770.                 MOV                LCD_CMD, LCD_PAGE                                 
  771.                 LCALL        Lcd12864WriteCmd
  772.                 MOV                LCD_CMD, LCD_COLUMN         
  773.                 LCALL        Lcd12864WriteCmd        
  774.                 MOV                R2,#8                                
  775. WR_LOOP3:
  776.         MOV                A,R3
  777.                 MOVC        A, @A+DPTR
  778.                 MOV                LCD_DATA, A
  779.                 LCALL        Lcd12864WriteData
  780.                 INC                DPTR
  781.                 DJNZ        R2, WR_LOOP3
  782. //英文下半部分               
  783.                 INC                LCD_PAGE
  784.                 MOV                LCD_CMD, LCD_PAGE         
  785.                 LCALL        Lcd12864WriteCmd
  786.                 MOV                LCD_CMD, LCD_COLUMN         
  787.                 LCALL        Lcd12864WriteCmd        
  788.                 MOV                R2, #8                        
  789. WR_LOOP4:
  790.                 MOV                A,R3
  791.                 MOVC        A, @A+DPTR
  792.                 MOV                LCD_DATA, A
  793.                 LCALL        Lcd12864WriteData
  794.                 INC                DPTR
  795.                 DJNZ        R2, WR_LOOP4
  796.             RET
  797. /**************LCD12864初始化*****************/
  798. Lcd12864Init:
  799.                 CLR            LCD_RST               
  800.                 LCALL        DELAY100US
  801.                 SETB        LCD_RST
  802.                
  803.                 SETB        LCD_CS1               
  804.                 CLR                 LCD_CS2
  805.                 MOV                 LCD_CMD, #3EH        
  806.                 LCALL        Lcd12864WriteCmd
  807.                 CLR                 LCD_CS1               
  808.                 SETB        LCD_CS2
  809.                 MOV                 LCD_CMD, #3EH        
  810.                 LCALL        Lcd12864WriteCmd
  811.                
  812.                 SETB        LCD_CS1               
  813.                 CLR                 LCD_CS2
  814.                 MOV                 LCD_CMD, #3FH        
  815.                 LCALL        Lcd12864WriteCmd
  816.                 CLR                 LCD_CS1               
  817.                 SETB        LCD_CS2
  818.                 MOV                 LCD_CMD, #3FH        
  819.                 LCALL        Lcd12864WriteCmd
  820.         RET
  821. /***************讀狀態*************************/
  822. Lcd12864ReadBusy:        
  823.                 MOV                  P1, #0FFH
  824. ReadBusyFlagLOOP:
  825.                 CLR                  LCD_E
  826.                 LCALL        LcdDelay
  827.                 CLR                  LCD_DI
  828.                 SETB        LCD_RW
  829.                 LCALL        LcdDelay
  830.                 SETB        LCD_E
  831.                 LCALL        LcdDelay
  832.                 MOV                  A, P1
  833.                 LCALL        LcdDelay
  834.                 CLR                  LCD_E
  835.                 LCALL        LcdDelay
  836.                 CLR                  LCD_RW
  837.                 CLR                  LCD_DI
  838.                 SETB        LCD_E
  839.                 JB                  ACC.7, ReadBusyFlagLOOP
  840.                 RET
  841. /**************LCD12864寫命令*****************/
  842. Lcd12864WriteCmd:
  843.                 LCALL        Lcd12864ReadBusy
  844.                 CLR                  LCD_E
  845.                 LCALL        LcdDelay
  846.                 CLR                  LCD_DI
  847.                 CLR                  LCD_RW
  848.                 LCALL        LcdDelay
  849.                 SETB        LCD_E
  850.                 LCALL        LcdDelay
  851.                 MOV                  P1, LCD_CMD
  852.                 LCALL        LcdDelay
  853.                 CLR                  LCD_E
  854.                 LCALL        LcdDelay
  855.                 SETB        LCD_DI
  856.                 SETB        LCD_RW
  857.                 SETB        LCD_E
  858.                 RET
  859. /**************LCD12864寫數據*****************/
  860. Lcd12864WriteData:        
  861.                 LCALL        Lcd12864ReadBusy
  862.                 CLR                 LCD_E
  863.                 LCALL        LcdDelay
  864.                 SETB        LCD_DI
  865.                 CLR                 LCD_RW
  866.                 LCALL        LcdDelay
  867.                 SETB        LCD_E
  868.                 LCALL        LcdDelay
  869.                 MOV                  P1, LCD_DATA
  870.                 LCALL        LcdDelay
  871.                 CLR                  LCD_E
  872.                 LCALL        LcdDelay
  873.                 SETB        LCD_DI
  874.                 SETB        LCD_RW
  875.                 SETB        LCD_E
  876.                 RET
  877. /***************LCD時序延時*************************/
  878. LcdDelay:
  879.                 NOP
  880.                 RET
  881. /*************LCD復位用延時*************************/
  882. DELAY100US:   
  883.     MOV R6,#13H
  884. DL0:
  885.     MOV R5,#01H
  886.     DJNZ R5,$
  887.     DJNZ R6,DL0
  888.     RET
  889. /***************閃爍用延時**************************/
  890. DELAY_1S:
  891.                 DEL1:                MOV R5,#10;1us
  892.                 DEL2:                MOV R6,#200;10*1us
  893.                 DEL3:                MOV R7,#249;200*10*1us
  894.                 DEL4:                DJNZ R7,DEL4;249*200*10*2us
  895.                                     DJNZ R6,DEL3;200*10*2us
  896.                                     DJNZ R5,DEL2;10*2us
  897.                                         RET
  898. /**************消抖用延時******************************/
  899. DELAY10MS:   ;誤差 0us
  900.     MOV R7,#01H
  901. DL1:
  902.     MOV R6,#26H
  903. DL2:
  904.     MOV R5,#82H
  905.     DJNZ R5,$
  906.     DJNZ R6,DL2
  907.     DJNZ R7,DL1
  908.     RET
  909. /**************LCD顯示用延時******************************/        
  910. DELAY800MS:   ;誤差 0us
  911.     MOV R7,#5FH
  912. DL3:
  913.     MOV R6,#8AH
  914. DL4:
  915.     MOV R5,#1DH
  916.     DJNZ R5,$
  917.     DJNZ R6,DL0
  918.     DJNZ R7,DL1
  919.     NOP
  920.     NOP
  921.     RET

  922. /**************顯示的內容(字模)**********************/
  923. /*
  924. 年(0) 月(1) 日(2) 星(3) 期(4) 一(5) 二(6) 三(7)
  925. 四(8) 五(9) 六(10) 七(11) 時(12) 分(13) 秒(14) 0(15)
  926. 1(16) 2(17) 3(18) 4(19) 5(20) 6(21) 7(22) 8(23) 9(24)
  927. */
  928. HAN_NIAN:
  929.              DB  0FFH,0DFH,0E7H,038H,0BBH,0BBH,0BBH,0BBH
  930.                 DB  003H,0BBH,0BBH,0BBH,0BBH,0FBH,0FFH,0FFH
  931.                 DB  0FBH,0FBH,0FBH,0F8H,0FBH,0FBH,0FBH,0FBH
  932.                 DB  000H,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FFH;年0
  933. HAN_YUE:
  934.                 DB  0FFH,0FFH,0FFH,001H,0DDH,0DDH,0DDH,0DDH
  935.                 DB  0DDH,0DDH,0DDH,0DDH,001H,0FFH,0FFH,0FFH
  936.                 DB  07FH,0BFH,0CFH,0F0H,0FDH,0FDH,0FDH,0FDH
  937.                 DB  0FDH,0FDH,0BDH,07DH,080H,0FFH,0FFH,0FFH;月1
  938. HAN_RI:
  939.                 DB  0FFH,0FFH,0FFH,001H,07DH,07DH,07DH,07DH
  940.                 DB  07DH,07DH,07DH,001H,0FFH,0FFH,0FFH,0FFH
  941.                 DB  0FFH,0FFH,0FFH,000H,0BFH,0BFH,0BFH,0BFH
  942.                 DB  0BFH,0BFH,0BFH,000H,0FFH,0FFH,0FFH,0FFH;日2
  943. HAN_XING:
  944.                 DB  0FFH,0FFH,0FFH,041H,0D5H,0D5H,0D5H,015H
  945.                 DB  0D5H,0D5H,0D5H,0C1H,0FFH,0FFH,0FFH,0FFH
  946.                 DB  0FFH,0BBH,0BDH,0B6H,0B6H,0B6H,0B6H,080H
  947.                 DB  0B6H,0B6H,0B6H,0B6H,0BEH,0BFH,0FFH,0FFH;星3
  948. YING_QI_1:               
  949.                 DB  0FFH,0FDH,000H,06DH,06DH,06DH,000H,0FDH
  950.                 DB  0BBH,0DBH,0E8H,0FBH,0FBH,0F3H,0A8H,0DBH
  951. YING_QI_2:
  952.                 DB  0FFH,000H,0EEH,0EEH,0EEH,000H,0FFH,0FFH
  953.                 DB  0E7H,0F8H,0FEH,0DEH,0BEH,0C0H,0FFH,0FFH;期4
  954. HAN_YI:
  955.             DB  07FH,07FH,07FH,07FH,07FH,07FH,07FH,07FH
  956.                 DB  07FH,07FH,07FH,07FH,07FH,07FH,07FH,0FFH
  957.                 DB  0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
  958.                 DB  0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;一5
  959. HAN_ER:
  960.                 DB  0FFH,0FFH,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H
  961.                 DB  0F7H,0F7H,0F7H,0F7H,0F7H,0FFH,0FFH,0FFH
  962.                 DB  0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH
  963.                 DB  0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0FFH;二6
  964. HAN_SAN:
  965.                 DB  0FFH,0FBH,07BH,07BH,07BH,07BH,07BH,07BH
  966.                 DB  07BH,07BH,07BH,07BH,07BH,0FBH,0FFH,0FFH
  967.                 DB  0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH
  968.                 DB  0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0FFH;三7
  969. HAN_SI:
  970.                 DB  0FFH,003H,0FBH,0FBH,0FBH,003H,0FBH,0FBH
  971.                 DB  0FBH,003H,0FBH,0FBH,0FBH,003H,0FFH,0FFH
  972.                 DB  0FFH,080H,0D7H,0DBH,0DCH,0DFH,0DFH,0DFH
  973.                 DB  0DFH,0DEH,0DDH,0DDH,0DDH,080H,0FFH,0FFH;四8
  974. HAN_WU:
  975.                 DB  0FFH,0FDH,0BDH,0BDH,0BDH,03DH,081H,0BDH
  976.                 DB  0BDH,0BDH,0BDH,03DH,0FDH,0FDH,0FFH,0FFH
  977.                 DB  0BFH,0BFH,0BFH,0BFH,087H,0B8H,0BFH,0BFH
  978.                 DB  0BFH,0BFH,0BFH,080H,0BFH,0BFH,0BFH,0FFH;五9
  979. HAN_LIU:
  980.                 DB  0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DEH,0DDH
  981.                 DB  0D3H,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0FFH
  982.                 DB  0FFH,0BFH,0DFH,0EFH,0F3H,0FCH,0FFH,0FFH
  983.                 DB  0FFH,0FEH,0FDH,0FBH,0E7H,09FH,0FFH,0FFH;六10
  984. HAN_QI:/*也就是星期日*/
  985.                 DB  0FFH,0FFH,0FFH,001H,07DH,07DH,07DH,07DH
  986.                 DB  07DH,07DH,07DH,001H,0FFH,0FFH,0FFH,0FFH
  987.                 DB  0FFH,0FFH,0FFH,000H,0BFH,0BFH,0BFH,0BFH
  988.                 DB  0BFH,0BFH,0BFH,000H,0FFH,0FFH,0FFH,0FFH;日11
  989. HAN_SHI:
  990.                 DB  0FFH,003H,07BH,07BH,07BH,003H,0FFH,0EFH
  991.                 DB  0EFH,0EFH,0EFH,0EFH,000H,0EFH,0EFH,0FFH
  992.                 DB  0FFH,0C0H,0EFH,0EFH,0EFH,0C0H,0FFH,0FFH
  993.                 DB  0FEH,0F9H,0BFH,07FH,080H,0FFH,0FFH,0FFH;時12
  994. HAN_FEN:
  995.                 DB  07FH,0BFH,0DFH,06FH,077H,079H,07FH,07FH
  996.                 DB  07FH,07CH,073H,0EFH,0DFH,0BFH,07FH,0FFH
  997.                 DB  0FFH,07FH,0BFH,0DFH,0E7H,0F8H,0FFH,0BFH
  998.                 DB  07FH,0BFH,0C0H,0FFH,0FFH,0FFH,0FFH,0FFH;分13
  999. HAN_MIAO:
  1000.                 DB  0DBH,0DBH,05BH,001H,0DCH,0DDH,0FFH,03FH
  1001.                 DB  0C7H,0FFH,000H,0FFH,0F7H,0EFH,09FH,0FFH
  1002.                 DB  0F7H,0F9H,0FEH,000H,0FEH,0F9H,07EH,07FH
  1003.                 DB  0BFH,0BFH,0D8H,0EFH,0F3H,0FCH,0FFH,0FFH;秒14
  1004.                         
  1005. YING_LING:
  1006.             DB  0FFH,01FH,0EFH,0F7H,0F7H,0EFH,01FH,0FFH
  1007.                 DB  0FFH,0F0H,0EFH,0DFH,0DFH,0EFH,0F0H,0FFH;015
  1008. YING_YI:
  1009.                 DB  0FFH,0FFH,0EFH,0EFH,007H,0FFH,0FFH,0FFH
  1010.                 DB  0FFH,0FFH,0DFH,0DFH,0C0H,0DFH,0DFH,0FFH;116
  1011. YING_ER:
  1012.                 DB  0FFH,08FH,0F7H,0F7H,0F7H,0F7H,00FH,0FFH
  1013.                 DB  0FFH,0CFH,0D7H,0DBH,0DDH,0DEH,0CFH,0FFH;217
  1014. YING_SAN:
  1015.                 DB  0FFH,0CFH,0F7H,0F7H,0F7H,077H,08FH,0FFH
  1016.                 DB  0FFH,0E7H,0DFH,0DEH,0DEH,0DDH,0E3H,0FFH;318
  1017. YING_SI:
  1018.                 DB  0FFH,0FFH,07FH,0BFH,0CFH,007H,0FFH,0FFH
  1019.                 DB  0FFH,0F9H,0FAH,0DBH,0DBH,0C0H,0DBH,0DBH;419
  1020. YING_WU:
  1021.                 DB  0FFH,007H,077H,077H,077H,0F7H,0F7H,0FFH
  1022.                 DB  0FFH,0E6H,0DFH,0DFH,0DFH,0EEH,0F1H,0FFH;520
  1023. YING_LIU:
  1024.                 DB  0FFH,01FH,0EFH,077H,077H,06FH,0FFH,0FFH
  1025.                 DB  0FFH,0F0H,0EEH,0DFH,0DFH,0DFH,0E0H,0FFH;621
  1026. YING_QI:
  1027.                 DB  0FFH,0E7H,0F7H,0F7H,077H,097H,0E7H,0FFH
  1028.                 DB  0FFH,0FFH,0FFH,0C1H,0FEH,0FFH,0FFH,0FFH;722
  1029. YING_BA:
  1030.                 DB  0FFH,08FH,077H,0F7H,0F7H,077H,08FH,0FFH
  1031.                 DB  0FFH,0E3H,0DDH,0DEH,0DEH,0DDH,0E3H,0FFH;823
  1032. YING_JIU:
  1033.                 DB  0FFH,00FH,0F7H,0F7H,0F7H,0EFH,01FH,0FFH
  1034.                 DB  0FFH,0FEH,0EDH,0DDH,0DDH,0EEH,0F0H,0FFH;924        

  1035. HAN_GAN:
  1036. DB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF
  1037. DB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF

  1038. /***************結束*************************/
  1039. END
復制代碼
(注:原工程文件見附件)
說明:
目前沒有把當前選擇的修改閃爍或者加下劃線凸顯出來,小伙伴們可以進行改進提升一下。
附件:
仿真.zip (21.54 KB, 下載次數: 130)

程序.zip (55.67 KB, 下載次數: 117)


評分

參與人數 1黑幣 +70 收起 理由
admin + 70 贊一個!

查看全部評分

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

使用道具 舉報

沙發
ID:236933 發表于 2019-11-15 14:45 | 只看該作者
經測試  仿真無法運行  
回復

使用道具 舉報

板凳
ID:259017 發表于 2020-1-15 23:03 | 只看該作者
筱豆先生 發表于 2019-11-15 14:45
經測試  仿真無法運行

你你你都沒有添加hex文件到單片機里面,當然無法運行啊,嗚嗚嗚~,我又被冤枉了,不然我都仿真是咋成功的。
回復

使用道具 舉報

地板
ID:259017 發表于 2020-1-15 23:03 | 只看該作者
筱豆先生 發表于 2019-11-15 14:45
經測試  仿真無法運行

兄弟,沒問題的,把hex添加進仿真的51單片機里面就行了
回復

使用道具 舉報

5#
ID:283883 發表于 2020-1-16 07:19 | 只看該作者
能不能把仿真和程序放在一個壓縮包里,節約一下黑幣,謝謝
回復

使用道具 舉報

6#
ID:706153 發表于 2020-4-14 15:30 | 只看該作者
這么無法修改時間呢 求操作
回復

使用道具 舉報

7#
ID:795314 發表于 2020-7-2 08:47 | 只看該作者
為什么運行時候LCD不亮呢?
回復

使用道具 舉報

8#
ID:572963 發表于 2020-7-13 12:15 | 只看該作者
啊,重新編譯一次就可以正常運行了
回復

使用道具 舉報

9#
ID:572963 發表于 2020-7-18 10:48 | 只看該作者
本帖最后由 Blueanc 于 2020-7-18 16:20 編輯

樓主的代碼有點小問題,在51單片機系列沒有對減法的bcd調整指令,所以SUBB A,#1 ;DA A這兩句指令應該改為ADD A,#99H;DA A
回復

使用道具 舉報

10#
ID:572963 發表于 2020-8-26 17:12 | 只看該作者
沒有修改時間的時候閃爍
回復

使用道具 舉報

11#
ID:849527 發表于 2021-4-19 17:51 來自手機 | 只看該作者
有c語言的嗎?
回復

使用道具 舉報

12#
ID:978636 發表于 2021-12-26 19:56 來自手機 | 只看該作者
CHEN_KAI 發表于 2021-4-19 17:51
有c語言的嗎?

兄弟 找到C語言的了嘛
回復

使用道具 舉報

13#
ID:1029834 發表于 2022-12-18 14:12 | 只看該作者
有C語言的嗎
回復

使用道具 舉報

14#
ID:1108449 發表于 2024-1-8 09:52 | 只看該作者
大佬,能不能發一個C語言的程序?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产日韩欧美激情 | 国产精品毛片av一区 | 国产精品久久在线 | www.一级片| 日韩中文字幕视频 | 国产精品毛片一区二区三区 | 色毛片 | 亚洲第一av | 国产91丝袜在线播放 | 婷婷色在线 | av激情在线| 中文字幕亚洲一区 | 国产精品69毛片高清亚洲 | 久久精品国产亚洲夜色av网站 | 欧美日韩三级 | 国产一区二区三区精品久久久 | 91精品国产色综合久久不卡98 | 国产亚洲网站 | 99久久婷婷国产综合精品电影 | 亚洲国产精品视频一区 | 欧美 日韩 国产 在线 | 免费在线毛片 | 欧美黄在线观看 | 国产激情一区二区三区 | av在线天天 | 欧美精品一区二区三区一线天视频 | 91免费视频 | 欧美电影一区 | 狠狠干天天干 | 免费观看一级黄色录像 | 成人a视频 | 国产精品一区二区三区四区 | 亚洲精品一区二三区不卡 | 91精品国产综合久久久动漫日韩 | 亚洲综合国产 | 91精品久久久久久综合五月天 | 性视频一区 | 亚洲午夜在线 | 日韩一区不卡 | 拍拍无遮挡人做人爱视频免费观看 | 操人网 |