RS485接收数据并显示到lcd1602上的汇编程序
时间: 2023-07-29 22:10:32 浏览: 70
以下是一个简单的汇编程序,用于将通过RS485接收到的数据显示在LCD1602上。它假定你已经设置好了RS485接口,并且已经初始化了LCD1602。
```
ORG 0x0000
; 设置端口地址
PORT_ADDR EQU P1
; LCD指令
LCD_CLEAR EQU 0x01
LCD_HOME EQU 0x02
LCD_ENTRY_MODE EQU 0x06
LCD_DISP_CTRL EQU 0x0C
LCD_FUNCTION_SET EQU 0x38
; 初始化
INIT:
MOV PORT_ADDR, #0x00 ; 端口清零
MOV A, #LCD_FUNCTION_SET ; 设置LCD功能
CALL SEND_CMD
MOV A, #LCD_DISP_CTRL ; 打开显示
CALL SEND_CMD
MOV A, #LCD_ENTRY_MODE ; 设置输入模式
CALL SEND_CMD
RET
; 发送命令到LCD
SEND_CMD:
CLR C ; RS = 0, 选择指令寄存器
MOV PORT_ADDR, A ; 发送命令
SETB P3.5 ; E = 1, 产生脉冲
CLR P3.5 ; E = 0
ACALL DELAY ; 稍作延迟
RET
; 发送数据到LCD
SEND_DATA:
SETB C ; RS = 1, 选择数据寄存器
MOV PORT_ADDR, A ; 发送数据
SETB P3.5 ; E = 1, 产生脉冲
CLR P3.5 ; E = 0
ACALL DELAY ; 稍作延迟
RET
; 等待一段时间
DELAY:
MOV R7, #0xFF
L1: DJNZ R7, L1
RET
; 接收数据并显示在LCD上
RECEIVE:
MOV R0, #0 ; R0 存储接收到的字节数
MOV R1, #0 ; R1 存储当前接收的字节
MOV R2, #0 ; R2 存储当前位置
MOV R3, #16 ; R3 存储最大长度
MOV R4, #0 ; R4 存储是否结束
MOV A, #LCD_CLEAR ; 清空屏幕
CALL SEND_CMD
L2: JNB RI, L2 ; 等待接收到数据
MOV A, SBUF ; 读取接收到的数据
MOV R1, A
INC R0 ; 字节数加1
MOV A, R2
ADD A, #0x80 ; 计算LCD显示位置
CALL SET_CURSOR ; 设置光标位置
MOV A, R1 ; 显示数据
CALL SEND_DATA
INC R2 ; 位置加1
CJNE R2, R3, L2 ; 如果没有到达最大长度则继续接收
MOV R4, #1 ; 到达最大长度,结束接收
L3: JNB TI, L3 ; 等待发送完成
MOV A, #LCD_HOME ; 将光标移动到起始位置
CALL SEND_CMD
RET
; 设置LCD光标位置
SET_CURSOR:
CLR C ; RS = 0, 选择指令寄存器
ADD A, #0x80 ; 计算地址
MOV PORT_ADDR, A ; 发送命令
SETB P3.5 ; E = 1, 产生脉冲
CLR P3.5 ; E = 0
ACALL DELAY ; 稍作延迟
RET
END
```
请注意,此程序仅为示例,可能需要根据你的具体硬件和需求进行修改。此外,你还需要设置RS485接收中断并在中断处理程序中将接收到的数据存储到SBUF寄存器中。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)