【51单片机】我的自学记录——Project(1)点亮LED和流水灯

前言

在开始这个系列自学51单片机之前,我已经接触过一些Arduino的知识。关于51单片机和STM32在自己初高中时候折腾了一段时间后,最后不了了之,只是一知半解。我想通过自己有系统完整学习之后,能够有一些收获,也算是同步一下大学C++的知识吧。
本系列日记仅仅是真实记录,踩坑和失败很正常,也希望各路专业的朋友来指导。
由于课业安排,暂时不会按日更新,但是会努力跟进。
本系列使用书籍是《手把手教你学51单片机C语言版(第二版)》宋雪松老师所撰,使用开发板是普中科技HC6800-EM3 V2.2,STC89C516
HC6800-EM3 V2.2开发板照片

1.理论部分

1.1单片机知识

单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。 ——摘自百度百科

单片机的结构
8051单片机的结构符合冯诺依曼架构,分成控制、运算、存储和输入输出。
振荡器:可以把振荡器(时钟信号来源)看作标准的时间单位,就像人有了24小时的时间制一样,每一个振荡脉冲相当于单片机的“1秒”。
CPU:内含运算单元和控制单元,相当于人的大脑,提供数据的计算和单片机内部控制的功能,起到中枢作用。
ROM:只读存储器,存放我们编写的程序,有时会用Flash闪存来存放。
RAM:随机读写存储器,相当于电脑的内存,存放临时产生的数据,断电丢失,不会保存。
SFR:特殊功能寄存器,是控制单片机功能的寄存器,可以看作是一个等待设置的信号位,当输入特定的信号(寄存特定的数据位)时,控制不同功能来使用单片机的各项资源。
定时器:单片机内部的数据累加器,可起到计数或者定时的效果。
I/O:输入输出的引脚或者通信位,可以设置不同模式来控制输入输出的信号。

1.2单片机最小系统

最小系统是单片机运行起来的最简电路。分为:电源电路,晶振电路,复位电路
STC89C52单片机最小系统

这里引用了芯片的数据手册,进行了适当编辑,数据手册值得深究。

1.3软件开发的准备

由于有一定的C语言基础,这里并不赘述,汇编语言暂时还未涉及。
这里用的是keil5的环境。在b站有相关下载。
上传下载是用的stc-isp官方烧录软件,还是很方便的,就是没有自动上电复位,需要自己手动复位才能检测到单片机。

2.实操部分

2.1一些电路

首先根据原理图所示,我的8个LED灯连接在74HC573这个IC上,但是开发板上是74HC595,功能一致,就不深究了

这里有一个问题:使用IC可以简化电路,相当于是将一些硬件功能集成在一个小的IC里面,用户只需要搭建有关电路,操作一些特定的引脚,输入特定的信号就可以使用这一功能。但IC的功能比较单一,专向性比较强。那单片机和IC组合使用的时候,是把IC当作单片机的拓展,还是让单片机当作控制IC的大脑?若有大佬愿意回答,不胜感激。

原理图1
本质上就是让51单片机向LED发出一个高电平信号,使得LED两端产生电压,进而产生电流点亮LED。

这里书上写得很好,一定要看清电路再编写程序。如果LED右边是电源,那就需要低电平。

2.2代码实现

相关的代码粘贴于此:
LED点亮实验:

#include <REGX51.H>//LED点亮实验
int main(){
	P2 = 0x01;       //8号灯亮,16进制转2进制b(00000001)
	return 0;
}

流水灯实验:

#include <REGX51.H>  //流水灯实验
int counter = 0;     //设定计数变量

void Delay100ms()	{	//@12.000MHz,延时函数,stc—isp自动生成的
	unsigned char i, j;
	i = 195;   j = 138;
	do{	while (--j);
	} while (--i);
}

int main(){	//主函数
	while(1){
	  P2 = 0x01 << counter;				   //左移一位,如果电位相反就要取反
		Delay100ms();						  	//延时100ms
	  counter ++;
		if (counter >= 8) counter = 0; //计数清零,让流水灯回到原点
	}
	return 0;
}

3.总结

第一个项目算是温故复习,并没有什么错误,实验现象很符合,对知识有了更深的理解。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Arctic-aurora

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

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

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

打赏作者

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

抵扣说明:

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

余额充值