1602的显示程序,急用!
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define LCD_data P0
sbit E=P2^7;
sbit RS=P2^5;
sbit RW=P2^6;
uchar code table[]=I LOVE YOU!;
uchar code table1[]=WELCOME HERE;
uchar num;
void delayms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_comd(uchar comd)
{
RS=0;
LCD_data=comd;
delayms(11);
E=1;
delayms(11);
E=0;
}
void write_data(uchar date)
{
RS=1;
LCD_data=date;
delayms(11);
E=1;
delayms(11);
E=0;
}
void init()
{
LCD_data=0;
E=0;
write_comd(0x38);
write_comd(0x0c);
write_comd(0x06);
write_comd(0x01);
}
void main()
{
init();
while(1)
{
write_comd(0x80);
for(num=0;num<11;num++)
{
write_data(table[num]);
delayms(11);
}
write_comd(0x80+0x40);
for(num=0;num<12;num++)
{
write_data(table1[num]);
delayms(11);
}
}
}
求一个1602液晶显示最简单的汇编程序(在屏上显示一个数字就行了,过程完整)
51单片机
DQ BIT P3.4
RS EQU P0.0
RW EQU P0.1
E EQU P0.2
IO_LCD EQU P2
BITCNT DATA 30H
BYTECNT DATA 31H
COMMAND DATA 32H
main:
acall START_LCD ;初始化lcd
MOV COMMAND,#0C1H ;设定地址
ACALL BUSY
ACALL WRITE_LCD_COMMAND
MOV COMMAND,#0 ;显示字符
ACALL BUSY
ACALL WRITE_LCD_DATA
ajmp $
BUSY:
CLR RS
SETB RW
MOV IO_LCD,#0FFH
CLR E
NOP
NOP
SETB E
NOP
NOP
JB IO_LCD.7,BUSY
CLR E
RET
START_LCD:
ACALL REATY_15MS
MOV COMMAND,#38H
ACALL WRITE_LCD_COMMAND
ACALL REATY_5MS
MOV COMMAND,#38H
ACALL WRITE_LCD_COMMAND
ACALL REATY_5MS
MOV COMMAND,#38H
ACALL WRITE_LCD_COMMAND
MOV COMMAND,#38H
ACALL WRITE_LCD_COMMAND
MOV COMMAND,#00001000B ;显示关闭
ACALL BUSY
ACALL WRITE_LCD_COMMAND
MOV COMMAND,#00000001B ;显示清屏
ACALL BUSY
ACALL WRITE_LCD_COMMAND
MOV COMMAND,#00000100B ;移动光标设置
ACALL BUSY
ACALL WRITE_LCD_COMMAND
MOV COMMAND,#00001100B ;显示开关及光标设置
ACALL BUSY
ACALL WRITE_LCD_COMMAND
RET
WRITE_LCD_COMMAND:
CLR RS
CLR RW
MOV IO_LCD,COMMAND
NOP
NOP
SETB E
NOP
NOP
CLR E
NOP
NOP
RET
WRITE_LCD_DATA:
SETB RS
CLR RW
MOV IO_LCD,COMMAND
NOP
NOP
SETB E
NOP
NOP
CLR E
NOP
NOP
RET
TABE_LCD:
DB 01234
DB 56789
这是从我以前写的程序中截下来的,不知道有没有漏掉
我这有c语言的头文件。