LED循环点亮用keil实现

合集下载

51单片机led闪烁实验原理

51单片机led闪烁实验原理

51单片机led闪烁实验原理单片机是一种集成了处理器、内存以及各种输入输出接口的微型电脑。

51单片机是目前应用最广泛的单片机之一,具有广泛的应用领域和强大的功能。

在学习电子和嵌入式系统的过程中,LED闪烁实验是一项基础的实验,可以帮助我们了解单片机的原理和实际应用。

LED(Light Emitting Diode)是一种晶体管器件,具有发光功能。

在电子产品中,常常用LED作为指示灯或显示器,如电脑电源指示灯、手机屏幕等。

LED的闪烁实验是通过控制单片机的输出端口来实现的。

实验原理很简单,需要使用51单片机、LED、电阻和蜂鸣器等元件。

首先,将单片机的输出端口与LED连接,通过编程控制该输出口的高低电平,从而控制LED的亮灭。

在单片机编程中,可以使用C语言或汇编语言,根据控制单片机输出端口的特定语句和循环语句,来控制LED的闪烁频率和灯亮时间。

在51单片机的编程中,我们需要了解几个关键概念。

首先是端口的概念,51单片机有几个IO口,在编程时需要给这些口标号,方便操作。

其次是输入输出控制,单片机的IO口既可以作为输入口,也可以作为输出口。

在本实验中,我们将LED连接到输出口,通过控制输出口的电平来控制LED的亮灭;再次是时钟的概念,单片机需要时钟信号来计算和执行指令,我们需要初始化时钟,以确保单片机正常工作。

以下是简单的51单片机LED闪烁实验代码示例:```#include <reg52.h>sbit LED = P1^0; // 定义LED连接的引脚void Delay(unsigned int t) //延时函数{unsigned int i, j;for(i = t; i > 0; i--)for(j = 110; j > 0; j--);}void main(){while(1){LED = 0; // 将LED引脚置低电平Delay(1000); // 延时1秒LED = 1; // 将LED引脚置高电平Delay(1000); // 延时1秒}}```以上代码通过控制LED引脚的电平状态实现LED的闪烁。

Keil使用教程(单片机控制LED灯)

Keil使用教程(单片机控制LED灯)

INT1 INT0
15 14
T1 T0
31
EA/VP
19 18
X1 X2
9
RESET
17 16
RD WR
AT89C51
P00 P01 P02 P03 P04 P05 P06 P07
39 38 37 36 35 34 33 32
P20 P21 P22 P23 P24 P25 P26 P27
21 22 23 24 25 26 27 28
+12V
IN4001
J
+5V
10K 100
9013
J 100K
100
22K
LED
30
21
实例:单片机控制LED灯
• 从P1输出数据,控制LED(观察:低电平/高电平发亮?): MOV P1,#00H
或者 MOV P1,#0FFH • 如何使LED灯闪烁?
按照Keil使用方法,连接仿真器,完成这个实验,总结实验过程!
22
硬件线路
VCC
270*8 2 5 6 9 12 15 16 19
29
电路设计
+5V
RES
33pF 33pF
10uF
100
12MHZ
1K
21 22 P20 23 P21 24 P22 25 P23 26 P24 27 P25 28 P26
P27 12 13 INT0
INT1 15 14 T1
T0 31
EA/VP 19 18 X1
X2 9
RESET 17 16 RD
• 操作:在“Address”中输入:D:0000
19
15、观察数据存储器(运行程序后)

新手如何利用KEIL 5 新建 STM 32 LED灯闪烁

新手如何利用KEIL 5 新建 STM 32 LED灯闪烁

新手如何利用KEIL5新建STM32单片机LED闪烁灯刚刚接触keil5这个软件,同时也刚刚接触STM32单片机,这两样东西,对于我来说,我完全就是一个门外汉,什么都不懂,为了建立这个LED闪烁灯,一个半月下来了,才刚刚建立完成。

现在把建立LED闪烁灯过程步骤,书写下来,以供新手参考1、打开keil5软件,然后点击新建工程保存新建工程路径以及工程名称保存成功后,就会弹出一个对话框,让选择单片机型号。

然后选择合适的单片机。

选完单片机后,点击OK按钮,弹出对话框点开CMSIS,选择CORE,别问我为何选这个,我也不懂,再点开Device,选择图片中绿色的部分,别问为什么,我也不懂啊!!我也挺郁闷的,为何这样选择。

(如果亲们不论现在还是将来知道这么做的原因,请告诉我,谢谢!!)PS:在网上找别人的,别人说,这些是Keil5的启动文件,arm内核的文件,ST公司的函数库和一些API等等,RCC(时钟初始化)CORE和STARTUP(初始化文件)这两个。

然后在工程文件路径下,新建一个“SYSTEM”,这个名称可以自定义。

用来存放常用程序,如下图新建一个空白文件,保存为“main.c”格式PS:之前截图的时候,保存格式保存错了,所以又重新建了一个新工程,所以这个图片会和后面的截图中,保存路径不一致。

但不影响说明然后选择添加刚刚新建立的main.c文件,单击Add即可添加成功,然后关闭退出。

接着选择这个按钮在Groups中,点击右侧虚线框,添加之前新建立的“SYSTEM”文件夹,以及“main.c”所在的文件夹。

同时点击右侧Add Files添加文件夹下对应的C文件点击小仙棒进行设置。

首先设置的是仿真频率,把下图中,8.0修改为实际硬件电路中的晶振频率然后是编译文件格式以及保存路径。

这里把编译文件格式设置为hex文件,并且把编译OK的文件保存在OUT路径下(双击OUT文件夹,点击OK即可)再次,C/C++界面下,Define输入框中,输入如图对应位置所示。

左右来回循环的流水灯实验报告

左右来回循环的流水灯实验报告

