51单片机实例12——LCD1602显示字母A-Z

LCD1602显示字母A-Z

1、设计目的

        LCD1602显示字母A-Z

2、仿真电路

 

3、程序设计

#include<reg51.h>
    
sbit lcdrs=P3^0;		 //LCD显示的数据/命令选择端
sbit lcdrw=P3^1;        //LCD显示的读写操作选择端
sbit lcden=P3^2;		 //LCD显示的使能信号

/****************************************
函数功能:ms级延时
*****************************************/
void delayms(unsigned int xms)							//定义延时函数
{
	unsigned int i,j;
	for(i=xms;i>0;i--)
		for(j=110;j>0;j--);
}

/****************************************
函数功能:LCD写入数据
*****************************************/
void write_data(unsigned char date)										
{
    lcdrw=0;                //RW=0,写操作
	lcdrs=1;                 //RS=1 写数据
	P0=date;                                       
	delayms(5);
	lcden=1;								 //E=1
	delayms(5);
	lcden=0;								 //E=0   当E由1变0时LCD写入数据
}

/****************************************
函数功能:LCD写入指令
*****************************************/
void write_com(unsigned char com)
{
    lcdrw=0;                //RW=0,写操作
	lcdrs=0;               //RS=0 写命令                                  
	P0=com;                                     
	delayms(5);
	lcden=1;               //E=1
	delayms(5);
	lcden=0;               //E=0   当E由1变0时LCD执行命令
}

/****************************************
函数功能:LCD初始化设置
*****************************************/
void lcd_init()				   
{
	lcden=0;               //E=0   
	write_com(0x38);       //00111000两行显示,5*7点阵,8位数据
	write_com(0x0c);   		 //00001100开整体显示,光标关,无闪烁
	write_com(0x06);       //00000110写入1个字符后,地址指针加一
	write_com(0x01);       //00000001清屏
}

/****************************************
函数功能:LCD显示字母A-Z
*****************************************/
void lcd_capital_letter(unsigned char letter)
{
    int capital_letter[26]={0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,
                    0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,
                    0x55,0x56,0x57,0x58,0x59,0x5a};
    lcden=0;
	switch(letter-65)
	{
		case 0:write_data(capital_letter[0]);
		break;
		case 1:write_data(capital_letter[1]);
		break;
		case 2:write_data(capital_letter[2]);
		break;
		case 3:write_data(capital_letter[3]);
		break;
		case 4:write_data(capital_letter[4]);
		break;
		case 5:write_data(capital_letter[5]);
		break;
		case 6:write_data(capital_letter[6]);
		break;
		case 7:write_data(capital_letter[7]);
		break;
		case 8:write_data(capital_letter[8]);
		break;
		case 9:write_data(capital_letter[9]);
		break;
        case 10:write_data(capital_letter[10]);
		break;
		case 11:write_data(capital_letter[11]);
		break;
		case 12:write_data(capital_letter[12]);
		break;
		case 13:write_data(capital_letter[13]);
		break;
		case 14:write_data(capital_letter[14]);
		break;
		case 15:write_data(capital_letter[15]);
		break;
		case 16:write_data(capital_letter[16]);
		break;
		case 17:write_data(capital_letter[17]);
		break;
		case 18:write_data(capital_letter[18]);
		break;
		case 19:write_data(capital_letter[19]);
		break;
        case 20:write_data(capital_letter[20]);
		break;
		case 21:write_data(capital_letter[21]);
		break;
		case 22:write_data(capital_letter[22]);
		break;
		case 23:write_data(capital_letter[23]);
		break;
		case 24:write_data(capital_letter[24]);
		break;
		case 25:write_data(capital_letter[25]);
		break;
	}
}

/****************************************
函数功能:主函数
*****************************************/
void main()
{
    int letter,n=0;
    lcd_init();
    for(letter='A';letter<='Z';letter++)
        {
            if(n==26)
                n=0;
            if(n<16)
            {
                write_com(0x80+n); //第一行显示位置
                lcd_capital_letter(letter);     //显示大写字母
                delayms(100);
            }
            else
            {
                write_com(0x80+0x40+n-16); //第二行显示位置
                lcd_capital_letter(letter);     //显示大写字母
                delayms(100);
            }
            n++;
        }
	while(1);	//持续运行
}

4、补充内容

 

 

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LAI-BF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值