这是一段LCD12864液晶的其中一段C语言编程,我看不懂,其中的意思可以告诉我吗?哪怕一

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这是一段LCD12864液晶的其中一段C语言编程,我看不懂,其中的意思可以告诉我吗?哪怕一相关的知识,希望对你有一定的参考价值。

这是一段LCD12864液晶的其中一段C语言编程,我看不懂,有谁知道其中的意思可以告诉我吗?哪怕一小部分都可以的,谢谢。。

void zhiling(bit r,uchar m)//r=0 对液晶写命令;r=1时 对液晶写数据;

E=0;
RS=r;
P0=m;
E=1;
E=0;
P0=0xff;



void lcd_qing(uchar a,uchar b)//清屏函数

uchar p,q;
CS2=1;CS1=1; //左右屏都选中

for (p=a;p<=b;p++)

zhiling(0,0xb8+p);//0xb8是第一行的首地址 一共有8行
zhiling(0,0x40);//0x40是第一列的首地址 左右屏都有64列
for (q=0;q<64;q++)

zhiling(1,0x00);//对液晶写数据0





void lcd_show(uchar a,uchar b,uchar c)//a为第几行0为第一行 2为第二行 4为第三行 6为第四行
//b为列的位置 小于0x40为左半屏列的位置 大于0x40为右半屏列的位置
uchar p,q,n=0; //c为第几个字
if(b<0x40)CS1=1,CS2=0;
else b-=0x40,CS1=0,CS2=1;

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

zhiling(0,0xb8+a+p);
zhiling(0,0x40+b);
for (q=0;q<12;q++)

zhiling(1,chn[c][n]);
n++;



参考技术A 这个c文件头部肯定定义了一些宏定义,定义了一些管脚,zhiling程序就是对管脚的操作,液晶的操作分为指令和数据两个部分,比如,调用zhiling函数传第一个参数为0 的时候就是对液晶写命令,1就是对液晶写数据。下面的两个函数都是在这个函数的基础上操作的。你找到这个液晶的技术手册,仔细看一下手册里面对管脚的定义,自己再写个简单的程序,验证一下就OK了,不难的,把手册仔细耐心看一下,再多动动手~~~追问

#include头文字是这个

参考技术B 其实128*64很简单的,从你的程序上看使用并口,你先找个12864资料,里面有时序图和指令。一般都是先初始化->写地址->写数据->写地址->写数据,就完成了我们所看到的12864上面显示的内容。追问

它上面void lcd_qing(uchar a,uchar b)和void lcd_show(uchar a,uchar b, uchar c)这两段都是清屏函数吗?

追答

void lcd_qing(uchar a,uchar b)是清屏,void lcd_show(uchar a,uchar b, uchar c)是显示
你去参照时序图在写程序。复制的代码永远是别人的。

追问

好的,谢谢

本回答被提问者和网友采纳
参考技术C 这个得根据你的芯片来看,他都有自己的规格的追问

芯片好像是51R2C

雕爷学编程Arduino动手做(85)---LCD1602液晶屏模块

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验八十五:LCD1602液晶显示屏1602A模块 蓝屏黄绿屏灰屏5V 3.3V焊排针 IIC/I2C

1602液晶

也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。

LCD

是 Liquid Crystal Display 的简称,意为“液态晶体显示器”,也叫液晶显示器。LCD 的构造是在两片平行的玻璃基板当中放置液晶盒,下基板玻璃上设置TFT(薄膜晶体管),上基板玻璃上设置彩色滤光片,通过TFT上的信号与电压改变来控制液晶分子的转动方向,从而达到控制每个像素点偏振光出射与否而达到显示目的。现在LCD已经替代CRT成为主流,价格也已经下降了很多,并已充分普及。

液晶

某些物质在熔融状态或被溶剂溶解之后,尽管失去固态物质的刚性,却获得了液体的易流动性,并保留着部分晶态物质分子的各向异性有序排列,形成一种兼有晶体和液体的部分性质的中间态, 这种由固态向液态转化过程中存在的取向有序流体称为液晶。液晶是在自然界中出现的一种十分新奇的中间态,并由此引发了一个全新的研究领域。自然界是由各种各样不同的物质组成。以前,人们熟知的是物质存在有3态:固态、液态和气态。而固态又可以分为晶态和非晶态。在晶态固体中分子具有取向有序性和位置有序性,即所谓的长程有序。当然这些分子在平衡位置会发生少许振动,但平均说来,它们一直保持这种高度有序的排列状态。

