51单片机学习251602液晶显示自定义图形

这篇写液晶1602显示自定义图形,显示2个简单汉字第一行第六个显示—日第二行第七个显示—月 作为举例,方便大家在特定位置显示特定汉字或图形仿真图:这里需

大家好,今天给各位分享51单片机学习251602液晶显示自定义图形的一些知识,其中也会对进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!

以第二行第七行显示—month 为例,方便在特定位置显示特定的汉字或图形。

仿真图:

这里需要一个取模软件:

1 首先选择8*8的尺寸

2 放大图表

3、参数设置

4.获取具体图形。需要注意的是,左边的三列不要使用。然后根据需要取模具

程序:

程序内容较多,详细请参考源码。

源代码:

#includereg52.h

#include 内在函数.h

#定义uchar无符号字符

#定义uint 无符号整型

#定义delayNOP(); {_nop_();_nop_();_nop_();_nop_();}; //短延迟

sbit LCD_RS=P2^0;

位LCD_RW=P2^1;

位LCD_EN=P2^2;

//自定义字符

uchar code mytab1[8]={0x1F,0x11,0x11,0x1F,0x11,0x11,0x1F,0x00,};//日

uchar代码mytab2[8]={0x0F,0x09,0x0F,0x09,0x0F,0x09,0x0B,0x19,}; //月

void delay1(int ms) //带参数的ms级延迟函数

{

无符号字符y;

同时(毫秒–)

{

for(y=0; y250; y++)

{

_nop_();

_nop_();

_nop_();

_nop_();

}

}

}

/******************************************************** ***** ******************/

/*检查LCD忙状态*/

/*lcd_busy=1,忙,等待,lcd_busy=0,空闲*/

/******************************************************** ***** ******************/

bit lcd_busy() //忙检测

{

位结果;

LCD_RS=0;

LCD_RW=1;

LCD_EN=1;

延迟NOP();

结果=(位)(P00x80);

LCD_EN=0;

返回(结果);

}

/******************************************************** ***** ******************/

/*向LCD写入指令*/

/*RS=L,RW=L,E=高电平,D0-D7=命令码*/

/******************************************************** ***** ******************/

无效lcd_wcmd(uchar cmd)

{

while(lcd_busy());

LCD_RS=0;

LCD_RW=0;

51单片机学习251602液晶显示自定义图形

LCD_EN=0;

_nop_();

_nop_();

P0=命令;

延迟NOP();

LCD_EN=1;

延迟NOP();

LCD_EN=0;

}

/******************************************************** ***** ******************/

/*向LCD写入数据*/

/*RS=H,RW=L,E=高脉冲,D0-D7=数据*/

/******************************************************** ***** ******************/

无效lcd_wdat(uchar dat)

{

while(lcd_busy());

LCD_RS=1;

LCD_RW=0;

LCD_EN=0;

P0=数据;

延迟NOP();

LCD_EN=1;

延迟NOP();

LCD_EN=0;

}

/******************************************************** ***** ******************/

/* 将字符串写入LCD */

/******************************************************** ***** ******************/

无效write_str(uchar addr,uchar *p)

{

uchar i=0;

lcd_wcmd(地址);

while(p[i]!=’\0′)

{

lcd_wdat(p[i]);

我++;

}

}

/******************************************************** ***** **********/

/* 设置显示位置*/

/******************************************************** ***** **********/

无效write_position(uchar 行,uchar 列)

{

乌查尔地方;

if(row==1) //第一行

{

地方=0x80+col-1; //位置

lcd_wcmd(地点);

}

别的

{

地方=0xc0+col-1;

lcd_wcmd(地点);

}

}

/******************************************************** ***** **********/

/*将自定义字符写入CGRAM */

/******************************************************** ***** **********/

无效writetab1()

51单片机学习251602液晶显示自定义图形

{

无符号字符i;

液晶屏_wcmd(0x40); //设置CGRAM地址

对于(i=0; i 8; i++)

lcd_wdat(mytab1[i]);

}

无效writetab2()

{

无符号字符i;

lcd_wcmd(0x48); //设置CGRAM地址

对于(i=0; i 8; i++)

lcd_wdat(mytab2[i]);

}

/******************************************************** ***** ******************/

/* 液晶屏初始化*/

/******************************************************** ***** ******************/

无效init_lcd()

{

延迟1(15); //延迟15ms

液晶屏_wcmd(0x01); //清屏

lcd_wcmd(0x38); //16*2显示,5*7点阵,8位数据

延迟1(5); //延迟5ms

液晶屏_wcmd(0x38);

延迟1(5);

lcd_wcmd(0x38);

延迟1(5);

lcd_wcmd(0x0c); //显示打开和关闭光标

延迟1(5);

液晶屏_wcmd(0x06); //移动光标

延迟1(5);

液晶屏_wcmd(0x01); //清屏

延迟1(5);

}

