[单片机]KeilC51简单流水灯制作与原理

2023-11-11

P1.单行最简流水灯示例

首先先看原理图,下面为对应解释

  • 最好使用低电平驱动,所谓低电平驱动就是引脚部分为低电平,就如图中电路所示,VCC处于LED右侧,故LED右侧高电平而其左侧低电平,符合条件
  • 这里使用八个LED,自上而下排列, 注意这里我们使用P0口,因为其电压最大方便观察
  • P0口为P0.0-P0.7,所以注意序号的标注!

请添加图片描述


代码时间
这里使用keil C51进行编写,首先看向文件头部

  1. 需要添加头文件<reg51.h>,里面包含了大多数我们需要用到的函数,比如我们接下来要用到的_crol_()函数
  2. 定义两个宏,是为了下文编写数据更加方便
#include<reg51.h>
#include<intrins.h>

#define uchar unsigned char
#define uint unsigned int

编写延迟代码(非常重要!建议牢记!经常使用!)

  1. 特别注意,我们这里t<255是因为uchar类型的最大范围就是0-255,不要溢出了!!!
  2. uint i形参的存在就是为了让我们改变延迟的倍数的
  3. 对应不同的机型,for循环的次数至少要达到20000次,延迟时长才能基本符合人眼观察需要
void delay_ms(uint i)
{
	uchar t;
	while(i--)
	{
		for(t=0;t<255;t++);
	}
}

流水灯主体代码

  1. P0=0xfe代表着激活P0口上的地址为0xfe的子口,因为P0下属有8个孔,而0xfe地址对应的就是P0.0口
  2. 之后进入循环,调用我们的延迟函数并传入实参60,大家可以任意调节
  3. crol(P0,1)表示将P0口的地址左移一位(参一为欲处理的口,参二为移动位数),然后将结果赋予会P0口,以此来达到激活下一个LED的目的
  4. 如此循环往复,必定会回到起始地址0xfe,此刻即形成流水灯

注意区分_crol_()函数和左移符号<<
左移函数_crol_()表示将其高位取出补到低位的左移!
而左移符号<<表示删除高位而低位补零,最终将导致地址全部变成零,解决该问题需要二进制操作,所以我们这里不使用此方法!
(注:与此同时还有_cror_()表示右移,这和下一个流水灯案例有关)

void main()
{
	P0=0xfe;
	while(1){
		delay_ms(60);
		P0=_crol_(P0,1);
	}
}

这是完整的代码

#include<reg51.h>
#include<intrins.h>

#define uchar unsigned char
#define uint unsigned int

void delay_ms(uint i)
{
	uchar t;
	while(i--)
	{
		for(t=0;t<255;t++);
	}
}

void main()
{
	P0=0xfe;
	while(1){
		delay_ms(60);
		P0=_crol_(P0,1);
	}
}

之后返回proteus,双击单片机,弹出窗口的program file选择我们刚刚编译好的hex文件即可,确认以后点击proteus左下角播放即可看到结果



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[单片机]KeilC51简单流水灯制作与原理 的相关文章

