📄 lcd1602.c.100826221236
字号:
#include <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
//#pragma data:code
const uchar table[]="I LIKE AVR !";
const uchar table1[]="WWW.TXMCU.COM";
void delay(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
{
for(j=0;j<1141;j++);
}
}
void write_com(uchar com)
{
PORTB&=~BIT(5);
PORTB&=~BIT(6);
PORTA=com;
PORTB|=BIT(7);
delay(1);
PORTB&=~BIT(7);
}
void write_dat(uchar dat)
{
PORTB|=BIT(5);
PORTB&=~BIT(6);
PORTA=dat;
PORTB|=BIT(7);
delay(1);
PORTB&=~BIT(7);
}
void main()
{
uchar i;
DDRA=0XFF;
DDRB|=BIT(4)|BIT(5)|BIT(6);
PORTB&=~BIT(7);
write_com(0X38);
delay(5);
write_com(0X01);
delay(5);
write_com(0X0C);
delay(5);
write_com(0X06);
delay(5);
write_com(0X80+0X10);
delay(5);
for(i=0;i<12;i++)
{
write_dat(table[i]);
delay(5);
}
write_com(0X80+0X50);
delay(5);
for(i=0;i<13;i++)
{
write_dat(table1[i]);
delay(5);
}
for(i=0;i<16;i++)
{
write_com(0X18);
delay(500);
}
}
/************************************************************************************/
/* 程序名:1602液晶动态显示程序 */
/* */
/* CPU型号:AT89S52/STC89C51RC 晶振:12.0 M */
/* */
/* */
/* */
/* 功能描述: 跳线:把数码管上的LCD/LED跳线帽跳至下面,打开液晶显示 */
/* */
/* 现象:从右至左显示团队和技术交流邮箱 */
/* */
/* 技术交流:ccc414@163.com ;qq: 277970561;275722897;181903134 */
/* */
/* */
/* */
/* 精英团队 版权所有 */
/* 2008-06-20 */
/************************************************************************************/
//#include <reg52.h>
/*#define Lcd_Data PORTA //定义数据端口
sbit RS = PORTB5; //定义连接端口
sbit RW =PORTB6;
sbit E = PORTB7;
sbit Busy = PORTA7;
unsigned char code welcome[] = {"Elitist Teamwork"};
unsigned char code email[] = {"ccc414@163.com"};
void Delay(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
{
for(j=0;j<1141;j++);
}
}
/*void Delay(unsigned int t)//延时子程序,延时 1MS*t S
{
unsigned char a;
while(--t != 0)
{
for(a = 0; a < 125; a++);
}
}*/
/*void Read_Busy(void)//读忙信号判断
{
do{
Lcd_Data = 0xff;
RS = 0;
RW = 1;
E = 0;
Delay(2);
E = 1;
}while(Busy);
}
void Write_Comm(unsigned char lcdcomm) //写指令函数
{
Lcd_Data &= 0x0f;
Lcd_Data |= lcdcomm&0xF0;
RS = 0;
RW = 0;
E = 1;
Read_Busy();
E = 0;
lcdcomm = lcdcomm << 4;
Lcd_Data &= 0x0f;
Lcd_Data |= lcdcomm&0xF0;
RS = 1;
RW = 0;
E = 1;
Read_Busy();
E = 0;
}
void Write_Data(unsigned char lcddata)//写数据函数
{ Lcd_Data &= 0x0f;
Lcd_Data |= lcddata&0xF0;
RS = 1;
RW = 0;
E = 1;
Read_Busy();
E = 0;
lcddata = lcddata << 4;
Lcd_Data &= 0x0f;
Lcd_Data |= lcddata&0xF0;
RS = 1;
RW = 0;
E = 1;
Read_Busy();
E = 0;
}
void Init_LCD(void)//初始化LCD
{ Write_Comm(0x28);//8位2行5*8
Write_Comm(0x01);//清显示
Delay(200); //稍微延时,等待LCM进入工作状态
Write_Comm(0x02);//光标归位,此处不设置可能出现错误
Write_Comm(0x28);//8位2行5*8
Write_Comm(0x06);//文字不动,光标右移
Write_Comm(0x0e);//显示开/关,光标开闪烁关;0x0f开
}
void main(void)//主函数
{
unsigned char i;
DDRA=0XFF;
DDRB|=BIT(4)|BIT(5)|BIT(6);
Init_LCD(); //初始化 LCM
Write_Comm(0x80+16);//写入"welcome首地址(第一行)
for(i=0;i<16;i++)
{
Write_Data( welcome[i] );//显示welcometo字样
}
Write_Comm(0xc0+16);//写入第2行
for(i=0;i<14;i++)
{
Write_Data( email[i] );//显示
}
for(i=0;i<16;i++)
{
Write_Comm(0X18);
Delay(400);
}
while(1);//等待
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -