PIC单片机实现LCD1602显示字母A

控制/MCU

1876人已加入

描述

PIC单片机LCD1602显示单个A字程序

STATUS EQU 3H ;定义状态寄存器地址

PORTA EQU 5H ;定义RA口数据寄存器地址

PORTC EQU 7H ;定义RC口数据寄存器地

PORTD EQU 8H ;定义RD口数据寄存器地址

TRISA EQU 85H ;定义RA口方向控制寄存器地址

TRISC EQU 87H ;定义RC口方向控制寄存器地址

TRISD EQU 88H ;定义RD口方向控制寄存器地址

ADCON1 EQU 9FH ;定义ADC模块控制寄存器1的地址

;********************

Z EQU 2 ;定义0状态位的位地址

RP0 EQU 5 ;定义页选位RP0的位地址

;*********************

RS EQU 2 ;LCD寄存器选择信号脚定义在RD.2脚

RW EQU 1 ;LCD读/写信号脚定义在RD.1脚

E EQU 0 ;LCD片选信号脚定义在RD.0脚

;**********************

ORG 000H

NOP ;放置一条ICD必需的空操作指令

GOTO MAIN

ORG 0008H

MAIN

BSF STATUS,RP0

MOV LW 07H

MOV WF ADCON1 ;设置RA口全部为普通数字IO口

MOV LW 00H ;定义RA口,RC,RD口全部为输出

MOV WF TRISC

MOV WF TRISD

BCF STATUS,RP0

CALL DELAY ;调用廷时,刚上电LCD复位不一定有PIC快

MOV LW 01H

MOV WF PORTC ;清屏

CALL ENABLE

MOV LW 38H

MOV WF PORTC ;8位2行5x7点阵

CALL ENABLE

MOV LW 0FH

MOV WF PORTC ;显示器开、光标开、闪烁开

CALL ENABLE

MOV LW 06H

MOV WF PORTC ;文字不动,光标自动右移

CALL ENABLE

MOV LW 0C0H

MOV WF PORTC ;写入显示起始地址(第一行第一个位置)

CALL ENABLE

MOV LW 41H

MOV WF PORTC ;字母“A”的代码

BSF PORTD,RS

BCF PORTD,RW

BCF PORTD,E

CALL DELAY

BSF PORTD,E

GOTO $

ENABLE

BCF PORTD,RS ;写入控制命令的子程序

BCF PORTD,RW

BCF PORTD,E

CALL DELAY

BSF PORTD,E

RETLW 0

;********************************************

DELAY

;子程序名,也是子程序入口地址

MOV lw 0ffh ;将外层循环参数值FFH经过W

MOV wf 20h ;送入用作外循环变量的20H单元

lp0 MOV lw 0ffh ;将内层循环参数值FFH经过W

MOV wf 21h ;送入用作内循环变量的21H单元

lp1 nop

decfsz 21h,1 ;变量21H内容递减,若为0跳跃

goto lp1 ;跳转到LP1处

decfsz 20h,1 ;变量20H内容递减,若为0跳跃

goto lp0 ;跳跃到LP0处

return ;返回主程序

end ;源程序结束

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分