51单片机学习笔记_2 LED 模块
程序编写前言
新建项目 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 闪烁案例中的实际延时时间。
- 点击魔术棒,选择 Target 选项卡,设置 Xtal 为12M或11.0592M,根据开发板晶振修改对应值。
- 点击黑色放大镜中有红色d的仿真按钮,进入仿真页面
我们要关注的参数是sec。
- 点击RST按钮重新复位系统参数,sec 变为0。然后在要调试的行前双击,就会出现红色块的断点,点击8运行时就会直接运行到断点处。再次点击就会运行到下一处断点处。
- 点击红色标记8运行,运行到36行时显示用时:0.00039s,再次点击运行到37行,用时:0.45s
- 可见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 模块相关推荐
- AutoLeaders控制组—51单片机学习笔记(LED控制、独立按键、数码管)
本篇内容是观看B站江科大自化协UP主的教学视频所做的笔记,对其中内容有所引用,并结合自己的单片机板块进行了更改调整. 以下笔记内容以一个视频为一个片段(内容较多,可能不适合速食,望见谅) 根据测试,目 ...
- [51单片机学习笔记ONE]-----LED灯的多种使用方法
一.交替闪烁8个LED灯,时间间隔为1s 1 /****************************************************** 2 实验名称: 交替闪烁8个LED灯,时间 ...
- 51单片机学习笔记-1简介及点灯
51单片机学习笔记 文章目录 51单片机学习笔记 1. 51单片机简介 1.1 安装软件 1.2 单片机简介 2. LED灯 2.1点亮一个LED 2.1.1原理分析 2.1.2 创建工程 2.2LE ...
- AutoLeaders控制组—51单片机学习笔记
文章目录 AutoLeaders控制组-51单片机学习笔记 1.1单片机及开发板介绍 单片机介绍 单片机应用领域 STC89C52单片机 内部结构 开发板介绍 2.1点亮一个Led 新建工程 编程 认 ...
- 51单片机学习笔记5 流水灯实现及蜂鸣器控制
51单片机学习笔记5 流水灯实现及蜂鸣器控制 一.流水灯 1. 硬件电路 2. 代码实现 (1) 点亮一个LED的基本操作 (2) 使用算术左移实现流水灯 (3) 使用库文件左移函数 二.蜂鸣器 1. ...
- 51单片机学习笔记1 简介及开发环境
51单片机学习笔记1 简介及开发环境 一.51单片机 1. STC89C52单片机简介 2. 命名规则 3. 封装 (1)PDIP (2)LQFP (3)PLCC (4)PQFP 二.STC8051结 ...
- 单片机c语言北航,【下载资料】《51单片机学习笔记》北航版
原标题:[下载资料]<51单片机学习笔记>北航版 如果手机下载有问题,请移步至电脑端,链接:https://forum.mianbaoban.cn/t/topic/36906 内容简介 本 ...
- 51单片机学习笔记2 仿真器的使用及STC89Cxx简介
51单片机学习笔记2 仿真器的使用及STC89Cxx简介) 一.连接步骤 1. 硬件连接 2. 安装软件驱动 3. 检查是否安装成功 二.仿真步骤 1. 打开一个51工程 2. 选择仿真设备 3. S ...
- [51单片机学习笔记TWO]----蜂鸣器
蜂鸣器音乐播放实验 首先应该了解一下蜂鸣器音乐播放的原理,在这里我只讲一下电磁式蜂鸣器驱动原理(还有一种是压电式蜂鸣器): 电磁式蜂鸣器驱动原理: 蜂鸣器发声原理是电流通过电磁线圈,使电磁圈产生磁场来 ...
- 51单片机学习笔记-6串口通信
6 串口通信 [toc] 注:笔记主要参考B站江科大自化协教学视频"51单片机入门教程-2020版 程序全程纯手打 从零开始入门". 注:工程及代码文件放在了本人的Github仓库 ...
最新文章
- 2015华为校招机试面试
- ActiveMQ(07):ActiveMQ结合Spring开发--建议
- 学校计算机 电教材料账册,电教室管理制度
- zoj 1091 Knight Moves
- 第一次来到博客园.....
- elasticsearch组合查询
- 杭电3790最短路径问题
- HP数组转JSON函数json_encode和JSON转数组json_decode函数的使用方法
- R语言和Rtools的详细下载安装教程
- 计算机多系统启动光盘制作,制作启动光盘,小编教你如何制作光盘启动盘
- python 批量改文件后缀_python如何批量修改文件后缀名?批量修改文件后缀名的方法...
- APP兼容性覆盖测试
- 冬瓜哥原创装b文 :《觉醒》
- 计算机函数sumif怎么用,sumif函数的使用方法_EXCEL的经典函数sumif的用法和实例(详细汇总)...
- 自定义View进阶-手绘地图(二)
- 企业级大数据项目【1】需求分析及概要设计篇
- 数据流标准差计算方法-不用事先计算均值
- Python全栈编程
- IIS是什么?有什么用?怎么用?
- csgo 放置机器人_csgo机器人指令_重装上阵机器人怎么拼
热门文章
- 固高板卡mct2008调试轴回零_固高运动控制的Home回零过程
- 深入浅出设计模式---1、设计模式原则和分类
- 联想计算机内安装硬盘,联想装固态硬盘教程_联想电脑如何安装固态硬盘-win7之家...
- java虚拟机安装_java虚拟机官方下载|Java Virtual Machine(java虚拟机)下载v5.0官方版 附安装教程 - 欧普软件下载...
- VS提示error C2011: “timespec”:“struct”类型重定义
- vs2015好看的字体_【Vs2015】 常用字体的设置
- HTML5页面实现文件下载
- 计算机管理用户u,discuz+uclient 手动提升普通用户至管理员权限网站安全 -电脑资料...
- MySQL函数、存储过程
- TortoiseSVN 安装中文语言包,SVN中文语言包