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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

LCD1602 時鐘顯示 匯編語言編程帶proteus仿真

[復制鏈接]
跳轉到指定樓層
樓主
一個用51單片機做的LCD1602 時鐘顯示 下面是仿真原理圖,采用匯編語言來編程.

時鐘程序的所有資料打包下載:
數字時鐘.rar (248.57 KB, 下載次數: 22)


源程序:
  1. ;/********************************************************************************
  2. ;                               LCD1602 時鐘顯示Cekong time測控何小雙
  3. ;********************************************************************************/
  4.           RS   EQU  P2.0;    //控制端接口
  5.           R_W  EQU  P2.1
  6.           E    EQU  P2.2
  7.           DB0_DB7  EQU  P0
  8. ;***********定義時、分、秒及50ms單元*******
  9.           DI_DA   DATA 20H
  10.           SEC     DATA 21H
  11.           MIN     DATA 22H
  12.           HOUR    DATA 23H
  13. ;************程序開始***********************
  14.           ORG  000H
  15.           LJMP MAIN
  16.           ORG  000BH  //定時器TO的中斷入口地址
  17.           LJMP CLOCK
  18.           ORG  0030H
  19. MAIN:MOV TMOD,#01H                   //工作方式1.16位定時計數
  20.      MOV TL0,#0B0H                          //設置初值
  21.      MOV TH0,#03CH
  22.      SETB  ET0         //允許T0中斷
  23.      SETB  TR0          //啟動T0
  24.      MOV DI_DA,#00H
  25.      SETB  EA                //總中斷開放
  26.      MOV   SP,#60H     //設置堆棧指針
  27.      LCALL  INITIAL           //初始化
  28.      LCALL  CLS                   //清屏
  29. ;*************顯示Cekong time**************
  30.      MOV A,#10000000B
  31.      LCALL WRITE_COM
  32.      MOV   DPTR,#LINE0
  33.      LCALL DISP
  34. ;***********************************************
  35.      MOV A,#11000000B
  36.      LCALL WRITE_COM
  37.      MOV DPTR,#LINE1
  38.      LCALL DISP
  39. ;***********************************************
  40.      MOV A,#11001100B
  41.      LCALL WRITE_COM
  42.      MOV DPTR,#LINE1
  43.      LCALL DISP
  44. ;****************計時開始***********************
  45. BEGIN:MOV P1,#7FH
  46.       MOV A,P1
  47.       CJNE A,#7FH,NEXT        //首先對兩個規定的操作數進行比較,然后根據比較的結果來決定是否轉移--若兩個操作數相等,程序按順序往下執行NEXT;
  48. ;      SETB P1.7                           
  49.       ACALL CONV  //計時轉換
  50.       ACALL DIS         //顯示出時間
  51.       AJMP BEGIN
  52. NEXT: ACALL KEY
  53.       AJMP BEGIN
  54. ;****************掃描按鍵***********************
  55. KEY:  ACALL DEL10MS                 //軟件濾波        delay后檢測
  56.       JB  P1.4,HOUR_KEY                                 //1.4和1.5硬件設計
  57. MIN_ADJ:CLR C
  58.         MOV A,MIN
  59.         INC A
  60.         DA A
  61.         CJNE A,#60H,X1
  62.         CLR A
  63. X1:     MOV MIN,A
  64.         ACALL DIS
  65.         ACALL DEL200MS
  66.         MOV P1,#7FH
  67.         JNB P1.4,MIN_ADJ
  68. HOUR_KEY:JB P1.5,X2
  69. HOUR_ADJ:CLR C
  70.          MOV A,HOUR
  71.          INC A
  72.          DA A
  73.          CJNE A,#24H,X3
  74.          CLR A
  75. X3:      MOV HOUR,A
  76.          ACALL DIS
  77.          ACALL DEL200MS
  78. X2:      MOV P1,#7FH
  79.          JNB P1.5,HOUR_ADJ
  80.         // SETB P1.7
  81.          RET
  82. ;**********************計時轉換*************************
  83. CONV:    MOV A,DI_DA
  84.          CJNE A,#14H,DONE
  85.          MOV DI_DA,#00H
  86.          MOV A,SEC
  87.          ADD A,#01H
  88.          DA  A
  89.          MOV SEC,A
  90.          CJNE A,#60H,DONE
  91.          MOV SEC,#00H
  92.          MOV A,MIN
  93.          ADD A,#01H
  94.          DA  A
  95.          MOV MIN,A
  96.          CJNE A,#60H,DONE
  97.          MOV MIN,#00H
  98.          MOV A,HOUR
  99.          ADD A,#01H
  100.          DA  A
  101.          MOV HOUR,A
  102.          CJNE A,#24H,DONE
  103.          MOV HOUR,#00H
  104. DONE:    RET
  105. ;******************顯示時間****************************
  106. DIS:    MOV A,#11000100B
  107.                 //MOV   A,#00111000B 當為這個值是能在lcd顯示跳秒,但就是不知道上面的值在protues中怎么就不能正常顯示,而實際中能顯示
  108.          LCALL WRITE_COM
  109.          MOV   A,HOUR
  110.          SWAP  A ///累加器內高低半字節交換
  111.          ANL   A,#0FH
  112.          ADD   A,#30H
  113.          LCALL WRITE_DATA
  114.          MOV   A,HOUR
  115.          ANL   A,#0FH
  116.          ADD   A,#30H
  117.          LCALL WRITE_DATA
  118.          MOV   A,#3AH
  119.          LCALL WRITE_DATA        
  120. ;********************************************
  121.         MOV   A,MIN
  122.          SWAP  A
  123.          ANL   A,#0FH
  124.          ADD   A,#30H
  125.          LCALL WRITE_DATA
  126.          MOV   A,MIN
  127.          ANL   A,#0FH
  128.          ADD   A,#30H
  129.          LCALL WRITE_DATA
  130.          MOV   A,#3AH
  131.          LCALL WRITE_DATA            //分
  132. ;******************************************
  133.          MOV   A,SEC
  134.          SWAP  A
  135.          ANL   A,#0FH
  136.          ADD   A,#30H
  137.          LCALL WRITE_DATA
  138.          MOV   A,SEC
  139.          ANL   A,#0FH
  140.          ADD   A,#30H
  141.          LCALL WRITE_DATA
  142.          RET                                   //秒
  143. ;*****************50ms定時中斷服務子程序***************
  144. CLOCK:   MOV   TL0,#0B0H
  145.          MOV   TH0,#3CH
  146.          INC    DI_DA        //增加1
  147.          RETI
  148. ;*****************顯示字符串到LCD子程序****************
  149. DISP:     PUSH   ACC
  150. DISP_LOOP:CLR A
  151.           MOVC A,@A+DPTR
  152.           JZ   END_DISP
  153.           LCALL WRITE_DATA
  154.           INC DPTR
  155.           SJMP DISP_LOOP
  156. END_DISP: POP  ACC
  157.           RET
  158. ;***************************************************************
  159. ;                      LCD1602初始化設定子程序
  160. ;***************************************************************
  161. INITIAL:  MOV   A,#00111000B          //顯示模式設置
  162.           LCALL WRITE_COM
  163.           MOV   A,#00001100B        //開顯示及光標顯示
  164.           LCALL WRITE_COM
  165.           MOV   A,#00000110B
  166.           LCALL WRITE_COM
  167.           RET
  168.          
  169. ;*****************清除LCD1602子程序**********************
  170. CLS:      MOV     A,#00000001B
  171.           LCALL    WRITE_COM
  172.           RET
  173. ;*****************寫指令程序*********************************
  174. WRITE_COM:    LCALL   CHECK_BUSY
  175.               CLR     E
  176.               CLR     RS
  177.               CLR     R_W         //        RS與RW低電平
  178.               SETB    E                 //E引腳來脈沖           從而實現寫指令
  179.               MOV     DB0_DB7,A
  180.               CLR     E
  181.               RET
  182. ;****************寫數據到LCD子程序******************
  183. WRITE_DATA:   LCALL   CHECk_BUSY
  184.               CLR     E
  185.               SETB    RS
  186.               CLR     R_W
  187.               SETB    E
  188.               MOV     DB0_DB7,A
  189.               CLR     E
  190.               RET

  191. ;***************查詢忙碌標志信號子程序**********
  192. CHECK_BUSY:   PUSH    ACC                   //壓進去
  193. BUSY_LOOP:    CLR     E
  194.               SETB    R_W
  195.               CLR     RS
  196.               SETB    E
  197.               MOV     A,DB0_DB7
  198.               CLR     E
  199.               JB      ACC.7,BUSY_LOOP          //直接尋址位為1則轉移
  200.               POP     ACC                //推出來
  201.               LCALL   DEL
  202.               RET                                //DB7=1則忙反之不忙則可以接收數據與命令
  203. ;*******************************************************************************延時2.5ms子程序********************
  204. DEL:          MOV     R6,#5
  205. TX0:          MOV     R7,#248
  206.               DJNZ    R7,[        DISCUZ_CODE_2        ]nbsp;                //248*2us*5
  207.               DJNZ    R6,TX0
  208.               RET

  209. ;*****************延時10ms子程序*********************
  210. DEL10MS:      MOV     R5,#10H
  211. TX1:          MOV     R4,#0FFH
  212.               DJNZ    R4,$
  213.               DJNZ    R5,TX1
  214.               RET
  215. ;*****************延時200ms子程序********************
  216. DEL200MS:     MOV     R3,#14H         //20*10ms
  217. TX2:          ACALL   DEL10MS
  218.               DJNZ    R3,TX2
  219.               RET
  220. ;*****************字符串*****************************
  221. LINE0:        DB "**CeKong2 Time**",00H         //第一行
  222. LINE1:        DB "    ",00H                  //第二行標記
  223.               END
