#include <reg52h>//51单片机相关库
typedef unsigned int uint;//数据类型重新定义
typedef unsigned char uchar;
sbit LCD_RS=P2^0;//数据/命令选择位
sbit LCD_RW=P2^1;//读/写选择位
sbit LCD_EN=P2^2;//使能信号
uchar lcd_tab[]={">
只是LCD1602的代码
;多功能51单片机开发板
;LCD1602测试程序
RS EQU P20
RW EQU P21
E EQU P22
LDATA EQU P1
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: MOV R0,#00H ;R0:每行显示字符的个数
MOV R1,#80H ;寄存器地址
MOV A,#38H ;设置显示(16×2)
ACALL WIR
MOV A,#0EH ;开显示,显示光标,光标不闪烁
ACALL WIR
MOV A,#06H ;整屏显示不移动
ACALL WIR
MOV A,#01H ;显示清屏
ACALL WIR
MOV DPTR,#LCD
LOOP0: MOV A,R1 ;写地址
ACALL WIR
INC R1 ;地址加一
CJNE R1,#90H,TT ;判断第一行写完没有
MOV R1,#0C0H ;若写完,R1=第二行地址
TT: MOV A,R0
MOVC A,@A+DPTR
ACALL WDR
INC R0 ;计数R0加1
LCALL DELAY1
CJNE R0,#20H,LOOP0 ;R1不等于32则继续
RE: AJMP RE
WIR: ACALL BUSY ;写指令寄存器子程序
CLR E ;初始化
CLR RS
CLR RW
SETB E
MOV LDATA,A
CLR E
RET
WDR: ACALL BUSY ;写数据寄存器子程序
CLR E
SETB RS
CLR RW
SETB E
MOV LDATA,A
CLR E
RET
BUSY: PUSH ACC ;检测忙信号子程序
ISBUSY:CLR E
CLR RS
SETB RW
SETB E
MOV A,LDATA
JB ACC7,ISBUSY ;ACC7=1,说明忙
POP ACC
ACALL DELAY1
RET
DELAY1:MOV R6,#5 ;延时子程序
D0: MOV R7,#248
DJNZ R7,$
DJNZ R6,D0
RET
DELAY2:MOV R5,#2
D1: MOV R3,#245
D2: MOV R4,#245
DJNZ R4,$
DJNZ R3,D2
DJNZ R5,D1
RET
LCD:DB ' MCS-51 TEST '
DB ' Xu Rui Feng '
END
1602液晶显示 的超声波模块程序 接口程序里边都有、、 #include //#include #include #define uchar unsigned char #define uint unsigned int sbit lcdrs=P2^3; sbit lcden=P2^2; sbit trig=P2^0; //超声波发送 //sbit echo=P3^2; //超声波接受
可以先将数据定义为全局变量,按键后处理那个要改变的数据,接着刷新显示器(初始化显示器就行),再进行相应的显示,变化的数据就可以显示了;因为需要了解硬件电路,和晶振频率,才能给例子,请见谅!若有需要,可将在下的1602驱动程序及电路原理图奉上,望采纳,谢谢!(全国大学生电子设计竞赛省三等奖队程序设计员答,欢迎进我空间交流!)
以上就是关于单片机中 LCD1602不能显示字符全部的内容,包括:单片机中 LCD1602不能显示字符、51单片机中怎么用按键控制lcd1602的光标移动,即每按一次按键光标向右移动一位写出具体的程序、基于AT89C51单片机和DS18B20温度传感器、LCD1602液晶显示的数字温度计 汇编程序及电路图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)