51单片机学习:LCD12864液晶显示实验(带字库)

实验名称:LCD12864液晶显示实验(带字库)
接线说明:    
实验现象:下载程序后,LCD12864上显示汉字字符信息
注意事项:                                                                                  
***************************************************************************************/
#include "public.h"
#include "lcd12864.h"


/*******************************************************************************
* 函 数 名       : main
* 函数功能         : 主函数
* 输    入       : 无
* 输    出         : 无
*******************************************************************************/
void main()
{    
    lcd12864_init();//LCD12864初始化

    lcd12864_show_string(0,0,"Hello World!");//第1行字符串显示
    lcd12864_show_string(0,1,"大家好!");//第2行字符串显示
    lcd12864_show_string(0,2,"欢迎使用51开发板");//第3行字符串显示
    lcd12864_show_string(0,3,"好好学习天天向上");//第4行字符串显示
    while(1)
    {
        
    }    
}

#include "lcd12864.h"


/*******************************************************************************
* 函 数 名       : lcd12864_write_cmd
* 函数功能         : LCD12864写命令
* 输    入       : cmd:指令
* 输    出         : 无
*******************************************************************************/
void lcd12864_write_cmd(u8 cmd)
{
    LCD12864_RS=0;//选择命令
    LCD12864_WR=0;//选择写
    LCD12864_E=0;
    LCD12864_DATAPORT=cmd;//准备命令
    delay_ms(1);
    LCD12864_E=1;//使能脚E先上升沿写入
    delay_ms(1);
    LCD12864_E=0;//使能脚E后负跳变完成写入
}

/*******************************************************************************
* 函 数 名       : lcd12864_write_data
* 函数功能         : LCD12864写数据
* 输    入       : dat:数据
* 输    出         : 无
*******************************************************************************/
void lcd12864_write_data(u8 dat)
{
    LCD12864_RS=1;//选择数据
    LCD12864_WR=0;//选择写
    LCD12864_E=0;
    LCD12864_DATAPORT=dat;//准备数据
    delay_ms(1);
    LCD12864_E=1;//使能脚E先上升沿写入
    delay_ms(1);
    LCD12864_E=0;//使能脚E后负跳变完成写入
}

/*******************************************************************************
* 函 数 名       : lcd12864_init
* 函数功能         : LCD12864初始化
* 输    入       : 无
* 输    出         : 无
*******************************************************************************/
void lcd12864_init(void)
{
    LCD12864_PSB=1;//选择8位或4位并口方式
    lcd12864_write_cmd(0x30);//数据总线8位,基本指令操作
    lcd12864_write_cmd(0x0c);//整体显示关,游标显示关,游标正常显示
    lcd12864_write_cmd(0x06);//写入新数据后光标右移,显示屏不移动
    lcd12864_write_cmd(0x01);//清屏    
}