当通电时导通,排列变得有秩序,使光线容易通过;不通电时排列混乱,阻止光线通过。让液晶如闸门般地阻隔或让光线穿透。从技术上简单地说,液晶面板包含了两片相当精致的无钠玻璃素材,称为Substrates,中间夹着一层液晶。当光束通过这层液晶时,液晶本身会排排站立或扭转呈不规则状,因而阻隔或使光束顺利通过。大多数液晶都属于有机复合物,由长棒状的分子构成。在自然状态下,这些棒状分子的长轴大致平行。将液晶倒入一个经精良加工的开槽平面,液晶分子会顺着槽排列,所以假如那些槽非常平行,则各分子也是完全平行的。液晶是一种介于晶体状态和液态状态之间的中间物质。它兼有液体和晶体的某些特点,表现出一些独特的性质。

液晶显示材料

具有明显的优点:驱动电压低、功耗微小、可靠性高、显示信息量大、彩色显示、无闪烁、对人体无危害、生产过程自动化、成本低廉、可以制成各种规格和类型的液晶显示器,便于携带等。由于这些优点。用液晶材料制成的计算机终端和电视可以大幅度减小体积等。液晶显示技术对显示显像产品结构产生了深刻影响,促进了微电子技术和光电信息技术的发展。液晶显示材料最常见的用途是电子表和计算器的显示板,为什么会显示数字呢?原来这种液态光电显示材料,利用液晶的电光效应把电信号转换成字符、图像等可见信号。液晶在正常情况下,其分子排列很有秩序,显得清澈透明,一旦加上直流电场后,分子的排列被打乱,一部分液晶会改变光的传播方向,液晶屏前后的偏光片会阻挡特定方向的光线,从而产生颜色深浅的差异,因而能显示数字和图象。

LCD 构成

1.背光源(或背光模组)——由于液晶分子自身是无法发光的,因此若想出现画面,液晶显示器需要专门的发光源来提供光线,然后经过液晶分子的偏转来产生不同的颜色。而背光源起到的就是提供光能的作用。之前液晶显示器采用的都是名叫CCFL的冷阴极射线管,其发光原理与日光灯几乎完全相同,而现在新品液晶显示器都采用了更加节能、长寿面的LED背光源。灯管(或LED)发光后藉由导光板将光线分布到各处,通过背面的反射板将所有的光线的方向集中朝向液晶分子。最后光线通过prism sheet以及扩散板将光线均匀的散发出去,避免出现中央亮度过高、四周亮度过低的情况。

2.上下层两个偏光片——偏光片的作用是让光线从单方向通过。

3.上层和下层两块玻璃基板——玻璃基板不仅仅是两块玻璃那么简单,其内侧具有沟槽结构,并附着配向膜,可以让液晶分子沿着沟槽整齐的排列。在上、下两层玻璃两侧会贴有TFT薄膜晶体管和彩色滤光片。

4.ITO透明导电层——其作用是提供导电通路,分为像素电极(P级)和公共电极(M级)。在下一页中我们为大家讲解液晶面板结构更多的内容。

5.薄膜晶体管(就是我们经常所说的TFT)——我们经常说TFT-LCD,其实际上指的就是这个薄膜晶体管,它的作用类似于开关,TFT能够控制IC控制电路上的信号电压,并将其输送到液晶分子中,决定液晶分子偏转的角度大小,因此其是非常重要的一个部件。

6.液晶分子层 ——液晶分子层是改变光线偏光状态最重要的元素,通过电力和弹性力共同决定其排列和偏光状态。

7.彩色滤光片——通过液晶分子偏转的光线只能显示不同的灰阶,但是不能提供红、绿、蓝(RGB)三原色,而彩色滤光片则由RGB三种过滤片组成,通过三者混和调节各个颜色与亮度。液晶面板中每一个像素由红、绿、蓝3个点构成,每种颜色的点各自拥有不同的灰阶变化。

LCD与OLED的不同点

虽然在一定环境下观看LCD显示屏会出现色彩失真的现象,但这并不代表LCD一点优点都没有,存在即合理,LCD也还是具有很多优点的。例如消费者最关心的功率消耗的问题,LCD的功率消耗量是比较小的,而且一般LCD显示屏都会采用数字式接口,用起来也是非常方便的。

OLED的工作原理是利用ITO玻璃透明电极和金属电极分别作为期间的阳极和也阴极,在一定电压驱动下,电子和空穴分别从阴极和阳极注入到电子传输层和空穴传输层,然后分别迁移到发光层激发后发出可见光。OLED的显示核心是自发光体,与LCD相比,虽然OLED的成本相对较高,但它快速响应时间可缩短为微妙级别,因为其不需要背光,所以具有宽视角的特性,上下左右的视角宽度可高达170度。此外,由于OLED理论上可以显示无穷种色彩,所以即便是显示黑色,也是可以达到全黑画面的,这在对比度上就拥有了很大的优势。OLED屏可以做到弯曲、折叠的状态,然而OLED最大的优势还不止对比度一点,OLED拥有超薄面板、重量轻的特点,值得一提的是,OLED屏可以做到弯曲、折叠,甚至可以像一张纸一样挂在墙上、放在口袋里、镶在衣服上。所以OLED更是受到大众的喜爱。总的来说,OLED在图像质量与超薄的特点方面略胜一筹,在未来显示行业中,OLED也将处于领先的趋势。不过目前OLED受限于生产成本,在突破大尺寸显示屏方面遭遇了瓶颈,在考虑成本方面,近些年OLED有望转战小屏市场,但无论如何,OLED仍将是未来几年显示行中的一匹黑马。

