微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 单片机控制串口屏通信出现了问题,小白求教

单片机控制串口屏通信出现了问题,小白求教

时间:10-02 整理:3721RD 点击:
小弟最近被老师安排了个项目:用单片机串口通信控制串口屏的图片切换。
之前从来没接触过单片机,看了一周左右的书和视频,还是一头雾水。
问过老师,他给了我一个大体的框架,就是下面这样:
PS:通过按键控制图片输出
void main
{
初始化串口和定时器
for(;;);//相当于while(1);
}

//串口1中断
void Serial_1() interrupt 4
{
if(TI)
{
TI=0;
里面进行发数据操作
}
}
//定时器0中断
void Time_0() interrupt 1
{
TR0 = 0;
TH0 = 0xbe;
TL0 = 0xe0;
TR0 = 1;
Key_Scan();//按键扫描
}
注:Key_Scan()函数里面要包含对屏幕指令的发送操作

看了屏的开发指南,知道控制图片功能的寄存器(地址),准备把相应的指令写入数组,放在串口1中断发送操作那个位置;Key_Scan()函数我不知道的是不是和串口中断写的指令是一样的;求大神指教。




就知道串口屏用着挺方便

怎么说?前辈

你还是先把串口调通再说把

串口屏不懂,串口是需要设置和调试,和波特率有关系,书上应该有串口的c语言资料的,可以仿照着使用。

不了解   跟着小编一起学习了解一下  不知小编问题解决了吗

还是没有,前辈,不过我会继续加油的

分享大家一个学习单片机与嵌入式的地方,可以关注一下微信公众号【玩转单片机与嵌入式】,每天都会分享三篇有价值的文章,通过碎片化的学习时间,提高自己的水平。

你先调通串口能正常收发数据后再试着发图片

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint i,k;
uchar code q[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};
uchar code table1[]={0xa5,0x5a,0x04,0x80,0x03,0x00};
uchar code table2[]={0xa5,0x5a,0x04,0x80,0x03,0x00};
uchar code table3[]={0xa5,0x5a,0x03,0x80,0x6a,0x5a};
uchar code table4[]={0xa5,0x5a,0x03,0x80,0x6b,0x5a};
sbit Key1=P1^0;
sbit Key2=P1^1;
sbit Key3=P1^2;
sbit Key4=P1^3;
void Key_Scan();
void dealyms();
void init();
void main()
{
        init();
        k=0;            
        while(1)               
        {
                  Key_Scan();               
        }
}
void Key_Scan()
{
        if(Key1==0)
        {
                k=(k+1)%5;
                dealyms();
                   if(Key1==0)
                {       
                        for(i=0;i<6;i++)
                        {
                                SBUF=table1[i];
                                while(!TI);
                                TI=0;
                        }
                        SBUF=q[k];
                        while(!TI);
                        TI=0;                
                }
                while(!Key1);
        }
        if(Key2==0)
        {
                k=((k-1)+5)%5;
                dealyms();
                   if(Key2==0)
                {       
                        for(i=0;i<6;i++)
                        {
                                SBUF=table2[i];
                                while(!TI);
                                TI=0;
                        }
                        SBUF=q[k];
                        while(!TI);
                        TI=0;                
                }
                while(!Key2);
        }
        if(Key3==0)
        {
                dealyms();
                   if(Key3==0)
                {       
                        for(i=0;i<6;i++)
                        {
                                SBUF=table3[i];
                                while(!TI);
                                TI=0;
                        }      
                }
                while(!Key3);
        }
        if(Key4==0)
        {
                dealyms();
                   if(Key4==0)
                {       
                        for(i=0;i<6;i++)
                        {
                                SBUF=table4[i];
                                while(!TI);
                                TI=0;
                        }      
                }
                while(!Key4);
        }
}               
void dealyms()
{
    unsigned char a,b;
    for(b=249;b>0;b--)
        for(a=17;a>0;a--);
}
void init()
{       
        TMOD=0x20;
        TH1=0xfd;
        TL1=0xfd;
        TR1=1;
        REN=1;
        SM0=0;
        SM1=1;
        EA=1;
        ES=1;
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top