TI中文支持网
TI专业的中文技术问题搜集分享网站

关于DSP28335控制LCD12864的问题

你好,在一个LCD12864的控制程序中看到一段

#include"DSP2833x_Device.h"
#include "DSP2833x_Examples.h"

#define LCD_DATA_BUS (*((volatile Uint16 *)0x4000))

#define EN GpioDataRegs.GPBDAT.bit.GPIO54
#define RW GpioDataRegs.GPBDAT.bit.GPIO56
#define RS GpioDataRegs.GPBDAT.bit.GPIO57

#define uchar unsigned char

extern uchar menu1[]={"选择电机定时设置"};
extern uchar menu2[]={"时间设置1"};
extern uchar menu3[]={"时间设置2"};
extern uchar menu4[]={"时间设置3"};

void LCDInit(void);
void Write_order(uchar order);
void Write_data(uchar data);
void delay(uchar t);
void configio(void);
void InitXintf(void);
void display(void);

void LCD_DATA (uchar d)
{
  LCD_DATA_BUS = d;

}

其中#define LCD_DATA_BUS (*((volatile Uint16 *)0x4000))应该是定义了八个数据传输口,但是不太了解这句话怎么对应的引脚,求解释一下,多谢了

chong wang3:

之后我根据原理图的引脚接线,自己尝试数据一位位传输的方式

#include"DSP2833x_Device.h"#include "DSP2833x_Examples.h"#define EN GpioDataRegs.GPBDAT.bit.GPIO54#define RW GpioDataRegs.GPBDAT.bit.GPIO56#define RS GpioDataRegs.GPBDAT.bit.GPIO57

#define D0 GpioDataRegs.GPCDAT.bit.GPIO79#define D1 GpioDataRegs.GPCDAT.bit.GPIO78#define D2 GpioDataRegs.GPCDAT.bit.GPIO77#define D3 GpioDataRegs.GPCDAT.bit.GPIO76#define D4 GpioDataRegs.GPCDAT.bit.GPIO75#define D5 GpioDataRegs.GPCDAT.bit.GPIO74#define D6 GpioDataRegs.GPCDAT.bit.GPIO73#define D7 GpioDataRegs.GPCDAT.bit.GPIO72

#define uchar unsigned charextern uchar menu1[]={"选择电机定时设置"};extern uchar menu2[]={"时间设置1"};extern uchar menu3[]={"时间设置2"};extern uchar menu4[]={"时间设置3"};

void LCDInit(void);void Write_order(uchar order);void Write_data(uchar data);void delay(uchar t);void configio(void);void InitXintf(void);void display(void);}

void LCD_DATA (uchar d){ D0=d&0x01; D1=d&0x02; D2=d&0x04; D3=d&0x08; D4=d&0x10; D5=d&0x20; D6=d&0x40; D7=d&0x80;}

。。。。。

void configio(void){ EALLOW;

GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 0; GpioCtrlRegs.GPBDIR.bit.GPIO54 = 1; GpioCtrlRegs.GPBMUX2.bit.GPIO56 = 0; GpioCtrlRegs.GPBDIR.bit.GPIO56 = 1; GpioCtrlRegs.GPBMUX2.bit.GPIO57= 0; GpioCtrlRegs.GPBDIR.bit.GPIO57 = 1;

GpioCtrlRegs.GPCMUX1.bit.GPIO79 = 0; GpioCtrlRegs.GPCDIR.bit.GPIO79 = 1;

GpioCtrlRegs.GPCMUX1.bit.GPIO78 = 0; GpioCtrlRegs.GPCDIR.bit.GPIO78 = 1;

GpioCtrlRegs.GPCMUX1.bit.GPIO77 = 0; GpioCtrlRegs.GPCDIR.bit.GPIO77 = 1;

GpioCtrlRegs.GPCMUX1.bit.GPIO76 = 0; GpioCtrlRegs.GPCDIR.bit.GPIO76 = 1;

GpioCtrlRegs.GPCMUX1.bit.GPIO75 = 0; GpioCtrlRegs.GPCDIR.bit.GPIO75 = 1;

GpioCtrlRegs.GPCMUX1.bit.GPIO74 = 0; GpioCtrlRegs.GPCDIR.bit.GPIO74 = 1;

GpioCtrlRegs.GPCMUX1.bit.GPIO73 = 0; GpioCtrlRegs.GPCDIR.bit.GPIO73 = 1;

GpioCtrlRegs.GPCMUX1.bit.GPIO72 = 0; GpioCtrlRegs.GPCDIR.bit.GPIO72 = 1; EDIS;

}

但是之前能显示的汉字却不能显示,不知道这是为什么?求解答