青 岛 科 技 大 学微机原理与接口技术综合课程设计(报告)题 目 __________________________________指导教师__________________________ 学生姓名__________________________ 学生学号_________________________________________________________院(部)____________________________专业________________班______年 ___月 ___日直流电机控制综合实验 周艳平宋雪英 01 信息科学技术学院计算机科学与技术0961 2012 12 27摘要 (2)1、单片机概述 (2)2、仿真软件介绍 (2)3、需求分析 (3)一、课程设计目的 (3)二、课程设计要求 (4)三、实验内容 (4)1、设计任务与要求 (4)2、系统分析 (4)1).硬件电路设计(画出原理图、接线图) (5)2)软件框图 (7)3、用keil建项目流程 (8)4、程序清单 (9)4、系统调试 (11)四、设计总结(结论) (12)摘要近年来,随着电子技术和微型计算机的发展,单片机的档次不断提高,起应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到广泛的应用、成为现代电子系统中最重要的智能化的核心部件。

而AT89C51就是其中一种,它是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMO8位微处理器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

本课程设计介绍一种LED小灯控制系统的设计方法,以单片机作为主控核心,与按键、排阻、电阻、电容等较少的辅助硬件电路相结合,利用软件实现对LED灯进行控制。

能够通过按键控制8个LED小灯从左到右依次点亮。

关键字:单片机、LED流水灯1、单片机概述单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。

keil软件的使用方法

keil软件的使用方法

Keil 软件的使用随着单片机开发技术的不断发展,目前已有越来越多的人从普遍使用汇编语言到逐渐使用高级语言开发,其中主要是以C 语言为主,市场上几种常见的单片机均有其C 语言开发环境。

这里以最为流行的80C51单片机为例来学习单片机的C 语言编程技术。

大家都有C 语言基础,但是编单片机程序,大家还得找专门的书来学习一下。

这里我们只介绍Keil 这种工具软件的用法。

学习一种编程语言,最重要的是建立一个练习环境,边学边练才能学好。

Keil 软件是目最流行开发80C51系列单片机的软件,Keil 提供了包括C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(µVision )将这些部份组合在一起。

下面我以一个实验举一个例子,一步一步学习Keil 软件的使用。

首先我们看硬件原理图:很明显,要点亮使发光二极管,必须使单片机的I/O 口P1.0输出低电平。

于是我们的任务就是编程序使P1.0输出地电平。

1. 使用Keil 前必须先安装。

安装过程简单,这里不在叙述。

2. 安装好了Keil 软件以后,我们打开它。

打开以后界面如下:3.我们先新建一个工程文件,点击“Project->New Project…”菜单,如下图,:3.选择工程文件要存放的路径,输入工程文件名LED, 最后单击保存.4.在弹出的对话框中选择CPU 厂商及型号5. 选择好Atmel 公司的AT89S52 后, 单击确定1.在接着出现的对话框中选择“是”。

5.新建一个C51 文件, 单击左上角的New File 如下图所示:6.保存新建的文件,单击SA VE如下图:2.在出现的对话框中输入保存文件名MAIN.C(注意后缀名必须为.C),再单击“保存”,如下图;7.保存好后把此文件加入到工程中方法如下: 用鼠标在Source Group1 上单击右键, 然后再单击Add Files to Group …Source Group 1'如下图:8.选择要加入的文件 , 找到 MAIN.C 后 , 单击 Add, 然后单击 Close9.在编辑框里输入如下代码 :10.到此我们完成了工程项目的建立以及文件加入工程 , 现在我们开始编译工程如下图所示 : 我们先单击编译, 如果在错误与警告处看到 0 Error(s) 表示编译通过;11.生成 .hex 烧写文件,先单击Options for Target,如图;12.在下图中,我们单击 Output, 选中 Create HEX F。

单片机控制LED灯点亮(C语言)

单片机控制LED灯点亮(C语言)

将0xfe赋给P1口,然后使用移位函数来改变P1口的值,达到流水灯的效果 移位函数: _crol_,_cror_:将char型变量循环向左(右)移动指定位数后返回 。 _crol_,_cror_: c51中的intrins.h库函数
程序如下:
随后会弹出一个对话框,要求选择单片机的型号。在该对话框中显示了Vision2的器件数据库,从中可以根据使用的单片机来选择。
PART ONE
AT89S52
8051 based Full Static CMOS controller with Three-Level Program Memory Lock, 32 I/O lines, 3 Timers/Counters, 8 Interrupts Sources, Watchdog Timer, 2 DPTRs(DATA POINTER REGISTERS ), 8K Flash Memory, 256 Bytes On-chip RAM 基于8051全静态CMOS控制器、 三级加密程序存储器 、 32个I/O口 、三个定时器/计数器 、八个中断源 、看门狗定时器、2 个数据指针 寄存器、8k字节Flash,256字节片内RAM
十六进制整常数
十六进制整常数的前缀为0X或0x。其数码取值为0~9,A~F或a~f。 以下各数是合法的十六进制整常数: 0X2A(十进制为42) 0XA0 (十进制为160) 0XFFFF (十进制为65535) 以下各数不是合法的十六进制整常数: 5A (无前缀0X) 0X3H (含有非十六进制数码)
各种进位制的对应关系
十进制
二进制
十六进制
十进制
二进制
十六进制
0
0
0
9
1001

实验1 KEIL+PROTEUS使用——单灯闪烁