LCD1602液晶屏5V显示模块

1602字符型液晶也叫1602液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。字符型液晶,能够同时显示16x02即32个字符。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。

1602模块管脚功能
1602采用标准的16脚接口,其中:
第1引脚:GND为电源地
第2引脚:VCC接5V电源正极
第3引脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4引脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5引脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。
第6引脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。
第7~14引脚:D0~D7为8位双向数据端。第15~16脚:空脚或背灯电源。
第15引脚背光正极,
第16引脚背光负极。

1602模块电原理图

IIC/I2C接口LCD1602转接板
控制板IO口只有20个,加些传感器、SD卡啥的,继电器等模块多了,IO口就不够用了,原来的1602屏至少需要7个IO口才能驱动起来,这个模块可以帮你省5个IO口。

参数
1.供电电压:+5V
2.支持I2C协议
3.具有背光灯,和对比度调节电位器
4.4线输出更简单
5.设备地址:0x27

PCF8574
用于 I2C 总线的远程 8 位 I/O 扩展器,该8位输入/输出(I/O)扩展器用于双线双向总线(I2c),设计用于2.5-V至6-V VCC操作。PCF8574设备通过I2C接口[串行时钟(SCL)、串行数据(SDA)]为大多数微控制器系列提供通用远程I/O扩展。该设备具有一个8位准双向I/O端口(p0-p7),包括用于直接驱动LED的高电流驱动能力的锁存输出。每个准双向I/O可以用作输入或输出,而无需使用数据方向控制信号。通电时,I/O很高。在此模式下,只有VCC的电流源处于激活状态。

实验开源代码

/*

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

  实验八十五: LCD1602A液晶屏5V显示模块(IIC/I2C接口)

项目一:寻找查询设备IIC地址,在串口上即可看到1602的地址

这里查询结果是“0x27”(这个地址不对的话,实测无法烧录程序)

Arduino------LCD1602

5V-------------VCC

GND-----------GND

A4-----------SDA IIC 数据线

A5-----------SCL IIC 时钟线

*/



#include <Wire.h>

void setup(){

 Wire.begin();

 Serial.begin(9600);

 Serial.println("\\nI2C Scanner");

}



void loop(){

 byte error, address;

 int nDevices;

 Serial.println("Eagler8 Scanning...");

 nDevices = 0;

 for (address = 1; address < 127; address++ ){

   

  Wire.beginTransmission(address);

  error = Wire.endTransmission();

  if (error == 0){

   Serial.print("I2C device found at address 0x");

   if (address < 16)

    Serial.print("0");

   Serial.print(address, HEX);

   Serial.println(" !");

   nDevices++;

  }else if (error == 4){

   Serial.print("Unknow error at address 0x");

   if (address < 16)

    Serial.print("0");

   Serial.println(address, HEX);

  }

 }

 if (nDevices == 0)

  Serial.println("No I2C devices found\\n");

 else

  Serial.println("done\\n");

 delay(5000); 

}

实验串口返回情况

/*

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

  实验八十五: LCD1602A液晶屏5V显示模块(IIC/I2C接口)

项目二:显示字符“Welcome to Eagler8”

Arduino------LCD1602

5V-------------VCC

GND-----------GND

A4-----------SDA IIC 数据线

A5-----------SCL IIC 时钟线

*/

#include <Wire.h> 

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);  

void MyPrintLCD(String MyString){

 for (int i=0;i<MyString.length();i++)

 lcd.write(MyString.charAt(i));

  }

   

void setup(){

lcd.init(); 

lcd.backlight(); 

MyPrintLCD("Welcome to "); 

lcd.setCursor(0,1); 

MyPrintLCD("     Eagler8");

}



void loop(){

}

实验开源图形编程(Mixly、Mind+、编玩边学)

实验开源仿真编程(Linkboy V4.2)

以上是关于这是一段LCD12864液晶的其中一段C语言编程,我看不懂,其中的意思可以告诉我吗?哪怕一的主要内容,如果未能解决你的问题,请参考以下文章

12864点阵液晶显示

基于8086和LCD12864液晶显示仿真设计-设计资料

FPGA nios软核编写液晶屏LCD12864驱动程序源码以及注意事项,本人亲自踩坑,重要!!!

基于8086和LCD12864液晶显示仿真设计-设计全套资料

资料转发分享基于8086和LCD12864液晶显示仿真设计基于8086计算器系统仿真设计基于8086家具房间灯光控制设计-设计资料

STC8A8K64S4A12通过SPI接口操作基于ST7920的LCD12864液晶模块