/*******************************************************************************
* 函 数 名       : lcd12864_clear
* 函数功能         : LCD12864清屏
* 输    入       : 无
* 输    出         : 无
*******************************************************************************/
void lcd12864_clear(void)
{
    lcd12864_write_cmd(0x01);    

/*******************************************************************************
* 函 数 名       : lcd12864_show_string
* 函数功能         : LCD12864显示字符串
* 输    入       : x,y:显示坐标,x=0~7,y=0~3;
                   str:显示字符串数据
* 输    出         : 无
*******************************************************************************/
void lcd12864_show_string(u8 x,u8 y,u8 *str)
{
    if(y<=0)y=0;
    if(y>3)y=3;
    x&=0x0f;    //限制x,y不能大于显示范围

    switch(y)
    {
        case 0: x|=0x80;break;//第1行地址+x的偏移
        case 1: x|=0x90;break;//第2行地址+x的偏移
        case 2: x|=0x88;break;//第3行地址+x的偏移
        case 3: x|=0x98;break;//第4行地址+x的偏移
    }
    lcd12864_write_cmd(x);
    while(*str!='\0')
    {
        lcd12864_write_data(*str);
        str++;        
    }
        

 

#include "public.h"

/*******************************************************************************
* 函 数 名       : delay_10us
* 函数功能         : 延时函数,ten_us=1时,大约延时10us
* 输    入       : ten_us
* 输    出         : 无
*******************************************************************************/
void delay_10us(u16 ten_us)
{
    while(ten_us--);    
}

/*******************************************************************************
* 函 数 名       : delay_ms
* 函数功能         : ms延时函数,ms=1时,大约延时1ms
* 输    入       : ms:ms延时时间
* 输    出         : 无
*******************************************************************************/
void delay_ms(u16 ms)
{
    u16 i,j;
    for(i=ms;i>0;i--)
        for(j=110;j>0;j--);
}

纷传单片机学习资料放在纷传小程序里了,需要的可以加入圈子有资料百度网盘下载地址及提取码。

  • 11
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: 要实现51单片机光敏电阻LCD12864字库显示,可以按照以下步骤进行: 1. 确定所使用的LCD12864的控制器型号,例如常用的ST7565、KS0108等。 2. 根据控制器型号编写相应的驱动程序,可参考相关资料或开源代码。 3. 连接光敏电阻,读取光敏电阻的电压值,根据电压值控制LCD显示相关内容。 4. 准备字库文件,将需要显示的文字转换为字模,并存储到字库中。 5. 使用驱动程序中的函数调用字库,完成文字的显示。 具体实现过程中需要注意硬件连接、程序编写及调试等方面的问题。 ### 回答2: 51单片机光敏电阻是一种常见的电子元件,光敏电阻能够根据光的强弱来改变其电阻值。而LCD12864是一种液晶屏幕,具有128x64像素的显示区域,能够显示文字和图形。字库显示意味着LCD12864具有一组预先定义好的文字库,可以直接显示文字而不需要通过编程生成。 在使用51单片机光敏电阻和LCD12864字库显示时,我们可以通过测量光敏电阻的电阻值,来获取环境光的强度。根据光敏电阻的电阻值,我们可以调整LCD12864的背光亮度,以保证显示内容的清晰度。 通过编程,我们可以将需要显示的文字和图形存储在LCD12864的字库中。当需要显示某个文字时,我们只需要根据其在字库中的位置来设置相应的控制信号,LCD12864就能够正确地显示出该文字。这样,我们可以方便地显示多种文字和图案,而不需要每次都通过编程生成。 同时,我们还可以通过编程控制LCD12864显示动态内容。例如,我们可以实现文字的滚动、闪烁和变色等效果,从而使显示更加生动和多样化。利用这些功能,我们可以在各种电子设备中应用51单片机光敏电阻和LCD12864字库显示,如温度计、天气预报、闹钟等。 总之,51单片机光敏电阻与LCD12864字库显示的组合能够实现光敏控制和丰富的显示效果。这种组合在各种电子设备中都有广泛的应用。 ### 回答3: 51单片机是一种广泛应用于嵌入式系统开发的单片机,它具有低功耗、高性能和丰富的外设接口等特点。光敏电阻是一种能够根据光照强度改变电阻值的传感器,常用于光强检测和调光控制等场合。 LCD12864是一种具有128x64像素点的液晶显示屏,它通过控制每个像素点的亮暗来实现图像和文字的显示。配备字库可以让LCD12864能够显示更多的文字和图形,提高显示效果。 在使用51单片机连接光敏电阻和LCD12864进行显示时,首先需要将光敏电阻与51单片机的模拟输入端连接,通过读取模拟输入端的电压值,可以获取光敏电阻所检测到的光照强度。 然后,根据光照强度的变化,可以通过编程控制LCD12864显示相应的信息。可以通过指令或函数来操作LCD12864的各个像素点和字库,以在屏幕上显示特定的文本和图形。 此外,还可以根据光敏电阻的变化来调整LCD12864的亮度,以适应不同光照条件下的显示需求。这样,通过51单片机、光敏电阻和LCD12864的组合,可以实现根据光照强度的变化来显示不同的信息,提高显示效果和用户体验。 总结来说,使用51单片机、光敏电阻和字库LCD12864可以实现根据光照强度的变化来进行文字和图形的显示,还可以通过调节亮度来适应不同光照条件。这样的组合可以广泛应用于各种嵌入式系统中,例如室内照明控制、环境光强检测等领域。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

白茶丫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值