实验1 KEIL+PROTEUS使用——单灯闪烁
(9)使用连线工具,将各元件用导线连接起来,绘制完成的电路如图1-24所示。
注意:使用的是连接导线,不是画线工具,否则无法仿真。
图1-24绘制系统原理图
※系统仿真
(10)选中AT89C51单片机,并单击打开“Edit Component”对话框,在“Program File”栏后单击选择程序按钮,如图1-25所示。
74HC04
11
NPN三极管
Transistors
NPN
注意:<1>发光二极管需选择“LED-XXX”,单个的“LED”不能仿真,“XXX”表示发光二极管的颜色。
<2>数码管“7SEG-MPX1-CA”最后的“CA”表示共阳极,“CC”表示共阴极。
<3>使用电阻时,可以在RES的选项中更改电阻值。
(6)将本实训中需要AT89C51单片机、LED-RED、RES三个元件添加到工程器件库中,如图1-22所示。
for( x = 0; x < n; x ++ ){
for( y = 0; y < 121; y ++ ){
;
}
}
}
四、操作步骤
1
在电脑的硬盘上新建一个“test1”文件夹,用于存放本实训中所用到的工程文件(包括程序及仿真文件)。
注意:文件夹名称最好不要含有中文字符。
2
※启动KEIL
(1)双击桌面图标如图1-3所示,打开keil软件。
图1-27运行仿真
(13)保存仿真文件。
注意:良好的编程习惯是学习的重要方法。
五、思考题
1.使用多种方法修改程序,使发光二极管亮灭时间长一些。
2.假设单片机P1.0、P1.1、P1.2、P1.3引脚各接1个发光二极管D1-D4,编程实现D1-D4同时亮灭变化。

单片机实现发光二极管的循环点亮控制

单片机实现发光二极管的循环点亮控制

单片机实现发光二极管的循环点亮控制LT一、设计题目用8031单片机实现发光二极管的循环点亮控制。

采用3个按键分别控制发光二极管的启动、停止及每个灯点亮的时间的更换,定时时间有软件控制。

二、设计内容与要求用8031单片机控制8个发光二极管循环点亮。

要求用按键控制点亮时间(如每个灯点亮0.5秒或者1秒等,各灯点亮时间相同)。

按启动键开始循环点亮;按停止键后停止。

三、设计目的意义1、掌握单片机系统中扩展简单I/O接口的方法。

2、掌握单片机的硬件接口电路、8031单片机的内部结构及其编程方法。

3、掌握单片机的最小系统的设计。

4、掌握电路板的设计与制作。

5、了解程序编写与调试的方法和技巧。

6、综合掌握所学的单片机指令系统和硬件接口电路知识,进行简单的最小系统开发。

四、系统硬件电路图系统硬件图(图1)包括单片机最小系统(复位电路、晶振电路和相关的控制信号)、外电路接通显示部分、及电源显示部分。

设计硬件电路图时,其基本思想:先通过万能板搭建试验平台,将编好的程序下载到51中,等可以达到预期要求后,最后在PROTEL中设计原理图与PCB,做出电路板。

图1 系统硬件图五、程序流程图与源程序5.1流程图5.2源程序5.2.1程序设计思想单片机通入电源后,一直让单片机对8031的P1和P3口进行采集,将8031的P3口开关信号送入8031,以控制流水灯的亮灭及时间。

5.2.2源程序清单#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit KEY1 = P3^2;sbit KEY2 = P3^3;sbit KEY3 = P3^4;uchar Count = 0,i,k;uchar code table[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};void Delay(uint del){uint i,j;for(i=0; i<del; i++)for(j=0; j<1827; j++);}void Time0_Init(){TMOD = 0x01;TH0 = 0x4c;TL0 = 0x00;TR0 = 1;IE=0x82;}void Time0_Int() interrupt 1{TH0 = 0x4c;TL0 = 0x00;Count++;}void Outside1_Init(void){IT0 = 1;EX0=1;EA=1;}void Outside1_Int(void) interrupt 0 {EX0 = 0;Delay(3);if(KEY1 == 0){while(1){P0 = table[k];if(KEY2==0){break;}}}Delay(30);EX0 = 1;}void Main(void){uint i = 0,j=0;Time0_Init();Outside1_Init();while(1){ for(i=0;i<8;i++){P0 = table[i];k=i;if(KEY3 == 0){Delay(1);if(KEY3== 0) {j++;}Delay(50);}if(j%2==1){while(1){if(Count == 20){Count = 0;break;}}}else{while(1){if(Count == 10){Count = 0;break;}}}}}}六、系统功能分析与说明6.1系统主要组成部分(1)单片机的最小系统部分包括晶振电路、复位电路、主电源引脚Vss和Vcc、控制引脚/EA。

项目一keil软件的使用及灯光闪烁

项目一keil软件的使用及灯光闪烁

项目一:keil软件的使用及灯光闪烁实验一、项目目的:1、练习keil软件的使用2、会用单片机控制单个LED灯闪烁二、项目设备1、MCU01 主机模块2、MCU02 电源模块3、MCU04 显示模块4、SL-USBISP-A 在线下载器5、电子连线若干三、项目内容(一)keil软件的使用51 单片机系列最受欢迎的开发软件为Keil C51。

它支持汇编,C 语言开发,软件仿真等功能。

具有相当大的用户群,功能强大,资料丰富。

下面简要介绍一下它的使用方法。

安装完成后,运行此程序进入软件界面。

界面如下图所示:使用具体方法:1、建立项目建立项目的目的是方便对源程序的统一管理,对编译条件编译设置的存储等。

项目文件和源程序文件是相互独立的两种文件。

它们可以存放在不同的目录内,但为了以后管理,通常放在一个目录内。

建立项目的方法是菜单栏中的“Project->New->uVision Project”,然后会弹出一个保存对话框,请选择存放文件夹并保存(一般是事先建立一个文件夹)。

保存项目文件的同时会弹出一个“select device for Target ‘Taget 1’”对话框,通过此对话框选择目标芯片相同的型号并按确定按钮以确定。

最后还会弹出一个对话框,询问是否加载启动文件到项目中,如果是用C 语言开发就点“是”,如果要用汇编编程就点“否”。

整个流程如下图所示。

创建源程序通过“File->New”新建一个源文件,保存此源文件时没有扩展名,如果是 C 语言编程请加扩展名“.c”,如果用汇编编程请加扩展名“.asm”。

源文件最好与项目文件放在同一个文件夹内,以便管理。

