这是一段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++;
#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语言编程,我看不懂,其中的意思可以告诉我吗?哪怕一的主要内容,如果未能解决你的问题,请参考以下文章
FPGA nios软核编写液晶屏LCD12864驱动程序源码以及注意事项,本人亲自踩坑,重要!!!
基于8086和LCD12864液晶显示仿真设计-设计全套资料
资料转发分享基于8086和LCD12864液晶显示仿真设计基于8086计算器系统仿真设计基于8086家具房间灯光控制设计-设计资料