| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 如何用Keil uVision3和ISIS 7 Professional中C51单片机做出 LED流水灯 -> 正文阅读 |
|
[嵌入式]如何用Keil uVision3和ISIS 7 Professional中C51单片机做出 LED流水灯 |
大家好,今天教一教大家如何做出LED流水灯的实验,本文将分为四个部分,第一部分将教大家如何用ISIS软件排布电路,第二部分教大家如何用Keil写出实现流水灯的代码,第三部分教大家如何将二者联系起来,第四部分是结语。 一.排布电路 1.首先我们先打开软件,这里我使用的是Proteus 7 Professional图标如下: ? 2.接下来我们打开软件,找到“P”的按钮(看图片中红圈)点击进入找寻我们所需的单片机 ?3.在搜索栏输入“89C51”看到左边最上面一个就是我们这次要找的C51单片机“AT89C51”选中之后点击右下角的“OK”按钮 ?4.点击“OK”后我们自动会回到主界面,这时光标变为了铅笔样式,我们点击一次鼠标左键即可出现所选单片机,可以通过滑动鼠标进行位置的改变,也可以通过键盘上的“+”按钮进行单片机的旋转,之后我们再点击一次鼠标左键即可将单片机放置于操作界面上,如下图所示: ?5.现在我们就要寻找LED灯了,首先跟寻找C51单片机一样重复上面的操作,只是在搜索的时候输入“LED”,这里我选择了一个黄灯?,接下来如何放置也是和单片机的放置方法相同。 ?6.那么我们需要实现流水灯,所以要放多个灯,(注意灯的放置的方向)这时我们继续点击鼠标左键,会继续出现LED灯,依次放置即可: ?7.现在我们要将他们挨个与单片机上的端口连接,我们将鼠标移到P0.0/AD0端口处,点击鼠标左键即可进行线的放置,在移动光标移到LED灯的左端接口点击鼠标左键,那么电线就布置成功了,最后的效果图如图所示?: ?8.那么接下来我们要放置电阻,这里起到的是限流的作用,寻找方式也是和单片机的方式一样,在搜索栏中输入“Resistors”,这里我选择的是“0.6W Metal Film”,右边点击的是第一个之后点击“OK” ?9.之后我们将其放置,(注意电阻的放置方向),然后我们将其依次与LED灯连接,效果如图所示 ? ?10.接下来我们要放置电源,我们点击鼠标右键点击“Place”,点击“Terrminal”再点击“Power”即可放置和单片机方式一样:? ?11.放置成功后,在进行电线的连接,效果如图所示: ?12.到此为止,我们的电路排版就算完成了,接下来就是我们如何通过代码实现我们想要的流水灯的效果。 二.通过使用keil软件输入代码,来实现所要的流水灯效果: 1.首先呢,我这次使用的软件是Keil uVision3,图片如下图所示: ?2.我们接下来打开keil,要生成一个hex文件,这个文件是我们与上一个软件之间搭建桥梁的一个重要文件,我们打的代码就会储存于其中随后应用于上一个文件,首先我们新建一个工程 ?3.这里我将其命名为demo2(因为之前有一个是命名为demo)之后会出现选择CUP的界面,我们一定要选择和我们刚刚上一个软件所选择的单片机型号相同即“AT89C51”,(在有书本图标旁边写的是Atmel) ? ?4.点击“确认”后我们会出现这个界面,我们点击“否”就可以了 ? ?5.接下来我们要在工具栏(左上角)的 File中新建一个文件 ?6.点击后会出现一个输入代码的框,这时我们再按Ctrl+S保存为demo2.c一定要将后缀修改为.c。这个文件就是我们要的C语言源文件 ?7.之后我们点击左边的项目工作空间,点击Target的Source Group1下面,鼠标右击点击“Add Files to Group'Source Group' ”: ?8.之后所出现的界面双击demo2.c就可以将其添加到Source Group1文件夹中 ?如果出现这种情况不用担心,这时已经添加好了,直接关了就可以了: ?8.这时候我们就发现Source Group1中就有我们的demo2.c,那么下来就是打代码的时间啦 ?9.这里我建议大家打代码是可以在vs里面打,因为这个软件直接打的话会很麻烦,所以会建vs里面打代码,接下来就是教大家如何打出我们所需代码了,这里我先写了部分代码的注释: ?10.接下来为大家解释第16行代码的具体含义:这里的的P0 << 1是指左移的意思,举个例子我们上面的代码是让P0 = 0xfe,这里0xfe是十六进制转换为二进制就是1111 1110,当P0左移时P0也就等于1111 1100,向左移一位,空出的位数补0,但是我们只是让第二个灯亮,其余灯灭,而这时我们的P0的值是让第一二的灯亮其余的灭,所以我们要通过或运算做到我们所期望的效果,这里的或运算与我们大学所学的离散数学有关。 ????????大家应该知道1V0=1(这里的V是或的意思),这个就是我们或运算的核心,这里我用的是0x01,转换为二进制就是0000 0001,大家跟我一起来看,当P0左移一位时是1111 1100,这时我们的或运算进行使用也就是1111 1100 V 0000 0001 = 1111 1101,多么美妙,这是就是第二个灯亮,其余灯灭,那么我们再来一次,再左移一位也就是1111 1010,那么或运算登场1111 1010 V 0000 0001 = 1111 1011 ? ? ? ? 好了这就是这一行语句的基本含义,抱歉由于个人水平有限,自己很难给大家讲清楚,也是自己想了些时候才有所体会,望大家多多包涵,那我们接着继续 ?11.这里我简单的解释了一下,相信读者们一定会理解其中的含义:
12.这时我们将所打代码复制到keil上并且点击下图中红圈的按钮,观察下方的框里是否显示有error有的话就是代码打错了(这里我是0个error就是没有错误的意思,大家输入的代码也要有这样的显示哦): 三.二者结合 1.好了,现在我们输入代码的过程就结束了,接下来就是生成hex文件,将其与我们上一个软件联系起来,让我们开始吧,首先执行如图所示的操作: ?2.下面我们点击“Option for Target ‘Target 1’”点击Output,在Create HEX File处打勾,再点击确定即可: ?3.这时我们再点击下图中红圈按钮,即可生成一个hex文件(可看下方的框中所画的红线) ?4.这时我们可以回到上一个软件中,双击C51单片机即可出现如下图所示界面 ?5.我们再点击图中红圈内容 ?6.点击之后出现如下界面,我们找到我们之前所存储keil文件处找到以.hex为后缀的文件,点击“打开”即可: ?7.我们再点击红圈的内容,也就是“OK”即可 ?8.之后再点击左下角的按钮“play”即可开始运行即演示我们的流水灯实验 ?9.想要结束运行可点击左下角一列图标中最右边的一个(红圈)即可结束: ?四.结语 那么大家辛苦了,这么有耐心看我讲这么长时间的流水灯实验,由于本人是一位知识还很浅薄的学生,一些的点没有讲的那么清楚,所以希望大家能够理解。大家有什么疑问也可以留言向我提问等等各种方式,只要是我看到的会尽自己一切能力给大家解答的,那么,争取下次给大家带来更优质的文章,感谢大家的阅读,谢谢大家,再见啦! |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:48:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |