液晶显示器(LCD)被用于各种设备,从计算器的小屏幕到电视的大屏幕。在基于单片机的系统中,LCD是最有效的输出设备。在微控制器系统中,特殊类型的液晶驱动器与常见的液晶模块一起使用。
可以使用自定义字符在液晶显示器上显示各种笑脸。smiley现在非常流行,特别是在手机短信、在线聊天应用等方面。这个特殊的项目演示了如何创建一个笑脸,并显示在16x2 LCD.这个项目是在Arduino简易原型平台的帮助下完成的。
Arduino是一个简单的原型平台,硬件非常简单,编码和IDE非常很容易开始.由于基本Arduino板不具有内置-in LCD模块的显示数据应该从外部将其连接到像字符串的显示数据,传感器值等在很容易访问的LCD模块阿尔杜伊诺IDE帮助的库。
图2:典型Arduino Pro-Mini板
图3:Arduino IDE软件窗口
这可以执行USB到TTL转换的另一硬件被用于将程序上载到Arduino板。
图4:外部USB到TTL转换电路板,用于编程的Arduino和串行通信
假定读者已经通过了项目如何开始arduino完成了书中所讨论的一切。
这个项目使用了自定义字符,可以在LCD模块中生成。液晶显示模块有两个或多个控制器,帮助显示与单片机发送的ASCII值对应的字符。ASCII字符模式存储在液晶显示器控制器的内部CGROM中。LCD模块还提供了一个CGRAM,用户可以在其中存储和显示自定义字符。生成自定义字符的方法在上一个项目中有很好的解释如何在LCD中创建自定义字符.
一个人必须找出自定义字符的字符,需要显示在LCD屏幕上的项目上解释如何在LCD中创建自定义字符.该项目中显示的自定义字符如下图所示。
图5:使用电路板上的Arduino电路在LCD上自定义字符
在这个项目中有两个基本的符号,一个是微笑符号,另一个是心形符号。采用绘制像素数组的方法,将ON像素的位值设为1,off像素的位值设为0,找出显示这些字符所需存储在LCD中的位模式。
8 * 5像素阵列和用于微笑符号相应的二进制阵列显示在示于下的图像中的项目;
图6:笑脸正半周期的8*5像素和二进制数组
上面显示的自定义字符的8字节长的字符数组可以在下面的代码中定义;
{
0b00000,
0b00000,
0 b01010,
0b00000,
0 b10001,
0 b01110,
0b00000,
0b00000
};
8 * 5像素阵列和用于心脏符号相应的二进制阵列显示在示于下的图像中的项目;
图7:8 * 5像素与二进制阵列对于负半周期的笑脸
上面显示的自定义字符的8字节长的字符数组可以在下面的代码中定义;
{
0b00000,
0 b01010,
0 b11111,
0 b11111,
0 b11111,
0 b01110,
0 b00100,
0b00000
};
Arduino IDE有一个名为
为这个项目编写的代码有一个函数LCD . createchar(),它帮助在LCD屏幕中创建自定义字符。下一节将讨论lcd.createChar()函数的细节。
lcd.createChar()
功能lcd.createChar()可以被用来编写自定义字符在CGRAM所需的位置。该函数有两个参数,其中第一个参数是在其中对应于自定义字符需要的字符数组被存储和第二个参数是字符数组本身CGRAM存储器中的位置。例如,如果有一个名为“抄送”自定义字符阵列,它需要被存储在5TH.CGRAM一个的位置可以用下面的语句;
lcd.createChar(5,CC);
上面的语句的字符数组写入到5TH.通过调用项目中讨论的LCD .write()函数,可以显示LCD控制器的CGRAM的位置如何连接LCD与PC和如何使LCD显示屏滚动.
lcd.write (5);
为本项目编写的代码可以将笑脸存储在LCD模块的CGRAM中,并在LCD模块的第二行中显示,整个第二行都是这两个笑脸。
一旦与编码一个可以验证和代码上传到Arduino板作为项目做解释如何开始Arduino并且可以找到LCD模块中的笑脸,也闪烁的LED。
项目源代码
###/*================================= 如实验室 =======================================在16*2 LCD上显示笑脸,LED闪烁电路:* LED从销5通过一个1K的电阻连接到地LCD:* LCD RS引脚到数字引脚12* LCD使能引脚到数字销11*液晶D4销到数字销5*液晶D5销到数字销4* LCD D6引脚到数字引脚3*液晶D7销到数字引脚2* LCD R/W引脚接地* 10 k电阻:*结束到+ 5V和地面*刮水器到LCD销3* LED阳极连接到数字输出端6* LED阴极通过1K电阻连接到地面// ================================= EG LABS ================== * ///包括库代码:# include < LiquidCrystal.h >//用接口引脚的数字初始化库LiquidCrystal LCD(12,11,5,4,3,2);// -----------------存储自定义字符阵列--------------------- //字节的心[8]={0b00000,0 b01010,0 b11111,0 b11111,0 b11111,0 b01110,0 b00100,0b00000};字节微笑[8] ={0b00000,0b00000,0 b01010,0b00000,0 b10001,0 b01110,0b00000,0b00000};// -----------------存储自定义字符阵列--------------------- ////给LED引脚一个名字:Int led = 6;无效的设置(){//----创建自定义字符----//液晶显示器。createChar(心);lcd.createChar(2,微笑);//----创建自定义字符----////初始化导致销作为输出。pinMode(LED,OUTPUT);//设置lcd的列数和行数:液晶显示器。开始(16日2);lcd.print( “ENGINEERS车库”);液晶显示器。setCursor (0,1);lcd.write (1); lcd.write (2); lcd.write (1); lcd.write (2);lcd.write (1); lcd.write (2); lcd.write (1); lcd.write (2);lcd.write (1); lcd.write (2); lcd.write (1); lcd.write (2);lcd.write (1); lcd.write (2); lcd.write (1); lcd.write (2);}空隙环(){// ----眨眼LED ----- //digitalWrite(领导、高);延迟(1000);digitalWrite(领导、低);延迟(1000);// ----眨眼LED ----- //}###