程序编写前言

新建项目 new μversion project

选择 CPU 型号:Atmel 中的 AT89C52 即可,不用把8051启动文件添加到工程中。

新建好后有一个文件夹:source group,代码文件都在其中。

选中该文件夹,右键新建new item,新建c语言文件。可以选c/cpp/asm

在魔术棒 Output 选项中添加 “ create HEX file".

程序框架

#include "reg52.h"
void main()
{while(1){}
}

编译:translate按钮

建立:build按钮,也有编译的作用,只编译发生变动的文件。

重新建立:rebuild,编译所有文件(速度慢不建议)。

报错如果显示:缺少root segment根段,即没有找到主函数。

头文件作用

#include<reg52.h>和`#include “reg52.h"都可以。区别在于<>直接去软件安装处搜索头文件,而”"先在该项目下查找头文件,找不到再去软件安装处,再找不到就报错。

查看头文件可以在左侧的结构树对应的c文件目录下打开,或者右键“reg52.h" open 打开。

该头文件中定义了52单片机内部所有功能寄存器,把地址值如0x80赋值给P0等端口。

HELLO WORLD——LED部分

点亮 LED

GPIO(general purpose input output) 即通用输入输出端口,可以通过软件控制其输入和输出.

  • 电源引脚: Vcc, GND
  • 晶振引脚:XTAL1 2
  • 复位引脚:RST VPD,不做其他功能。
  • 下载引脚:TXD RXD
  • GPIO引脚:Px.x的都是 GPIO 引脚,大致分为P0 P1 P2 P3,每组8个IO,P3还有附加功能,比如串口、外部中 断、计数器等。每个引脚每次只能使用一个功能。
/****************************************************************
********************** 实验名称:点亮第一个 LED
接线说明:
实验现象:下载程序后“LED 模块”的 D1 指示灯点亮
注意事项:
*****************************************************************
**********************/
#include "reg52.h"
sbit LED1=P2^0; //将 P2.0 管脚定义为 LED1
/****************************************************************
***************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*****************************************************************
**************/
void main()
{LED1=0; //LED1 端口设置为低电平,就会被点亮while(1){}
}

编译结果里面的几个数据的意义:

code:表示程序所占用 FLASH 的大小。

data:数据储存器内部 RAM 占用大小。

xdata:数据储存器外部 RAM 占用大小。

LED 闪烁

只需要点亮——延时——熄灭——延时循环即可。

延时可以写一个这样的函数:

typedef unsigned int u16
void delay(u16 ten_us){while(ten_us--);
}

u16 代表16位的无符号整型数据。当 ten_us 超出 u16 的范围后,跳出 while 循环。

然后就LED1=0;delay(50000);LED1=1;delay(50000);循环即可.

传入参数=1时,延时大概是10μs,然而50000参数延时不是500ms左右,实际是450ms左右。

Keil 软件仿真

使用仿真功能查看 LED 闪烁案例中的实际延时时间。

  1. 点击魔术棒,选择 Target 选项卡,设置 Xtal 为12M或11.0592M,根据开发板晶振修改对应值。
  2. 点击黑色放大镜中有红色d的仿真按钮,进入仿真页面

我们要关注的参数是sec。

  1. 点击RST按钮重新复位系统参数,sec 变为0。然后在要调试的行前双击,就会出现红色块的断点,点击8运行时就会直接运行到断点处。再次点击就会运行到下一处断点处。
  2. 点击红色标记8运行,运行到36行时显示用时:0.00039s,再次点击运行到37行,用时:0.45s
  3. 可见delay花费时间约为0.45s

LED 流水灯

就是给P2的所有端口赋值为:1111 1110,每次只有一个为0即点亮,这个点亮的0从最高位逐渐降到最低位。

取反后即为:

1000 0000

0100 0000

0010 0000

0001 0000

0000 1000

0000 0100

0000 0010

0000 0001

也就是一个移位运算,0x01<<i的循环。

#include "reg52.h"
# define LED P2
void delay(unsigned int i){while(i--){}
}
void main()
{while(1){int i=0;for(i;i<8;i++){LED=~(0x01<<i);delay(50000);}}
}

移位函数

位运算的移位操作只能补0,但是 Keil C51 软件内有对应的移位库函数,左移_crol_(),右移_cror_(),包含在 intrins.h 库中。

移位函数会把移出去的位补到空位,一个循环。

#include "reg52.h"
#include "intrins.h"
# define LED P2
void delay(unsigned int i){while(i--){}
}
void main()
{LED=~(0x01);delay(50000);while(1){LED=_crol_(LED,1);delay(50000);}
}

