0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用Proteus仿真STM32实现按键控制LED灯设计

DS小龙哥-嵌入式技术 2022-09-17 15:55 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

【摘要】 这篇文章介绍Proteus的下载,安装,建立工程,完成仿真运行。

1. 前言

Proteus是英国著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DSPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、KeilMATLAB等多种编译器。

这篇文章介绍Proteus的下载,安装,建立工程,完成仿真运行。

2. Proteus的下载安装

下载地址: https://pan.baidu.com/s/1jhveG9w1Hs6nL4IuZHTtlw 提取码: vswi

这是 Proteus 8.9 SP2 仿真软件安装包,软件已经注册,安装即可使用。内部带了汉化包,软件安装后将汉化安装包拷贝到软件的安装目录下覆盖即可。

将软件包下载下来之后,双击Proteus 8.9 SP2 Pro.exe然后按照提示点击下一步安装即可,中途的选项都可以选择默认。软件安装完毕后,如果想要汉化,将软件包里汉化补丁的目录下的文件夹拷贝到Proteus安装目录下覆盖即可。

image-20220524112712988

3. Proteus仿真STM32程序

3.1 运行软件

软件安装后,会在桌面创建快捷方式,Proteus软件需要使用管理员身份打开运行,否则会导致元器件库找不到报错。为了方便每次启动都是管理员身份,可以选择软件图标点击鼠标右键,设置管理员身份运行。

image-20220524113226320

3.2 新建工程

image-20220524113419854

设置工程名称和保存路径点击下一步。

image-20220524113541663image-20220524113624610image-20220524113645990

我这里是仿真STM32程序,这里就选择STM32的芯片。

image-20220524113753243image-20220524113808654

创建完成之后工程的样子。

image-20220524113837340

切换到原理图绘制页面,接着就可以进行原理图设计了。

image-20220524113919700

3.3 keil编写程序

这里要做的实验是,按键按下控制LED灯的亮灭,并且做一个闪光灯程序,先使用keil编写一个例子程序。

硬件连线:

按键使用PA1,按下为低电平,松开为高电平。

2盏LED灯分别连接在PB6和PB7口上。

(1)按键的初始化

#include "key.h"
/*
函数功能:按键初始化
硬件连接:PA1
特性: 按下为低电平---没按下高电平
*/
void KEY_Init(void)
{
    //开时钟
    RCC->APB2ENR|=1<<2;
    //配置模式
    GPIOA->CRL&=0xFFFFFF0F;
    GPIOA->CRL|=0x00000080;
    //上拉
    GPIOA->ODR|=1<<1;
}
/*
函数功能:函数扫描函数
函数参数: mode=1表示使用连续模式  mode=0使用单击模式
返回值:  2 3 4 5 表示具体的按钮   0表示没有按下
*/
u8 KEY_Scan(u8 mode)
{
   static u8 flag=1; //记录上一次按下的状态 
   if(mode)flag=1;
   if(flag&&(KEY_S3==0))
   {
       flag=0;
       delay_ms(20);
       if(KEY_S3==0)return 3;
   }
   else if(KEY_S3)
   {
       flag=1; 
   }
   return 0;
}

(2)主函数实现代码

#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
#include "key.h"

int main()
{
   u8 key_val;
   u32 time=0;
   LED_Init();
   BEEP_Init();
   KEY_Init();
   while(1)
   {
      key_val=KEY_Scan(0); //PA1
      if(key_val)
      {
         BEEP=!BEEP;
         LED1=!LED1;   //PB6
      }
      delay_ms(5);
      
      time++;
      if(time>=10)
      {
          time=0;
          LED2=!LED2; //PB7
      }
   }
}

(3)编译生成hex文件

image-20220524114428074image-20220524114448165

HEX文件生成后,可以导入到proteus里仿真运行

image-20220524114518378

3.4 设计原理图

(1)原理图缩放

把鼠标光标放在元器件上,滚动鼠标滚轮可以放大缩小元器件。

image-20220524114732940

(2)添加LED灯

点击这个P,添加元器件。

image-20220524114817543

(3)选择LED灯

输入元器件名称按下回车搜索,选择LED。

image-20220524115109870