/*

0x00:第一个(0x40)0x01:第二个(0x48)

0x02:第三个(0x50)0x03:第四个(0x58)

0x04:第五个(0x60)0x05:第六个(0x68)

0x06:第七个(0x70)0x07:第八个(0x78)

第一行第一个位置的地址是0x80,第二行第一个位置的地址是0xC0

要求第一行第六个显示日

第二行第七行显示月份

*/

无效主()

{

init_lcd();

同时(1)

{

//显示日期

writetab1(); //第一个自定义字符的内容

写位置(1,6); //指定显示位置

液晶屏_wdat(0x00); //显示内容

//显示月份

writetab2(); //第二个自定义字符的内容

写位置(2,7);

液晶屏_wdat(0x01);

}

模拟结果:

用户评论

51单片机学习251602液晶显示自定义图形
窒息

终于找到这篇文章了!一直想自己实现简单的显示动态图片的功能,51单片机的性能有限,还是需要好好学习一下教程才能搞定。

    有9位网友表示赞同!

51单片机学习251602液晶显示自定义图形
算了吧

这个标题太吸引人了!我是嵌入式刚入门不久,对定制图形一直感兴趣,但现在还没接触过51芯片… 看到这个标题感觉自己离实现梦寐以求的功能越来越近了!

    有13位网友表示赞同!

51单片机学习251602液晶显示自定义图形
抚笙

我一直在用Arduino玩单片机项目,不过最近想尝试探索一下51的学习,从51单片机学习251602液晶显示自定义图形开始? 这篇文章或许能帮我开启这段新旅程!

    有11位网友表示赞同!

51单片机学习251602液晶显示自定义图形
北朽暖栀

屏幕尺寸有限、分辨率低总是51单片机的痛点,如果能实现自定义图形,至少有些丰富度了! 教程内容完善么?希望讲解清晰易懂!

    有6位网友表示赞同!

51单片机学习251602液晶显示自定义图形
逃避

我觉得51的液晶控制比较麻烦,学习成本也不小。如果能直接用更现代的芯片和屏幕也许会简单一些 ,但是想要了解这种经典的方式,确实需要好好研究一下!

    有13位网友表示赞同!

51单片机学习251602液晶显示自定义图形
■□丶一切都无所谓

学习这个项目需要什么基础知识啊? 我是完全没有单片机编程经验的入门者, 感觉自己是不是太菜了…

    有11位网友表示赞同!

51单片机学习251602液晶显示自定义图形
烬陌袅

对于想学习嵌入式和51的人来说,这个教程非常有价值。希望作者能不断更新,补充一些更实用的内容!

    有15位网友表示赞同!

51单片机学习251602液晶显示自定义图形
旧事酒浓

自己摸索实现自定义图形需要投入很多时间精力,这篇教程直接给出清晰的过程和代码真是太棒了!

    有9位网友表示赞同!

51单片机学习251602液晶显示自定义图形
采姑娘的小蘑菇

看这标题就感觉很有意思,终于可以看到51单片机显示出自己想要的图片了,以前只能做一些简单的静态字符显示…我要尝试一下!

    有5位网友表示赞同!

51单片机学习251602液晶显示自定义图形
绳情

我之前用STM32玩过类似的项目,发现51单片机的资源控制和开发方式确实不太一样。这个教程能帮我在学习过程中避开一些坑吗?

    有14位网友表示赞同!

51单片机学习251602液晶显示自定义图形
来瓶年的冰泉

我对51单片机的学习已经停滞不前了很久! 看这篇文章再次燃起了我的热情! 相信通过学习这个教程,我能够突破瓶颈重新开始

    有10位网友表示赞同!

51单片机学习251602液晶显示自定义图形
别在我面前犯贱

自定义图形的效果太酷了,一定要尝试一下! 文章讲解得怎么样啊?

    有6位网友表示赞同!

51单片机学习251602液晶显示自定义图形
敬情

学习成本太高了吧,而且51单片机的应用场景比较有限,直接用更强大的MCU不香吗……

    有9位网友表示赞同!

51单片机学习251602液晶显示自定义图形
惯例

这个项目听起来很有趣,但感觉对编程有一定要求啊! 我要好好想想自己时间安排是否合适再决定学习的节奏!

    有8位网友表示赞同!

51单片机学习251602液晶显示自定义图形
挽手余生ら

这个教程看起来很棒,希望能找到一些具体的代码和实例讲解,这样更能上手。

    有8位网友表示赞同!

51单片机学习251602液晶显示自定义图形
一生只盼一人

希望这篇教程能够涵盖比较全面的内容, 从基本电路设计到最终显示效果,都能一一解析!

    有15位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/132316.html

(0)
小su's avatar小su
上一篇 2024年9月17日 下午11:54
下一篇 2024年9月18日 上午12:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注