单片机c51应用编程与实践(c51单片机怎么自学编程)

一.先来了解一下什么是单片机?

1.硬件知识

单片机是在一片半导体硅片上集成了CPU,存储器(RAM,ROM),并行I/O口,串行I/O口,定时器/计数器(重点内容),以及中断系统,系统时钟,总线等。

说白了就是一个微型计算机,因为具有计算机的软硬件环境。

通常在国际上,我们习惯把它称为嵌入式控制器(类似于STM32系列单片机),微控制器。单片机的使用范围比较广。

2.实物展示

单片机c51应用编程与实践(c51单片机基础及编程应用)单片机c51应用编程与实践(c51单片机基础及编程应用)

慧净开发板实物图

3.慧净开发板的原理图

单片机c51应用编程与实践(c51单片机基础及编程应用)单片机c51应用编程与实践(c51单片机基础及编程应用)

慧净的开发板比较适用于初学者,上手比较快。(目前已经更新,功能更强大,值得一学)

4.应用领域

它可以构成一些智能化的产品,实现仪器设备的智能化,自动化,可以采用单片机来实现数据采集与处理,具有自动化程度高,功耗小,抗干扰能力强等特点。

一.先来了解一下什么是单片机?

1.硬件知识

单片机是在一片半导体硅片上集成了CPU,存储器(RAM,ROM),并行I/O口,串行I/O口,定时器/计数器(重点内容),以及中断系统,系统时钟,总线等。

说白了就是一个微型计算机,因为具有计算机的软硬件环境。

通常在国际上,我们习惯把它称为嵌入式控制器(类似于STM32系列单片机),微控制器。单片机的使用范围比较广。

2.实物展示

单片机c51应用编程与实践(c51单片机基础及编程应用)单片机c51应用编程与实践(c51单片机基础及编程应用)

慧净开发板实物图

3.慧净开发板的原理图

单片机c51应用编程与实践(c51单片机基础及编程应用)单片机c51应用编程与实践(c51单片机基础及编程应用)

慧净的开发板比较适用于初学者,上手比较快。(目前已经更新,功能更强大,值得一学)

4.应用领域

它可以构成一些智能化的产品,实现仪器设备的智能化,自动化,可以采用单片机来实现数据采集与处理,具有自动化程度高,功耗小,抗干扰能力强等特点。

比如示波器

单片机c51应用编程与实践(c51单片机基础及编程应用)单片机c51应用编程与实践(c51单片机基础及编程应用)

②在家用电器领域,单片机已经被广泛的用于实现家用电器产品的智能化和自动化,目前使用的电冰箱,洗衣机,空调,热水器等等。

比如空调

单片机c51应用编程与实践(c51单片机基础及编程应用)单片机c51应用编程与实践(c51单片机基础及编程应用)

③在计算机外设当中的应用,如果大家有条件打开一些,类似影响打印机,计算机键盘,软盘驱动器,这样一些计算机的外围设备,大家可以发现,里面有很多都已采用了单片机来作为对一些外部设备的控制单元。

比如键盘

单片机c51应用编程与实践(c51单片机基础及编程应用)单片机c51应用编程与实践(c51单片机基础及编程应用)

④在工业测控领域当中的应用,在这个应用当中,常常用单片机来构成一些测量系统,可以实现,工业现场的数据采集与处理的智能化,可以以多功能的数字显示,和宽量程的自动切换,取代我们传统仪器的模拟显示等工作。

比如机床

单片机c51应用编程与实践(c51单片机基础及编程应用)单片机c51应用编程与实践(c51单片机基础及编程应用)

二,引脚以及I/O接口(重点内容)

1.引脚(共40)

(1) 主电源引脚 Vcc:接 +5V 电源正端。 Vss::接 +5V 电源地端。

(2) 外接晶体引脚 XTAL1 :片内反相放大器输入端 XTAL2 : 片内反相放大器输出端

2.I/O接口(P0-P3,每组8个.0-.7共四组32个)

输入/输出引脚 P0.0-P0.7:P0 口的 8 个引脚。在不接片外存储器与不扩展 I/O 接口时,作为准双向输入/输 出接口(在输入时需要附加条件的双向输入输出口,称为准双向 I/O 口)。

在接有片外存储器或扩展 I/O 接口时, P0 口分时复用为低 8 位地址总线和双向数据总线。 P1.0-P1.7:P1 口的 8 个引脚。可作为准双向 I/O 接口使用。

对于 52 子系列, P1.0 与 P1.1 还有 第二种功能: P1.0 可用作定时器/计数器 2 的计数脉冲输入端 T2;P1.1 可用作定时器/计数器 2 的 外部控制端 T2EX 。