(4)放置LED灯

点击空白处,点击鼠标右键,放置元器件。如果需要多盏LED灯,可以放置多个。

image-20220524115256218

如果元器件的位置需要拖动重新摆放,可以点击左边的黑色箭头,然后鼠标放在元器件上按下鼠标就可以拖动位置。或者选中元器件,点击鼠标右键,选择移动元器件。

image-20220524130415582

(5)LED连线设置属性

LED灯默认添加进来的位置是竖着的,如果设计不好连线,可以将鼠标光标放在LED元器件上,再点击鼠标右键,弹出对话框,改变属性方向。

image-20220524130811563

鼠标光标放在接线的口上就可以连线,LED灯接在PB6,PB7,这里将线连接起来。

image-20220524130944381

(6)添加电阻

image-20220524131202424

元器件放置好之后,点击电阻设置阻值为1K,电阻阻值默认为10K。

image-20220524131238627image-20220524131338521

设置好后的效果。

image-20220524131401791

(7)添加电源

再添加一个电源,完善电路。

鼠标光标放在空白处,点击鼠标右键,选择终端-POWER。

image-20220524131646071

添加后与电阻的另一边连接起来。

image-20220524131817531

(8)添加按键

因为要实现,按键按下控制LED灯,需要添加一个按键元器件。

点击元器件模式,切换到元器件模式下,点击P,输入BUTTON搜索。

image-20220524132104396image-20220524132200292

按键是接在PA1上的,放置好按键再设置一个电源。

image-20220524132525687

3.5 开始仿真

(1)设置hex文件

双击单片机,弹出对话框,设置HEX文件,晶振。HEX文件就是前面keil生成的。

image-20220524133941542

(2)配置供电网

在菜单栏里选择设计—配置供电网。

image-20220524134042616image-20220524134609461

(3)点击仿真

点击左下角的箭头开始仿真。

image-20220524134704301

成功运行后,可以看到LED灯已经在闪烁了。

image-20220524134755453

鼠标可以点击按键,可以控制LED灯的亮灭。

image-20220524134841591

到此,仿真就完成了。

3.6 常见的元器件名称

51单片机		AT89C52
按键			BUTTON
晶振			CRYSTAL
发光二极管		LED
蜂鸣器(无源)	SOUNDER
蜂鸣器(有源)	BUZZER
数码管			SEG(xSEG-xxx)
排阻			RESPACK
Analog ICs 模拟IC
CMOS 4000 series CMOS 4000系列
Data Converters 数据转换器
Diodes 二极管
Electromechanical 机电设备(只有电机模型)
Inductors 电感
Laplace Primitives Laplace变换器
Memory ICs 存储器IC
Microprocessor ICs 微处理器IC
Miscellaneous 杂类(只有电灯和光敏电阻组成的设备)
Modelling Primitives 模型基元
Operational Amplifiers 运算放大器
Optoelectronics 光电子器件
Resistors 电阻
Simulator Primitives 仿真基元
Switches & Relays 开关和继电器
Transistors 三极管 

