MDK5软件中STM32程序编译入门及Proteus 51程序设计仿真

    科技2025-10-19  19

    本文主要介绍MDK5的简单使用,并通过实例来介绍如何完成一个stm32的简单程序编译以及在Proteus中如何完成一个51程序设计和仿真。

    文章目录

    一、MDK5入门1、MDK5 简单设置2、STM32编译一个led灯程序 二、利用Proteus软件完成一个51程序设计和仿真

    一、MDK5入门

    1、MDK5 简单设置

           主要是设置一些关键字、注释、数字等的颜色和字体。打开安装好的MDK5软件,点击右上角的图标;

           然后会弹出下面这个对话框,在对话框中Editor这一栏中,将Encoding这一项设置为Chinese GB2312(Simplified),设置为这个选项是为了更好的支持中文(否则,当我们拷贝到其它地方的时候,可能会出现乱码),同时将Tab size设置为4。

           之后,再选中Colors&Fonts选项卡,设置代码字体和颜色,由于在嵌入式开发中一般使用C语言,所以在Window框内选中C/C++ Editor Files,最后点击OK键。

    2、STM32编译一个led灯程序

    首先,新建一个工程;

    接着会弹出一个框,填写好文件名,点击保存;

    选择STM32F103

    选中STM32f103ZE,点击ok

    会弹出下面这个框,直接关掉就行

    这样就创建好了一个工程,接下来新建一个文本。

    在文本框里可以开始编写程序了,写完之后点击保存;

    接着会弹出一个文件框,在文件名那一栏写上自己想命名的.c文件即可,点击保存;

    右击Source Group1,选中Add existing Files to Group;

    在弹出的文件框里,找到我们刚刚命名的.c文件,选中,点击Add添加,然后关闭文件框;

    接下来进行编译即可。

    注意:如果大家在注册MDK时发现失败时,可以重新打开注册几次,都以管理员身份运行。

    二、利用Proteus软件完成一个51程序设计和仿真

    利用Proteus软件完成一个红路灯51程序仿真,程序代码如下:

    #include <reg51.h> #define uchar unsigned char #define uint unsigned int #define LED_ON 0 #define LED_OFF 1 #define RED 1 #define GREEN 2 #define YELLOW 3 sbit KEY_PORT=P3^6; sbit RLED0 =P1^2; sbit YLED0 =P1^1; sbit GLED0 =P1^0; sbit RLED1 =P1^3; sbit YLED1 =P1^4; sbit GLED1 =P1^5; uchar code table[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}; //共阴数码管码表 uchar data_buf[4]; int Z_time=0,C_time=0; bit emergent_flag=0; uchar led_status_zhu=GREEN,led_status_ci=RED; void delay(uchar ms) { uchar j,k; for(j=0; j<ms; j++) for(k=0; k<124; k++); } void zhu_led(uchar mode) { switch(mode) { case GREEN:RLED0=LED_OFF; YLED0=LED_OFF; GLED0=LED_ON; break; case YELLOW:RLED0=LED_OFF; YLED0=LED_ON; GLED0=LED_OFF; break; case RED:RLED0=LED_ON; YLED0=LED_OFF; GLED0=LED_OFF; break; } } void ci_led(uchar mode) { switch(mode) { case RED: RLED1=LED_ON; YLED1=LED_OFF; GLED1=LED_OFF; break; case GREEN:RLED1=LED_OFF; YLED1=LED_OFF; GLED1=LED_ON; break; case YELLOW: RLED1=LED_OFF; YLED1=LED_ON; GLED1=LED_OFF; break; } } void display() { static uchar temp_num=0; data_buf[0]=Z_time/10; data_buf[1]=Z_time%10; data_buf[2]=C_time/10; data_buf[3]=C_time%10; P0=0; P2=~(1<<temp_num); P0=table[data_buf[temp_num]]; temp_num++; if(temp_num>3)temp_num=0; } void Init(void) { TMOD=0X01; TH0=(65536-5000)/256; TL0=(65536-5000)%256; EA=1; ET0=1; TR0=1; RLED0=LED_OFF; YLED0=LED_OFF; GLED0=LED_ON; RLED1=LED_ON; YLED1=LED_OFF; GLED1=LED_OFF; Z_time=37; C_time=40; } void main() { uchar temp=0; Init(); while(1) { if(temp&&(KEY_PORT==0)) { delay(10); temp=0; if(KEY_PORT==0) { emergent_flag=~emergent_flag; } } else if(KEY_PORT==1)temp=1; if(emergent_flag==0) { zhu_led(led_status_zhu); ci_led(led_status_ci); } else { RLED0=LED_ON; YLED0=LED_OFF; GLED0=LED_OFF; RLED1=LED_ON; YLED1=LED_OFF; GLED1=LED_OFF; } display(); } }//5ms定时器中断 void time0(void) interrupt 1 using 1 { static uint temp_sec_time=0; if(emergent_flag==0) { temp_sec_time++; if(temp_sec_time>=200) { temp_sec_time=0; Z_time--; if(Z_time<=0) { if(led_status_zhu==GREEN) { led_status_zhu=YELLOW; Z_time=3; } else if(led_status_zhu==YELLOW) { Z_time=20; led_status_zhu=RED; } else if(led_status_zhu==RED) { Z_time=37; led_status_zhu=GREEN; } } C_time--; if(C_time<=0) { if(led_status_ci==YELLOW) { C_time=40; led_status_ci=RED; } else if(led_status_ci==RED) { C_time=17; led_status_ci=GREEN; } else if(led_status_ci==GREEN) { C_time=3; led_status_ci=YELLOW; } } } } TH0=(65536-5000)/256; TL0=(65536-5000)%256; }

    将上述代码写入Keil软件中,一定要选择使用51芯片,然后将其输出为.hex文件。 注:安装MDK时软件名也是Keil,但是其中没有51芯片,所以无法编译51程序,需要另外下载一个keil软件。

    接下来在Proteus软件中将仿真图排版出来:

    双击AT89C51芯片,点击编辑框里面的Program File右边的图标,选择生成的.hex文件。再点击OK键;

    最后点击左下角运行键即可运行。        到此,一个51程序仿真就结束啦!

           小编也是刚刚入手MDK stm32,很多都还不太懂,欢迎大家阅读指正^ _ ^

    Processed: 0.009, SQL: 8