找回密码
 立即注册
楼主: challis

学习串口调用STC调试接口

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:247
  • 最近打卡:2025-02-25 19:02:50

13

主题

198

回帖

1175

积分

金牌会员

积分
1175
发表于 2024-2-1 11:36:50 | 显示全部楼层
修改STC_SEG7_ShowString的逻辑后,能正确处理带.的字符串,且能处理多个.的情况了
  1. //功能1:        在数码管上显示字符串
  2. void STC_SEG7_ShowString(const char *str)
  3. {
  4.     uchar len,pos;
  5.     stc_buff[0] = 0x37;
  6.     stc_buff[1] = 0x53;
  7.     stc_buff[2] = 0x45;
  8.     stc_buff[3] = 0x47;
  9.     stc_buff[4] = 0x53;
  10.     stc_buff[5] = 0x00;
  11.     stc_buff[6] = 0x00;
  12.     stc_buff[7] = 0x00;
  13.     pos=8,len=0;
  14.    
  15.     while(*str)
  16.     {
  17.         if(*str == '.')
  18.         {
  19.             if(stc_buff[pos-1] == '.')//如果上一位是点,则跳过
  20.             {
  21.                 str++;
  22.                 continue;
  23.             }
  24.             stc_buff[pos++] = *str++; //否则添加点,但是不算位数
  25.         }
  26.         else
  27.         {
  28.             stc_buff[pos++] = *str++;
  29.             len++;
  30.             if(len >=8)
  31.             {
  32.                 if(*str == '.')
  33.                     stc_buff[pos++] = *str;
  34.                 break;
  35.             }
  36.         }
  37.     }
  38.     stc_buff[pos] = 0;
  39.     UartSendData(stc_buff,pos+1);
  40. }
复制代码
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:247
  • 最近打卡:2025-02-25 19:02:50

13

主题

198

回帖

1175

积分

金牌会员

积分
1175
发表于 2024-2-1 11:37:57 | 显示全部楼层
测试发送:seg1.2.3..4.5.6.7.8.,能正常在数码管上显示
1.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:247
  • 最近打卡:2025-02-25 19:02:50

13

主题

198

回帖

1175

积分

金牌会员

积分
1175
发表于 2024-2-2 12:15:32 | 显示全部楼层
接下来实现控制DIP40的LED状态
命令说明里面是可以单独对P0~P5的指定端口,库函数并没有实现这一点
我们自己的函数加上这个功能
1.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:247
  • 最近打卡:2025-02-25 19:02:50

13

主题

198

回帖

1175

积分

金牌会员

积分
1175
发表于 2024-2-2 12:17:20 | 显示全部楼层
实现STC_LED40_SendData函数
dat为操作管脚的数组,size为dat的长度,port为指定的管脚
port P0~P5端口的屏蔽位(bit0:P0, bit1:P1, ...)
  1. //功能:        控制DIP40的各个管脚上LED的状态
  2. void STC_LED40_SendData(const char *dat,uchar size,uchar port)
  3. {
  4.     if (size > 6)
  5.         size = 6;
  6.    
  7.     stc_buff[0] = 0x4c;
  8.     stc_buff[1] = 0x45;
  9.     stc_buff[2] = 0x44;
  10.     stc_buff[3] = 0x28;
  11.     stc_buff[4] = size+1;
  12.     stc_buff[5] = port;
  13.     memcpy(stc_buff+6,dat,size);
  14.     UartSendData(stc_buff,size+6);
  15. }
复制代码
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:247
  • 最近打卡:2025-02-25 19:02:50

13

主题

198

回帖

1175

积分

金牌会员

积分
1175
发表于 2024-2-2 12:17:46 | 显示全部楼层
添加测试函数,简单的流水灯
  1. //测试 STC_LED40_SendData
  2. void Test_STC_LED40()
  3. {
  4.     char buff[6];
  5.     uchar n;
  6.     for(n=0;n<8;n++)
  7.     {
  8.         memset(buff,~(0x01<<n),6);
  9.         STC_LED40_SendData(buff,6,0xff);
  10.         Delay_ms(500);
  11.     }
  12. }
复制代码
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:247
  • 最近打卡:2025-02-25 19:02:50

13

主题

198

回帖

1175

积分

金牌会员

积分
1175
发表于 2024-2-2 12:18:48 | 显示全部楼层
测试功能正常!
2.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:247
  • 最近打卡:2025-02-25 19:02:50

13

主题

198

回帖

1175

积分

金牌会员

积分
1175
发表于 2024-2-2 12:20:01 | 显示全部楼层
数码管/LED的代码:

UART.zip

15.71 KB, 下载次数: 78

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:247
  • 最近打卡:2025-02-25 19:02:50

13

主题

198

回帖

1175

积分

金牌会员

积分
1175
发表于 2024-2-2 12:50:41 | 显示全部楼层
LED60和LED40一样,只用把头信息中的第四位0x28改为0x40,长度判断改为8即可
  1. //功能:        控制DIP60的各个管脚上LED的状态
  2. void STC_LED60_SendData(const char *dat,uchar size,uchar port)
  3. {
  4.     if (size > 8)
  5.         size = 8;
  6.    
  7.     stc_buff[0] = 0x4c;
  8.     stc_buff[1] = 0x45;
  9.     stc_buff[2] = 0x44;
  10.     stc_buff[3] = 0x40;
  11.     stc_buff[4] = size+1;
  12.     stc_buff[5] = port;
  13.     memcpy(stc_buff+6,dat,size);
  14.     UartSendData(stc_buff,size+6);
  15. }
复制代码
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-7 03:18 , Processed in 0.130148 second(s), 88 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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