常用的一些外设模块:
DHT11   温湿度传感器
DS18B20 温度传感器
SR04    超声波测距模块
SSD1306  0.96寸OLED
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    243

    文章

    24445

    浏览量

    687541
  • Proteus
    +关注

    关注

    79

    文章

    1692

    浏览量

    110170
  • STM32
    +关注

    关注

    2305

    文章

    11122

    浏览量

    371203
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【瑞萨RA6E2】 配置Keil开发环境+使用按键控制LED+串口/调试器烧录程序

    一、 概述 本报告旨在记录基于瑞萨RA6E2 MCU评估板的初步开发体验。主要内容包括: 软件开发环境的搭建与配置。 实现一个基础的GPIO控制功能:通过用户按键控制LED
    发表于 11-26 20:53

    LuatOS中PWM实现LED亮度调节与呼吸的实战教程

    PWM在LED亮度调节和呼吸效果实现方面有着广泛应用。在LuatOS环境中,如何高效运用PWM功能是开发者需要掌握的关键。本实战教程将通过具体案例,引导开发者快速上手,轻松实现
    的头像 发表于 11-11 19:05 7255次阅读
    LuatOS中PWM<b class='flag-5'>实现</b><b class='flag-5'>LED</b>亮度调节与呼吸<b class='flag-5'>灯</b>的实战教程

    【EASY EAI Nano-TB(RV1126B)开发板试用】+LED闪烁效果及按键控制

    过程见图2所示。 图2 触摸检测 将状态检测值保存到变量的方法如图3所示。 图3 状态存储 以按键控制LED的脚本程序如下: 经脚本程序的运行,其效果如图4和图5所示。 图4 点亮LED 图5 熄灭
    发表于 10-30 14:38

    【RA4M2-SENSOR】+按键控制LED

    RA4M2-SENSOR开发板配有LED按键利用它可进行GPIO口的输入输出测试,其电路见图1所示。 图1LED按键电路 为
    发表于 09-02 16:18

    集成线性充电,按键控制及直流电机驱动三合一芯片适用于携便式小家电应用

    描述:PC2107是一款针对于小家电市场设计的集成单节锂电池线性充电功能,轻触按键控制,功率MOS和续流二极管。PC2107支持100mA涓流充电, 500mA恒流充电和4.2V 恒压充电全过程
    发表于 08-02 10:31

    ZX8002D LED触摸调光集成芯片数据手册

    ZX8002D台灯按键三档调光IC芯片,单键调光IC输入电压2.5-5V,三档亮度调节,一路串输出,一个按键控制按键三档亮度调节。多用于LED
    发表于 07-07 10:16 12次下载

    【BPI-CanMV-K230D-Zero开发板体验】+控制与Python编程

    (3,Pin.IN, pull=Pin.PULL_UP, drive=7) print(pin.value()) 实现按键控制LED的程序如图6所示,这样在进行触摸操作时即可改变LED
    发表于 06-27 17:33

    AS32X601驱动系列教程 GPIO_按键检测详解

    在嵌入式系统开发中,GPIO(通用输入输出端口)是实现硬件与软件交互的关键组件。本节主要利用的时GPIO的输入采集功能,本节的主要功能为,读取板载按键,当按键按下时,对应
    的头像 发表于 05-23 16:44 652次阅读
    AS32X601驱动系列教程 GPIO_<b class='flag-5'>按键</b>检测详解

    第六章 GPIO输入——按键检测

    本篇文章讲述了如何在W55MH32上实现按键输入检测,以及按键输入检测的注意事项、实现方式和代码讲解等。掌握了按键检测方式之后,我们就可以用
    的头像 发表于 05-22 16:41 758次阅读
    第六章 GPIO输入——<b class='flag-5'>按键</b>检测

    如何把 电位器旋钮控制改为面板或按键控制

    ),所以希望能找到人帮忙把电位器调速旋钮改为面板或按键控制控制器或调速器,如下图。 。这款控制器可以在面板上设置/控制电机转速,但是这款控制
    发表于 05-18 07:40

    LED触摸开关调光调色温电源控制原理方案

    这款电源控制器是一款电容式触摸控制 ASIC,支持触摸输入和双路 PWM 输出,主要应用于触摸调光调色温 LED 灯具,该方案可以实现 LED
    发表于 05-07 09:37

    基于51/32单片机按键控制步进电机正反转,A4988驱动

    基于51/32单片机按键控制步进电机正反转,A4988驱动
    发表于 04-14 15:05 6次下载

    使用单片机驱动多组LED实现呼吸效果电路

    各位大佬,请教下,当前我需要使用单片机驱动控制20路并联LED,需要PWM驱动实现呼吸的效果,目前我是直接使用三极管驱动,这种电路会有什
    发表于 04-11 14:24

    stm32f401的PROTEUS仿真

    搭建了一个stm32f401的PROTEUS仿真模型,PA9接一个发光二极管,以闪亮的方式点亮,在KEIL 5 中编辑了源代码,仿真通过。 *附件:simulation.rar
    发表于 02-27 09:26

    【正点原子STM32H7R3开发套件试用体验】按键、串口通信

    KEY1 - PE8 KEY2 - PE7 项目实现 按键控制 GPIO 引脚输出电平状态,进而实现 LED 控制。 具体现象 1 按下
    发表于 12-30 16:53