实验二 软件开发环境搭建与 GPIO应用

实验二 软件开发环境搭建与 GPIO应用

相关电路代码文件下载https://wwe.lanzouw.com/ioorOyxic0h

一.实验目的

(1)熟悉STM32CubeMX的安装与使用。
(2)熟悉MDK Keil软件的安装与使用。
(3)熟悉Proteus仿真软件的使用。
(4)掌握STM32中GPIO的特性与应用方法。

二.实验内容

利用红色、绿色、黄色发光二极管和数码管设计一个交通灯。交通灯由一组红、黄、绿二极管和两个数码管组成。初始状态下,绿灯亮30秒,然后黄灯闪烁3秒,接着红灯亮30秒,如此重复上述亮灯过程。同一时刻只有一个灯亮,红灯和绿灯亮时数码管显示剩余秒数。
(1)利用Proteus软件基于STM32F103设计交通灯电路。
(2)利用STM32CubeMX和MDK Keil设计交通灯程序,并在Proteus软件上仿真。

三.电路设计说明

准备两个数码管,分别表示个位数和十位数。使用一组红黄蓝LED。外加10Ω电阻和+5V电源若干,数码管和LED灯都需要接电阻和电源。将显示十位数的数码管的7个引脚依次接到PA0-PA6上,将显示个位数的数码管的7个引脚依次接到PC0-PC6上,将红色LED灯的引脚接到PB0,黄色LED灯的引脚接到PB1,绿色LED灯的引脚接到PB2。

四.电路图

图 1 实验设计电路图
图 1 实验设计电路图

五.程序设计说明

首先将控制数码管显示的数据存储到number数组中,以便后面使用。编写一个显示倒计时的函数daojishi。daojishi函数传入参数是要显示倒计时的秒数,经过计算提取出个位数和十位数,然后输出显示。构建延时函数delay,设定进行50万次空循环为1秒。主程序中先定义控制红黄绿灯显示的数据。在whlie循环中,首先显示绿灯,延时30秒并调用daojishi函数显示倒计时。然后显示黄灯,延时3秒,在这3秒钟内每秒都改变一下状态,闪烁一下,在这期间将数码管关闭,不显示任何数据。最后显示绿灯,延时30秒并调用daojishi函数显示倒计时。

六.主要的程序源码

unsigned char number[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void daojishi(int sec){
     int shi,ge;
       shi = sec/10;
       ge = sec%10;
       GPIOA->ODR=~number[shi];
       GPIOC->ODR=~number[ge];
}
void delay(int sec){
   int  i;
   for (i=0;i<sec*500000;i++){}
}
int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  /* USER CODE BEGIN WHILE */
  unsigned int red = 0x0001;
  unsigned int yellow = 0x0002;
  unsigned int green = 0x0004;
  while (1)
  {
      int j;
      GPIOB->ODR=~(green);
      for(j=30;j>0;j--){
            daojishi(j);
            HAL_Delay(100);
      }
      GPIOA->ODR=0xff;
      GPIOC->ODR=0xff;
      GPIOB->ODR=~(yellow);
      for(j=3;j>0;j--){
            if (j%2==0){
               GPIOB->ODR=0xff;
            }else{
               GPIOB->ODR=~(yellow);
            }
            HAL_Delay(100);
      }
      GPIOB->ODR=~(red);
      for(j=30;j>0;j--){
            daojishi(j);
            HAL_Delay(100);
      }
  }
}

七.实验结果

开始仿真,首先亮绿灯,数码管从30开始倒计时,如图2所示。
图 2 绿灯亮时
图 2 绿灯亮时

绿灯倒计时结束时,绿灯熄灭,开始闪烁黄灯,数码管熄灭,如图3所示。
图 3 黄灯亮时
图 3 黄灯亮时

黄灯熄灭后亮红灯,数码管从30开始倒计时,如图4所示。红灯倒计时结束后恢复默认状态,如图2所示。
图 4 红灯亮时
图 4 红灯亮时

八.总结

这是第一次完整的嵌入式实验。实验要求设计一个红绿灯及其倒计时显示。由于是第一次实验,开始时不知道怎么设计电路,通过查找资料和同学帮助,设计好了电路图。然后是编程部分。编程部分比较简单,使用几个循环就可以了。通过这次实验,让我对嵌入式实验有了简单的了解,我以后还会继续学习,继续提高自己的能力。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值