利用Proteus仿真STM32实现按键控制LED灯设计
时间:2022-08-20 22:00:00
1. 前言
Proteus以英国命名EDA工具(仿真软件)从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换PCB设计,真正实现了从概念到产品的完整设计。它是世界上唯一电路模拟软件,PCB其处理器模型支持8051、HC11、PIC10/12/16/24/DSPIC33、AVR、ARM、8086和MSP2010年又增加了430等。Cortex和DSP其他系列处理器模型不断增加。它还支持编译IAR、Keil和MATLAB等各种编译器。
本文介绍Proteus下载、安装、建立工程,完成模拟运行。
2. Proteus的下载安装
下载地址: https://pan.baidu.com/s/1jhveG9w1Hs6nL4IuZHTtlw 提取码: vswi
这是 Proteus 8.9 SP2 模拟软件安装包,软件已注册,安装即可使用。内部有一个汉化包。软件安装后,将汉化安装包复制到软件安装目录下。
将软件包下载下来之后,双击Proteus 8.9 SP2 Pro.exe
然后按照提示点击下一步安装,默认可以选择中间的选项。软件安装完成后,如果您想汉化,请将软件包中汉化补丁目录下的文件夹复制到Proteus
覆盖安装目录。
3. Proteus仿真STM32程序
3.1 运行软件
软件安装后,桌面上会创快捷的方式,Proteus软件需要作为管理员打开,否则元器件库找不到错误。为了方便每次启动都是管理员身份,您可以选择软件图标点击鼠标右键,设置管理员身份操作。
3.2 新建工程
点击下一步设置工程名称和保存路径。
项目建成后的样子。
切换到原理图绘制页面,然后设计原理图。
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=表示使用连续模式 mode=使用单击模式 返回值: 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文件
HEX文件生成后,可以导入到proteus里仿真运行
3.4 设计原理图
(1)原理图缩放
把鼠标光标放在元器件上,滚动鼠标滚轮可以放大缩小元器件。
(2)添加LED灯
点击这个P,添加元器件。
(3)选择LED灯
输入元器件名称按下回车搜索,选择LED。
(4)放置LED灯
点击空白处,点击鼠标右键,放置元器件。如果需要多盏LED灯,可以放置多个。
如果元器件的位置需要拖动重新摆放,可以点击左边的黑色箭头,然后鼠标放在元器件上按下鼠标就可以拖动位置。或者选中元器件,点击鼠标右键,选择移动元器件。
(5)LED连线设置属性
LED灯默认添加进来的位置是竖着的,如果设计不好连线,可以将鼠标光标放在LED元器件上,再点击鼠标右键,弹出对话框,改变属性方向。
鼠标光标放在接线的口上就可以连线,LED灯接在PB6,PB7,这里将线连接起来。
(6)添加电阻
元器件放置好之后,点击电阻设置阻值为1K,电阻阻值默认为10K。
设置好后的效果。
(7)添加电源
再添加一个电源,完善电路。
鼠标光标放在空白处,点击鼠标右键,选择终端-POWER。
添加后与电阻的另一边连接起来。
(8)添加按键
因为要实现,按键按下控制LED灯,需要添加一个按键元器件。
点击元器件模式,切换到元器件模式下,点击P
,输入BUTTON
搜索。
按键是接在PA1上的,放置好按键再设置一个电源。
3.5 开始仿真
(1)设置hex文件
双击单片机,弹出对话框,设置HEX文件,晶振。HEX文件就是前面keil生成的。
(2)配置供电网
在菜单栏里选择设计—配置供电网。
(3)点击仿真
点击左下角的箭头开始仿真。
成功运行后,可以看到LED灯已经在闪烁了。
鼠标可以点击按键,可以控制LED灯的亮灭。
到此,仿真就完成了。
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