输出毫秒_自学单片机第十三篇上:单点输出

关注一下,更多精彩等着你!

打开之前的工程,当然新建也可以,具体步骤看之前的文章就行。因为是学习,所以也用不着总是新建工程,起名起一大堆,接下来,除非要用两个执行文件,只要是单独的程序,我们就用这个工程就好了。

98917487439a9c6d2525a0301a4039b7.png

打开工程,上回是测试了软件和硬件,都没有问题。我们不用开发板,自学从简单入手,不用考虑译码器和功率放大。对于已经入门的,可能有点简单,但我想对于初来乍到的伙伴,还是慢慢来,别急。技术这碗饭,不论是不是为了挣钱,都要稳扎稳打。越快越难学会。

之前的程序头文件留着。如果想明白,为什么非要用头文件,不写行不行?我会再写一篇文章,讲一下原因。包括程序中的一些关键字。

这回咱来试一个控制单个IO口的操作。我们仅操作一个IO口,其它的不变。这里选择P1.0这个口。

程序还是我们首次测试的程序,之前运行过一次,这回我们对它作些改动,让它进行自动变换。

这就要用到一个延时函数了。咱说的延时不是定时器,就是让程序作一定时间的等待。

我们先说下芯片是如何运行的。晶振是芯片的心跳,由于芯片做出来后,工艺原因,程序运行的最小时间是12个心跳,就是一个机器周期。相当于精确振12下,程序动一下,而一个程序语句,要想完成运算,就平均要4个机器周期,当然也有一个周期的,咱不细看。研究基础结构留给以后学的上路了再说。

1/(12Mhz/12)=1/1M=10∧-6秒。

1秒=10∧3毫秒=10∧6微秒

由上推算看出,1个机器周期就是1微秒,所以完成一个运算是4微秒。我们假设要延时0.5秒,就要有:

0.5*10∧6/4=12500。

也就是大约1万步,我们写个1万,让它一直减到0,就是1万步。减的过程就相当于延时了,因为程序光在那儿算数了,啥也干不了,算完才能干其它的。这个算的过程就是延时的过程。

原理有了,接下来写程序,首先我们测试时的程序不动,仅需要添加延时部分就可以了。

延时程序代码如下,写完后记得编译一下,如果是语法错误,程序会帮你找到。我们要做到0错误,0警告。这样程序输出时才不会出现不必要的问题。减少自己调试的时间。

5c63fd4e00b02ce143de3b8d20f1290a.png

然后,由于是延时,我们可以通过keil的仿真分步运行,查看一下我们运行的时间是否合适。首先单击第三行那个小锤子一样的图标,进入设置,然后点开仿真选项,我们把晶振频率修改就可以了,改为11.05692.

b83f242c2c28958ebac3b27dce80078f.png
281e73eda1839f8266374565b4cad611.png

修改完成后,我们单击右侧的红色的debug按键,进入调试模式。

a123069232e4ad038ed5f9c292e158d5.png

进入后,在LED程序前,单击左键,设置断点。出现小红点就是设置成功。

882c8c7b2b074b07fcd5349292f4cb6f.png

接着先单击复位按键,然后再单击运行按键,单击一下就可以了,它会运行到第一个断点停下等待。

d7704f618f711113fb66100c59a6fb8f.png
e67058165f1bb429f55a4c2e47dcd477.png

出现的两个小三角就是说明程序此时等待在这里,左侧的列表显示的是内部数据,我们看下倒数第二行sec,这是时间。程序从开始到第一个语句的输出,用时0.00048秒。我们再次单击运行按键,观察时间变化。

6b76468fa0313d1477bf7dd4576b57f6.png

此时运行到了第二个语句,我们查看时间从0.00048变成了0.087,说明一个延时用了0.087秒,这个跟我们假想的0.5秒有点远啊,我们简单计算下频率1/0.087=11赫兹,先不管,我们用软件仿真一下试试。仿真发现,闪烁一下就没了,我们用示波器看下什么情况。

598a74c991c8a8d769d5e2d449f6b3a1.png
8944c859be8fd89469dc076eff5acc20.png

这个竖着一格是100毫秒,也就是0.1秒,我们从上图中可以看出,每两个黄色的竖线之间的间隔大致就是一格如果细看,0.8格也是差不多的。就相当于0.08秒。跟我们的程序仿真基本一致,说明我们的延时函数延时时间不够,为什么会出现这种情况?

因为程序在计算加减法的时间是速度比较快的,也就是说,他算加减根本不用四个机器周期。我们不管几个周期了。现在是0.08秒,那么,需要0.5秒,就是说需要大致六倍,程序中需要60000。咱们更改后再次仿真试下。

