你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32 1602显示字符串求助

[复制链接]
taonogo 提问时间:2018-10-18 16:33 /
在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);

}

IMG_0523.JPG IMG_0522.JPG
收藏 评论5 发布时间:2018-10-18 16:33

举报

5个回答
STM1024 回答时间:2018-10-18 16:42:48
for(i=0;i < 14;i++)
    {
             Send_Dat(table2);
             delay_nms(5);
    }
这个地方,函数Send_Dat(table2);的实参 与函数的定义不太一致,你试试使用Send_Dat(table2[i]);看看?

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

taonogo 回答时间:2018-10-18 16:51:27
stm1024 发表于 2018-10-18 16:42
for(i=0;i < 14;i++)
    {
             Send_Dat(table2);

程序里时table2,复制出来不知道为啥变了。还能找到其他问题吗 很急
taonogo 回答时间:2018-10-18 16:52:10
taonogo 发表于 2018-10-18 16:51
程序里时table2,复制出来不知道为啥变了。还能找到其他问题吗 很急

【i】发出来就没了
STM1024 回答时间:2018-10-18 17:06:04
其他地方倒是没看出明显的错误,不过要不要考虑一下Check Busy呢?

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

butterflyspring 回答时间:2018-10-19 09:45:26
调试看看呀,一个一个断点,看看是不是每次都发U,如是,看看是不是硬件或者设置问题.如果不是,就看看数据的指针了.

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版