(学习日记)2023.2.5

写在前面:
由于时间的不足与学习的碎片化,写博客变得有些奢侈。
但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。
既然如此
不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录,记录笔者认为最通俗、最有帮助的资料,并尽量总结几句话指明本质,以便于日后搜索起来更加容易。


标题的结构如下:“类型”:“知识点”——“简短的解释”
部分内容由于保密协议无法上传。


点击此处进入学习日记的总目录

一、跨越半年的接力

经历了半年时间的坎坎坷坷,终于又有时间开始学习日记计划,这次时间较为充裕,打算从根本开始过一遍,因为每天仅能分两小时程序相关,故不会内容太多。



二、51:搭配编程环境——新建、配置并导入

  1. 新建并保存工程
    在这里插入图片描述
    在这里插入图片描述

  2. 选择器件型号
    在这里插入图片描述

  3. 添加文件
    在这里插入图片描述

  4. 修改编码规范(注释可以用中文),选择生成二进制文件(.hex
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

更改护眼背景

  1. 写代码并编译
    在这里插入图片描述
  2. 打开ISP,挑好芯片型号,找到编译的二进制文件(.hex),导入到板子里
    在这里插入图片描述

在这里插入图片描述

链接:
51单片机入门教程-2020版 程序全程纯手打 从零开始入门

三、51:点亮LED

  1. 头文件 #include <REGX52.H>
    在这里插入图片描述
  2. 看原理图,发现P2哪个引脚低电平,哪个灯亮
    在这里插入图片描述
  3. P2定义低电平
    在这里插入图片描述

如果感觉十六进制不太直观的话,可以使用我基于 quicker 编写的一个小工具

在这里插入图片描述

  1. 编译并导入板子

四、51:LED流水灯

考虑到重复性,每次只写新碰见的知识。

  1. 搜索时钟频率范围
    在这里插入图片描述

  2. 选择时钟频率(只要在范围内,可以更改)
    在这里插入图片描述

  3. 设定定时长度、指令集,生成时延函数,复制到程序里,并添加头文件#include <INTRINS.H>
    在这里插入图片描述
    在这里插入图片描述

  4. 编译并导入板子

六、51:51中的数据类型大小以及数据范围

在这里插入图片描述

七、51:独立按键控制亮灯左右移动

  1. 查看原理图,发现按键后引脚会输入低电平。
    在这里插入图片描述
  2. 输入程序
#include <REGX52.H>

//控制灯左右移动

void Delay(int xms)		//@12.000MHz
{
	unsigned char i, j;

	while--xms)
	{
		i = 12;
		j = 169;
		do
		{
			while (--j);
		} while (--i);
	}
	
}


void LED_bright(int which)
{
	P2=0xFF;
	switch(which)
	{
		case 1:P2_0=0;break;
		case 2:P2_1=0;break;
		case 3:P2_2=0;break;
		case 4:P2_3=0;break;
		case 5:P2_4=0;break;
		case 6:P2_5=0;break;
		case 7:P2_6=0;break;
		case 8:P2_7=0;break;
	}
}

/*void LED_extinguish(int which)
{
	switch(which)
	{
		case 1:P2_0=1;break;
		case 2:P2_1=1;break;
		case 3:P2_2=1;break;
		case 4:P2_3=1;break;
		case 5:P2_4=1;break;
		case 6:P2_5=1;break;
		case 7:P2_6=1;break;
		case 8:P2_7=1;break;
	}
}
*/
void main()
{
	int LED=1;
	while (1)
	{
		//检测按键
		if (P3_1 == 0)
		{
			Delay(50);					//防止机械反弹
			LED--;
			while(P3_1 == 0);
		}
		if (P3_0 == 0)
		{
			Delay(50);					//防止机械反弹
			LED++;
			while(P3_0 == 0);
		}
		
		//防止出界
		if (LED < 1)
			LED = 8;
		if (LED > 8)
			LED = 1;
		
		Delay(200);	
		LED_bright(LED);
		
	}
}
  1. 编译并导入板子
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YunB西风英

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值