2、添加源程序文件到项目右击项目管理器中的项目文件,在弹出的菜单中选择“Add Files to Group ’source Group 1’”,在弹出的对话框中找到上一步保存的源程序文件加载到项目中。

双击刚才加载的源程序文件,在工作空间中完成程序的编辑。

12 实验2 Keil C51软件的使用

12 实验2 Keil C51软件的使用

究竟从哪一个单元开始的相邻单元则与你的设置 有关。 • 以整型为例,如果你输入的是I:0,那么00H 和 01H单元的内容将会组成一个整型数;如果你输 入的是I:1,01H和02H单元的内容全组成一个整 型数,以此类推。 第三部份的Modify Memory at X:xx 用于更改鼠标 处的内存单元值,选中该项即出现一个对话框, 可以在这个对话框内输入要修改的内容。
1、围绕一个案例,通过工程建立→文件建立 →文件添加→参数设置→程序输入→程序编 译→程序调试→程序运行等过程,全面学习 Keil C51软件的使用方法。 2、观察寄存器窗口、各类存储器窗口内容, 掌握不同空间的不同检查方法。 3、用单片机仿真器、实验箱进行仿真调试。
三、仪器设备
计算机、Keil uVision3 软件。 单片机仿真器、实验箱。
观察窗口
1、反汇编窗口(Dissambly Window)
点击View→Dissambly Window可以打开反汇编窗 口。 该窗口可以显示反汇编后的代码、源程序和相应 反汇编代码的混合代码。 可以在该窗口进行在线汇编、利用该窗口跟踪已 找行的代码、在该窗口按汇编代码的方式单步执 行。

用单片机仿真器调试程序
第一步:单片机仿真器的连接。
仿真头
计算器
仿真器
实验箱A1区
第二步:连接实验箱电路。 实验箱A2区:P1口 实验箱D1区:LED
LED
P1口
第三步:KEIL软件应用。 硬件仿真运行(全速、单步、设置断点), 查看运行情况。
注意: 工程设置→Debug页面→ Use:→选择型号 (如STAR) →右侧列表→选择型号(如 STAR51PH+)


这些窗口的显示值可以以各种形式显示,如十进制、 十六进制、字符型等,改变显示方式的方法是点鼠 标右键,在弹出的快捷菜单中选择。 该菜单用分隔条分成三部份,其中第一部份与第二 部份的三个选项为同一级别。 选中第一部份的任一选项,内容将以整数形式显示。 选中第二部份的Ascii项则将以字符型式显示。 选中Float项将相邻四字节组成的浮点数形式显示。

实验一 按键实验

实验一 按键实验

实验一 LED灯及按键实验一、实验目的1、了解KEIL软件和STC下载软件的操作方法。

2、学习用KEIL软件编写程序和STC软件下载程序的操作。

3、掌握单片机I/O口的应用,并学会简单的流水灯程序的编写。

4、理解独立按键的控制原理,能用独立按键控制led的亮灭。

二、实验设备1、单片机口袋机。

2、mini USB口下载线。

三、实验内容1、通过控制单片机I/O口的状态控制led灯的亮灭。

(LD0,LD1,LD2,LD3)2、控制四个led灯循环点亮。

3、通过口袋机上的按键(K0~K3)控制四个led灯亮灭,亮灭的形式可以多样化。

四、实验原理1、口袋机上的4个LED灯为共阳极的,实现LED流水灯时,单片机的I/O口可以控制LED灯的变化,本程序用到单片机的P3.7,P4.1,P4.2和P4.3口,分别对应口袋机的LD0,LD1,LD2,LD3。

现象为LED灯从右到左依次点亮并循环。

图1 LED接口原理图图2 LED原理图下面是P3口和P4口的I/O口的工作类型设定:2、按键(轻触开关)是一种广泛应用于各种电子设备的元件,比如我们最常用的电视机面板控制按钮,遥控器按钮。

其实就是一个常开的开关,按下后两个触点接触形成通路状态,松开时形成开路状态。

相关原理图如下:图1 按键原理图图2按键接线图五、实验步骤1、建立“TEST”文件夹,用于存放实验一的所有文件2、启动Keil uVision4 先建立一个空文件夹,之后建工程的时候把工程文件放在里面,以避免和其他文件混合,例如在桌面创建了一个“TEST”的文件夹。

双击桌面上的Keil uVision4图标打开软件3、点击“Project”选项,选择新建工程。

单击Project菜单,建立一个新工程。

在弹出的下拉菜单中选中New uvision Project选项。

4、给文件命名,例如“test”,将文件保存到“TEST”文件夹内新建的工程的文件的名字比如为“test”后缀必须是.uvproj用户可根据需要随便命名,保存到刚才新建的文件夹“TEST”下5、在该窗口选择CPU为“STC MCU”在弹出来的对话框中选择STCMCU Database6、选择单片机型号:“STC15W4K32S4”在弹出的对话框中可以看到里面全部都是STC的单片机,选择“STC15W4K32S4”单片机,右边栏是对这个单片机的基本说明,然后点击“确定”之后出现下图所示,Target就是刚才新建的工程7、点击“Files”选项,选择“New”新建文本,单击保存按键,将保存的文件后缀改为“.c”文件,则默认为该文件为用C语言编写。

实验三——LED指示灯循环控制

实验三——LED指示灯循环控制

中国石油大学(北京)实验报告实验课程:单片机原理及应用实验名称:实验三——LED指示灯循环控制总学时:48 教师:林立成绩:实验日期:2013 年10 月24 日一、实验目的熟悉μVision3编译软件、掌握C51编程与调试方法。

二、实验内容1、按照教材P227的图A.32,绘制实验三电路原理图;2、编写C51程序,实现8个LED灯依次点亮的功能:P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.6→P0.5→┅→P0.0的顺序,无限循环,间隔约50ms;3、观察仿真结果,完成实验报告。

