LQB00开发板单片机介绍以及KEIL编程操作流程介绍

1、什么是单片机?
2、单片机最小系统组成;
3、欧姆定律,IO电平。
4、点亮一盏LED灯?工程理解与测试/
5、点亮8盏LED灯?工程理解和测试
6、按键理解和测试?代码。

单片机就是类比人的大脑,属于电子系统的大脑,可以做计算,分析的一个大脑。

单片机这大脑需要正常运转,需要电源,需要心脏晶振,需要满足基本的操作条件。

欧姆定律

U=IR,电压等于电流乘以电阻。
LED灯具备单向导电特性,分正级和阴极,单向导通,可以发光,反向导电不导电,不发光。

高低电平1和0:

单片机的IO口输出,如果接入电源是5V,那么一般输出IO口的高电平,用1表示,等于5V;
低电平用0表示,等于0V。
单片机属于01的大脑。只能输出0和1,代表了低电平和高电平。也只能接收一定范围的电压值,代表是高电平和低电平。
在这里插入图片描述

上图的1和2电路,是需要单片机的输出功能,
电路1,输出低电平0,LED发光,因为5V和IO口的0V有电压差,LED单向导电,发光。输出1,代表5V,LED两端没有压差,没电流,不发光。

电路2,单片机输出1,LED发光,输出0,LED熄灭。

电路3和电路4是输入功能。检测IO口是高电平还是低电平。一般单片机默认IO口是高电平,除非你用电路拉低了。

电路3,按下按键KEY,那么一段是GND,0V,GND和IO口导通,那么IO口将由1变为0,得到下降沿。
松手之后,按键弹起来,那么IO口又从0变为1,得到上升沿。由于按键是机械部件,具备一定的滞后性或者不稳定性,会发生一定的抖动现象,所以检测的时候,最好加一定的去抖动。
最简单的思路就是,第一次检测到0之后,延时10ms左右,再检测一次IO,过了抖动时间判断,如果还是0,那么就是按下了,。

在这里插入图片描述
电路4,按下按键KEY,IO口原来是1,按下后还是1,没有变化,相当于没作用。所以一般不这么使用。
后面有需要将再调整电路。。

51单片机的芯片介绍。

(1)IO口,

传统51单片机的有4组IO口,分别是P0组,P1组,P2组,P3组;每组又分为8个小口,比如P0组,有
P0^0
P0^1, ,
P0^2,------------- P 0 ^7总共8个IO口,相当于一个房间P0,里面有8个员工。
那么总共有4*8=32个IO口。
假如我有40盏LED灯,IO口不够控制,需要加一些IO扩展芯片,或者是最好换一个有40个IO的芯片。
蓝桥杯的单片机是stc15增强型的51单片机,在上述基础上,多了P4组,P5组。
相当于人口扩张了。
在这里插入图片描述

在这里插入图片描述

(2)定时器

有定时器0,定时器1,定时器2

(3)串口

有时候和串口,和其他电脑,芯片连接

(4)内部中断和外部中断

中断机制,临时干活,干活之后,回到主任务中。

(5)用IO口和外部芯片连接。

串口,I2C ,SPI,单总线。

Proteus的软件在百度网盘;
链接:https://pan.baidu.com/s/1EdGKPB7Omt4x5i8A_huc6w
提取码:8765
Proteus的第一个仿真工程文件在百度网盘;
链接:https://pan.baidu.com/s/1PXUIEdAij7II3HTI5fCiJQ
提取码:8765
在这里插入图片描述

任务1

用STC-ISP软件和KEIL软件,编程实现仿真软件Proteus的电路,LED1点亮,LED1熄灭,间隔1000ms;,之后,间隔300ms(闪烁10次),

代码理解,

//第一个任务
//LED的闪烁
//工程的建立,以及延时函数,以及头文件的使用
//IAP15F2K61S2
#include <stc15.h>
#include <intrins.h>

sbit LED1=P1^0;
sbit LED2=P1^1;
sbit KEY1=P2^0;



void Delay1000ms();		//@11.0592MHz    函数声明,定义在main之后,  注意有分号
void Delay1ms(unsigned int nms);		//@11.0592MHz         函数声明,定义在main之后,注意有分号



void main()
{
	//定义临时变量
	unsigned char i;//-127  127     0-255
	unsigned int j; //0-65535       32767--
	
	//初始化函数
	P0=0x00; //1111 1111
	
	//主循环
	while(1)
	{
		 P1=0x00;
		 Delay1000ms();
		 P1=0xFF;
		 Delay1000ms();
		 P1=0x00;
		 Delay1000ms();
		 P1=0xFF;
		 Delay1000ms();
		
		
		for(i=0;i<5;i++)
		{
			P1=0xFB;
			Delay1ms(300);
			
			P1=0xBF;
			Delay1ms(300);
		
		}
		 P1=0x00;  Delay1ms(300);
		
		
		for(i=0;i<5;i++)
		{
			LED1=0;
			Delay1ms(300);
			
			LED1=1;
			Delay1ms(300);
		
		}
	
	
	}
	
}


void Delay1000ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	i = 8;
	j = 1;
	k = 243;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}


void Delay1ms(unsigned int nms)		//@11.0592MHz
{
	unsigned char i, j;

	
	for(nms;nms>0;nms--)
	{
	   	_nop_();
			i = 2;
			j = 199;
			do
			{
				while (--j);
			} while (--i);
	}

}

任务2,

按键1,按下一次,LED点亮,按下第二次,LED熄灭。

通过上述流程,掌握基本的软件编程,以及STC-ISP的使用(头文件的生成和延时函数的使用)。

代码理解。

#include <stc15.h>
#include <intrins.h>

//任务,按键1,LED1的控制,第一次按下,亮,第二次按下,灭。
//KEY2,,,LED整体控制。

sbit LED1=P1^0;
sbit KEY1=P2^0;
void Delay1ms(int nms);			//@11.0592MHz


void main()
{
 //局部变量
	unsigned char i=0;
	
	//外部的设备的初始化
  	P1=0x00;  //LED灯全部熄灭
	
	while(1)
	{
		if(KEY1==0)
		{
		   Delay1ms(10);
			 if(KEY1==0)
			 {
			   LED1=~LED1;
			 }
			 while(KEY1==0);  //等待按键松手
		}
		
		
	}
}


void Delay1ms(int nms)		//@11.0592MHz
{
	unsigned char i, j;

	for(nms;nms>0;nms--)
	{  	_nop_();
				i = 2;
				j = 199;
				do
				{
					while (--j);
				} while (--i);
	
	}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值