找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2911|回复: 1
打印 上一主题 下一主题
收起左侧

接上一个,STM32寄存器方式使数码管显示0~99

[复制链接]
跳转到指定楼层
楼主
ID:814785 发表于 2020-11-13 08:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
数码管显示.c和.h文件.h文件内容


#ifndef __DISPLAY_H
#define __DISPLAY_H
#include "sys.h"
#include "delay.h"

void display_Init(void);
void display(void);

#endif

C文件内容
#include "display.h"

u8 table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
u8 num=0,g=0,s=0;
void display_Init(void)
{
        RCC->APB2ENR=1<<2;                        //使能PA时钟
        GPIOA->CRL&=0x00000000;
        GPIOA->CRL|=0x33333333;                //端口配置低寄存器配置PA.0~PA.7为推挽输出
        GPIOA->CRH&=0x00000000;
        GPIOA->CRH|=0x33333333;                //端口配置高寄存器配置PA.8~PA.15为推挽输出
       
        GPIOA->BSRR&=0x00000000;
        GPIOA->BSRR|=0xffff0000;        //使用端口位设置/清除寄存器,使PA端口输出为低电平
}
void display(void)
{
        static u16 j=0;
        s=num/10;
        g=num%10;
        j++;
        if(j==300)
        {
                j=0;
                if(num<100)
                        num++;
                else
                        num=0;
        }       
        GPIOA->ODR=table[s];
        GPIOA->BSRR&=0x00000000;
        GPIOA->BSRR|=0x01000080;        //使用端口位设置/清除寄存器,使PA.7输出高电平,数码管十位显示
        delayms(1);       
        GPIOA->ODR=table[g];
        GPIOA->BSRR&=0x00000000;
        GPIOA->BSRR|=0x00800100;        //使用端口位设置/清除寄存器,使PA.8输出高电平,数码管十位显示
        delayms(1);       
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:337139 发表于 2020-11-24 11:45 | 只看该作者
很好的,如果是加上外部按键来控制那就是最好的。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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