P2.0-P2.7;P2 口的 8 个引脚。一般可作为准双向 I/O 接口;在接有片外存储器或扩展 I/O 接 口且寻址范围超过 256 个字节时, P2 口用为高 8 位地址总线

P3.0-P3.7;P3 口的 8 个引脚。 ① 一般可作为准双向 I/O 接口; ② P3 口的第二功能如表

所示。

单片机c51应用编程与实践(c51单片机基础及编程应用)单片机c51应用编程与实践(c51单片机基础及编程应用)

单片机c51应用编程与实践(c51单片机基础及编程应用)单片机c51应用编程与实践(c51单片机基础及编程应用)

单片机

三.小试牛刀(流水灯)

主要是练习i/o口的使用

1.了解C语言的语法知识以及结构(这里不多讲)

C51基本语法知识:数据类型,存储类型、书写格式等及举例(必须要会使用)

2.语言格式的练习

单片机c51应用编程与实践(c51单片机基础及编程应用)单片机c51应用编程与实践(c51单片机基础及编程应用)

延时函数要会写

单片机c51应用编程与实践(c51单片机基础及编程应用)单片机c51应用编程与实践(c51单片机基础及编程应用)

避免出现这类写法

注意:初学者一定要注意编程的规范问题。

3.MCS-51并行接口应用——流水灯设计

①LED的驱动方法

单片机c51应用编程与实践(c51单片机基础及编程应用)单片机c51应用编程与实践(c51单片机基础及编程应用)

注意是低电平

②发光二极管的原理问题阐述(有图有真相)

单片机c51应用编程与实践(c51单片机基础及编程应用)单片机c51应用编程与实践(c51单片机基础及编程应用)

③实现效果

从左到右的流水灯的实现

片内I/O端口作为输出使用时,最常用的应用是控制相应的

I/O引脚上的LED点亮与熄灭。

8个发光二极管LED0~LED7经限流电阻分别接至P1口的P1.0~P1.7引脚上,阳极共同接高电平。编程来实现发光二极管的从左到右的流水点亮,即按照LED0→LED1→┉→LED7的顺序,每次点亮一个发光二极管,延时一段时间后熄灭这个发光二极管,然后点亮下一个发光二极管,重复循环。

④原理图

单片机c51应用编程与实践(c51单片机基础及编程应用)单片机c51应用编程与实践(c51单片机基础及编程应用)

protues仿真图

⑤程序流程图

单片机c51应用编程与实践(c51单片机基础及编程应用)单片机c51应用编程与实践(c51单片机基础及编程应用)

⑥延时程序

单片机c51应用编程与实践(c51单片机基础及编程应用)单片机c51应用编程与实践(c51单片机基础及编程应用)

⑦延时程序的设计

单片机c51应用编程与实践(c51单片机基础及编程应用)单片机c51应用编程与实践(c51单片机基础及编程应用)

⑧延时时间的计算

单片机c51应用编程与实践(c51单片机基础及编程应用)单片机c51应用编程与实践(c51单片机基础及编程应用)

也就是说没做一次循环为1US

单片机c51应用编程与实践(c51单片机基础及编程应用)单片机c51应用编程与实践(c51单片机基础及编程应用)

⑩程序设计(采用比较容易懂的方法)

设计方法:八个LED从左往右依次为LED0-LED7。低电平低电平点亮

比如让LED0亮 用八位二进制码表示为 1111 1110 用16进制表示为0Xfe

比如让LED1亮 用八位二进制码表示为 1111 1101 用16进制表示为0Xfc

一次类推

比如让LED7亮 用八位二进制码表示为 0111 1111 用16进制表示为0X7f

单片机c51应用编程与实践(c51单片机基础及编程应用)单片机c51应用编程与实践(c51单片机基础及编程应用)

具体设计

#include <reg52.h>	/*头文件	*/	
#define uchar unsigned char		 	/*定义类型	*/	
#define uint unsigned int		 			
void delay_500ms()				 /*延时函数*/
{	
	uchar i,j,k;
	for (i=5;i>0;i--)
	{
		for (j=200;j>0;j--)
		{
			for (k=250;k>0;k--);
		}
	}		
}
void main( )	 /*主程序*/
{	
	while(1)
	{
P1=0xfe;	 	 /*LED0点亮	*/	
		delay_500ms(); 
P1=0xfc;	
		delay_500ms(); 
P1=0xfb;	
		delay_500ms(); 
P1=0xf7;	
		delay_500ms();
P1=0xef;	
		delay_500ms(); 
P1=0xcf;	
		delay_500ms();
P1=0xbf;	
		delay_500ms(); 		
P1=0x7f;	
		delay_500ms(); 
		delay_500ms();
P1=0xff;		 /*全灭	*/	
		delay_500ms();
	} 
}