你好,在一个LCD12864的控制程序中看到一段

#include"DSP2833x_Device.h"
#include "DSP2833x_Examples.h"

#define LCD_DATA_BUS (*((volatile Uint16 *)0x4000))

#define EN GpioDataRegs.GPBDAT.bit.GPIO54
#define RW GpioDataRegs.GPBDAT.bit.GPIO56
#define RS GpioDataRegs.GPBDAT.bit.GPIO57

#define uchar unsigned char

extern uchar menu1[]={"选择电机定时设置"};
extern uchar menu2[]={"时间设置1"};
extern uchar menu3[]={"时间设置2"};
extern uchar menu4[]={"时间设置3"};

void LCDInit(void);
void Write_order(uchar order);
void Write_data(uchar data);
void delay(uchar t);
void configio(void);
void InitXintf(void);
void display(void);

void LCD_DATA (uchar d)
{
  LCD_DATA_BUS = d;

}

其中#define LCD_DATA_BUS (*((volatile Uint16 *)0x4000))应该是定义了八个数据传输口,但是不太了解这句话怎么对应的引脚,求解释一下,多谢了

Ling Zhu2:

回复 chong wang3:

看你的屏支不支持串行显示

你好,在一个LCD12864的控制程序中看到一段

#include"DSP2833x_Device.h"
#include "DSP2833x_Examples.h"

#define LCD_DATA_BUS (*((volatile Uint16 *)0x4000))

#define EN GpioDataRegs.GPBDAT.bit.GPIO54
#define RW GpioDataRegs.GPBDAT.bit.GPIO56
#define RS GpioDataRegs.GPBDAT.bit.GPIO57

#define uchar unsigned char

extern uchar menu1[]={"选择电机定时设置"};
extern uchar menu2[]={"时间设置1"};
extern uchar menu3[]={"时间设置2"};
extern uchar menu4[]={"时间设置3"};

void LCDInit(void);
void Write_order(uchar order);
void Write_data(uchar data);
void delay(uchar t);
void configio(void);
void InitXintf(void);
void display(void);

void LCD_DATA (uchar d)
{
  LCD_DATA_BUS = d;

}

其中#define LCD_DATA_BUS (*((volatile Uint16 *)0x4000))应该是定义了八个数据传输口,但是不太了解这句话怎么对应的引脚,求解释一下,多谢了

chong wang3:

回复 Ling Zhu2:

这个不是应该是并行传输的吗?屏是支持串并行的

你好,在一个LCD12864的控制程序中看到一段

#include"DSP2833x_Device.h"
#include "DSP2833x_Examples.h"

#define LCD_DATA_BUS (*((volatile Uint16 *)0x4000))

#define EN GpioDataRegs.GPBDAT.bit.GPIO54
#define RW GpioDataRegs.GPBDAT.bit.GPIO56
#define RS GpioDataRegs.GPBDAT.bit.GPIO57

#define uchar unsigned char

extern uchar menu1[]={"选择电机定时设置"};
extern uchar menu2[]={"时间设置1"};
extern uchar menu3[]={"时间设置2"};
extern uchar menu4[]={"时间设置3"};

void LCDInit(void);
void Write_order(uchar order);
void Write_data(uchar data);
void delay(uchar t);
void configio(void);
void InitXintf(void);
void display(void);

void LCD_DATA (uchar d)
{
  LCD_DATA_BUS = d;

}

其中#define LCD_DATA_BUS (*((volatile Uint16 *)0x4000))应该是定义了八个数据传输口,但是不太了解这句话怎么对应的引脚,求解释一下,多谢了

chong wang3:

回复 Ling Zhu2:

这个不是应该是并行传输的吗?屏是支持串并行的

你好,在一个LCD12864的控制程序中看到一段

#include"DSP2833x_Device.h"
#include "DSP2833x_Examples.h"

#define LCD_DATA_BUS (*((volatile Uint16 *)0x4000))

#define EN GpioDataRegs.GPBDAT.bit.GPIO54
#define RW GpioDataRegs.GPBDAT.bit.GPIO56
#define RS GpioDataRegs.GPBDAT.bit.GPIO57

#define uchar unsigned char

extern uchar menu1[]={"选择电机定时设置"};
extern uchar menu2[]={"时间设置1"};
extern uchar menu3[]={"时间设置2"};
extern uchar menu4[]={"时间设置3"};

void LCDInit(void);
void Write_order(uchar order);
void Write_data(uchar data);
void delay(uchar t);
void configio(void);
void InitXintf(void);
void display(void);

void LCD_DATA (uchar d)
{
  LCD_DATA_BUS = d;

}

