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

QQ登錄

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

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

[原創(chuàng)]31行代碼搞定LCD1602顯示Proteus仿真程序(C&匯編)基于編址技術(shù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:405708 發(fā)表于 2018-10-10 20:26 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
單片機(jī)LCD1602顯示仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

  1. typedef unsigned int  uint;
  2. typedef unsigned char uchar;

  3. uchar xdata LCD_CW _at_ 0xfcfc;
  4. uchar xdata LCD_DW _at_ 0xfdfd;
  5. uchar xdata LCD_CR _at_ 0xfefe;

  6. #define WHILE_BUSY while(LCD_CR & 0x80)

  7. void print(uchar *str,uchar addr)
  8. {
  9.   WHILE_BUSY;//不能少!!
  10.         LCD_CW = 0x80 | addr;
  11.   while(*str!='\0')
  12.         {
  13.      WHILE_BUSY;
  14.            LCD_DW=*str;
  15.                  str++;
  16.         }
  17. }

  18. void main()
  19. {
  20.    LCD_CW=0x0c;
  21.          WHILE_BUSY;
  22.          LCD_CW=0x38;         
  23.          print("LCD Disp Program",0x00);//0x00~0x0f表示第一行0到15字符
  24.    print("Happy New Year! ",0x41);//0x40~0x4f表示第二行0到15字符
  25.          while(1);
  26. }
復(fù)制代碼
  1.         LCD_CW EQU 0FCFCH
  2.         LCD_DW EQU 0FDFDH
  3.         LCD_CR EQU 0FEFEH
  4.         
  5.         ORG 0000H
  6.         LJMP LCD_INIT
  7.         ORG 0030H
  8. LCD_INIT:               
  9.         MOV  SP,#60H
  10.         MOV R3,#0CH
  11.         CALL LCD_WCMD
  12.         MOV R3,#38H
  13.         CALL LCD_WCMD
  14.         MOV R1,#HELLO
  15.         MOV R3, #80H
  16.         CALL LCD_WCMD
  17.         CALL PRINT
  18.         MOV R3, #0C1H
  19.         MOV R1,#HELLO
  20.         CALL LCD_WCMD
  21.         CALL PRINT
  22.         LJMP $
  23. PRINT:
  24.         
  25. PRINT_LOOP:
  26.         MOV A,R1
  27.         MOVC A,@A+DPTR
  28.         MOV R3, A
  29.         CALL LCD_WDAT
  30.         INC R1
  31.         JNZ PRINT_LOOP
  32.         RET
  33. LCD_WDAT:
  34.         MOV A, 'D'
  35.         MOV DPTR,#LCD_DW
  36.         MOVX @DPTR,A
  37.         CALL WHILE_BUSY
  38.         RET
  39. LCD_WCMD:
  40.         MOV A, R3
  41.         MOV DPTR,#LCD_CW
  42.         MOVX @DPTR, A
  43.         CALL WHILE_BUSY
  44.         RET
  45. WHILE_BUSY:
  46.         MOV DPTR,#LCD_CR
  47.         MOVX A, @DPTR
  48.         MOV 29H,A
  49.         JB 29H.7, WHILE_BUSY
  50.         RET
  51.         
  52. HELLO:
  53.                 DB "HAPPY NEW YEAR! ",0
  54.                         
  55.                 END
復(fù)制代碼
以上是兩種語(yǔ)言編寫(xiě),可選用一種

基于編址技術(shù)的LCD1602顯示程序.rar (92.93 KB, 下載次數(shù): 14)



評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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