在proteus里仿真正常,但是实物上显示玩最后一个字符 u 后 还会继续显示u 。屏幕满了之后会从左上角开始 覆盖前面的字符。最后满屏都是u。 先贴代码 #include "stm32f10x.h" #define Set_RS GPIO_SetBits(GPIOB,GPIO_Pin_0) #define Set_RW GPIO_SetBits(GPIOB,GPIO_Pin_1) #define Set_EN GPIO_SetBits(GPIOB,GPIO_Pin_3) #define CLR_RS GPIO_ResetBits(GPIOB,GPIO_Pin_0) #define CLR_RW GPIO_ResetBits(GPIOB,GPIO_Pin_1) #define CLR_EN GPIO_ResetBits(GPIOB,GPIO_Pin_3) void delay_nus(unsigned long n) { unsigned long j; while(n--) { j=8; while(j--); } } void delay_nms(unsigned long n) { while(n--) delay_nus(1100); } //unsigned char table[]="abcdefghijklmvop"; //u8 table[]="abcdefghijklmvop"; u8 table1[]="->China Yancheng" ; u8 table2[]="Welcome To You" ; //void Send_Com(unsigned char Send_Com) void Send_Com(int Send_Com) { CLR_RS; delay_nms(1); CLR_RW; delay_nms(1); //CLR_EN; Set_EN; delay_nms(1); GPIO_Write(GPIOA,(u16)Send_Com); delay_nms(5); CLR_EN; delay_nms(5); Set_EN; } void Send_Dat(int Send_Dat) { Set_RS; delay_nms(1); CLR_RW; delay_nms(1); Set_EN; delay_nms(1); GPIO_Write(GPIOA,Send_Dat); delay_nms(5); CLR_EN; delay_nms(5); Set_EN; } void init() { Set_EN; delay_nms(15); Send_Com(0x38); delay_nms(5); Send_Com(0x38); delay_nms(5); Send_Com(0x38); delay_nms(5); Send_Com(0x38); delay_nms(5); Send_Com(0x08); delay_nms(1); Send_Com(0x01); delay_nms(1); Send_Com(0x06); delay_nms(1); Send_Com(0x0c); delay_nms(1); } void GPIO_Configuration(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB| RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_3; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_Init(GPIOB,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_Init(GPIOA,&GPIO_InitStructure); } int main(void) { //unsigned char num; GPIO_Configuration(); delay_nms(500); init(); u8 i; //while(1) // { Send_Com(0x80);//??????? for(i=0;i < 16;i++) { Send_Dat(table1); delay_nms(5); } Send_Com(0x80+0x40);//??????? delay_nms(5); for(i=0;i < 14;i++) { Send_Dat(table2); delay_nms(5); } while(1); //} //delay_nms(5); //Send_Com(0x80); // delay_nms(5); // //for(num=0;num<=15;num++) //{ //Send_Dat(table[num]); //delay_nms(300); //} //while(1); } |
{
Send_Dat(table2);
delay_nms(5);
}
这个地方,函数Send_Dat(table2);的实参 与函数的定义不太一致,你试试使用Send_Dat(table2[i]);看看?
评分
查看全部评分
程序里时table2,复制出来不知道为啥变了。还能找到其他问题吗 很急
【i】发出来就没了
评分
查看全部评分
评分
查看全部评分