单片机控制12864液晶显示屏静态显示

发布者:dong125612最新更新时间:2020-05-06 来源: eefocus关键字:单片机控制  12864液晶显示屏  静态显示 手机看文章 扫描二维码
随时随地手机看文章

显示屏幕说明图:

在这里插入图片描述

仿真电路图

在这里插入图片描述

仿真结果展示:

在这里插入图片描述

汉字取模软件设置:

(取模软件下载链接在文章结尾)

在这里插入图片描述

C语言程序代码:

#include


#define LCDLCDDisp_Off   0x3e//   程序中 的 LCD_OFF (LCD 断开/不亮) 的值 是 16进制 0x3E

#define LCDLCDDisp_On    0x3f//   程序中 的 LCD_ON (LCD 合上/亮) 的值 是 16进制 0x3F

#define Page_Add         0xb8//   页地址

#define LCDCol_Add       0x40//   列地址

#define Start_Line       0xC0//   行地址

/*****液晶显示器的端口定义*****/

#define data_ora P0 /*液晶数据总线*/

sbit LCD_CS1=P2^4 ;    /*CS1为1时选择右半屏*/

sbit LCD_CS2=P2^3 ;    /*CS2为1时选择左半屏*/

sbit RESET=P2^3 ;  /*复位信号*/

sbit LCDDi=P2^2 ;     /*数据/指令 选择*/

sbit LCDRW=P2^1 ;     /*读/写 选择*/

sbit LCDEnable=P2^0 ;     /*读/写 使能*/




char code Hz_yang[]= 

{

0x00,0xFE,0x02,0x22,0xDA,0x06,0x00,0xFE,0x82,0x82,0x82,0x82,0x82,0xFE,0x00,0x00,

0x00,0xFF,0x08,0x10,0x08,0x07,0x00,0xFF,0x40,0x40,0x40,0x40,0x40,0xFF,0x00,0x00


};


char code Hz_guang[]= 

{

0x40,0x40,0x42,0x44,0x58,0xC0,0x40,0x7F,0x40,0xC0,0x50,0x48,0x46,0x64,0x40,0x00,

0x00,0x80,0x40,0x20,0x18,0x07,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x70,0x00

};



char code Hz_zheng[]= 

{

0x00,0x02,0x02,0xC2,0x02,0x02,0x02,0xFE,0x82,0x82,0x82,0xC2,0x83,0x02,0x00,0x00,

0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x60,0x40,0x00

};


char code Hz_hao[]= 

{

0x10,0x10,0xF0,0x1F,0x10,0xF0,0x80,0x82,0x82,0x82,0xE2,0x92,0x8A,0xC6,0x80,0x00,

0x40,0x22,0x15,0x08,0x14,0x63,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00

};


char code Hz_wei[]= 

{

0x10,0x88,0xC4,0xA3,0xBC,0xA0,0xBF,0xA0,0xBC,0x20,0xD8,0x17,0x90,0x78,0x10,0x00,

0x01,0x00,0xFF,0x40,0x3E,0x02,0x02,0x3E,0x90,0x48,0x33,0x0C,0x33,0xC0,0x40,0x00

};



char code Hz_feng[]= 

{

0x00,0x00,0xFE,0x02,0x0A,0x12,0x62,0x82,0x62,0x1A,0x02,0xFF,0x02,0x00,0x00,0x00,

0x80,0x40,0x3F,0x20,0x10,0x08,0x06,0x01,0x06,0x18,0x00,0x3F,0x40,0x80,0xE0,0x00

};




char code Hz_bu[]= 

{

0x02,0x02,0x02,0x02,0x02,0x82,0x42,0xF2,0x0E,0x42,0x82,0x02,0x02,0x03,0x02,0x00,

0x00,0x08,0x04,0x02,0x01,0x00,0x00,0xFF,0x00,0x00,0x00,0x01,0x03,0x06,0x00,0x00

};


