0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用Proteus仿真STM32實(shí)現(xiàn)按鍵控制LED燈設(shè)計(jì)

DS小龍哥-嵌入式技術(shù) ? 2022-09-17 15:55 ? 次閱讀

【摘要】 這篇文章介紹Proteus下載,安裝,建立工程,完成仿真運(yùn)行。

1. 前言

Proteus是英國著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。是世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái),其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DSPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、KeilMATLAB等多種編譯器。

這篇文章介紹Proteus的下載,安裝,建立工程,完成仿真運(yùn)行。

2. Proteus的下載安裝

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

這是 Proteus 8.9 SP2 仿真軟件安裝包,軟件已經(jīng)注冊,安裝即可使用。內(nèi)部帶了漢化包,軟件安裝后將漢化安裝包拷貝到軟件的安裝目錄下覆蓋即可。

將軟件包下載下來之后,雙擊Proteus 8.9 SP2 Pro.exe然后按照提示點(diǎn)擊下一步安裝即可,中途的選項(xiàng)都可以選擇默認(rèn)。軟件安裝完畢后,如果想要漢化,將軟件包里漢化補(bǔ)丁的目錄下的文件夾拷貝到Proteus安裝目錄下覆蓋即可。

image-20220524112712988

3. Proteus仿真STM32程序

3.1 運(yùn)行軟件

軟件安裝后,會(huì)在桌面創(chuàng)建快捷方式,Proteus軟件需要使用管理員身份打開運(yùn)行,否則會(huì)導(dǎo)致元器件庫找不到報(bào)錯(cuò)。為了方便每次啟動(dòng)都是管理員身份,可以選擇軟件圖標(biāo)點(diǎn)擊鼠標(biāo)右鍵,設(shè)置管理員身份運(yùn)行。

image-20220524113226320

3.2 新建工程

image-20220524113419854

設(shè)置工程名稱和保存路徑點(diǎn)擊下一步。

image-20220524113541663image-20220524113624610image-20220524113645990

我這里是仿真STM32程序,這里就選擇STM32的芯片。

image-20220524113753243image-20220524113808654

創(chuàng)建完成之后工程的樣子。

image-20220524113837340

切換到原理圖繪制頁面,接著就可以進(jìn)行原理圖設(shè)計(jì)了。

image-20220524113919700

3.3 keil編寫程序

這里要做的實(shí)驗(yàn)是,按鍵按下控制LED燈的亮滅,并且做一個(gè)閃光燈程序,先使用keil編寫一個(gè)例子程序。

硬件連線:

按鍵使用PA1,按下為低電平,松開為高電平。

2盞LED燈分別連接在PB6和PB7口上。

(1)按鍵的初始化

#include "key.h"
/*
函數(shù)功能:按鍵初始化
硬件連接:PA1
特性: 按下為低電平---沒按下高電平
*/
void KEY_Init(void)
{
    //開時(shí)鐘
    RCC->APB2ENR|=1<<2;
    //配置模式
    GPIOA->CRL&=0xFFFFFF0F;
    GPIOA->CRL|=0x00000080;
    //上拉
    GPIOA->ODR|=1<<1;
}
/*
函數(shù)功能:函數(shù)掃描函數(shù)
函數(shù)參數(shù): mode=1表示使用連續(xù)模式  mode=0使用單擊模式
返回值:  2 3 4 5 表示具體的按鈕   0表示沒有按下
*/
u8 KEY_Scan(u8 mode)
{
   static u8 flag=1; //記錄上一次按下的狀態(tài) 
   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)主函數(shù)實(shí)現(xiàn)代碼

#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文件生成后,可以導(dǎo)入到proteus里仿真運(yùn)行

image-20220524114518378

3.4 設(shè)計(jì)原理圖

(1)原理圖縮放

把鼠標(biāo)光標(biāo)放在元器件上,滾動(dòng)鼠標(biāo)滾輪可以放大縮小元器件。

image-20220524114732940

(2)添加LED燈

點(diǎn)擊這個(gè)P,添加元器件。

image-20220524114817543

(3)選擇LED燈

輸入元器件名稱按下回車搜索,選擇LED。

image-20220524115109870

(4)放置LED燈

點(diǎn)擊空白處,點(diǎn)擊鼠標(biāo)右鍵,放置元器件。如果需要多盞LED燈,可以放置多個(gè)。

image-20220524115256218

如果元器件的位置需要拖動(dòng)重新擺放,可以點(diǎn)擊左邊的黑色箭頭,然后鼠標(biāo)放在元器件上按下鼠標(biāo)就可以拖動(dòng)位置?;蛘哌x中元器件,點(diǎn)擊鼠標(biāo)右鍵,選擇移動(dòng)元器件。

image-20220524130415582