三、实验要求1、采用两种加载并运行可执行文件的方法,即proteus独立运行和proteus + Keil联合运行,体会其中的差异和意义;2、练习采用单步、断点以及监视窗等手段进行程序调试的方法;3、观察仿真结果,完成实验报告:绘制的电路原理图、编程思路分析及C51源程序、调试过程简述,仿真运行效果以及实验小结。

4、提交实验报告的电子邮件主题及存盘文件名格式如,2005041220马晓明实验三。

1、电路原理图图1 实验原理2、编程思路及C51源程序编程思路:本次实验目的是实现8个LED灯的自上而下,自下而上循环亮起。

指示灯的一次亮起通过在两个亮起的动作间加上一个肉眼可辨别的延时动作来实现,可编写一个延时程序来完成。

指示灯的自上而下亮起或自下而上亮起,将这个动态的过程截成一个个单独的状态,找出各个状态下各P0.n的状态值,经观察发现可通过左移或右移数值1来实现。

根据这一思路,可编写以下程序:图2 源程序3、调试过程简述1.建立工程文件单击菜单“Project”—“New project”选项,在“Create New Project”中输入文件名称,文件自动保存为.uv2格式。

2.选择单片机工程文件保存后,在弹出的“Select Device for ‘Target1’中选择intel下的80C51BH型单片机。

LED循环点亮用keil实现

LED循环点亮用keil实现

LED循环点亮用keil实现μVision2包括一个项目管理器,使应用系统的设计变得简单。

要创建一个应用,需要按下列步骤进行操作:●启动μVision2,新建一个项目文件并从器件库中选择一个器件。

●新建一个源文件并把它加入到项目中。

●针对目标硬件设置工具选项。

●编译项目并生成可编程PROM的HEX文件。

下面将逐步地进行描述,从而指引创建”LED循环点亮”的μVision2项目。

1)选择【Project】/【New Project】选项,如图所示。

图Project菜单2)在弹出的“Create New Project”对话框中选择要保存项目文件的路径,比如保存到keil目录里,在“文件名”文本框中输入项目名为”LED循环点亮”,如图所示,然后单击“保存”按钮。

图Create New Project对话框图选择单片机的型号对话框3)时会弹出一个对话框,要求选择单片机的型号。

几乎支持所有的51核的单片机,这里只是以常用的AT89C51为例来说明,如图所示。

选择Atmel/AT89C51之后,右边Description 栏中即显示单片机的基本说明,然后单击“确定”按钮。

4)这时需要新建一个源程序文件。

建立一个汇编或C文件,如果已经有源程序文件,可以忽略这一步。

选择【File】/【New】选项,如图所示。

5)在弹出的程序文本框中输入一个简单的程序,如图所示。

图新建源程序文件图程序文本框6)选择【File】/【Save】选项,或者单击工具栏按钮,保存文件。

在弹出的如图所示的对话框中选择要保存的路径,在“文件名”文本框中输入文件名。

注意一定要输入扩展名,如果是C程序文件,扩展名为.c;如果是汇编文件,扩展名为.asm;如果ini文件,扩展名为. ini。

这里需要存储ASM源程序文件,所以输入.asm扩展名(LED 循环点亮.asm),单击“保存”按钮。

图1-7 “Save As”对话框图7)单击Target1前面的+号,展开里面的内容Source Group1,如图1-8所示。

KeilC51学习2点亮LED灯

KeilC51学习2点亮LED灯

