找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1378|回复: 0
收起左侧

关于STM8/32单片机使数码管简便显示的方法

[复制链接]
ID:728915 发表于 2021-10-9 11:30 | 显示全部楼层 |阅读模式
请教各位大佬,本人比较菜,用STM8写了一个程序,其中关于点亮数码管的部分,虽然能用,但是感觉特别繁琐。然后看网上其它人写的,说实话,可能个人脑瓜不是很灵光,有点看不懂。所以想请各位大佬多抬贵手,详细注释一下,万分感谢!!!
/****以下是代码内容,重复部分就不一一列举了****/

//定义ON/OFF
#define ON  1
#define OFF 0

//第1-4位(从左往右)数码管 使能/不使能定义。 数码管:U4,4位,红色共阴
#define shumaguan_U4_1_shineng(ON_OFF)  if(ON_OFF==OFF)GPIO_WriteHigh(GPIOC, GPIO_PIN_6);\
                                          else GPIO_WriteLow(GPIOC, GPIO_PIN_6)                        
#define shumaguan_U4_2_shineng(ON_OFF)  if(ON_OFF==OFF)GPIO_WriteHigh(GPIOC, GPIO_PIN_5);\
                                          else GPIO_WriteLow(GPIOC, GPIO_PIN_5)                        

//定义数码管的a,b亮/灭,每段一个I/O口控制,高电平点亮                        
#define shumaguan_U4_xianshi_a(ON_OFF)    if(ON_OFF==ON)GPIO_WriteHigh(GPIOD, GPIO_PIN_0);\
                                            else GPIO_WriteLow(GPIOD, GPIO_PIN_0)
#define shumaguan_U4_xianshi_b(ON_OFF)    if(ON_OFF==ON)GPIO_WriteHigh(GPIOD, GPIO_PIN_1);\
                                            else GPIO_WriteLow(GPIOD, GPIO_PIN_1)

//定义数码管分别显示0-1、.(小数点)亮/灭,多个I/O口同时组合使能,高电平点亮
#define shumaguan_U4_xianshi_0(ON_OFF)    if(ON_OFF==ON)GPIO_WriteHigh(GPIOD, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2| GPIO_PIN_3|GPIO_PIN_4| GPIO_PIN_5);\
                                            else GPIO_WriteLow(GPIOD, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2| GPIO_PIN_3|GPIO_PIN_4| GPIO_PIN_5)            
#define shumaguan_U4_xianshi_1(ON_OFF)    if(ON_OFF==ON)GPIO_WriteHigh(GPIOD, GPIO_PIN_1|GPIO_PIN_2);\
                                            else GPIO_WriteLow(GPIOD, GPIO_PIN_1|GPIO_PIN_2)         

//数码管显示“[]”亮/灭,多个I/O口同时组合使能,高电平点亮
#define shumaguan_U4_xianshi_fangkuang_zuoce(ON_OFF)       if(ON_OFF==ON)GPIO_WriteHigh(GPIOD, GPIO_PIN_0|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5);\
                                                             else GPIO_WriteLow(GPIOD, GPIO_PIN_0|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5)  
#define shumaguan_U4_xianshi_fangkuang_shangxia(ON_OFF)    if(ON_OFF==ON)GPIO_WriteHigh(GPIOD, GPIO_PIN_0|GPIO_PIN_3);\
                                                             else GPIO_WriteLow(GPIOD, GPIO_PIN_0|GPIO_PIN_3)  

//各I/O口的引脚初始化
void GPIO_Config()
{   
   //数码管U4位选引脚 PC4-7(低电平亮) , 数码管显示引脚PD0-7 (高电平亮)初始化
   GPIO_Init(GPIOC, GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7, GPIO_MODE_OUT_PP_LOW_FAST);   //初始化使数码管1-4默认为全选择状态
   GPIO_Init(GPIOD, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2| GPIO_PIN_3|GPIO_PIN_4| GPIO_PIN_5|GPIO_PIN_6| GPIO_PIN_7, GPIO_MODE_OUT_PP_HIGH_FAST);

}

/****使用时,向下面这样ON/OFF就能让数码管亮/灭了
shumaguan_U4_1_shineng(ON);
shumaguan_U4_xianshi_0(ON);
shumaguan_U4_xianshi_0(OFF);
******/
虽然按照这种罗列的方式也能使数码管显示想要的图案,但是,太繁琐了,所以,我想学习一下各大佬优秀的方法。在此先感谢!

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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