标题: 使用STM32F103的按键控制数码管加和减Proteus仿真程序 [打印本页]

作者: Gd12    时间: 2021-6-21 23:54
标题: 使用STM32F103的按键控制数码管加和减Proteus仿真程序
STM32的控制数码管按键设计
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include "main.h"

  2. uint16_t table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

  3. void key_init()
  4. {
  5.         GPIO_InitTypeDef gpio_init;
  6.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
  7.         //将PA设置为推挽输出
  8.         gpio_init.GPIO_Mode=GPIO_Mode_IPU;
  9.         gpio_init.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;
  10.         GPIO_Init(GPIOB,&gpio_init);
  11. }

  12. void seg7_init()
  13. {
  14.         GPIO_InitTypeDef gpio_init;
  15.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
  16.         //将PA设置为推挽输出
  17.         gpio_init.GPIO_Mode=GPIO_Mode_Out_PP;
  18.         gpio_init.GPIO_Pin=GPIO_Pin_All;
  19.         gpio_init.GPIO_Speed=GPIO_Speed_50MHz;
  20.         GPIO_Init(GPIOA,&gpio_init);
  21. }


  22. uint8_t  button0()
  23. {
  24.         return(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0));
  25. }

  26. uint8_t  button1()
  27. {
  28.         return(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1));
  29. }

  30. /*****************************************
  31.         main函数

  32. *****************************************/
  33. int main(void){
  34.         uint8_t i,j=1;
  35.         uint16_t temp;
  36.         key_init();
  37.         seg7_init();
  38.         GPIO_Write(GPIOA,table[j-1]);
  39.         while(1){
  40.                
  41.                 if(button0())
  42.                 {
  43.                         delay_ms(10);
  44.                         if(button0())
  45.                         {
  46.                                 while(button0());
  47.                                  j++;
  48.                                 if(j>16)
  49.                                         j=1;
  50.                                 GPIO_Write(GPIOA,table[j-1]);
  51.                         }
  52.                 }
  53.                
  54.                 if(button1())
  55.                 {
  56.                         delay_ms(10);
  57.                         if(button1())
  58.                         {
  59.                                 while(button1());
  60.                                  j--;
  61.                                 if(j==0)
  62.                                         j=16;
  63.                                 GPIO_Write(GPIOA,table[j-1]);
  64.                         }
  65.                 }
  66.                
  67.         }
  68.         //return 0;
  69. }
复制代码

所有资料51hei提供下载:
STM32F103_KEY_7SEG.7z (868.44 KB, 下载次数: 173)



作者: 3362581719    时间: 2022-12-29 16:37
为什么下载了过后打不开文件哎?
作者: heicad    时间: 2022-12-29 16:57
3362581719 发表于 2022-12-29 16:37
为什么下载了过后打不开文件哎?

可以打开啊,下载后用最新版winrar解压,用Proteus8.13打开仿真文件,记住要选择好Output目录下面的Project.hex文件,效果如下:

51hei.gif (98.82 KB, 下载次数: 161)

51hei.gif

作者: amshijun    时间: 2023-11-30 13:53
下载了,也选择好Output目录下面的Project.hex文件了,但是运行后数码管不亮,点按键没有变化
作者: 拒絕釹铯    时间: 2023-12-1 08:45
我在Proteus里面找不到单片机
作者: wxybrave    时间: 2024-6-22 16:30
请问一下GPIO_Write函数里设怎么写的




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1