keil环境搭建和单片机的认识、点亮第一个LED

本文详细指导如何使用Keil软件创建一个基于AT89c52的项目,包括设置工程、添加源文件、编译和下载程序到单片机,以及介绍了单片机的基础概念,如IO口控制、LED闪烁、按键处理和延时消除抖动的示例代码。
摘要由CSDN通过智能技术生成
  • 使用keil创建一个项目

    1. 创建项目工程文件夹,可以当作模板Template
    2. 创建文件,取名main.c (要打开拓展名,在文件夹窗口上找 “查看”,勾选“文件拓展名”)
    3. 进入keil主页面,工具栏project->new uVision project->选择第一步的工程文件夹位置->输入 工程名字->选择芯片类型AT89c52->会提示是否拷贝STARTUP.A51,选择是->生成了工程目录- >在工程目录Source Group1上右键鼠标->add Exiting file to Source Group1…->选择代码文 件main.c
    4. 编程
    5. 编译,选择输出文件有hex
  • 用什么把代码放进单片机里面

    1. 单片机通过type-C数据线和电脑连接(如果不识别,安装ch340驱动)
    2. 选择单片机型号STC89C52RC
    3. 选择生成的执行程序文件template.hex
    4. 点击”下载/编程“按钮
    5. 单片机开关拨动重新上电
    6. 自动检测并下载了程序,看到灯亮。如果失败,仔细对照 以上每一步内容
  • 初识单片机

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

  • 基本IO口控制

    1. 单片机编程是什么:人类要求单片机干具体的活,有点像提前写个小纸条贴冰箱上,告诉你女朋友 煮鸡蛋不加水

    2. 单片机执行程序怎么理解: 女朋友看到纸条后,照做!

    3. 单片机能做什么事情:IO口供电,串口数据传输等

    4. 肉眼可见的引脚是什么:方便人类对单片机IO口,串口接东西

    5. 单片机CPU怎么找到IO口:通过寻址,说白了有一些地址数据,头文件帮你做很多了

    6. 怎么写纸条(编程)找到IO口呢:ANSI C

      //sfr“指令”: 用来直接描述硬件地址,小白先理解成“一组IO口”的起始地址中数据 
      sfr P0 = 0x80; 
      P0 = 0; 
      
    7. 怎么找到IO口的具体一个引脚呢:

      //sbit“指令”:对应可位寻址空间的一个位,小白先理解成“一个IO口/针脚”的地址中数据 
      sbit led2 = P3^6 ;
      //c语言的一个字节,char型就是8位
      
  • 点亮LED

    #include "reg52.h"
    
    sbit led1 = P3^7;//根于原理图,I/O口3.7指向LED1
    sbit led2 = P3^6;
    sbit led3 = P3^1;
    sbit led4 = P3^0;
    void main()
    {
    	led1 = 0;//低电平点亮
    	led2 = 0;
    	led3 = 0;
    	led4 = 0;
    	while(1);
    }
    
  • LED闪烁

    软件生成延时函数:

    在这里插入图片描述

    #include "reg52.h"
    
    sbit led1 = P3^7;//led1接3.7引脚
    
    void Delay500ms()		//@11.0592MHz
    {
    	unsigned char i, j, k;
    	i = 4;
    	j = 129;
    	k = 119;
    	do
    	{
    		do
    		{
    			while (--k);
    		} while (--j);
    	} while (--i);
    }
    
    void main()
    {
    	while(1){
    	led1 = 0;//灯亮
    	Delay500ms();//保持灯亮500ms
    	led1 = 1;//灯灭
    	Delay500ms();//保持灯灭500ms
    	}
    }
    
  • 按键亮灯

    按键电路

    在这里插入图片描述

    根据原理图电路分析,按键松开,KEY1为1,按键按下,KEY1为0。

    #include "reg52.h"
    
    sbit led1 = P3^7;//led1接P3.7
    sbit key1 = P2^1;//key1接P2.1
    sbit key2 = P2^0;//key2接P2.0
    void main()
    {
    	while(1)
    	{
    		if (key1 == 0)//key1被按下
    		{
    			led1 = 0;//灯亮
    		}
    		if (key2 == 0)//key2被按下
    		{
    			led1 = 1;//灯灭
    		}
    	}
    }
    
  • 延时消除抖动

    在这里插入图片描述

    当按键按下的那一时刻和松开的时候有类似于锯齿的形状那就是按键抖动,这个抖动不是我们人为能控制得了的,所以我们只能对进行硬件消抖或者进行软件消抖.

    #include "reg52.h"
    
    sbit led1 = P3^7;//根据原理图,led1接P3.7
    sbit key1 = P2^1;//根据原理图,key1接P2.1
    sbit key2 = P2^0;//根据原理图,key2接P2.0
    void Delay50ms()		//@11.0592MHz,延时20ms
    {
    	unsigned char i, j;
    
    	i = 90;
    	j = 163;
    	do
    	{
    		while (--j);
    	} while (--i);
    }
    
    void main()
    {
    	while(1)
    	{
    		if (key1 == 0)//key1按下
    		{
    			Delay50ms();
    			while(key1 == 0)
    			Delay50ms();
    			led1 = 0;//灯亮	
    		}
    		if (key2 == 0)//key2按下
    		{
    			Delay50ms();
    			while(key2 == 0)
    			Delay50ms();
    			led1 = 1;//灯灭
    		}
    	}
    	
    }
    
  • 一个按键控制灯的状态

    if(key1 == 0)
    {
    	Delay50ms();
    	while(key1 == 0)
    	Delay50ms();
    	led1 = !led1;//按键1按下一次,灯的状态改变一次
    }
    
  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值