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

2019-07-15 12:47发布

小弟最近被老师安排了个项目:用单片机串口通信控制串口屏的图片切换。
之前从来没接触过单片机,看了一周左右的书和视频,还是一头雾水。
问过老师,他给了我一个大体的框架,就是下面这样:
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()函数我不知道的是不是和串口中断写的指令是一样的;求大神指教。








友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
虚心求教的白菜
2019-07-16 23:13
#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;
}

一周热门 更多>