随机推荐

  • DRM几个重要的结构体及panel开发

    一 DRM Linux下的DRM框架内容众多 结构复杂 本文将简单介绍下开发过程中用到的几个结构体 这几个结构体都在之前文章里面开发DRM驱动时用到的 未用到的暂不介绍 DRM中的KMS包含Framebuffer CRTC ENCODER
  • 机器智能的未来

    ChatGPT丨小智ai丨chatgpt丨人工智能丨OpenAI丨聊天机器人丨AI语音助手丨GPT 3 5丨OpenAI ChatGPT GPT 4 GPT 3 人机对话 ChatGPT应用 小智ai 小智ai 小智ai 小智ai 小智AI
  • MySql使用全记录4 -----设置root口令(即修改默认口令)

    设置MySql的root用户口令 本文由CSDN 蚍蜉撼青松 主页 http blog csdn net howeverpf 整理编辑 转载请注明出处 参考链接 http wenku baidu com view 73ab05737fd53
  • html取出单元格中的数值_简单爬取html页面的表格中的数据

    关于爬虫方面本人小白一个 通过无所不能的度娘 从中汲取营养 得到一个简单的能用的例子 在这分享一下 供大家一起汲取 首先说一下 你想从一个页面中获取到你想要的数据 首先你要先得到这个页面 然后把获取到的页面 使用Jsoup解析成 Docum
  • 如何使用挂载磁盘和windows服务器进行文件传输?

    如何远程连接windows服务器 相信对于使用过windows服务器的朋友来说这都是非常简单的事情 但是对于如何以及为什么挂载本地磁盘到windows服务器 很多新手就不明白为什么了 那么今天行云管家赵博士就来教大家怎样将本地磁盘挂载到到w
  • Windows10下配置Jmeter环境变量

    安装之后配置环境变量的步骤如下 1 点 此电脑 右键选 属性 2 选择 高级系统设置 环境变量 如下图 3 新建环境变量JMETER HOME 如下截图 4 点击确定之后 编辑 CLASSPATH 的变量 在变量值最后追加内容 JMETER
  • 你要的住宅地产行业数据化解决方案来啦!

    传统标准化复制品和服务越来越难以应付市场需求与行业竞争格局的改变 众多房地产企业寻求数字化转型 在转型过程中 会遇到各种各样的挑战 而一套合适的住宅地产行业数据化解决方案会解决很多难题 助力房企顺利实现转型 我推荐帆软住宅地产行业数据化解决
  • 记一次JAVA自定义@interface中方法定义诡异问题

    诡异问题描述 使用IDEA工具 正常不报错但是执行mvn install的时候 出现了大量的方法和属性不存在提示错误 实际上都要是存在 但无论如何都编译不通过 这种场景有点类似于在一个类中少了个大括号 然后真个类报错的那种感觉 问题查找 排
  • Dyna-Q算法的理论基础及其代码实践【CliffWalking-v0】

    Dyna Q 理论基础 强化学习中 模型 通常指与智能体交互的环境模型 即对环境的状态转移概率和奖励函数进行建模 根据是否具有环境模型 强化学习算法分为两种 基于模型的强化学习 model based 无模型的强化学习根据智能体与环境交互采
  • 2016年蓝桥杯省赛生日蜡烛题目

    生日蜡烛 问题描述 某君从某年开始每年都举办一次生日party 并且每次都要吹熄与年龄相同根数的蜡烛 现在算起来 他一共吹熄了236根蜡烛 请问 他从多少岁开始过生日party的 请填写他开始过生日party的年龄数 注意 你提交的应该是一
  • logistic回归_二元logistic回归分析

    SPSS学习乐园 点击上方 蓝色 字体可关注 logistic回归 前面介绍过多重线性回归分析 该分析方法是研究一个因变量 服从正态分布 与多个自变量的数量关系 多重线性回归分析 在医学研究中 常常需要研究的结局变量不是连续型变量 而是二分
  • Windows 重装系统-U盘启动盘制作及启动

    重启可以解决90 的问题 重装系统可以解决99 9 的问题 本文主要记录一下 相关过程及相关注意事项 以联想电脑为例 一 制作U盘启动盘 准备工具 U盘 最好8G以上 电脑 联网 注意 1 制作完成后U盘会被格式化 1 浏览器搜索 win1
  • GD32F103基础教程—跑马灯实验(六)

    一 教程简介 本章主要是讲解多路GPIO输出实验 及相关GPIO输 出配置方法 并控制LED2和LED3灯实现间隔1s闪烁 二 实验流程 1 工程配置 跑马灯工程配置方法与第五章的配置方法一致 具体请 查看第五章教程 本章不再赘述 2 源码
  • linux下kbhit的头文件,linux下kbhit的实现

    我们知道 在windows下有个键盘测试函数 int kbhit void 使用该函数需要包含头文件conio h 执行时 kbhit测试是否有键盘按键按下 若有则返回非零值 否则返回零 在Unix Linux下 并没有提供这个函数 在li
  • Matlab似然比检验函数,似然比检验 (LR test)

    计量中检验的一般套路是以 p value 显著 拒绝原假设为理想情况 然而总有几个检验的假设是不按套路出牌的 Hansen 检验算一个 LR 检验算第二个 Stata 应用 LR 检验可用于模型的比较和选择 用法与 Hausman 检验相似
  • 【Python基础】之字符串格式化(%百分号形式和format形式)

    字符串的格式化主要有两种 第一种是 形式的 第二种是python特有的 format形式 百分号形式 s 我是 s 我今年 d岁 mary 18 print s 我是mary 我今年18岁 format形式 t 我是 我今年 岁 forma
  • Android studio配置Google play服务

    Android studio配置Google play服务 1 File gt settings gt Android SDK gt SDK tools gt 勾选 Google Play services 然后Apply OK即可 可参考
  • OpenCV-Python实战(1)——OpenCV简介与图像处理基础

    OpenCV Python实战 1 OpenCV简介与图像处理基础 OpenCV介绍 Python安装OpenCV OpenCV主要模块 OpenCV应用场景 OpenCV图像处理基础 图像基础 图像处理中的主要问题 图像处理流程 像素 颜
  • 将整数n分成k份(回溯)

    Name 将整数n分成k份 回溯 Copyright Author 巧若拙 Date 16 12 18 13 25 Description 将整数n分成k份 将整数n分成k份 且每份不能为空 任意两份不能相同 不考虑顺序 例如 n 7 k
  • [单片机]KeilC51简单流水灯制作与原理

    P1 单行最简流水灯示例 首先先看原理图 下面为对应解释 最好使用低电平驱动 所谓低电平驱动就是引脚部分为低电平 就如图中电路所示 VCC处于LED右侧 故LED右侧高电平而其左侧低电平 符合条件 这里使用八个LED 自上而下排列 注意这里