KeilC51学习2点亮LED灯P0⼝联接8个LED灯,P1^0~P1^7;#include<reg52.h>sbit LED=P1^0;void main(){LED=0;while(1);}//此⽅法使⽤1个字节对单个端⼝赋值P1 = 0xFF; //P1⼝全部为⾼电平,对应的LED灯全灭掉,//ff换算成⼆进制是 1111 1111P1 = 0xfe; //P1⼝的最低位点亮,可以更改数值是其他的灯点亮//0xfe是16进制,0x开头表⽰16进制数,//fe换算成⼆进制是 1111 1110全部取反,主函数中的代码修改为LED=~LED;#include<reg52.h>unsigned int i,j;void main(){while(1){P1=~(1<<j++);if(j==8){j=0;}for(i=0;i<50000;i++);}}1void main (void)2 {3while (1) //主循环4 { //主循环中添加其他需要⼀直⼯作的程序5 LED=~LED;6//将P1.0⼝赋值 0,对外输出低电平7 delay(100);//执⾏100次8 }9 }10void delay(int time)//延时函数11 {12int i=0;13while(time--)14 {15 i=4000;16while(i--);17 }18 }延时闪烁1void delay(int time)//延时函数2 {3int i=0;4while(time--)5 {6 i=4000;7while(i--);8 }9 }10void main (void)11 {12while (1) //主循环13 { //主循环中添加其他需要⼀直⼯作的程序1415 unsigned char i; //定义⼀个⽆符号字符型局部变量 i 取值范围 0~25516//P1=0xfe; //赋初始值17for(i=0;i<8;i++) //加⼊ for循环,表明for循环⼤括号中的程序循环执⾏8次18 {19 P1<<=1;20 delay(100);//执⾏100次21 }22 }23 }延时左移1void delay(int time)//延时函数2 {3int i=0;4while(time--)5 {6 i=4000;7while(i--);8 }9 }10void main (void)11 {1213 unsigned char i; //定义⼀个⽆符号字符型局部变量 i 取值范围 0~25514 delay(100);15 P1=0xfe; //赋初始值16while (1) //主循环17 {18for(i=0;i<8;i++) //加⼊ for循环,表明for循环⼤括号中的程序循环执⾏8次19 {20 delay(100);21 P1<<=1;22 P1=P1|0x01; //左移后,最右端⾃动赋值0,所以需要该语句赋值123 }24 P1=0xfe; //重新赋初始值25//主循环中添加其他需要⼀直⼯作的程序26 }27 }循环左移1 sbit LED0=P1^0;2void delay(int i)//延时函数3 {4while(i--);5 }6void main (void)7 {89 unsigned int CYCLE=600,PWM_LOW=0;//定义周期并赋值10while (1) //主循环11 {12 LED0=1;13 delay(60000); //特意加延时,可以看到熄灭的过程14for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++){ //PWM_LOW表⽰低15//电平时间,这个循环中低电平时长从1累加到CYCLE(周期)的值,即600次1617 LED0=0; //点亮LED18 delay(PWM_LOW);//延时长度,600次循环中从1加⾄59919 LED0=1; //熄灭LED20 delay(CYCLE-PWM_LOW);//延时长度,600次循环中从599减⾄12122 }23 LED0=0;24for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--){ //与逐渐变亮相反的过程2526 LED0=0;27 delay(PWM_LOW);28 LED0=1;29 delay(CYCLE-PWM_LOW);30 }31//主循环中添加其他需要⼀直⼯作的程序32 }33 }呼吸灯流⽔灯1 #include<reg52.h> //包含头⽂件,⼀般情况不需要改动,2//头⽂件包含特殊功能寄存器的定义34void delay100ms(unsigned char num);5/*------------------------------------------------6流⽔灯7------------------------------------------------*/8void main (void)9 {10 unsigned char led=0xff,mask=0x1,flag=0;11//unsigned char tflag=0,time=100;12while(1)13 {14 P1=led^mask; //mask为0 全灭15 delay100ms(5); //延时500ms16if(0x80==mask)17 flag=0;// 让mask向右位移18if(0x1==mask)19 flag=1;//让mask向左位移20 flag?(mask<<=1):(mask>>=1);21 }22 }2324void delay100ms(unsigned char num)25 {26 unsigned char n,m;27for(;num;num--)28 {29for(n=200;n;n--)30 {31for(m=250;m;m--);32 }33 }34 }流⽔灯函数实现流⽔灯1 #include<reg52.h> //包含头⽂件,⼀般情况不需要改动,2 #include<intrins.h>3#define uchar unsigned char //头⽂件包含特殊功能寄存器的定义 4void delay100ms(unsigned char num);5/*------------------------------------------------6利⽤_crol_、_cror_实现流⽔灯7_crol_ 将char型变量循环左移8_cror_ 将char型变量循环右移9------------------------------------------------*/10void main (void)11 {12 uchar x=0x3;13 bit flag=0;14while(1)15 {16 P1=x;17 delay100ms(10);18if(0x3==x)19 flag=0;20else if(0xc0==x)21 flag=1;22 flag?(x=_cror_(x,2)):(x=_crol_(x,2));23 }24 }25//延时函数26void delay100ms(unsigned char num)27 {28 unsigned char n,m;29for(;num;num--)30 {31for(n=200;n;n--)32 {33for(m=250;m;m--);34 }35 }36 }流⽔灯2指针实现流⽔灯#include <reg52.h>void delay(unsigned int);//指针实现流⽔灯代码unsigned char dis[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};void main(){unsigned char i,*p;//定义⼀个⽆符号字符型变量i各⼀个指向⽆符号字符型变量的指针变量P while(1){p=&dis[0];//把数组中第⼀个成员数据(0xFE)所占的内存地址赋给指针变量P for(i=0;i<8;i++){P1=*p;//取指针指向的数组元素,并拷贝给单⽚机的P0⼝p++; //指针加1,指向数组的下⼀个元素delay(10);}}}void delay(unsigned int i){unsigned int j;for(;i!=0;i--){for(j=3000;j!=0;j--);}}指针实现流⽔灯花样流⽔灯1 #include<reg52.h> //包含头⽂件,⼀般情况不需要改动,2#define uchar unsigned char //头⽂件包含特殊功能寄存器的定义3 uchar code tab[]={40x1,0x2,0x4,0x8,0x10,0x20,0x40,0x80, //正向流⽔灯50x40,0x20,0x10,0x8,0x4,0x2,0x1,0x0, //反向流⽔灯60x55,0xaa,0x55,0xaa,0x55,0xaa,0x0, //隔灯闪烁70x0f,0xf0,0x0f,0xf0,0x0, //⾼四盏底四盏闪烁80xcc,0x33,0xcc,0x33,0xcc,0x33,0x0//隔两盏灯闪烁9 };10void delay100ms(unsigned char num);11/*------------------------------------------------12花样流⽔灯13------------------------------------------------*/14void main (void)15 {16 uchar x;17while(1)18 {19for(x=0;x<35;x++)20 {21 P1=tab[x];22 delay100ms(10);23 }24 }25 }2627void delay100ms(unsigned char num)28 {29 unsigned char n,m;30for(;num;num--)31 {32for(n=200;n;n--)33 {34for(m=250;m;m--);35 }36 }37 }花样流⽔灯指针,⼆维数组花样流⽔灯#include <reg52.h>void delay(unsigned int ); //延时函数的声明//*******定义⼀个⼆维数组,存储40个彩灯数据。

keil5简单案例

keil5简单案例

keil5简单案例以下是一个简单的Keil5案例,用于点亮LED灯:1. 创建一个新的工程。

在Keil5中,选择“Project”菜单中的“New”选项,然后选择“Empty Project”。

在弹出的对话框中输入项目名称,例如“LED_Test”,然后点击“OK”按钮。

2. 添加头文件。

在Keil5中,选择“Project”菜单中的“Add Files”选项,然后选择“Header Files”。

在弹出的对话框中选择“C/C++”文件夹,然后选择“stdio.h”头文件,并点击“Add selected”按钮。

3. 编写代码。

在Keil5中,选择“Project”菜单中的“Add Files”选项,然后选择“Source Files”。

在弹出的对话框中选择“C/C++”文件夹,并输入代码。