其中#define LCD_DATA_BUS (*((volatile Uint16 *)0x4000))应该是定义了八个数据传输口,但是不太了解这句话怎么对应的引脚,求解释一下,多谢了

Luocheng Yan:

您好,为啥我也是烧的例程确无法显示汉字

你好,在一个LCD12864的控制程序中看到一段

#include"DSP2833x_Device.h"
#include "DSP2833x_Examples.h"

#define LCD_DATA_BUS (*((volatile Uint16 *)0x4000))

#define EN GpioDataRegs.GPBDAT.bit.GPIO54
#define RW GpioDataRegs.GPBDAT.bit.GPIO56
#define RS GpioDataRegs.GPBDAT.bit.GPIO57

#define uchar unsigned char

extern uchar menu1[]={"选择电机定时设置"};
extern uchar menu2[]={"时间设置1"};
extern uchar menu3[]={"时间设置2"};
extern uchar menu4[]={"时间设置3"};

void LCDInit(void);
void Write_order(uchar order);
void Write_data(uchar data);
void delay(uchar t);
void configio(void);
void InitXintf(void);
void display(void);

void LCD_DATA (uchar d)
{
  LCD_DATA_BUS = d;

}

其中#define LCD_DATA_BUS (*((volatile Uint16 *)0x4000))应该是定义了八个数据传输口,但是不太了解这句话怎么对应的引脚,求解释一下,多谢了

Ying qi Tang:

回复 chong wang3:

你好,一位一位传输数据不能用于LCD12864的并行数据传输模式,因为在这个模式下数据输出口必须同时变化,即需要并行输出,只能通过单片机寄存器同时给多个输出口赋值,单位赋值的方法不满足LCD的时序,因此不能正常显示。

你好,在一个LCD12864的控制程序中看到一段

#include"DSP2833x_Device.h"
#include "DSP2833x_Examples.h"

#define LCD_DATA_BUS (*((volatile Uint16 *)0x4000))

#define EN GpioDataRegs.GPBDAT.bit.GPIO54
#define RW GpioDataRegs.GPBDAT.bit.GPIO56
#define RS GpioDataRegs.GPBDAT.bit.GPIO57

#define uchar unsigned char

extern uchar menu1[]={"选择电机定时设置"};
extern uchar menu2[]={"时间设置1"};
extern uchar menu3[]={"时间设置2"};
extern uchar menu4[]={"时间设置3"};

void LCDInit(void);
void Write_order(uchar order);
void Write_data(uchar data);
void delay(uchar t);
void configio(void);
void InitXintf(void);
void display(void);

void LCD_DATA (uchar d)
{
  LCD_DATA_BUS = d;

}

其中#define LCD_DATA_BUS (*((volatile Uint16 *)0x4000))应该是定义了八个数据传输口,但是不太了解这句话怎么对应的引脚,求解释一下,多谢了

Ying qi Tang:

回复 Luocheng Yan:

你好,一位一位传输数据不能用于LCD12864的并行数据传输模式,因为在这个模式下数据输出口必须同时变化,即需要并行输出,只能通过单片机寄存器同时给多个输出口赋值,单位赋值的方法不满足LCD的时序,因此不能正常显示。

你好,在一个LCD12864的控制程序中看到一段

#include"DSP2833x_Device.h"
#include "DSP2833x_Examples.h"

#define LCD_DATA_BUS (*((volatile Uint16 *)0x4000))

#define EN GpioDataRegs.GPBDAT.bit.GPIO54
#define RW GpioDataRegs.GPBDAT.bit.GPIO56
#define RS GpioDataRegs.GPBDAT.bit.GPIO57

#define uchar unsigned char

extern uchar menu1[]={"选择电机定时设置"};
extern uchar menu2[]={"时间设置1"};
extern uchar menu3[]={"时间设置2"};
extern uchar menu4[]={"时间设置3"};

void LCDInit(void);
void Write_order(uchar order);
void Write_data(uchar data);
void delay(uchar t);
void configio(void);
void InitXintf(void);
void display(void);

void LCD_DATA (uchar d)
{
  LCD_DATA_BUS = d;

}

其中#define LCD_DATA_BUS (*((volatile Uint16 *)0x4000))应该是定义了八个数据传输口,但是不太了解这句话怎么对应的引脚,求解释一下,多谢了

Ying qi Tang:

回复 Luocheng Yan:

你好,一位一位传输数据不能用于LCD12864的并行数据传输模式,因为在这个模式下数据输出口必须同时变化,即需要并行输出,只能通过单片机寄存器同时给多个输出口赋值,单位赋值的方法不满足LCD的时序,因此不能正常显示。

赞(0)
未经允许不得转载:TI中文支持网 » 关于DSP28335控制LCD12864的问题
分享到: 更多 (0)