(5)LED連線設(shè)置屬性

LED燈默認(rèn)添加進(jìn)來的位置是豎著的,如果設(shè)計(jì)不好連線,可以將鼠標(biāo)光標(biāo)放在LED元器件上,再點(diǎn)擊鼠標(biāo)右鍵,彈出對話框,改變屬性方向。

image-20220524130811563

鼠標(biāo)光標(biāo)放在接線的口上就可以連線,LED燈接在PB6,PB7,這里將線連接起來。

image-20220524130944381

(6)添加電阻

image-20220524131202424

元器件放置好之后,點(diǎn)擊電阻設(shè)置阻值為1K,電阻阻值默認(rèn)為10K。

image-20220524131238627image-20220524131338521

設(shè)置好后的效果。

image-20220524131401791

(7)添加電源

再添加一個(gè)電源,完善電路。

鼠標(biāo)光標(biāo)放在空白處,點(diǎn)擊鼠標(biāo)右鍵,選擇終端-POWER。

image-20220524131646071

添加后與電阻的另一邊連接起來。

image-20220524131817531

(8)添加按鍵

因?yàn)橐獙?shí)現(xiàn),按鍵按下控制LED燈,需要添加一個(gè)按鍵元器件。

點(diǎn)擊元器件模式,切換到元器件模式下,點(diǎn)擊P,輸入BUTTON搜索。

image-20220524132104396image-20220524132200292

按鍵是接在PA1上的,放置好按鍵再設(shè)置一個(gè)電源。

image-20220524132525687

3.5 開始仿真

(1)設(shè)置hex文件

雙擊單片機(jī),彈出對話框,設(shè)置HEX文件,晶振。HEX文件就是前面keil生成的。

image-20220524133941542

(2)配置供電網(wǎng)

在菜單欄里選擇設(shè)計(jì)—配置供電網(wǎng)。

image-20220524134042616image-20220524134609461

(3)點(diǎn)擊仿真

點(diǎn)擊左下角的箭頭開始仿真。

image-20220524134704301

成功運(yùn)行后,可以看到LED燈已經(jīng)在閃爍了。

image-20220524134755453

鼠標(biāo)可以點(diǎn)擊按鍵,可以控制LED燈的亮滅。

image-20220524134841591

到此,仿真就完成了。

3.6 常見的元器件名稱

51單片機(jī)		AT89C52
按鍵			BUTTON
晶振			CRYSTAL
發(fā)光二極管		LED
蜂鳴器(無源)	SOUNDER
蜂鳴器(有源)	BUZZER
數(shù)碼管			SEG(xSEG-xxx)
排阻			RESPACK
Analog ICs 模擬IC
CMOS 4000 series CMOS 4000系列
Data Converters 數(shù)據(jù)轉(zhuǎn)換器
Diodes 二極管
Electromechanical 機(jī)電設(shè)備(只有電機(jī)模型)
Inductors 電感
Laplace Primitives Laplace變換器
Memory ICs 存儲(chǔ)器IC
Microprocessor ICs 微處理器IC
Miscellaneous 雜類(只有電燈和光敏電阻組成的設(shè)備)
Modelling Primitives 模型基元
Operational Amplifiers 運(yùn)算放大器
Optoelectronics 光電子器件
Resistors 電阻
Simulator Primitives 仿真基元
Switches & Relays 開關(guān)和繼電器
Transistors 三極管 

常用的一些外設(shè)模塊:
DHT11   溫濕度傳感器
DS18B20 溫度傳感器
SR04    超聲波測距模塊
SSD1306  0.96寸OLED
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • led
    led
    +關(guān)注

    關(guān)注

    242

    文章

    23321

    瀏覽量

    661877
  • Proteus
    +關(guān)注

    關(guān)注

    79

    文章

    1692

    瀏覽量

    106701
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10915

    瀏覽量

    356735