復制代碼


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

使用道具 舉報

沙發
ID:102963 發表于 2017-12-18 17:38 | 只看該作者
坑人的程序,不好用!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩一区二区免费视频 | 久久久成人一区二区免费影院 | 欧美精品免费观看二区 | 色999日韩| av手机免费在线观看 | 久久一区二区三区四区五区 | 欧美精品一区二区三区在线播放 | 国产高清精品一区二区三区 | 91n成人| 波多野结衣一区二区三区 | 在线小视频 | 久久久成人免费一区二区 | 91在线第一页 | 日韩视频中文字幕 | 婷婷在线网站 | 日日噜噜噜夜夜爽爽狠狠视频97 | 精品国产乱码久久久久久蜜柚 | 毛片网在线观看 | 亚洲成人av在线播放 | 美女久久 | 精品1区2区| 亚洲视频网 | 久久国产精品偷 | 成人一区在线观看 | 91视频在线| 黄色大片在线播放 | 狠狠的干| 中文字幕久久久 | 亚洲va欧美va人人爽午夜 | 国产精品久久片 | 天堂一区二区三区四区 | 日韩av一区二区在线观看 | 伊人网在线播放 | 亚洲视频一区 | 男女网站视频 | 9191在线观看 | 日本不卡一区 | 成人免费视频一区 | 久久久99精品免费观看 | 成人精品视频在线观看 | 免费国产一区二区 |