找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3634|回复: 0
收起左侧

[原创]31行代码搞定LCD1602显示Proteus仿真程序(C&汇编)基于编址技术

[复制链接]
ID:405708 发表于 2018-10-10 20:26 | 显示全部楼层 |阅读模式
单片机LCD1602显示仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
220817e7exuwgbu0x1kbba.png
  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. }
复制代码
  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
复制代码
以上是两种语言编写,可选用一种

基于编址技术的LCD1602显示程序.rar (92.93 KB, 下载次数: 14)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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