迪文科技论坛

 找回密码
 立即注册
搜索
查看: 315|回复: 7

【提问】单片机控制问题请教

[复制链接]

7

主题

24

回帖

225

积分

中级会员

Rank: 3Rank: 3

积分
225
发表于 2022-11-1 09:48:18 | 显示全部楼层 |阅读模式
     各位大佬,我现在有个7寸迪文屏,K600内核,想用这个屏去控制单片机开关电路,程序做出来怎么调整都无反应,请大佬们给予指点,谢谢#include"reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;

#define FOSC 11059200L      
#define BAUD 9600         
#define        RI_DATA        64
u8         data RI_Buff[RI_DATA];        //接收缓冲

sbit J0=P2^0;
sbit J1=P2^1;
sbit J2=P2^2;
sbit J3=P2^3;
sbit J4=P2^4;
sbit J5=P2^5;

void UartInit(void)  //波特率9600
{
        SCON=0X50;
        TMOD=0X20;
        TH0=TL0=-(FOSC/12/32/BAUD);
        TR0=1;
        ES=1;
        EA=1;
}


void main()
                {
                        UartInit();
                        while(1)
                                {
                                         if(RI)      //解析接收到的数据
                                                {                                      
                                                        if((RI_Buff[0]==0x06)&&(RI_Buff[1]==0X83)&&(RI_Buff[2]==0x00)&&
                                                                 (RI_Buff[3]==0x20)&&(RI_Buff[4]==0x01)&&(RI_Buff[5]==0x00))//按键返回
                                                                                        {
                                                                                                                if(RI_Buff[6]==0x01)//J0
                                                                                                                                {
                                                                                                                                        J0 = ~J0;
                                                                                                                                }
                                                                                                                if(RI_Buff[6]==0x02)//J1
                                                                                                                                {
                                                                                                                                        J1 = ~J1;
                                                                                                                                }
                                                                                                                if(RI_Buff[6]==0x03)//J2
                                                                                                                                {
                                                                                                                                        J2 = ~J2;
                                                                                                                                }
                                                                                                                if(RI_Buff[6]==0x04)//J3
                                                                                                                                {
                                                                                                                                        J3 = ~J3;
                                                                                                                                }
                                                                                                                if(RI_Buff[6]==0x05)//J4
                                                                                                                                {
                                                                                                                                        J4 = ~J4;
                                                                                                                                }
                                                                                                                if(RI_Buff[6]==0x06)//J5
                                                                                                                                {
                                                                                                                                        J5 = ~J5;
                                                                                                                                }
                                                                                        }
                                                        RI = 0;
                                                }
                                }
                }








回复

使用道具 举报

0

主题

8

回帖

397

积分

中级会员

Rank: 3Rank: 3

积分
397
发表于 2022-11-1 16:11:51 | 显示全部楼层
您好,请问以上程序是写在哪个设备上的?k600+应该无法运行以上的c语言程序。
回复

使用道具 举报

7

主题

24

回帖

225

积分

中级会员

Rank: 3Rank: 3

积分
225
 楼主| 发表于 2022-11-1 17:15:06 | 显示全部楼层
dwyong 发表于 2022-11-1 16:11
您好,请问以上程序是写在哪个设备上的?k600+应该无法运行以上的c语言程序。 ...

上面程序是单片机程序,屏只是与单片机通讯来控制单片机程序运行。
回复

使用道具 举报

0

主题

8

回帖

397

积分

中级会员

Rank: 3Rank: 3

积分
397
发表于 2022-11-1 17:27:49 | 显示全部楼层
zrb5688 发表于 2022-11-1 17:15
上面程序是单片机程序,屏只是与单片机通讯来控制单片机程序运行。

串口屏下发的数据都是按指定格式下发的,包括帧头+长度+指令类型+数据等。您可以拿串口调试助手和电脑监测一下屏下发的格式,然后单片机根据格式做解析。根据您上面的代码,没看到帧头部分的解析,另外解析时注意字节的位置与数据对应。
回复

使用道具 举报

7

主题

24

回帖

225

积分

中级会员

Rank: 3Rank: 3

积分
225
 楼主| 发表于 2022-11-1 21:03:49 | 显示全部楼层
我加上帧头还是不行,请大佬们指点,谢谢
void main()
                {
                        P2=0xff;
                        UartInit();
                        while(1)
                                {
                                        RI_Buff[RI_DATA]=SBUF;
                                         if(RI)      //解析接收到的数据
                                                {                                     
                                                        if((RI_Buff[0]==0x5A)&&(RI_Buff[1]==0XA5)&&(RI_Buff[2]==0x06)&&(RI_Buff[3]==0X83)&&
                                                            (RI_Buff[4]==0x00)&&(RI_Buff[5]==0x20)&&(RI_Buff[6]==0x01)&&(RI_Buff[7]==0x00))//按键返回
                                                                                        {
                                                                                                                if(RI_Buff[8]==0x01)//J0
                                                                                                                                {
                                                                                                                                        J0 = ~J0;
                                                                                                                                }
                                                                                                                if(RI_Buff[8]==0x02)//J1
                                                                                                                                {
                                                                                                                                        J1 = ~J1;
                                                                                                                                }
                                                                                                                if(RI_Buff[8]==0x03)//J2
                                                                                                                                {
                                                                                                                                        J2 = ~J2;
                                                                                                                                }
                                                                                                                if(RI_Buff[8]==0x04)//J3
                                                                                                                                {
                                                                                                                                        J3 = ~J3;
                                                                                                                                }
                                                                                                                if(RI_Buff[8]==0x05)//J4
                                                                                                                                {
                                                                                                                                        J4 = ~J4;
                                                                                                                                }
                                                                                                                if(RI_Buff[8]==0x06)//J5
                                                                                                                                {
                                                                                                                                        J5 = ~J5;
                                                                                                                                }
                                                                                        }
                                                        RI = 0;
                                                }
                                }
                }
回复

使用道具 举报

0

主题

577

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

积分
10248
发表于 2022-11-2 09:25:49 | 显示全部楼层
建议您可以先拿串口调试助手和电脑监测一下屏下发的格式,然后单片机根据格式做解析。
回复

使用道具 举报

7

主题

24

回帖

225

积分

中级会员

Rank: 3Rank: 3

积分
225
 楼主| 发表于 2022-11-2 09:50:54 | 显示全部楼层
Dearall 发表于 2022-11-2 09:25
建议您可以先拿串口调试助手和电脑监测一下屏下发的格式,然后单片机根据格式做解析。 ...

谢谢
回复

使用道具 举报

7

主题

24

回帖

225

积分

中级会员

Rank: 3Rank: 3

积分
225
 楼主| 发表于 2022-11-2 09:51:49 | 显示全部楼层
dwyong 发表于 2022-11-1 17:27
串口屏下发的数据都是按指定格式下发的,包括帧头+长度+指令类型+数据等。您可以拿串口调试助手和电脑监 ...

谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-11-23 00:58 , Processed in 0.081260 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表