This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
你好,在一个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))应该是定义了八个数据传输口,但是不太了解这句话怎么对应的引脚,求解释一下,多谢了
之后我根据原理图的引脚接线,自己尝试数据一位位传输的方式
#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 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)
{
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的并行数据传输模式,因为在这个模式下数据输出口必须同时变化,即需要并行输出,只能通过单片机寄存器同时给多个输出口赋值,单位赋值的方法不满足LCD的时序,因此不能正常显示。
你好,一位一位传输数据不能用于LCD12864的并行数据传输模式,因为在这个模式下数据输出口必须同时变化,即需要并行输出,只能通过单片机寄存器同时给多个输出口赋值,单位赋值的方法不满足LCD的时序,因此不能正常显示。
你好,一位一位传输数据不能用于LCD12864的并行数据传输模式,因为在这个模式下数据输出口必须同时变化,即需要并行输出,只能通过单片机寄存器同时给多个输出口赋值,单位赋值的方法不满足LCD的时序,因此不能正常显示。