大家好,今天教一教大家如何做出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.这里我简单的解释了一下,相信读者们一定会理解其中的含义:

void delay(u16 num)//这里是前面定义的delay函数括号里面是要设置的灯闪烁间隔时间
{u16 x, y;//不知道的可以看一看前面几步for (x = num; x > 0; x--){for (y = 110; y > 0; y--){;}}
}

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.想要结束运行可点击左下角一列图标中最右边的一个(红圈)即可结束:

四.结语

那么大家辛苦了,这么有耐心看我讲这么长时间的流水灯实验,由于本人是一位知识还很浅薄的学生,一些的点没有讲的那么清楚,所以希望大家能够理解。大家有什么疑问也可以留言向我提问等等各种方式,只要是我看到的会尽自己一切能力给大家解答的,那么,争取下次给大家带来更优质的文章,感谢大家的阅读,谢谢大家,再见啦!

如何用Keil uVision3和ISIS 7 Professional中C51单片机做出 LED流水灯相关推荐

  1. 【嵌入式基础】用C语言编程、寄存器实现LED流水灯程序;stm32CubeMX+Keil使用HAL库点亮流水灯

    本文主要介绍STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化设置步骤.利用C语言编程和寄存器点亮流水灯以及stm32CubeMX+Keil使用HAL库点灯 目录 一.STM3 ...

  2. 请基于Keil uVision5软件写出led流水灯代码

    首先,您需要确保您的开发板有一个LED,并且您已经安装了Keil uVision5软件.接下来,您可以使用以下代码编写led流水灯: #include<reg51.h>sbit LED = ...

  3. 基于STM32安装Stm32CubeMX,配合Keil完成LED流水灯和USART串口通讯程序,及其管脚的时序波形观察

    目录 一.使用HAL库完成LED流水灯 (一).用STM32CUBEMX生成工程文件 (二).用Keil仿真调试并生成hex文件 (三).用STM32串口烧录程序 (四).实物连接 二.使用HAL库完 ...

  4. 【自学51单片机】2 -- LED小灯及点亮原理介绍、keil软件编写程序、烧录程序和点亮 LED 小灯

    目录 1. 外设 LED 介绍 2.计算限流电阻 3.USB接口电路介绍 4.点亮LED小灯原理 5.特殊功能寄存器和位定义 6.通过keil软件建立工程 7.编写程序 8.烧录程序 9.收获 1. ...

  5. 单片机(ISIS 7 Professional):简易按钮控制LED代码项目

    设计思路:当按钮摁下时灯亮,松开时灯灭. 基本电路如下: 使用的代码如下: #include<reg51.h> #include<intrins.h> #define ucha ...

  6. keil流水灯c语言程序两个一起亮,我用keil c51编了一个流水灯程序,编译无误却只有第一和第二个灯亮了,最后停在第一个灯处不动...

    满意答案 zJ张俭 2014.02.09 采纳率:43%    等级:12 已帮助:10469人 你有几个错误: 1 你的定时器没有重装,导致第一次中断和后面的中断时间不一样,第一次时间短,后面的时间 ...

  7. [Keil][Verilog][微机原理] 流水灯、存储器、外部中断实验_北京邮电大学计算机原理与应用课程实验报告

    计算机原理与应用实验-流水灯.存储器.外部中断实验 1 实验一 流水灯实验 1.1 实验目的 掌握ARM开发工具的使用. 掌握基本IO的使用. 1.2 实验原理及内容 电路结构图 实现流水灯的电路结构 ...

  8. C51单片机之keil编程入门(一)

    C51单片机之keil编程入门(一) 编程需结合原理图来理解 附上单片机原理图:http://file.elecfans.com/web1/M00/56/5B/pIYBAFs9rlmAcK6tABHJ ...

  9. keil流水灯c语言程序两个一起亮,51单片机学习之陆 —— 1.2 第一个c51程序(点亮流水灯)...

    原标题:51单片机学习之陆 -- 1.2 第一个c51程序(点亮流水灯) 由于学校的板子跟我买的板子有些差异,为了大家的阅读,以后的所有程序编写烧录都以老师发的板子为主. 1 事先准备 a 驱动安装, ...

  10. Proteus安装后点击“ISIS 7 professional”报错:cannot find a valid licence key for ISIS Professional on this co

    问题描述 安装Proteus后,再点击"ISIS 7 professional"执行文件,会弹出一个对话框,内容大概是:cannot find a valid licence ke ...

最新文章

  1. pandas使用dropna函数删除dataframe中列非缺失值的个数小于某一比例阈值的数据列
  2. 转-linux系统脚本 环境变量 的启动顺序
  3. 关于SAP UI5 CRM Reuse Fiori应用的代码审查
  4. zigbee是什么,为什么说它最适合智能家居设备
  5. python将字符串写入csv_用Python将字符串值写入CSV文件
  6. 【今日CV 视觉论文速览】22 Nov 2018
  7. TS各个表 与 SECTION 的解析 CAS原理
  8. 不敢去争取,学不会珍惜,却难以忘记——dbGet(三)
  9. 办公用品管理系统VB——模块
  10. python input函数详解_Python如何使用input函数获取输入,看完你就会了
  11. PHP--heredoc语法结构定义字符串
  12. 电工杯B题小代码分享
  13. python根据url下载视频_Python爬取某视频并下载
  14. python万年历代码带解释_Python 万年历代码简单示例
  15. 深圳神州行今日起单向收费 零月租成套餐亮点
  16. 《Mastering OpenCV》--3.Markless AR.无标识式AR (1)
  17. AxureRP原型设计 快速开始
  18. 小象学院python数据分析课程怎么样_【小象学院】Python数据分析 升级版 第二期...
  19. npy文件的打开,读取
  20. 使用remote desktop manager管理windows远程桌面连接

热门文章

  1. 计算机室和电子备课室管理制度,电子备课室管理制度
  2. 体验火热的Python抢票神器,先让你50个加速包
  3. j2me怎么运行java_[转载]使用J2ME进行开发一个简单的KJava应用程序示例(2)
  4. 我的家乡主题网页设计
  5. gre 填空双选题目
  6. java jave_jave是什么意思
  7. 计算机应用教程卢湘鸿,计算机应用教程
  8. Tapestry5 事件分派机制
  9. php生成色斑图,等值线图以及色斑图实现方式综述
  10. JSP九大内置对象和四大作用域