一、相关软件安装
相关软件:keil、proteus
软件安装可从其他博客上找到,这里主要介绍相关软件设置
二、C51实现流水灯:
1.打开keil,点击project,点击new uVision project,设置项目名字、保存。然后如下图选择AT89C51,点击OK,最后点击是即可。
然后再创建C语言文件,如下图,在Traget1 右键点击Source Group 1,Add new item,选择C即可创建
然后点击魔术棒,点击Output,点击Creat HEX,点击OK,在代码输入后点击build或rebuild(即下图3,4)即可生成.hex文件
2.代码创建:
#include<reg52.h>
void delay(int a)
{
int i,j;
for(i=0;i<a;i++)
{
for(j=0;j<1000;j++)
{}
}
}
void main()
{
while(1)
{
P0=0xfe;//使对应位置1,其余为0,以下同理
delay(50);
P0=0xfd;
delay(50);
P0=0xfb;
delay(50);
P0=0xf7;
delay(50);
P0=0xef;
delay(50);
P0=0xdf;
delay(50);
P0=0xbf;
delay(50);
P0=0x7f;
delay(50);
}
}
3.proteus仿真
先创建工程,可从左上角文件里点击创建工程,或直接点击开始设计里的创建工程,设置名称
此后可一直点击下一步,然后点击元件模式,按P,在keywords里输入对应的器件名称:ATM89C51,LED(此处可随便选择颜色)RES。
然后点击电路模式,选择power,再联线
再右键ATM89C51,点击Program File,导入.hex文件,点击确定
运行结果:
三、STM32实现流水灯:
1.先下载STM32固态库,此实验以及后续实验可能会用到。这里推荐B站江协科技STM32入门课程里链接下载,keil里使用STM32需要复杂的操作,占用篇幅过多,可在江协科技里找到,这里不再过多描述。下图为结果
2.代码创建
#include "stm32f10x.h"
void delay(int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<100;j++)
{}
}
}
uint32_t i;
int main(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//打开GPIOC时钟
GPIO_InitTypeDef GPIO_InitStructure;//定义结构体
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;//定义引脚
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//设置输出模式为推挽输出
GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化
GPIOC->BSRR=0xff;
while (1)
{
for(i=0;i<8;i++)
{
delay(50);
GPIOC->BRR=(1<<i); //通过位移使灯亮
delay(50);
GPIOC->BSRR=(1<<i); //通过位移使灯灭
}
}
}
3.proteus仿真:
该部分基本与C51相同,不过得将AT89C51替换成STM32F10系列软件。
此时可能存在错误,显示为not found GND/VSS等,点击设计,点击配置供电网
选择VCC/VDD,将VDDA、VSSA增加到网络连接部分
其余部分跟C51一样,以下为运行结果