ARM微控制器LPC210X的LCD接口技术
dcharnumber){//形参分别为页、列、汉字序号
unsignedchari,j;
wcode1(0xc0);//设置12864从第1行显示
wcode1(0x3f);//开显示器
for(j=page;j<page+2;j++){
wcode1(row);//设置显示列
wcode1(0xb8+j);//设置显示页
for(i=16*(j-page);i<16*(j+1-page);i++)//依次取字模传输
wdata1(hangzi[32*a+i]);
}
}
每个汉字字模由32个字节组成,前16个字节显示汉字上半部分,后16个字节显示汉字下半部分,构成完整的16×16点阵。其中number代表存在Flash中的汉字排名序列号,只要把页、列、汉字序号实参值传到汉字显示子程序中进行调用即可显示汉字了。参考上面程序便能很方便地写出字母、数字的显示子程序。
程序中使用寄存器名称时要先在头文件中将其映射到对应地址,如对IOSET做如下定义:
#defineIOSET(*((volatileunsignedlong*)0xE0028004))
其它类似。
另外,要定义设置引脚连接GPIO,以及GPIO方向设置。
PINSEL0=0xX0000000;//设置用到的13个引脚连接到GPIO,为X的根据应用系统配置
PINSEL1=0xXXXXXXXX;
IODIR=IO_USE;//设置用到的13线方向为输出
当然,完整的应用还必须包括ARM时钟代码、启动代码等。
2.2串行转换法
从上面可以看出,尽管用8个GPIO口模块总线非常容易与液晶显示器建立连接,但是占用口线太多。为节省口线,可以考虑加入串入并出的移位寄存器74HC595,用LPC210X的GPIO口复用SPI功能或直接用GPIO口模拟SPI功能进行驱动,后者更加方便。下面用这种方式进行说明,同样为方便,选用了连续的GPIO口P0.0~P0.7,具体设计系统要按实现情况进行配置,框图如图2所示。
该种方法通过3个GPIO口模拟SPI对74HC595进行控制,驱动液晶数据显示。
模拟SPI的GPIO口配置如下:
#defineSPI_CLK0x00000001//时钟线为P0.0
#defineSPI_DATA0x00000002//传输数据线为P0.1
#defineSPI_CS0x00000004//74HC595选通线为P0.2
传输字模数值到数据线上的子程序:
voidSendData(unsignedchardate){
unsignedchari;
IOCLR=SPI_CS;//SPI_CS=0
for(i=0;i<8;i++){//依次发送8位数据
IOCLR=SP 《ARM微控制器LPC210X的LCD接口技术(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/140344.html
unsignedchari,j;
wcode1(0xc0);//设置12864从第1行显示
wcode1(0x3f);//开显示器
for(j=page;j<page+2;j++){
wcode1(row);//设置显示列
wcode1(0xb8+j);//设置显示页
for(i=16*(j-page);i<16*(j+1-page);i++)//依次取字模传输
wdata1(hangzi[32*a+i]);
}
}
每个汉字字模由32个字节组成,前16个字节显示汉字上半部分,后16个字节显示汉字下半部分,构成完整的16×16点阵。其中number代表存在Flash中的汉字排名序列号,只要把页、列、汉字序号实参值传到汉字显示子程序中进行调用即可显示汉字了。参考上面程序便能很方便地写出字母、数字的显示子程序。
程序中使用寄存器名称时要先在头文件中将其映射到对应地址,如对IOSET做如下定义:
#defineIOSET(*((volatileunsignedlong*)0xE0028004))
其它类似。
另外,要定义设置引脚连接GPIO,以及GPIO方向设置。
PINSEL0=0xX0000000;//设置用到的13个引脚连接到GPIO,为X的根据应用系统配置
PINSEL1=0xXXXXXXXX;
IODIR=IO_USE;//设置用到的13线方向为输出
当然,完整的应用还必须包括ARM时钟代码、启动代码等。
2.2串行转换法
从上面可以看出,尽管用8个GPIO口模块总线非常容易与液晶显示器建立连接,但是占用口线太多。为节省口线,可以考虑加入串入并出的移位寄存器74HC595,用LPC210X的GPIO口复用SPI功能或直接用GPIO口模拟SPI功能进行驱动,后者更加方便。下面用这种方式进行说明,同样为方便,选用了连续的GPIO口P0.0~P0.7,具体设计系统要按实现情况进行配置,框图如图2所示。
该种方法通过3个GPIO口模拟SPI对74HC595进行控制,驱动液晶数据显示。
模拟SPI的GPIO口配置如下:
#defineSPI_CLK0x00000001//时钟线为P0.0
#defineSPI_DATA0x00000002//传输数据线为P0.1
#defineSPI_CS0x00000004//74HC595选通线为P0.2
传输字模数值到数据线上的子程序:
voidSendData(unsignedchardate){
unsignedchari;
IOCLR=SPI_CS;//SPI_CS=0
for(i=0;i<8;i++){//依次发送8位数据
IOCLR=SP 《ARM微控制器LPC210X的LCD接口技术(第3页)》