TA的每日心情 | 无聊 2016-12-20 15:08 |
---|
签到天数: 510 天 连续签到: 1 天 [LV.9]以坛为家II
|
什么也不说,先上图了。
在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工程
LCD1602.zip
(1.48 MB, 下载次数: 77)
|
|