/—–LCD12864引脚的设置—–/
GpioMuxRegs.GPBMUX.all=0x0000;//将GPIOB设置为通用数字输入输出通道
GpioMuxRegs.GPBDIR.all=0xFFFF;//将GPIOB的方向设置为输出方向
GpioMuxRegs.GPAMUX.all=0x0000;//将GPIOA设置为通用数字输入输出通道
GpioMuxRegs.GPADIR.all=0xFFFF;//将GPIOA的方向设置为输出方向
/——-显示字符的设置————–/
char hang1[12]={ "陕","西","科","技","大","学"};
char hang2[8]={ "电","流","1",":"};
char hang3[8]= {"电","流","2",":"};
char hang4[8]= {"电","流","3",":"};
char hang5[8]= {"电","流","4",":"};
char hang6[8]= {"电","流","5",":"};
char hang7[8]= {"电","流","6",":"};
/——LCD初始化———–/
void Initlcd(void)
{
DELAY_US(4000);//等待时间>40ms
write_LCD_command(0x30);//功能设定:8位数据,基本指令操作
DELAY_US(100);//等待时间>100us
write_LCD_command(0x30);//功能设定:8位数据,基本指令操作
DELAY_US(37);//等待时间>37us
write_LCD_command(0x0C);//显示设定:整体显示,游标关,不反白
DELAY_US(100);//等待时间>100us
write_LCD_command(0x01);//清屏指令
DELAY_US(10000);//等待时间>10ms
write_LCD_command(0x06);//进入点设定:地址指针加1
DELAY_US(1000);
write_LCD_command(0x80);
}
/————-显示程序————/
void display1(void){
int Num;
write_LCD_command(0x80);
for(Num=0;Num<12;Num++)
{
write_LCD_data(hang1[num][Num]);
}
write_LCD_command(0x90);//写第二行
for(Num=0;Num<8;Num++)
{
write_LCD_data(hang2[num][Num]);
}
write_LCD_command(0x94);
for(Num=0;Num<8;Num++)
{
write_LCD_data(hang3[num][Num]);
}
write_LCD_command(0x88);//写第三行
for(Num=0;Num<8;Num++)
{
write_LCD_data(hang4[num][Num]);
}
write_LCD_command(0x8C);
for(Num=0;Num<8;Num++)
{
write_LCD_data(hang5[num][Num]);
}
write_LCD_command(0x98);//写第四行
for(Num=0;Num<8;Num++)
{
write_LCD_data(hang6[num][Num]);
}
write_LCD_command(0x9C);
for(Num=0;Num<8;Num++)
{
write_LCD_data(hang7[num][Num]);
}
}
Zhu Liu2:
以下作补充
/——–LCD12864写数据,写命令指令———/
void write_LCD_command(int value){ read_busy(); GpioDataRegs.GPADAT.bit.GPIOA1=0; GpioDataRegs.GPADAT.bit.GPIOA3=0; GpioDataRegs.GPADAT.bit.GPIOA5=1; LCD_databus(value); // DELAY_US(1000); GpioDataRegs.GPADAT.bit.GPIOA5=0;}
void write_LCD_data(int value){ read_busy(); GpioDataRegs.GPADAT.bit.GPIOA1=1; GpioDataRegs.GPADAT.bit.GPIOA3=0; GpioDataRegs.GPADAT.bit.GPIOA5=1; LCD_databus(value); // DELAY_US(1000);; GpioDataRegs.GPADAT.bit.GPIOA5=0;}
/———LCD12864数据引脚赋值————-/
void LCD_databus(int value){ GpioDataRegs.GPBDAT.bit.GPIOB0=(value>>7)&1;//DB7 GpioDataRegs.GPBDAT.bit.GPIOB2=(value>>6)&1;//DB6 GpioDataRegs.GPBDAT.bit.GPIOB4=(value>>5)&1;//DB5 GpioDataRegs.GPBDAT.bit.GPIOB7=(value>>4)&1;//DB4 GpioDataRegs.GPADAT.bit.GPIOA14=(value>>3)&1;//DB3 GpioDataRegs.GPADAT.bit.GPIOA11=(value>>2)&1;//DB2 GpioDataRegs.GPADAT.bit.GPIOA9=(value>>1)&1;//DB1 GpioDataRegs.GPADAT.bit.GPIOA7=value&1;//DB0
}
/—–LCD12864引脚的设置—–/
GpioMuxRegs.GPBMUX.all=0x0000;//将GPIOB设置为通用数字输入输出通道
GpioMuxRegs.GPBDIR.all=0xFFFF;//将GPIOB的方向设置为输出方向
GpioMuxRegs.GPAMUX.all=0x0000;//将GPIOA设置为通用数字输入输出通道
GpioMuxRegs.GPADIR.all=0xFFFF;//将GPIOA的方向设置为输出方向
/——-显示字符的设置————–/
char hang1[12]={ "陕","西","科","技","大","学"};
char hang2[8]={ "电","流","1",":"};
char hang3[8]= {"电","流","2",":"};
char hang4[8]= {"电","流","3",":"};
char hang5[8]= {"电","流","4",":"};
char hang6[8]= {"电","流","5",":"};
char hang7[8]= {"电","流","6",":"};
/——LCD初始化———–/
void Initlcd(void)
{
DELAY_US(4000);//等待时间>40ms
write_LCD_command(0x30);//功能设定:8位数据,基本指令操作
DELAY_US(100);//等待时间>100us
write_LCD_command(0x30);//功能设定:8位数据,基本指令操作
DELAY_US(37);//等待时间>37us
write_LCD_command(0x0C);//显示设定:整体显示,游标关,不反白
DELAY_US(100);//等待时间>100us
write_LCD_command(0x01);//清屏指令
DELAY_US(10000);//等待时间>10ms
write_LCD_command(0x06);//进入点设定:地址指针加1
DELAY_US(1000);
write_LCD_command(0x80);
}
/————-显示程序————/
void display1(void){
int Num;
write_LCD_command(0x80);
for(Num=0;Num<12;Num++)
{
write_LCD_data(hang1[num][Num]);
}
write_LCD_command(0x90);//写第二行
for(Num=0;Num<8;Num++)
{
write_LCD_data(hang2[num][Num]);
}
write_LCD_command(0x94);
for(Num=0;Num<8;Num++)
{
write_LCD_data(hang3[num][Num]);
}
write_LCD_command(0x88);//写第三行
for(Num=0;Num<8;Num++)
{
write_LCD_data(hang4[num][Num]);
}
write_LCD_command(0x8C);
for(Num=0;Num<8;Num++)
{
write_LCD_data(hang5[num][Num]);
}
write_LCD_command(0x98);//写第四行
for(Num=0;Num<8;Num++)
{
write_LCD_data(hang6[num][Num]);
}
write_LCD_command(0x9C);
for(Num=0;Num<8;Num++)
{
write_LCD_data(hang7[num][Num]);
}
}
Zhu Liu2:
回复 Zhu Liu2:
我个人觉得是时序问题
/—–LCD12864引脚的设置—–/
GpioMuxRegs.GPBMUX.all=0x0000;//将GPIOB设置为通用数字输入输出通道
GpioMuxRegs.GPBDIR.all=0xFFFF;//将GPIOB的方向设置为输出方向
GpioMuxRegs.GPAMUX.all=0x0000;//将GPIOA设置为通用数字输入输出通道
GpioMuxRegs.GPADIR.all=0xFFFF;//将GPIOA的方向设置为输出方向
/——-显示字符的设置————–/
char hang1[12]={ "陕","西","科","技","大","学"};
char hang2[8]={ "电","流","1",":"};
char hang3[8]= {"电","流","2",":"};
char hang4[8]= {"电","流","3",":"};
char hang5[8]= {"电","流","4",":"};
char hang6[8]= {"电","流","5",":"};
char hang7[8]= {"电","流","6",":"};
/——LCD初始化———–/
void Initlcd(void)
{
DELAY_US(4000);//等待时间>40ms
write_LCD_command(0x30);//功能设定:8位数据,基本指令操作
DELAY_US(100);//等待时间>100us
write_LCD_command(0x30);//功能设定:8位数据,基本指令操作
DELAY_US(37);//等待时间>37us
write_LCD_command(0x0C);//显示设定:整体显示,游标关,不反白
DELAY_US(100);//等待时间>100us
write_LCD_command(0x01);//清屏指令
DELAY_US(10000);//等待时间>10ms
write_LCD_command(0x06);//进入点设定:地址指针加1
DELAY_US(1000);
write_LCD_command(0x80);
}
/————-显示程序————/
void display1(void){
int Num;
write_LCD_command(0x80);
for(Num=0;Num<12;Num++)
{
write_LCD_data(hang1[num][Num]);
}
write_LCD_command(0x90);//写第二行
for(Num=0;Num<8;Num++)
{
write_LCD_data(hang2[num][Num]);
}
write_LCD_command(0x94);
for(Num=0;Num<8;Num++)
{
write_LCD_data(hang3[num][Num]);
}
write_LCD_command(0x88);//写第三行
for(Num=0;Num<8;Num++)
{
write_LCD_data(hang4[num][Num]);
}
write_LCD_command(0x8C);
for(Num=0;Num<8;Num++)
{
write_LCD_data(hang5[num][Num]);
}
write_LCD_command(0x98);//写第四行
for(Num=0;Num<8;Num++)
{
write_LCD_data(hang6[num][Num]);
}
write_LCD_command(0x9C);
for(Num=0;Num<8;Num++)
{
write_LCD_data(hang7[num][Num]);
}
}
10#:
回复 Zhu Liu2:
请将所有通过DAT寄存器实现输出高或低电平的语句更改成使用SET/CLEAR/TOGGLE寄存器对应高/低/翻转,详细原因请参考:
http://processors.wiki.ti.com/index.php?title=General_Purpose_IO_(GPIO)_FAQ_for_C2000#Q:_Back-to-back_DAT_register_writes_do_not_work_as_expected
TI中文支持网



