本帖最后由 tenme1 于 2010-1-23 22:58 编辑
我想写一个12864液晶驱动,SPI接口的,所以我就编了一个Lcd12864的类,类如下
class Lcd12864:public Canvas//Canvas是液晶上层类
{
public
Lcd12864();
void Spi_Init();//SPI初始化
void Prot_Init();//12864引脚初始化,如片选CS,复位Res,等。。。。
PIN PIN[4];//PIN是引脚的上层类,下面还在实际芯片的引脚类。
void Back_Lcd(uint8 on);//0为关闭,1为打开
void Clc_Lcd(uint8 flag);
void Put_Pixel(U8 x,U8 y,U8 flag);
/*在液晶屏上打印一个像素
void Line(U8 x1, U8 y1,U8 x2,U8 y2,U8 flag);
void Circle(int x, int y, int radius, unsigned char flag);
void Rectangle(int x1, int y1, int x2, int y2, unsigned char flag);
void glcd_degree_line(int x, int y, int degree, int inner_radius, int outer_radius, unsigned char flag);
void PutString(unsigned int x,unsigned int y ,char *p);/
}
上面红色的函数是引脚初始化,主要想对12864液晶运用到的引脚如,SPI接口,片选CS,复位RES ,指令数据选通A0这些端口进行初始化。如果这样的话,问题就来了,因为这只是驱动,在实用中,用哪些芯片也不知道,这些片选,复位引脚也不知道用到哪 些GPIO口,所以我现在不能定义这个连接和初始化这些端口。。。。。。
我想到了在这个类里多定义了Publice引脚的几个对象:如:Pin PIN[4]//PIN[4]这4个对象分别用在片选,复位,选通端,与背光的四个接口,再由初始化引脚函数调用它们来进行初始化。(PIN是一个上层的引脚类,继承它的有LPC2138_PIN,LPC2103_PIN等类) 本人想到一个问题,上面定义的引脚是PIN[4]一个虚拟类的对象,应该定义对象改了LPC2138_PIN PIN[4];或LPC2103_PIN PIN[4];是不是?????,但如果我改了,在用12864时,芯片用什么型号我还不确定,不能直接定义对象。所以我应该怎么解决这个问题。帮帮帮我,有谁写过类似的,请加我QQ:525135916 讨论一下 。:Q
例如一个问题:
void Lcd12864:: Lcd_BackLed(uint8 on){
if(on==1){
IO0CLR=1<<15; //打开背光
}
else if(on==0){
IO0SET=1<<15; //关闭背光
}//假定如果背光引脚我知道用的是P0.15.则上面类函数的定义就是对的了。但现在就是事先还不知道背光要用到哪些引脚。我只能调用类里定义的对象,修改为如下:
void Lcd12864:: Lcd_BackLed(uint8 on){
if(on==1){
IO0CLR=1<<;PIN1->;Pinselord; //打开背光.Pin1->pinseord是引脚编号
}
else if(on==0){
IO0SET=1<<;PIN1->;Pinselord; //关闭背光
}
这样,当我用12864时,知道背光用到了哪个GPIO引脚了,我只要在main()函数里,对12864类里的PIN1这个对象进行初始化设置了那个引脚就行了。这样的想法对不对呀,如果对的话,那在类里的PIN[4]这几个对象定义了哪个类呢,是PIN,还是LPC2138_PIN呢????????? |