例如,以下代码可以用于点亮LED灯:```#include <stdio.h>int main() {printf("Hello, World!\n");while(1) {printf("On\n");delay(1000);printf("Off\n");delay(1000);}return 0;}```4. 编译和调试。

在Keil5中,选择“Project”菜单中的“Build”选项,然后选择“Build”。

如果没有错误,可以选择“Debug”菜单中的“Start/Stop Debug Session”选项进行调试。

5. 连接硬件。

在Keil5中,选择“Project”菜单中的“Target”选项,然后选择“Connect to Target”。

在弹出的对话框中选择正确的连接设备,然后点击“OK”按钮。

6. 运行程序。

在Keil5中,选择“Debug”菜单中的“Start/Stop Debug Session”选项,然后等待程序运行完成。

单片机C语言LED灯点亮程序完全版

单片机C语言LED灯点亮程序完全版

1例子1第二个灯亮#include<reg52.h>void main(){P1=0xfd;}#include<reg52.h>Sbit D1=P1^0;Void main(){D1=0}注意:稍微改程序时需重新hex化例子2第一个灯亮#include<reg52.h> //52单片机头文件sbit led1=P1^0; //单片机管脚位声明void main() //主函数{led1=0; //将单片机P1.0口清零while(1); //程序停止在这里,在后面会讲到为什么这样写。

}例子3第一个灯亮#include<reg52.h> //52单片机头文件void main() //主函数{P1=0xfe; //将单片机P1口的8个口由高到低分别赋值为11111110 while(1); //程序停止在这里,在后面会讲到为什么这样写。

}2例子1第三个灯闪烁fir循环#include<reg52.h>sbit D2=P1^2;unsigned int a;void main(){D2=0;for(a=0;a<=10000;a++){};D2=1;for(a=0;a<=10000;a++){};}例子2第三个闪烁while循环#include<reg52.h>sbit D2=P1^2;unsigned int a;void main(){a=5000;D2=0;while(a--);a=5000;D2=1;while(a--);}2.#include<reg52.h> //52单片机头文件sbit led1=P1^0; //单片机管脚位声明void main() //主函数{unsigned int i; //定义一个int型变量while(1){i=50000; //变量赋初值为50000led1=0; //点亮灯while(i--); //延时i=50000;led1=1; //熄灭灯while(i--);}}3例子1 3 5 7灯同时亮#include<reg52.h> //52单片机头文件sbit led1=P1^0; //单片机管脚位声明sbit led3=P1^2; //单片机管脚位声明sbit led5=P1^4; //单片机管脚位声明sbit led7=P1^6; //单片机管脚位声明void main() //主函数{led1=0; //将单片机P1.0口清零led3=0; //将单片机P1.2口清零led5=0; //将单片机P1.4口清零led7=0; //将单片机P1.6口清零while(1); //程序停止在这里,在后面会讲到为什么这样写。

单片机奇数灯亮的程序

单片机奇数灯亮的程序

单片机奇数灯亮的程序一、实验目的1、掌握单片机的基本知识及操作相关技术能力;2、熟悉单片机程序的设计方法;3、了解单片机实际应用及其调试过程。

二、实验内容利用单片机开发板实现一个单片机程序实现交替点亮LED灯,让奇数段灯亮,偶数段灯灭,实现一个单片机奇数灯亮程序,体现单片机的思想及技术。

三、实验准备1、使用开发板:51单片机开发板2、使用软件:Keil 5、Keil Vision 4四、实验过程1、编写实验程序:#include<reg52.h>//定义宏变量#define uint unsigned int#define uchar unsigned char//定义变量uchar i;void delay(uint x) //延时函数{uint y;while (x--){for (y=0;y<120;y++);//延时函数}}void main(){while(1){for(i=0;i<8;i++)//8段LED灯{P1=~(0x01>i);//位运算,使奇数段LED灯亮,偶数段LED灯灭 delay(500);//延时500ms}}}2、编译&链接实验程序:在Keil Vision4中点击 Project->Options for Target将 Target 的 Device 选择为 AT89C52编译&链接实验程序,编译结束后,在左下角可以看到编译状态:Compiling/Assembling/Linking:0 Errors,0 Warnings,编译成功。

3、实验测试在开发板上连接好相应的LED灯,将编译链接完成的程序下载到单片机中,便可以看到LED灯中奇数段LED灯亮,偶数段LED灯灭。

五、实验结论通过本次实验,学会使用单片机开发板,使用Keil Vision4编写程序,实现了一个单片机奇数灯亮程序,体会到了单片机的编程思想及实际应用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

LED循环点亮用keil实现
μVision2包括一个项目管理器,使应用系统的设计变得简单。

要创建一个应用,需要按下列步骤进行操作:
●启动μVision2,新建一个项目文件并从器件库中选择一个器件。

●新建一个源文件并把它加入到项目中。

●针对目标硬件设置工具选项。

●编译项目并生成可编程PROM的HEX文件。

下面将逐步地进行描述,从而指引创建”LED循环点亮”的μVision2项目。

1)选择【Project】/【New Project】选项,如图所示。

图Project菜单
2)在弹出的“Create New Project”对话框中选择要保存项目文件的路径,比如保存到keil目录里,在“文件名”文本框中输入项目名为”LED循环点亮”,如图所示,然后单击“保存”按钮。

图Create New Project对话框
图选择单片机的型号对话框
3)时会弹出一个对话框,要求选择单片机的型号。

几乎支持所有的51核的单片机,这里只是以常用的AT89C51为例来说明,如图所示。

选择Atmel/AT89C51之后,右边Description 栏中即显示单片机的基本说明,然后单击“确定”按钮。

4)这时需要新建一个源程序文件。

建立一个汇编或C文件,如果已经有源程序文件,可以忽略这一步。

选择【File】/【New】选项,如图所示。

5)在弹出的程序文本框中输入一个简单的程序,如图所示。

图新建源程序文件图程序文本框
6)选择【File】/【Save】选项,或者单击工具栏按钮,保存文件。