51单片机学习笔记_2 LED 模块相关推荐

  1. AutoLeaders控制组—51单片机学习笔记(LED控制、独立按键、数码管)

    本篇内容是观看B站江科大自化协UP主的教学视频所做的笔记,对其中内容有所引用,并结合自己的单片机板块进行了更改调整. 以下笔记内容以一个视频为一个片段(内容较多,可能不适合速食,望见谅) 根据测试,目 ...

  2. [51单片机学习笔记ONE]-----LED灯的多种使用方法

    一.交替闪烁8个LED灯,时间间隔为1s 1 /****************************************************** 2 实验名称: 交替闪烁8个LED灯,时间 ...

  3. 51单片机学习笔记-1简介及点灯

    51单片机学习笔记 文章目录 51单片机学习笔记 1. 51单片机简介 1.1 安装软件 1.2 单片机简介 2. LED灯 2.1点亮一个LED 2.1.1原理分析 2.1.2 创建工程 2.2LE ...

  4. AutoLeaders控制组—51单片机学习笔记

    文章目录 AutoLeaders控制组-51单片机学习笔记 1.1单片机及开发板介绍 单片机介绍 单片机应用领域 STC89C52单片机 内部结构 开发板介绍 2.1点亮一个Led 新建工程 编程 认 ...

  5. 51单片机学习笔记5 流水灯实现及蜂鸣器控制

    51单片机学习笔记5 流水灯实现及蜂鸣器控制 一.流水灯 1. 硬件电路 2. 代码实现 (1) 点亮一个LED的基本操作 (2) 使用算术左移实现流水灯 (3) 使用库文件左移函数 二.蜂鸣器 1. ...

  6. 51单片机学习笔记1 简介及开发环境

    51单片机学习笔记1 简介及开发环境 一.51单片机 1. STC89C52单片机简介 2. 命名规则 3. 封装 (1)PDIP (2)LQFP (3)PLCC (4)PQFP 二.STC8051结 ...

  7. 单片机c语言北航,【下载资料】《51单片机学习笔记》北航版

    原标题:[下载资料]<51单片机学习笔记>北航版 如果手机下载有问题,请移步至电脑端,链接:https://forum.mianbaoban.cn/t/topic/36906 内容简介 本 ...

  8. 51单片机学习笔记2 仿真器的使用及STC89Cxx简介

    51单片机学习笔记2 仿真器的使用及STC89Cxx简介) 一.连接步骤 1. 硬件连接 2. 安装软件驱动 3. 检查是否安装成功 二.仿真步骤 1. 打开一个51工程 2. 选择仿真设备 3. S ...

  9. [51单片机学习笔记TWO]----蜂鸣器

    蜂鸣器音乐播放实验 首先应该了解一下蜂鸣器音乐播放的原理,在这里我只讲一下电磁式蜂鸣器驱动原理(还有一种是压电式蜂鸣器): 电磁式蜂鸣器驱动原理: 蜂鸣器发声原理是电流通过电磁线圈,使电磁圈产生磁场来 ...

  10. 51单片机学习笔记-6串口通信

    6 串口通信 [toc] 注:笔记主要参考B站江科大自化协教学视频"51单片机入门教程-2020版 程序全程纯手打 从零开始入门". 注:工程及代码文件放在了本人的Github仓库 ...

最新文章

  1. 2015华为校招机试面试
  2. ActiveMQ(07):ActiveMQ结合Spring开发--建议
  3. 学校计算机 电教材料账册,电教室管理制度
  4. zoj 1091 Knight Moves
  5. 第一次来到博客园.....
  6. elasticsearch组合查询
  7. 杭电3790最短路径问题
  8. HP数组转JSON函数json_encode和JSON转数组json_decode函数的使用方法
  9. R语言和Rtools的详细下载安装教程
  10. 计算机多系统启动光盘制作,制作启动光盘,小编教你如何制作光盘启动盘
  11. python 批量改文件后缀_python如何批量修改文件后缀名?批量修改文件后缀名的方法...
  12. APP兼容性覆盖测试
  13. 冬瓜哥原创装b文 :《觉醒》
  14. 计算机函数sumif怎么用,sumif函数的使用方法_EXCEL的经典函数sumif的用法和实例(详细汇总)...
  15. 自定义View进阶-手绘地图(二)
  16. 企业级大数据项目【1】需求分析及概要设计篇
  17. 数据流标准差计算方法-不用事先计算均值
  18. Python全栈编程
  19. IIS是什么?有什么用?怎么用?
  20. csgo 放置机器人_csgo机器人指令_重装上阵机器人怎么拼

热门文章

  1. 固高板卡mct2008调试轴回零_固高运动控制的Home回零过程
  2. 深入浅出设计模式---1、设计模式原则和分类
  3. 联想计算机内安装硬盘,联想装固态硬盘教程_联想电脑如何安装固态硬盘-win7之家...
  4. java虚拟机安装_java虚拟机官方下载|Java Virtual Machine(java虚拟机)下载v5.0官方版 附安装教程 - 欧普软件下载...
  5. VS提示error C2011: “timespec”:“struct”类型重定义
  6. vs2015好看的字体_【Vs2015】 常用字体的设置
  7. HTML5页面实现文件下载
  8. 计算机管理用户u,discuz+uclient 手动提升普通用户至管理员权限网站安全 -电脑资料...
  9. MySQL函数、存储过程
  10. TortoiseSVN 安装中文语言包,SVN中文语言包