【PSoC3心得】1602液晶屏显示
什么也不说,先上图了。在PSoC上驱动1602是一件很简单的事情,因为PSoC自带多种液晶显示IP核。在PSoC Creator的器件库栏里可以看到自带的IP核如下:
器件库中的character LCD就是用来驱动1602的,点击右下角的datasheet可以看到关于这个IP核的详细介绍。这个IP核适用于所有采用HD44780做控制芯片的LCD,包括常见的1602。
拖动character LCD到原理图后双击器件可进行配置。配置界面如下:
LCD Custom Character Set可以进行用户自定义配置,选择None表示无用户自定义配置;选择Vertical Bargraph或Horizon Bargraph,系统或自动帮你生成纵向或横向线条(宽度不一的8种),这些线条可以用来在1602上显示;选择User Defined你可以通过右边的编辑框来编辑自己想要添加到1602的自定义字符。1602支持8个自定义字符,点击右边8个小编辑表后,你可以用鼠标编辑左边的放大图输入自己的字符。(你还可以通过自动生成的API函数来建立这些自定义字符,具体可以看datasheet)。
配置好之后,通过看datasheet你可以知道引脚的映射关系。Character LCD只需要7个引脚就可以驱动1602,包括E,RS,R/W,DB4-DB7(即四线制驱动),此外要注意Character LCD的引脚不能跨端口,即7个引脚必须在同一个端口上。
相应的引脚连接如图:
这是我的引脚配置:
编译之后,系统会自动生成API函数和字库。为了使用之前自定义的字符必须在main.c里添加extern uint8 const CYCODE LCD_Char_1_customFonts[],这是保存自定义字符点阵信息的数组,在LCD_Char_1_CustChars.c里可以看到这个数组的定义。其他具体的使用方法可见我主函数的注释,datasheet也讲得很详细。
下面是我的主函数:#include <device.h>
extern uint8 const CYCODE LCD_Char_1_customFonts[]; //自定义字符点阵数组
void main()
{
LCD_Char_1_Start(); //初始化1602
LCD_Char_1_LoadCustomFonts(LCD_Char_1_customFonts) ; //加载自定义字符(没自定义字符时可不加这句)
LCD_Char_1_Position(0,6) ; //Row = 0,Col = 6
LCD_Char_1_PutChar(LCD_Char_1_CUSTOM_0) ; //写第一个自定义字符,LCD_Char_1_CUSTOM_0为第一个自定义字符指针,见头文件LCD_Char_1.h
LCD_Char_1_Position(0,7) ;
LCD_Char_1_PutChar(LCD_Char_1_CUSTOM_1) ;
LCD_Char_1_Position(0,8) ;
LCD_Char_1_PutChar(LCD_Char_1_CUSTOM_2) ;
LCD_Char_1_Position(0,9) ;
LCD_Char_1_PutChar(LCD_Char_1_CUSTOM_3) ;
LCD_Char_1_Position(1,6) ;
LCD_Char_1_PutChar(LCD_Char_1_CUSTOM_4) ;
LCD_Char_1_Position(1,7) ;
LCD_Char_1_PutChar(LCD_Char_1_CUSTOM_5) ;
LCD_Char_1_Position(1,8) ;
LCD_Char_1_PutChar(LCD_Char_1_CUSTOM_6) ;
LCD_Char_1_Position(1,9) ;
LCD_Char_1_PutChar(LCD_Char_1_CUSTOM_7) ;
LCD_Char_1_Position(1,1) ;
LCD_Char_1_PrintString("ming");
LCD_Char_1_Position(1,11) ;
LCD_Char_1_PrintString("1006");
while(1);
}
下面是整个PSoC工程
还有我用IO口模拟的PSoC工程
附带Character LCD datasheet,大家可以先了解下这个IP核
PS:这个实验做了好几天一直出问题,本来以为是电平问题,后来先用模拟的方法发现3.3V也可以驱动1602(尽管VCC电压是5V),才确定电平和硬件都没问题。今天终于发现问题所在,是自动生成的API函数的读忙函数有问题,我修改了读忙的API函数,用延时函数代替后就可以正常驱动1602了。至于为什么会有问题,目前还不知道,希望知道的人指点一下
ht868788 发表于 2012-11-16 10:35 static/image/common/back.gif
何宾老师的,恩,这个我也有,现在感觉需要例程来做实验去熟悉每个模块,要不纯粹看书的话理解不够,我感 ...
是啊,不过e文的datasheet看起来还是有点压力,看着好慢 PSoC版块这几天好冷清啊,怎么就觉得剩我一人了 ht868788 发表于 2012-11-16 10:23 static/image/common/back.gif
楼主的自定义字符没试过,可以参考下---不知道楼主现在用的是什么实验教程,我知道的有月之骑士的《分享pso ...
呵呵,谢谢你的资料啊,这个还没有,我手上有一本8051片上可编程系统,自定义字符可以参照character LCD IP核的datasheet ming1006 发表于 2012-11-16 10:38 static/image/common/back.gif
是啊,不过e文的datasheet看起来还是有点压力,看着好慢
e文有什么难得 goodmike 发表于 2012-11-16 10:51 static/image/common/back.gif
e文有什么难得
{:3_42:} ht868788 发表于 2012-11-16 10:58 static/image/common/back.gif
确实啊,不过已经有中文版的creator组件datasheet出来了,官网上有的,现在就是差一些中文应用笔记 ...
呵呵,有空去官网看看,很少去过 ming1006 发表于 2012-11-5 22:26 static/image/common/back.gif
PSoC版块这几天好冷清啊,怎么就觉得剩我一人了
是哦……你现在貌似是这个板块最活跃的人喽…… kk5290122 发表于 2012-11-19 17:28 static/image/common/back.gif
是哦……你现在貌似是这个板块最活跃的人喽……
要更多人活跃,论坛才会真的活跃起来 你的3管脚 大概多少伏啊?我的对比度很低啊,从零调到5V都不是很清楚
页:
[1]
2