你好,在一个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的时序,因此不能正常显示。