需记得,更改程序需要退出仿真,还是单击红色的debug就可退出了,更改后,需要先编译,再进入debug,不然程序虽然更改了,但是可执行文件还是原来的旧的,就运行不出更改后的效果。

7cacf825581d91bc1e115690ccfbcb36.png

这次就是0.5秒了吧。

通过软件仿真也说明了情况

930226b7a06813287fbac09865c8522b.png

示波器上也是5格一个脉冲,基本可以了。但是此时我们发现,灯并没有预想中的亮起,依然一闪而逝。我们看下示波器,发现,高电位也是一根根 的细线,几乎没有时间,什么情况呢?这就是很多同学学习初期经常会发生的,在程序中,我们的赋值是在最前边,单片机是顺序运行的,当他运行完第一个延时语句时,i已经从60000减为0了,这时再运行下一个延时语句时,就会直接判断等于0,跳出函数。所以就是一闪而逝。或者看不到发光。如何解决?

我们需要增加一个变量或者使用另一种循环体。简单的先增加一个变量j,让他也等于60000。再仿真一下。

870fdf5f2930af8ca25581fa5824c895.png

仿真后,波形就变成了0.5秒为5V,0.5秒为0V,这是可以看到,LED0.5秒亮,0.5秒灭。跟我们预期的一致了。

2edb7b2b8914e5807b0892cb003d5c9e.png

至此,程序调整结束了如果想查看视频的可以后台回复电气,关注后在单片机选项中点击视频观看。

还有硬件仿真运行,大家自己可以动手试试。问题出现不要气馁,因为我们不是什么都会,出现错误是肯定的,更改的过程才是学习,如果一帆风顺,那最终只会是一知半解。

如果有不懂或者问题可以留言或私信。

更多多内容,欢迎关注百家号:小亮谈电气。微信公众号:电气学苑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/297313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop分布式文件系统:架构和设计要点

一、前提和设计目标 1、硬件错误是常态,而非异常情况,HDFS可能是有成百上千的server组成,任何一个组件都有可能一直失效,因此错误检测和快速、自动的恢复是HDFS的核心架构目标。 2、跑在HDFS上的应用与一般的应用不同,…

22张令人叹为观止的照片,你所未知的另一面

全世界只有3.14 % 的人关注了爆炸吧知识见惯了身边的平淡和琐碎,总要开阔眼界,长长见识。走,带你看震惊世界的22张照片,保准惊呆你!1、你知道他们是如何安装那些巨大的电线塔的了吧:2、人体分离魔术&#x…

Windows 11 小技巧- WSL运行本地GPU算力

WSL 已经被很多开发⼈员⽤于云原⽣开发,但如果你像我每天要完成⼈⼯智能应⽤的 发,会⼀直希望能加上GPU算⼒,这样就不需要再去安装⼀台Linux的机器去做⼈⼯智能的⼯作了(毕竟很多的⼈⼯智能场景都是在Linux下完成的)。这次Windows 11 不仅⽀…

私房钱就藏在老婆眼皮底下

1 建议出一个藏私房钱的教程▼2 以前还是打飞的就这个价格,最多是个飞公交▼3 众所周知狗是不会剪视频的,所以是真的▼4 老实讲我小时候也幻想过这个操作▼5 这可真是一个悲伤的故事▼6 这可真是令人羡慕的发量▼7 退一步越想越气忍一时越想越亏▼…

19.Silverlight调用webservice上传多个文件

Silverlight不支持读写服务器端的硬盘,可是很多时候用户需要在Silverlight客户端往服务器端上传文件,那么本节将讲述 Silverlight中最简单的上传文件的方式:在Silverlight客户端将文件序列化为Byte[]字符组,然后服务器端使用 webS…

原创:PHP内核研究:HASH表和变量