char code Hz_zao[]= 

{

0x80,0x70,0x00,0xFF,0x20,0x10,0x08,0xE0,0x2F,0xE9,0x09,0xE9,0x2F,0xE0,0x00,0x00,

0x40,0x20,0x18,0x07,0x08,0x30,0x44,0x25,0x15,0x0D,0xFE,0x0D,0x35,0x65,0x24,0x00

};

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

函数功能:LCD延时程序

入口参数:t

出口参数:

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

void LCDdelay(unsigned int t)

{

unsigned int i,j;

for(i=0;i for(j=0;j<10;j++);

}

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

状态检查,LCD是否忙



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

void CheckState()

{

   unsigned char dat,DATA;//状态信息(判断是否忙)

   LCDDi=0; // 数据指令选择,D/I(RS)="L" ,表示 DB7∽DB0 为显示指令数据 

   LCDRW=1; //R/W="H" ,E="H"数据被读到DB7∽DB0 

   do

   {

      DATA=0x00;

      LCDEnable=1; //EN下降源

  LCDdelay(2);//延时

  dat=DATA;

      LCDEnable=0;

      dat=0x80 & dat; //仅当第7位为0时才可操作(判别busy信号)

    }

    while(dat!=0x00);

}

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

函数功能:写命令到LCD程序,RS(DI)=L,RW=L,EN=H,即来一个脉冲写一次

入口参数:cmdcode

出口参数:

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

void write_com(unsigned char cmdcode)

{

    CheckState();//检测LCD是否忙

LCDDi=0;

LCDRW=0;

P1=cmdcode;

LCDdelay(2);

LCDEnable=1;

LCDdelay(2);

LCDEnable=0;//E下降沿将命令锁存到DB0-DB7

}


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

函数功能:写数据到LCD程序,RS(DI)=H,RW=L,EN=H,即来一个脉冲写一次

入口参数:LCDDispdata

出口参数:

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

void write_data(unsigned char LCDDispdata)

{

    CheckState();//检测LCD是否忙

LCDDi=1;

LCDRW=0;

P1=LCDDispdata;

LCDdelay(2);

LCDEnable=1;

LCDdelay(2);

LCDEnable=0;

}

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

函数功能:清除LCD内存程序

入口参数:pag,col,hzk

出口参数:

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

void Clr_Scr()

{

unsigned char j,k;

LCD_CS1=0; //左、右屏均开显示

LCD_CS2=0;

  write_com(Page_Add+0);

  write_com(LCDCol_Add+0);

  for(k=0;k<8;k++)//控制页数0-7,共8页

  {

write_com(Page_Add+k); //每页每页进行写

  for(j=0;j<64;j++)  //每页最多可写32个中文文字或64个ASCII字符

{

      write_com(LCDCol_Add+j);

write_data(0x00);//控制列数0-63,共64列,写点内容,列地址自动加1

}

}

}

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

函数功能:指定位置显示汉字16*16程序

入口参数:page,column,hzk

出口参数:

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

void hz_LCDDisp16(unsigned char page,unsigned char column, unsigned char code *hzk)

{

unsigned char j=0,i=0;

for(j=0;j<2;j++)

{

write_com(Page_Add+page+j);

write_com(LCDCol_Add+column);

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

write_data(hzk[16*j+i]);

}

}


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

函数功能:LCD初始化程序

入口参数:

出口参数:

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

void init_lcd()

{

LCDdelay(100);

LCD_CS1=1;//刚开始关闭两屏

LCD_CS2=1;

LCDdelay(100);

write_com(LCDLCDDisp_Off); //写初始化命令

write_com(Page_Add+0);

write_com(Start_Line+0);

write_com(LCDCol_Add+0);

write_com(LCDLCDDisp_On);

}

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


void main()

init_lcd();

Clr_Scr();

LCD_CS1=0; //左屏开显示

LCD_CS2=1;

hz_LCDDisp16(0,0,Hz_yang);

    hz_LCDDisp16(0,16,Hz_guang);

hz_LCDDisp16(0,32,Hz_zheng);

hz_LCDDisp16(0,48,Hz_hao);

LCD_CS1=1; //右屏开显示

LCD_CS2=0;

hz_LCDDisp16(0,0,Hz_wei);

    hz_LCDDisp16(0,16,Hz_feng);

hz_LCDDisp16(0,32,Hz_bu);

hz_LCDDisp16(0,48,Hz_zao);

while(1)

    {

  

}

}

