用51单片机控制LCD12864显示屏源程序

发布者:eaff86最新更新时间:2019-10-21 来源: 51hei关键字:51单片机控制  LCD12864  显示屏 手机看文章 扫描二维码
随时随地手机看文章

12864液晶在出厂时其对比度已经调好,所以用户在使用的时候第三管脚可不用接任何东西,本实验板上为了兼容多家12864液晶所以加了液晶对比度调节电位器,若用户使用我们配套的12864液晶可不用管它,液晶的第三管脚悬空就可以。有些液晶功耗比较大,用户在使用的时候可将液晶的第19、20引脚的背光不接,这样字体会很清楚。

 

单片机源程序如下:

/**********************BST-V51实验开发板例程************************

*  平台:BST-V51 + Keil U3 + STC89C52

*  名称: 

*  晶振:11.0592MHZ

*  说明:免费开源,不提供源代码分析.

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

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

/*                                                                 */

/* 单片机开发系统演示程序 - 128*64LCD显示显示  */

/*                                                                 */

//;*  LCD型号:TS12864A-3(带汉字库)或兼容型号    控制器ST7920      */

//;*  MCU:AT89S52 ,晶体频率:11.0592MHz                              */

/*                                                                 */

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


#include

#include

        

#define uchar unsigned char

#define uint  unsigned int

/*12864端口定义*/

#define LCD_data  P0             //数据口

sbit LCD_RS  =  P2^6;            //寄存器选择输入 

sbit LCD_RW  =  P2^5;            //液晶读/写控制

sbit LCD_EN  =  P2^7;            //液晶使能控制

sbit LCD_PSB =  P1^2;            //串/并方式控制

sbit wela    =  P2^6;

sbit dula    =  P2^7;


uchar code dis1[] = {"看什么看!"};

uchar code dis2[] = {"显示屏而已!"};

uchar code dis3[] = {"少见多怪!"};

uchar code dis4[] = {"那凉哪呆着!"};                  


#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};

uchar IRDIS[2];

uchar IRCOM[4];

void delay0(uchar x);  //x*0.14MS

void beep();

void  dataconv();

void lcd_pos(uchar X,uchar Y);  //确定显示位置

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

/*                                                                 */

/*  延时函数                                                       */

/*                                                                 */

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

void delay(int ms)

{

    while(ms--)

        {

      uchar i;

          for(i=0;i<250;i++)  

           {

            _nop_();                           

                _nop_();

                _nop_();

                _nop_();

           }

        }

}                

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

/*                                                                 */

/*检查LCD忙状态                                                    */

/*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。      */

/*                                                                 */

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

bit lcd_busy()

{                          

    bit result;

    LCD_RS = 0;

    LCD_RW = 1;

    LCD_EN = 1;

    delayNOP();

    result = (bit)(P0&0x80);

    LCD_EN = 0;

    return(result); 

}

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

/*                                                                 */

/*写指令数据到LCD                                                  */

/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。                             */

/*                                                                 */

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

void lcd_wcmd(uchar cmd)

{                          

   while(lcd_busy());

    LCD_RS = 0;

    LCD_RW = 0;

    LCD_EN = 0;

    _nop_();

    _nop_(); 

    P0 = cmd;

    delayNOP();

    LCD_EN = 1;

    delayNOP();

    LCD_EN = 0;  

}

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

/*                                                                 */

/*写显示数据到LCD                                                  */

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

/*                                                                 */

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

void lcd_wdat(uchar dat)

{                          

   while(lcd_busy());

    LCD_RS = 1;

    LCD_RW = 0;

    LCD_EN = 0;

    P0 = dat;

    delayNOP();

    LCD_EN = 1;

    delayNOP();

    LCD_EN = 0; 

}

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

/*                                                                 */

/*  LCD初始化设定                                                  */

/*                                                                 */

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

void lcd_init()


    LCD_PSB = 1;         //并口方式

    

    lcd_wcmd(0x34);      //扩充指令操作

    delay(5);

    lcd_wcmd(0x30);      //基本指令操作

    delay(5);

    lcd_wcmd(0x0C);      //显示开,关光标

    delay(5);

    lcd_wcmd(0x01);      //清除LCD的显示内容

    delay(5);

}

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

