51单片机学习(1) LED点亮、闪烁以及流水灯实现
时间:2022-07-25
本文章向大家介绍51单片机学习(1) LED点亮、闪烁以及流水灯实现,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
文章目录
一、Keil创建项目
1. 打开keil软件,在工具栏点击Project选项选择new uVision Project创建新的工程并保存,步骤如下图所示:
2. 创建新的文件,按快捷键“Ctrl+S”命名为led.c并保存,步骤如下:
3. 在.c文件中编写C语言程序
#include "reg51.h"
sbit led=P2^0;
void main()
{
while(1)
{
led=0;
}
}
4. 依次点击工具栏中的"Option for target"选择框中的"output ",勾选“Create Hex file ”,确保自己编写的源程序转换为.hex文件,为后续操作使用
5. 依次点击工具栏按钮,生成目标文件
程序运行成功,将在相对路径Object文件夹中生成learning_002.hex文件
二、Proteus搭建虚拟仿真电路
三、LED点亮
搭建好电路后,点击AT89C51主控,导入上文用keil中C语言程序生成的learning_002.hex文件
点击软件右下角的运行按钮,红色的发光二级管被点亮
四、LED闪烁
C语言代码改为如下:
#include "reg51.h"
unsigned int x;
sbit led=P2^0;
void main()
{
x=50000;
while(1)
{
led=0; //亮
while(x--); //延时
led=1; //灭
while(x--); //延时
}
}
五、流水灯实现
1. 流水灯(库函数法)
#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp;
int x;
void main()
{
x=50000;
temp = 0x01;
P1 = temp;
while(x--); //延时
while(1)
{
temp = _crol_(temp,1); //调用库函数
P1=temp;
while(x--);
}
}
2. 流水灯(左移法)
#include <reg51.h>
unsigned int x;
//shift to the left water lamp
void main()
{
x=50000;
P1=0x01;
while(1)
{
while(x--); //delay time
P1=P1<<1; //左移
if(P1==0x00)
P1=0x01; //回到起始位置
}
}
3. 流水灯(右移法)
#include <reg51.h>
unsigned int x;
//shift to the right water lamp
void main()
{
x=50000;
P1=0x80;
while(1)
{
while(x--);
P1=P1>>1;
if(P1==0x00)
P1=0x80;
}
}
4. 流水灯(数组索引法)
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar p;
int x;
void main()
{
x=50000;
while(1)
{
for(p=0;p<8;p++)
{
P1=table[p];
while(x--);
}
for(p=6;p>=1;p--)
{
P1=table[p];
while(x--);
}
}
}
作者:叶庭云 微信公众号:修炼Python CSDN:https://yetingyun.blog.csdn.net/ 本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。 觉得文章对你有帮助、让你有所收获的话,期待你的点赞呀,不足之处,也可以在评论区多多指正。
- Flash/Flex学习笔记(15):FMS 3.5之远程共享对象(Remote Shared Object)
- Android Fragment完全解析
- Centos下堡垒机Jumpserver V3.0环境部署完整记录(2)-配置篇
- Flash/Flex学习笔记(53):利用FMS快速创建一个文本聊天室
- 28家银行用户体验调研报告:洞见银行业的“进化论”
- 性能计数器数据收集服务
- SQL SERVER 内存分配及常见内存问题 DMV查询
- 6 利用Docker .NET应用程序模板制作您的容器应用程序(第2部分)
- Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)
- git review报错一例
- Nginx采用https加密访问后出现的问题
- 对比git rm和rm的使用区别
- Gerrit日常操作命令收集
- 轻型的ORM类Dapper
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 「数据仓库架构」数据仓库的三种模式建模技术
- 设计模式实战-空对象模式,你肯定不知道,但是项目中会常用到到
- Go 开发十种常犯错误
- SpringBoot缓存应用实践
- 为什么应该使用 Go module proxy
- 谁能想到,我给技术总监“上了一课”
- 设计模式速览
- 序列模型——吴恩达深度学习课程笔记(五)
- 30分钟学会pyecharts数据可视化
- 用Keras从零开始6步骤训练神经网络
- Keras结构化数据预处理范例——Titanic生存预测
- 从原理上搞懂如何设置线程池参数大小?
- Keras图像数据预处理范例——Cifar2图片分类
- Keras文本数据预处理范例——IMDB影评情感分类
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof 使用详解