PHP HASH表 在PHP中,所有的数据 无论变量,常量,类,属性 都用Hash表来实现. 先要说说 HASH表 [c]typedef struct bucket { ulong h; /* Used for numeric indexing */ uint nKeyLength; //key长度 void *p…

Windows 11 小技巧- 安装

Windows 11 依赖于TPM 2.0,什么是TPM呢?TPM技术旨在提供基于硬件的与安全性相关的功能。TPM芯片是⼀个安全的加密处理器,有助于执⾏⽣成、存储和限制加密密钥的使用等操作。TPM芯片包含多重物理安全机制,具有防篡改功能,恶意软件…

如何判断一个人是不是值得深入交流?

全世界只有3.14 % 的人关注了爆炸吧知识每次翻看刚加好友的朋友圈时,都会对 ta 产生直观的判断。如果朋友圈很丰富,往往会觉得 ta 很有趣,会迫切想要和 ta 链接,而看到某些很单调的朋友圈,根本就没有深入沟通的欲望。真…

Restive.js – 轻松让网站变成响应式和自适应

Restive.js 是一个 jQuery 插件,可以帮助您轻松快捷地添加响应式功能到你网站,适应几乎所有拥有 Web 功能的设备。使用设备检测,高级管理断点,以及方向管理的组合,Restive.js 会给你的网站提供一种不可思议的能力。 在…

消息分发的同步均衡策略

2019独角兽企业重金招聘Python工程师标准>>> TimeTunnel在做消息分发时有这样一个场景: A类消息需要做实时分析, 且量很大, 故它的消费者不会只是一台机器, 而是一组机器, 并要求这组中每台机器收到的消息量应该平均的, 即A消息在某个时刻有100条, 若有4台机器消费…

ssh长时间不操作便断开_连接SSH长时间不操作断开解决办法

经常连接ssh长时间不操作就断开,实在忍无可忍,每次都想解决这个问题,但是就是懒得搞,这次必须得一刀解决。解决方法一:服务器配置1、 连接SSHssh root192.168.0.1复制代码2、编辑sshd_configvim /etc/ssh/sshd_config复…

当下流行的直播技术demo演示

nginx-http-flv-module(更新不是很频繁) SRS: https://ossrs.net/lts/zh-cn/(独立官网,目前最新稳定版version5) 基于SRS搭建直播demo演示: 一、搭建流媒体服务器 参见官网:https://ossrs.ne…

SQL复制表

View Code --创建test_employee_info临时表结构&#xff0c;不保留关联关系select * into test_employee_info from employee_info where 1<>1;declare num intset num1while num<6begininsert into test_employee_info select employee_codepcast(num as varchar(1)…

Workflow Core + asp.net core 5.0 实现简单审批工作流

我们知道企业业务系统到处都可以审批工作流的&#xff0c;但也很少有像OA系统一样复杂多级多条件的审批工作流需要设计&#xff0c;所以我们需要一个轻量级的容易上手的workflow框架&#xff0c;通过GitHub,我发现danielgerlag/workflow-core 就非常合适&#xff0c;我下面我通…

超1亿人选择朋友圈三天可见,背后的原因值得深思

全世界只有3.14 % 的人关注了爆炸吧知识每次翻看刚加好友的朋友圈时&#xff0c;都会对 ta 产生直观的判断。如果朋友圈很丰富&#xff0c;往往会觉得 ta 很有趣&#xff0c;会迫切想要和 ta 链接&#xff0c;而看到某些很单调的朋友圈&#xff0c;根本就没有深入沟通的欲望。真…

基于HTML5手机上下滑动翻页特效

基于HTML5手机上下滑动翻页特效。这是一款手机移动端触屏滑动翻页代码下载。效果图如下&#xff1a; 在线预览 源码下载 实现的代码。 html代码&#xff1a; <section class"u-alert"><img style"display:none;" src"images/loading_larg…

一寸照纯红色底图片_和记场下载

新能的事普及棘手源汽依然情车的是件&#xff0c;为王花燃油但和比车相&#xff0c;为王花底解电池和记场下载在没决续基础建设高额问题航、有彻以及前充电成本&#xff0c;它的体量不大依旧&#xff0c;新能形成正在逐渐之势推广尽管局部源汽全球车的所以。第一直接兼老个家话…

学点css基础

中午时间学点css&#xff0c;附带http://www.w3cschool.cc/css/css-tutorial.html这个链接&#xff01; 中午的时间学了这些东西&#xff01;如下图: 附带代码&#xff1a; 1 <!DOCTYPE html>2 <html lang"en">3 <head>4 <meta charset&quo…

套套原来是这样装袋的,40个机械动图看懂好像并不容易。。。

今天咱们来多方位的展示机械的魅力1、真在的柔性自动包装线&#xff0c;可以同时实现一条线上多种不同物体的包装&#xff1a;好强大&#xff0c;美中不足的是没有防震包装&#xff0c;容易压坏商品。另外从视频上可以看出来纸板和物品一块出来&#xff0c;纸板出来时已经裁剪好…

云原生开发框架dapr环境搭建:CLI安装和初始化

dapr 是微软的一个云原生&#xff08;Cloud Native&#xff09;开源项目&#xff0c;英文全称&#xff1a;Distributed Application Runtime&#xff0c;中文要翻译的话就是&#xff1a;分布式应用运行时。也就是一个运行时框架&#xff0c;面向云原生架构。dapr官网地址&#…