c语言定义未知长度字符串 定义一个5X10的二维字符数组,输入任意5个字符串, 输出其中最短的字符串?


        1602液晶也叫1602字符型液晶,它能显示2行字符信息,每行又能显示16个字符。它是一种专门用来显示字母、数字、符号的点阵型液晶模块。它是由若 干个5x7的点阵字符位组成,每个点阵字符位都可以用显示一个字符, 每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此,所以它不能很好的显示图片。

0X38 //八位数据接口,两行显示,5*7点阵 0X0C //显示开,光标关,闪烁关 0X06 //数据读、写操作后,AC自动加一,画面不动

        不是所有的地址都可以直接用来显示字符数据,只有第一行中的00-0F,第二行中的40-4F才能显示,其他地址只能用于存储。要使用LCD1602,首先需要对其初始化,即通过写入一些特定的指令实现。 然后选择要在LCD1602的哪个位置显示并将所要显示的数据发送到LCD的DDRAM。

        ②当要写入数据字,在1602上实现显示时:需要把RS置为电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入(下降沿即可)。 写指令和写数据,差别仅仅在于RS的电平不一样而已。

        当要写命令字节的时候,时间由左往右,RS变为低电平,R/W变为低电平, 注意看是RS的状态先变化完成。然后这时,DB0~DB7上数据进入有效阶段,接着E引脚有一个整脉冲的跳变,接着要维持时间最小值为tpw=400ns的E脉冲宽 度。然后E引脚负跳变,RS电平变化,R/W电平变化。这样便是一个完整的LCD1602写命令的时序。

字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,定义如下表所示:

HD44780内置了DDRAM、CGROM和CGRAM。DDRAM就是显示数据RAM,用来寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下表:

DDRAM地址与显示位置的对应关系

文本文件中每一个字符都是用一个字节的代码记录的。一个汉字是用两个字节的代码记录。在PC上我们只要打开文本文件就能在屏幕上看到对应的字符是因为在操作系统里和BIOS里都固化有字符字模。什么是字模?就代表了是在点阵屏幕上点亮和熄灭的信息数据。

   刚才说了想要在LCD1602屏幕的第一行第一列显示一个"A"字,就要向DDRAM的00H地址写入“A”字的代码41H就行了,可41H这一个字节的代码如何才能让LCD模块在屏幕的阵点上显示“A”字呢?同样,在LCD模块上也固化了字模存储器,这就是CGROM和CGRAM。HD44780内置了192个常用字符的字模,存于字符产生器CGROM(Character

从上图可以看出,“A”字的对应上面高位代码为0100,对应左边低位代码为0001,合起来就是,也就是41H。可见它的代码与我们PC中的字符代码是基本一致的。因此我们在向DDRAM写C51字符代码程序时甚至可以直接用P1='A'这样的方法。PC在编译时就把“A”先转为41H代码了。
    字符代码0x00~0x0F为用户自定义的字符图形RAM(对于5X8点阵的字符,可以存放8组,5X10点阵的字符,存放4组),就是CGRAM了。后面我会详细说的。

那么如何对DDRAM的内容和地址进行具体操作呢,下面先说说HD44780的指令集及其设置说明,请浏览该指令集,并找出对DDRAM的内容和地址进行操作的指令。共11条指令:

5.设定显示屏或光标移动方向指令

功能:设定下一个要存入数据的CGRAM的地址。

功能:设定下一个要存入数据的CGRAM的地址。

9.读取忙信号或AC地址指令

功能: 读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令;当BF=0时,液晶显示器可以接收单片机送来的数据或指令;

功能:读取DDRAM或CGRAM中的内容。

显示操作的过程:首先确认显示的位置,即在第几行,第几个字符开始显示。也就是要显示的地址,如下表所示的显示地址。

//功能:在第1行 第1个字符 显示一个大写字母A
在C语言操作时,还可以显示整个字符串。定义一个字符串显示函数,可

举个实例,就在LCD1602屏幕上第一行第一列显示个“A”字。

// *是取值运算符和声明指针类型 //C语言多维数组与数组指针 //三维数组:={{{}},{{}}};

我要回帖

更多关于 c语言定义未知长度字符串 的文章

 

随机推荐