收藏 人收藏

    評論

    相關(guān)推薦

    【正點(diǎn)原子STM32H7R3開發(fā)套件試用體驗(yàn)】按鍵、串口通信

    KEY1 - PE8 KEY2 - PE7 項(xiàng)目實(shí)現(xiàn) 按鍵控制 GPIO 引腳輸出電平狀態(tài),進(jìn)而實(shí)現(xiàn) LED 控制。 具體現(xiàn)象 1 按下
    發(fā)表于 12-30 16:53

    STM32項(xiàng)目分享:智能臺(tái)燈系統(tǒng)

    01—項(xiàng)目簡介1.功能詳解基于STM32智能臺(tái)燈系統(tǒng)。功能如下:亮度控制按鍵控制照明燈的亮度(5擋亮度)計(jì)時(shí)功能:按鍵啟動(dòng)計(jì)時(shí),累
    的頭像 發(fā)表于 11-29 01:02 ?770次閱讀
    <b class='flag-5'>STM32</b>項(xiàng)目分享:智能臺(tái)燈系統(tǒng)

    51單片機(jī)交通仿真

    交通直行控制,倒計(jì)時(shí)時(shí)間可調(diào)。資料包含程序源碼和proteus8.6仿真
    發(fā)表于 11-28 14:15 ?14次下載

    基于51單片機(jī)的遙控開關(guān)仿真(雙機(jī)通信)

    單片機(jī)最小系統(tǒng)、繼電器及LED構(gòu)成;(4)由于仿真無法模擬無線模塊通信,故利用單片機(jī)RXD、TXD端口模擬,通過遙控器的開關(guān)實(shí)現(xiàn)對主機(jī)
    的頭像 發(fā)表于 10-22 14:12 ?339次閱讀
    基于51單片機(jī)的遙控開關(guān)<b class='flag-5'>仿真</b>(雙機(jī)通信)

    【xG24 Matter開發(fā)套件試用體驗(yàn)】通過按鍵控制LED

    點(diǎn)完了,來玩點(diǎn)花樣,通過按鍵來點(diǎn)燈。 硬件 還是看這個(gè)圖 按鍵有 BUTTON0(PB02)和BUTTON1(PB03) 軟件 這里基于blink_baremetal 工程進(jìn)行修改適配。 這里進(jìn)行GPIO的配置,配置好兩個(gè)
    發(fā)表于 09-01 17:21

    【xG24 Matter開發(fā)套件試用體驗(yàn)】7-按鍵點(diǎn)亮LED

    1介紹 之前已經(jīng)點(diǎn)亮LED,并能通過延時(shí)實(shí)現(xiàn)LED閃爍,這里實(shí)現(xiàn)通過按左鍵控制
    發(fā)表于 08-03 14:54

    基于STM32單片機(jī)的智能窗簾控制系統(tǒng)設(shè)計(jì)

    系統(tǒng)以STM32單片機(jī)進(jìn)行主控,系統(tǒng)內(nèi)使用血氧傳感器進(jìn)行血氧檢測,通過電機(jī)控制采集血。按鍵控制采血和檢測。
    的頭像 發(fā)表于 06-28 14:24 ?2987次閱讀
    基于<b class='flag-5'>STM32</b>單片機(jī)的智能窗簾<b class='flag-5'>控制</b>系統(tǒng)設(shè)計(jì)

    求助,Proteus是否無法正確仿真STM32的開漏輸出?

    軟件:Proteus 8.16(Build36097) MCU:STM32F103C8T6,用Proteus庫中的STM32F103C8仿真
    發(fā)表于 05-29 06:29

    請問STM32是否有類似Proteus仿真tool?

    STM32是否有類似Proteus仿真tool?
    發(fā)表于 05-15 06:54

    兩片stm8s實(shí)現(xiàn)can通信,發(fā)送端通過按鍵控制接受端的pwm應(yīng)該怎么寫?

    兩片stm8s實(shí)現(xiàn)can通信,發(fā)送端通過按鍵控制接受端的pwm應(yīng)該怎么寫,使用的是stm8s208r8
    發(fā)表于 05-11 06:04

    請問怎么用按鍵控制1602中的5*8點(diǎn)陣亮滅及加減?

    請問怎么用按鍵控制1602中的5*8點(diǎn)陣亮滅及加減
    發(fā)表于 05-07 08:04

    請問STM32L4如何利用STM32CubeMX實(shí)現(xiàn)EXTI控制LED?

    STM32L4利用STM32CubeMX如何實(shí)現(xiàn)EXTI控制LED?
    發(fā)表于 04-09 08:07

    在測試STM328S103K3T6的按鍵控制亮滅時(shí),有些會(huì)自動(dòng)亮,為什么?

    在測試STM328S103K3T6的按鍵控制亮滅時(shí),有些會(huì)自動(dòng)亮,這是什么原因呢。
    發(fā)表于 04-03 07:15

    如何用proteus仿真繼電器控制直流電機(jī)正反轉(zhuǎn)

    使用Proteus軟件可以很方便地對繼電器控制直流電機(jī)的正反轉(zhuǎn)進(jìn)行仿真。本文將詳細(xì)介紹如何使用Proteus進(jìn)行仿真,包括電路設(shè)計(jì)、
    的頭像 發(fā)表于 02-23 15:53 ?5334次閱讀

    proteus仿真STM32無法識(shí)別輸入引腳的電平

    我用STM32CubeMX6.0.1+MDK5.39+Proteus8.6,想練習(xí)按鍵功能,按下按鍵切變LED1、LED2的亮滅。但
    發(fā)表于 01-23 13:56