关键字:单片机控制  12864液晶显示屏  静态显示 引用地址:单片机控制12864液晶显示屏静态显示

上一篇:单片机控制12864显示多行汉字
下一篇:单片机控制LCD1602显示屏动态显示字符串

推荐阅读最新更新时间:2024-11-17 16:52

51单片机控制TC35 之发送AT连机命令
一开始犯了2个错误; 1:发送联机指令AT的时候,中断接受函数,RsBuf =SBUF; 中的RsPoint应该置零。 2:串口中断函数中 if((RsPoint RsBuf_N)&&RI) //必须判断RI是否为1。 否则接受到一些别的数据。 且在中断中RI必须清零 只发3个关键的函数 /***********************发送联机指令****************************** *功 能: 串口发送数组命令到TC35, AT , *形 参: *返 回 值: *备 注: 测试GSM模块是否连接正确 *****************************************
[单片机]
51单片机数码管的静态与动态显示
操作数码管的显示其实与操作led灯的操作本质上差不多,可以把一个数码管当做操作8段led灯来让它显示我们所预想的效果,如下图所示。 假如我想让一个数码管显示1,把我只需把B、C两个LED灯点亮就可以了,数码管的a~dp(数码管的点)对应字节的1~8位,假设为共阳极接法,即为1111 1001对应十六进制的F9 数码管的显示分为静态显示和动态显示 数码管的静态显示其实就是一直给数码管的特定位一直发送一样的数据就可以了, 动态显示的原理其实是一位一位的操作操作每个数码管,因为对每一位的操作特别快,并且在一直轮流给数,原理其实就是利用了人眼的视觉暂留效果和发光管的余晖作用来达到效果,只是操作的比较快,我们人眼视觉分辨不
[单片机]
51单片机数码管的<font color='red'>静态</font>与动态<font color='red'>显示</font>
单片机控制GSM手机的技术及应用
随着科技的飞速发展和人民生活水平的不断提高,手机的普及率越来越高,更新也越来越快,价格也越来越便宜。因为手机工作的无线网络覆盖范围广,在信息传递方面性能稳定、可靠,所以把手机作为信息传递的载体,与单片机结合起来构成应用系统有着强大的生命力和广阔的应用空间,特别是在远程数据传输、远程监控等领域更是受到电子设计应用工程师的关注。一些专业刊物也介绍了一些有关这方面的文章,然而由于手机的控制指令复杂,数据格式繁琐,工程技术人员在进行单片机与手机的硬软件接口设计时经常会遇到很多困难,有时还无资料可查。笔者在完成一个项目的开发过程中,针对几种手机进行了大量的测试和实验,在此基础上归纳出一些带规律性的结论,对此结论,工程设计人员可拿来即用,大大
[单片机]
静态LED显示屏和扫描LED显示屏的区别
当lED显示屏显示文字、图像和视频时,如果LED显示屏上的灯是在同时点亮时发光的,则说明该显示屏是静态屏;如果LED显示屏上面的灯像扫描一样,是利用人的视觉暂留的特点,在短时间周期内将LED显示屏的各行分别点亮,则说明该屏是扫描屏。 由于LED显示屏是利用占空比来驱动的,这就使得LED显示的亮度与点亮的时间周期有很大的关系。如果发光管亮度相同,静态屏比扫描屏要这。因此,户外显示屏一般都是静态屏,室内显示屏是扫描屏居多。 然而,现在的好多户外led显示屏也有扫描屏,这是因为LED材料技术成熟后,LED发光管的亮度已经足够亮,人们为了节省成本就采用室外扫描屏。不过,室外扫描屏对控制与驱动部分要求很高,对驱动芯片也有一定
[电源管理]
单片机控制数码管显示
利用单片机控制6个共阴极8段数码管显示,可以通过两个锁存器分别进行位选(位置即哪个数码管)和段选(数码管的哪一段即显示什么数)。74HC573锁存器使能端为低电平有效,当LE为高电平时,输出端(output)跟随输入端(D)变化;当LE为低电平时,输出端保持LE为高电平时的值。单片机通过锁存器控制数码管的电路图如图1所示: 说明: 1)、数码管为共阴极的,当位选Q0~Q5,响应位为0时为选中,为1为不选。如选择第一个数码管P0=0xfe; 2)、共阴极数码管表(段选表) 0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d , 0 1 2 3 4 5
[单片机]
<font color='red'>单片机控制</font>数码管<font color='red'>显示</font>
单片机控制GSM模块实现短信收发的软件设计
摘要:借助系统模型,阐明GSM模块收发短信的基本概念以及串口控制SMS的基本原理。详细介绍单片机控制GSM模块工作的软件实现过程,对怎样用单片机控制GSM模块收发短信进行探讨,也对程序设计的主体思想作了较为细致的分析。 关键词:单片机 短信收发 软件设计 GSM(Global System for Mobile communication)系统是目前基于时分多址技术的移动通信体制中,比较成熟完善,且应用最广泛的一种系统。目前已建成的覆盖全国的GSM数字蜂窝移动通信网,是我国公众移动通信网的主要方式。基于GSM的短信信息服务,是一种在移动网络上传送简短信息的无线应用,是一种信息在移动网络上存储和转寄的过程。由于公众GSM网络在全
[应用]
一种用单片机控制的光谱数据采集系统的设计
   概述   在光谱测量中,常用光电倍增管(PMT)和电荷耦合器件(CCD)作为光电转换器。在慢变化、高精度光谱测量中使用PMT;对于闪光灯、荧光和磷光等强度随时间变化时的光谱信号则采用CCD。PMT和CCD输出的信号形式是不同的:光电倍增管输出的是连续的模拟信号;CCD输出的是视频脉冲信号。由于输出信号的不同,相应的信号采集电路也不尽相同。本文所述的系统通过设定控制开关的不同状态,由单片机检测、判断和执行相应的操作,完成对不同形式输入信号的采集。采集到的光谱强度通过并口送入计算机进行处理、计算,并显示和打印出光谱曲线。 由于CCD像元几何尺寸小、精度高,有光积分时间和信号存储功能,因此,可以用来进行光谱测量。被测光源发
[单片机]
一种用<font color='red'>单片机控制</font>的光谱数据采集系统的设计
单片机控制的静电除尘电源调压系统
       1. 引言   静电除尘器有除尘效率高、运行和维修费用相对低廉等特点,在减少排放到大气中有害粉尘方面起着十分重要的作用,是当前使用较为广泛的一种环保设备。静电除尘器是利用高压静电吸附带电离子的原理进行除尘。一般来说,静电极板电压越高,对带电离子的吸附能力就越强,除尘效率越高。但电压越高,电场内会出现频繁的火花闪烁,甚至产生电弧,放电过程难以控制,除尘效率明显降低,这种情况应该避免。如果能够控制极板电压长时间维持在临界放电状态,就可以获得最佳的除尘效果并有效节约电力资源。实验证明,基于单片机 80C196KC的静电除尘电源三相交流调压控制系统能够很好实现这一功能。    2. 静电除尘电源主电路及交流调压结
[电源管理]
<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