/*                                                                                                                 */

/* 主程序                                                                                    */

/*                                                       */

[1] [2]
关键字:51单片机控制  LCD12864  显示屏 引用地址:用51单片机控制LCD12864显示屏源程序

上一篇:单片机太阳能自动追光系统程序+电路+仿真
下一篇:单片机加个PCF8574模块,实现IIC方式驱动LCD1602

推荐阅读最新更新时间:2024-11-05 14:02

王东升揭秘京东方崛起之路
  ——宣称已进入“无人区”,却“最担心”被颠覆。下面就随手机便携小编一起来了解一下相关内容吧。   ——被称为“寡人”,他坦承:“确实我的内心很孤独”;   ——跨界创新,竟想“为中国人健康寿命提升15年做贡献”;   ——隐藏在巨人背后,国际专利在内地企业中仅次于华为;   ——“开放两端,芯屏器和”,愿意把技术和应用端全面开放,与全球特别是国内伙伴开放合作……   2017年上半年,北京 京东方 在智能手机液晶 显示屏 、平板电脑 显示屏 、笔记本电脑 显示屏 出货量上均位列全球第一……   从上世纪90年代末带领企业一头扎进资金投入高、回报周期长、技术难度大的液晶显示产业,到今天打造物联网时代“智慧端口(Intellig
[手机便携]
王东升揭秘京东方崛起之路
从日本到韩国再到中国 浅谈液晶产业的易主风波
        谈到液晶产业,目前被人熟知的大多是韩企(Samsung Display、LG Display)、国产(京东方、天马)、台湾(友达、奇美)。但是发明液晶技术的却是美国人,而将液晶技术广泛运用并且技术突破的又是日本人。液晶产业的“霸权”在不到60年的时间里,先后从美国、日本、韩国到中国易主了四次。接下来我们从“液晶周期”这个角度来分析液晶产业的局势为何如此风起云涌。   液晶技术诞生之前已经有了CRT显示技术。当美国无线电公司研发出第一个液晶显示模型的时候,它们感到既兴奋又失望,兴奋的是一种全新的显示技术的诞生,失望的是这种显示技术似乎不如已经成熟的CRT技术,颜色单调,相应速度慢,尺寸太小,根本没办法运用于平板电
[家用电子]
大陆集团获得横跨整个驾驶舱的显示屏解决方案订单
大陆集团从一家国际汽车制造商那里拿到了第一个A柱到A柱显示屏的量产订单。通过开发横跨整个驾驶舱的显示屏解决方案,科技公司大陆集团系统性地延续了向更大的显示屏发展的趋势,这种趋势已持续多年。从A柱到A柱的集成式显示屏解决方案为越来越多的车辆功能、数字服务、通信和信息娱乐应用提供了空间,计划于2024年投入批量生产。该解决方案让显示屏成为驾驶员,前排乘客以及数字化驾乘体验的中央视觉界面。它在高 产量 车型中的应用上市是车辆进化成物联网中的一个智能设备的重要里程碑。显示在横跨整个驾驶舱屏上的信息,无论是导航、警告标志、电影、新闻、社交网络、办公应用还是用来规划路线的小程序:都能为驾驶员和乘客带来全新的沉浸式用户体验。 数字化和安全的
[汽车电子]
大陆集团获得横跨整个驾驶舱的<font color='red'>显示屏</font>解决方案订单
LED显示屏技术升级方向分析
  1、 LED 显示屏薄型化、高功率   据目前市场观测,20CM厚类箱体至今全球LED显示屏仍有很大的占有量。LED显示屏应用领域越来越广,存在的安全隐患越来越大,LED 显示屏薄型化、高功率也成了大部分着名厂家生产追求。   LED显示屏主要比拼的不仅是厚度,还包括更为经济、节能的电力消耗,更为出色的画质。诸多方面的技术性能优势是LED 显示屏薄型化、高功率市场快速增长的核心原因。近期通普推出的同类产品中,厚度都在1cm左右,这样的厚度是传统LED 显示屏无法比拟的。   2、 LED 显示屏大屏幕拼接   拼接墙是一种集成系统,目前共有四种类型,比较常用的是投影和LED两种。其中,投影目前常用到的有3LCD、DPL和LCO
[电源管理]
浅谈开关电源中的LED显示屏设计
     LED 用 开关电源 属于电网电源供电的、额定电压不超过600V的单路输出式交流-直流外部电源,而室外用的LED开关电源比室内用的环境更严酷,所以选室外用的LED开关电源作为研究的重点,更具代表性。     LED显示屏的研究采用屏幕为8×8的 点阵 显示,侧重于动态处理方法,由于显示屏幕的局限性,在此次的研究设计中只能显示英文和数字。一个基本的LED屏幕由8行×8列点共64个LED组成,显示屏有共阴和共阳两种连接方式。     设计思路     对由8×8点阵构成的LED显示屏而言,一般数据端连接微处理器的8位并行数据口,而选通端则逐一使能(选通),选择需要点亮的某一列,通过分时复用方式实现动态显示效果。选通方式一
[电源管理]
浅谈开关电源中的LED<font color='red'>显示屏</font>设计
详解LED显示屏安装方式
  LED显示屏(LEDdisplay,LED Screen):又叫电子显示屏或者飘字屏幕。是由LED点阵和led pc 面板组成,通过红色,蓝色,绿色LED灯的亮灭来显示文字、图片、动画、视频,内容可以随时更换,各部分组件都是模块化结构的显示器件。传统LED显示屏通常由显示模块、控制系统及电源系统组成。显示模块由LED灯组成的点阵构成,负责发光显示;控制系统通过控制相应区域的亮灭,可以让屏幕显示文字、图片、视频等内容,单色、双色屏主要用来播放文字的,全彩屏主要是播放动画的;电源系统负责将输入电压电流转为显示屏需要的电压电流。小编今天为大家介绍的是,显示屏的安装方式有哪些,如何安装,感兴趣的朋友不妨关注下。   一、户外LED
[电源管理]
全球最大的电纸屏亮相 42英寸大到拿不住
据国外媒体报道,2017年国际消费电子展(CES)即将在拉斯维加斯拉开帷幕,全球最新的科技产品陆续亮相。     来自加拿大的QuirkLogic公司为了结束人们每次用手机拍照保存白板内容的生活,推出了一款42英寸的智能白板Quilla。 它不仅是全球最大的“电纸显示屏”,还能够利用QuirkLogic的书写技术,将任何画在上面的内容保存进云端,以备后续使用。 这款产品是QuirkLogic同E Ink三年合作的成果,数年来他们都致力于推动电纸显示技术的应用。 Quilla智能白板重约22磅,内置电池单次充电可续航16小时。如果预算充足,你可以在办公室墙上挂上多个Quilla,连接起来,还能免去翻页的麻烦。 目前Quilla智
[嵌入式]
双RAM技术的LED显示屏控制系统设计
引言 长条的LED显示屏在生活中应用得很多,这种显示屏的控制电路简单,扫描线有限,显示信息量也不是很大。当显示信息量比较大时,若采用一般的长屏显示屏,显示信息过慢,即使采用超长屏的显示屏,其数据输出速率也很低,而且显示屏的刷新频率也不一定能满足显示需求。矩形显示屏显示的信息量大,并且可以按需要扩展显示屏的高度,不存在频率上的限制,能够弥补长条显示屏显示信息时存在的不足。本设计使用双RAM技术来组织用于控制矩形显示屏的控制系统数据,提高了信息垂直循环显示时的存储器效率,大幅度降低了对数据存储器的占用率,并且对刷新频率的要求也不是很高。 1 显示数据组织 需要显示的区域小于或等于实际显示区域时,采用静态显示即可。但大多时候需
[工业控制]
双RAM技术的LED<font color='red'>显示屏</font>控制系统设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved