STM32/C51入门----流水灯

一、相关软件安装

相关软件: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一样,以下为运行结果

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值