已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也

给你个参考 display.c

<code class="language-c">#include "stm8s.h"
#include "display.h"

#define A(a) a ? (GPIOA->ODR |= GPIO_PIN_1):(GPIOA->ODR &= (~GPIO_PIN_1))
#define B(a) a ? (GPIOF->ODR |= GPIO_PIN_4):(GPIOF->ODR &= (~GPIO_PIN_4))
#define C(a) a ? (GPIOC->ODR |= GPIO_PIN_5):(GPIOC->ODR &= (~GPIO_PIN_5))
#define D(a) a ? (GPIOC->ODR |= GPIO_PIN_7):(GPIOC->ODR &= (~GPIO_PIN_7))
#define E(a) a ? (GPIOD->ODR |= GPIO_PIN_0):(GPIOD->ODR &= (~GPIO_PIN_0))
#define F(a) a ? (GPIOA->ODR |= GPIO_PIN_2):(GPIOA->ODR &= (~GPIO_PIN_2))
#define G(a) a ? (GPIOC->ODR |= GPIO_PIN_4):(GPIOC->ODR &= (~GPIO_PIN_4))
#define DP(a) a ? (GPIOC->ODR |= GPIO_PIN_6):(GPIOC->ODR &= (~GPIO_PIN_6))
//                                0    1    2    3    4    5    6    7    8    9    P   -
const uint8_t display_data[] = {0xFC,0X60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFF,0xF6,0xCE,0x02};
//void Display_b(uint8_t data);
//void Display_3(uint16_t data,uint8_t dp,uint8_t dig);
//显示刷新函数
/*
uint8_t dp  == 小数点高有效 3'b000 ~ 3'b111
*/

void Display(uint8_t dp)
{
  extern uint8_t dig_1,dig_2,dig_3,display_cnt;
  
      
     switch(display_cnt)
      {

        case 0: GPIOD->ODR &= (~GPIO_PIN_7);//DIG3_LOW
                A(dig_1 & 0X80);
                B(dig_1 & 0X40);
                C(dig_1 & 0X20);
                D(dig_1 & 0X10);
                E(dig_1 & 0x08);
                F(dig_1 & 0X04);
                G(dig_1 & 0X02);
                DP(dp & 0x04);
                GPIOD->ODR |= GPIO_PIN_3;//DIG1_HIGH 
                break;
        
        case 1: GPIOD->ODR &= (~GPIO_PIN_3);//DIG1_LOW            
                A(dig_2 & 0X80);
                B(dig_2 & 0X40);
                C(dig_2 & 0X20);
                D(dig_2 & 0X10);
                E(dig_2 & 0x08);
                F(dig_2 & 0X04);
                G(dig_2 & 0X02);
                DP(dp & 0x02);
                GPIOD->ODR |= GPIO_PIN_2;//DIG2_HIGH
                break;
        case 2: GPIOD->ODR &= (~GPIO_PIN_2);//DIG2_LOW
                A(dig_3 & 0X80);
                B(dig_3 & 0X40);
                C(dig_3 & 0X20);
                D(dig_3 & 0X10);
                E(dig_3 & 0x08);
                F(dig_3 & 0X04);
                G(dig_3 & 0X02);
                DP(dp & 0x01);
                GPIOD->ODR |= GPIO_PIN_7;//DIG3_HIGH
                break;
      
  }
  display_cnt++;
  if(display_cnt == 3)
    display_cnt = 0;
  
  
}

void Display_Init(void)
{
  //PA 1 2
  GPIO_Init(GPIOA,(GPIO_Pin_TypeDef)(GPIO_PIN_1 | GPIO_PIN_2), GPIO_MODE_OUT_PP_LOW_FAST);
  //PC 4 5 6 7
  GPIO_Init(GPIOC,(GPIO_Pin_TypeDef)(GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7), GPIO_MODE_OUT_PP_LOW_FAST);
  //PD 0 2 3 7
  GPIO_Init(GPIOD,(GPIO_Pin_TypeDef)(GPIO_PIN_0 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_7), GPIO_MODE_OUT_PP_LOW_FAST);
  //PF 4
  GPIO_Init(GPIOF,GPIO_PIN_4, GPIO_MODE_OUT_PP_LOW_FAST);
  

}

/*
数码管显示数据刷新
uint16_t data == 显示数据 0 ~ 999  
*/
void Display_update(uint16_t data)
{
  extern uint8_t dig_1,dig_2,dig_3; 
  dig_1 = display_data[((uint8_t)(data/100))] ;
  dig_2 = display_data[((uint8_t)((data%100)/10))];
  dig_3 = display_data[((uint8_t)(data%10))];
  
}
</code>

display.h

<code class="language-c">#include "stm8s.h"
#ifndef DISPLAY_H_
#define DISPLAY_H_

void Display_Init(void);//数码管初始化
void Display(uint8_t dp);//数码管刷新
void Display_update(uint16_t data);//数码管显示数据更新



#endif
</code>

我是stm8io冲突没法使用整组io只能这么搞了 每次调用显示函数移位一次每次显示小号69 -71时钟周期

文号 / 821740

千古风流
名片发私信
学术分 1
总主题 76 帖总回复 2026 楼拥有证书:进士 学者 机友 笔友
注册于 2012-11-16 16:45最后登录 2024-11-22 12:09
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步

个人简介

null

文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{f.progress}}%
处理中..
上传失败,点击重试
等待中...
{{f.name}}
空空如也~
(视频){{r.oname}}
{{selectedResourcesId.indexOf(r.rid) + 1}}
处理中..
处理失败
插入表情
我的表情
共享表情
Emoji
上传
注意事项
最大尺寸100px,超过会被压缩。为保证效果,建议上传前自行处理。
建议上传自己DIY的表情,严禁上传侵权内容。
点击重试等待上传{{s.progress}}%处理中...已上传,正在处理中
空空如也~
处理中...
处理失败
加载中...
草稿箱
加载中...
此处只插入正文,如果要使用草稿中的其余内容,请点击继续创作。
{{fromNow(d.toc)}}
{{getDraftInfo(d)}}
标题:{{d.t}}
内容:{{d.c}}
继续创作
删除插入插入
插入公式
评论控制
加载中...
文号:{{pid}}
加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}
ID: {{user.uid}}