在弹出的如图所示的对话框中选择要保存的路径,在“文件名”文本框中输入文件名。

注意一定要输入扩展名,如果是C程序文件,扩展名为.c;如果是汇编文件,扩展名为.asm;如果ini文件,扩展名为. ini。

这里需要存储ASM源程序文件,所以输入.asm扩展名(LED 循环点亮.asm),单击“保存”按钮。

图1-7 “Save As”对话框图
7)单击Target1前面的+号,展开里面的内容Source Group1,如图1-8所示。

1-8 Target展开图
8)用右键单击Source Group1,在弹出的快捷菜单中选择Add File to Group`Source Group1`选项,如图1-9所示。

图1-9 Add Files to Group ‘Source Group1’菜单
选择刚才的文件”LED循环点亮.asm”,单击“Add”按钮,添加完毕后单击“Close”按钮,关闭该窗口,这时在Source Group1目录里就有”LED循环点亮.asm”文件,如图所示。

图LED循环点亮.asm文件
9)接下来要对目标进行一些设置。

用鼠标右键(注意用右键)单击Target1,在弹出的会计菜单中选择Options for Target “Target 1”选项,如图所示。

图ptions for Target “Target 1”选项
12)、弹出Options for Target “Target 1”对话框,其中有8个选项卡。

①Target选项卡(如图所示)
●Xtal(MHZ):设置单片机工作的频率,默认是24.0MHz。

●Use On-chip ROM(0x0-0XFFF):表示使用片上的ROM,At89C51有4KB的可重编程的Flash ROM,这里选中该选项。

Target选项卡
●Off-chip Code memory:表示片外ROM的开始地址和大小,如果没有外接程序存储器,那么不需要填任何数据。

●Off-chip Xdata memory:
●Code Banking:支持自动的Bank的切换,这在建立一个大型系统时是必需的。

例如:在单片机里实现汉字字库,实现汉字输入法,都要用到该技术。

●Memory Model:单击Memory Model后面的下拉箭头,会有3个选项,如图所示。

图Memory Model选项
•Small:变量存储在内部RAM里。

这里选择Small模式。

•Compact:变量存储在外部RAM里,使用8位间接寻址。

•Large:变量存储在外部RAM里,使用16位间接寻址。

●Code Rom Size:单击Code Rom Size后面的下拉箭头,将有3个选项,如图1-15所示。

图Code Rom Size选项
•Small:program2K or less,适用于AT89C2051这些芯片,2051只有2KB的代码空间,所以跳转地址只有2KB,编译的时候会使用ACALL AJMP这些短跳指令,而不会使用LCALL,LJMP指令。

如果代码地址跳转超过2KB,那么会出错。

•Compact:2K functiongs,64K program,表示每个子函数的代码大小不超过2K,整个项目可以有64K的代码。

就是说在main()里可以使用LCALL,LJMP指令,但在子程序里只会使用ACALL,AJMP指令。

只有确定每个子程序不会超过2KB,才可以使用Compact 方式。

•Large:64KB program,表示程序或子函数代码都可以大到64KB,这里选择Large 方式。

Operating:单击Operating后面的下拉箭头,会有3个选项,这里选择None。

②设置Output选项卡(如图所示)
图设置Output卡
●Select Folder for Objects:单击该按钮可以选择编译后目标文件的存储目录,如果不设置,就存储在项目文件的目录里。

●Name of Executable:设置生成的目标文件的名字,缺省情况下和项目的名字一样。

目标文件可以生成库或者obj、HEX的格式。

●Create Executable:如果要生成OMF以及HEX文件,一般选中Debug Information 和Browse Information。

选中这两项,才有调试所需的详细信息,比如要调试C语言程序,如果不选中,调试时将无法看到高级语言写的程序。

●Create HEX File:要生成HEX文件,一定要选中该选项,如果编译之后没有生成HEX文件,就是因为这个选项没有被选中。

默认是不选中的。

③设置Listing选项卡(如图所示)
图设置Listing选项卡
选中Assembly Code会生成汇编的代码。

这是很有好处的,如果不知道如何用汇编来写一个long型数的乘法,那么可以先用C语言来写,写完之后编译,就可以得到用汇编实现的代码。

对于一个高级的单片机程序员来说,往往既要熟悉汇编,同时也要熟悉C语言,才能更好地编写程序。

某些地方用C语言无法实现,便用汇编语言却很容易。

有些地方用汇编语言,很繁琐,用C语言就很方便。

④设置Debug选项卡(如图所示)
这里有两类仿真形式可选:Use Simulator和Use:Keil Monitor-51 Driver,前一种是纯软件仿真,后一种是带有Monitor-51目标仿真器的仿真。

●Load Application at Start:选择这项之后,Keil才会自动装载程序代码。

1-19设置Debug选项卡
●Go till main:调试C语言程序时可以选择这一项,PC会自动运行到main程序处。

这里选择Use:Keil Monitor-51 Driver。

单击图中的Settings按钮,设置如图所示。

最后单击OK按钮关闭窗口。

13)编译程序,选择【Project】/【Rebuild all target files】选项,如图所示。

图Rebuild all target files
或者单击工具栏中的按钮,如图所示,开始编译程序。

图工具栏中的按钮
如果编译成功,开发环境下面会显示编译成功的信息,如图所示。

图编译成功信息
14)编译完毕之后,选择【Debug】/【Start/Stop Debug Session】选项,即就进入仿真环境,如图所示。

或者单击工具栏中的铵钮,如图所示。

图工具栏仿真按钮
这时候如果出现图所示对话框,那么硬件系统应复位一次,关闭总电源开关2秒后从新打开电源。

图联接失败对话框
按按钮,即可运行程序。

如果想停止运行程序,应按一下THKL-C51仿真器的复位按钮,等待约2秒后,程序
便停止运行,再次按按钮可返回。

相关文档
最新文档