Keil使用教程(单片机控制LED灯)
单片机实验——利用中断控制LED

单片机实验——利用中断控制LED本实验利用中断控制单片机的GPIO口控制LED的亮灭,达到了在不同的时间间隔下实现LED的闪烁、呼吸等效果。
本实验可以让初学者更好地理解与掌握单片机的中断和GPIO 控制。
一、实验器材准备1. STC12C5A16S2单片机开发板2. LED灯3. 1KΩ电阻4. 杜邦线二、实验原理本实验中,我们需要利用单片机的GPIO口控制LED灯的亮灭。
其中,单片机的GPIO 口需要设置为输出模式,即控制LED灯亮灭的电平。
在运行中,通过改变电平状态来控制LED的亮灭。
而中断控制则是为了实现不同的效果,比如在不同的时间间隔下闪烁、呼吸等。
中断是指硬件或软件的外部事件,它会打断当前正在执行的程序,转为执行中断程序。
在单片机编程中,我们可以采取中断方式实现不同的操作。
三、实验步骤1. 首先,连接电路。
将LED作为单片机GPIO控制的输出口,同时连接一个1KΩ的电阻,如下图:2. 打开Keil软件,新建工程,导入STC12C5A16S2头文件。
3. 在代码中,首先需要定义GPIO的引脚,接下来进行中断初始化设置。
4. 编写闪烁程序,实现LED在不同时间间隔下闪烁,如下:```cvoid Led_Flash(void){Led_ON(); //LED灯亮Delay(500); //延时等待500msLed_OFF(); //LED灯灭Delay(500); //延时等待500ms}```5. 编写呼吸程序,实现LED在不同时间间隔下进行呼吸灯效果。
```cvoid Led_Breath(void){uint8 i;uint16 j;for (i = 0; i < 10; i++) //变量i控制灯的亮度{for (j = 0; j < 2000; j++) //变量j控制每次延时等待的时间{Led_ON();Delay_us(i * 20);Led_OFF();Delay_us((9 - i) * 20);}}}```6. 编写中断控制程序,通过定时器中断来实现LED的不同效果。
实验1 KEIL+PROTEUS使用——单灯闪烁

注意:使用的是连接导线,不是画线工具,否则无法仿真。
图1-24绘制系统原理图
※系统仿真
(10)选中AT89C51单片机,并单击打开“Edit Component”对话框,在“Program File”栏后单击选择程序按钮,如图1-25所示。
※新建工程
(2)新建工程在“Project”菜单中选择“NewuVisionProject…”命令。如图1-4所示。
图1-4新建工程
(3)弹出新建工程窗口如图1-5所示,在对话窗中创建名为“test1”的工程,单击“保存”按钮。
注意:将新建的工程保存在准备工作中新建的“test1”文件夹中。
图1-5新建工程窗口
图1-22所需元件
※摆放元件
(7)在工作区中加添加完所需元件,并摆放到合适的位置。
※添加电源/地
(8)在工具栏上单击“Terminals Mode”按钮,在窗口中选择电源“POWER”添加到工作空间中,如图1-23所示。
注意:电源为“POWER”,接地为“GROUND”。
图1-23添加电源
※绘制电路
图1-11源文件添加到工程
※工程选项设定
(11)在工程(Project)窗口的“Target 1”上单击鼠标右键,弹出如图1-12所示的右键菜单中选择“Options for Target‘Target 1’…”。
图1-12选项设置
(12)在弹出如图1-13所示的“Options for Target‘Target 1’”窗口中选择“Output”选项卡,并勾选“Creat Hex File”选项,单击“OK”按钮关闭选项窗口。
2
单灯闪烁流程图如图1-2所示。
keil编程控制处理器io口驱动led灯的方法

keil编程控制处理器io口驱动led灯的方法如何用Keil编程控制处理器IO口驱动LED灯?引言:在嵌入式系统开发中,控制处理器的IO口驱动LED灯是一项非常基础和常见的任务。
Keil是一种常用的集成开发环境(IDE),它为各种处理器和编程语言提供了广泛的支持。
本文将详细介绍如何使用Keil编程来控制处理器的IO口,实现LED灯的驱动。
第一步:选择合适的开发板首先,我们需要选择一款适合的开发板。
开发板一般配有相应的处理器和外设,并提供了引脚用于连接LED灯。
在选择过程中,我们需要考虑处理器型号、外设资源以及开发工具支持等因素。
第二步:安装Keil开发环境在开始编程之前,我们需要在电脑上安装Keil开发环境。
Keil MDK是一种常用的嵌入式开发工具,它提供了IDE、编译器、调试器等多个组件,可以满足我们开发和调试的需求。
第三步:创建新的工程打开Keil MDK,点击“File”->“New”->“Project”来创建新的工程。
在弹出的窗口中,选择合适的处理器型号,并设置工程的名称和存放路径。
第四步:配置工程在创建新工程后,我们需要进行一些配置。
首先,在“Options for Target”的“Target”选项卡中,设置处理器的时钟频率和其他相关配置。
然后,在“Options for Target”的“C/C++”选项卡中,设置编译器的优化选项和其他编译相关配置。
第五步:编写代码接下来,我们需要在工程中编写代码来控制处理器的IO口,并驱动LED 灯。
Keil支持多种编程语言,包括C和汇编语言。
下面,我们以C语言为例,演示如何编写控制代码。
首先,我们需要包含相应的头文件,以便使用Keil提供的库函数和寄存器定义。
例如,对于STM32系列处理器,我们可以使用"stm32f4xx.h"头文件来定义寄存器名称和相关宏。
然后,我们可以定义一个函数,用于初始化处理器的IO口,设置为输出模式。
单片机原理keil使用教程

keil教程Keil 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和C 语言的程序设计,界面友好,易学易用。
下面介绍Keil软件的使用方法,这应该算一个入门教程,进入Keil 后,屏幕如下列图所示。
几秒钟后出现编辑界启动Keil uVision4时的屏幕。
简单程序的调试学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。
下面通过简单的编程、调试,引导大家学习Keil C51软件的基本使用方法和基本的调试技巧。
1) 对于单片机程序来说,每个功能程序,都必须要有一个配套的工程〔Project〕,即使是点亮LED这样简单的功能程序也不例外,因此我们首先要新建一个工程,打开我们的Keil软件后,点击:Project-->New uVision Project...然后会出现一个新建工程的界面,如图2-8所示。
2)因为是第一个实验,所以我们在硬盘上建立了一个实验1 的目录,然后把LED这个工程的路径指定到这里,这样方便今后管理程序,不同的功能程序放到不同的文件夹下,并且给这个工程起一个名字叫做LED,软件会自动添加扩展名LED.uvproj。
如图2-9所示。
下次要打开LED这个工程时,可以直接找到文件夹,双击这个.uvproj 文件就可以直接打开了。
图2-9 保存工程3〕保存之后会弹出一个对话框,这个对话框让我们选择单片机型号。
因为Keil软件是外国人开发的,所以我们国内的STC89C52RC并没有上榜,但是只要选择同类型号就可以了。
Keil 几乎支持所有的51核的单片机,这里还是以大家用的比较多的Atmel 的AT89S51来说明,如下列图2-10、图2-11所示,选择AT89S51之后,右边栏是对这个单片机的基本的说明,然后点击确定。
图2-10 选择芯片公司图2-11 选择具体芯片4〕点击OK之后,会弹出一个对话框,如图2-12所示,每个工程都需要一段启动代码,如果点“否”编译器会自动处理这个问题,如果点“是”,这部分代码会提供应我们用户,我们就可以按需要自己去处理这部分代码,那这部分代码在我们初学51的这段时间内,一般是不需要去修改的,但是随着技术的提高和知识的扩展,我们就有可能会需要了解这块内容,因此这个地方我们选一下“是”,让这段代码出现,但是我们暂时不需要修改它,大家知道这么回事就可以了。
怎么样用KEIL新建STM32工程并点亮LED灯

KEIL新建STM32工程并点亮LED灯Ray_Zhang 1、新建工程,保存后会弹出芯片选型对话框,如图1。
图1 新建工程芯片选型保存后弹出对话框,是否要自动建立与芯片有关的驱动。
如图2图2 建立驱动选是,会出现图3:图3 建好的工程分别加入文件,如图4,除了main文件以外,都是别人搞好的,太方便了吧。
图4 添加文件修改以后的图3变为如图5图5 修改以后的工程把所要用的库文件考到一个文件夹里面,方便以后配置,如图6,这些都头文件都不需要自己写。
图6进一步配置程序,如图7,前面不怎么注意的配置就没有标出来了图7 将要添加的库文件加到这里在最后一栏里一定要点setting,不会在下载的时候会报错,如图8图8 配置下载程序框图如果报错如图9的对话框,那说明图8没设置好。
图9 报错对话框2.程序#include "stm32f10x.h" //定义启动设置,以及所有寄存器宏定义GPIO_InitTypeDefGPIO_InitStructure;// 初始化GPIO口,定义了一个名字为GPIO_InitStructure的结构体,而此结构体相当于继承了GPIO_InitYypeDef,在下面直接继承了其字段并赋值。
u32 i=0; // 定义延时参量int main(void){SystemInit(); //系统时钟配置函数通过不同的定义来选择不同的主频这里设置是72m RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//打开功能时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化IO口while (1){for(i=0;i<=0x1ffff;i++);GPIO_SetBits(GPIOA, GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);//置高IO口for(i=0;i<=0x1ffff;i++);GPIO_ResetBits(GPIOA,GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);//置低io口}}。
单片机LED灯实验报告

单片机LED灯实验报告
本次实验我们使用单片机控制LED灯的亮灭,这是一个非常简单的实验,适合初学者。
1、实验原理
单片机是一种集成电路芯片,具有计算机的基本结构和功能,可以通过编程实现对外
设的控制。
在本实验中,我们通过编程控制单片机的输出口,使其控制LED灯的亮灭。
2、实验器材
1)单片机开发板
2)LED灯
3)导线
4)电池
5)万用表
3、实验步骤
第一步:连接电路,将开发板上的输出口与LED灯的正极连接起来,将GND和LED灯
的负极连接起来。
第二步:打开开发板和计算机,用Keil uVision软件编写程序,将程序下载至单片机。
第三步:将电池接电,观察LED灯的亮灭情况。
第四步:使用万用表进行电压和电流检测,确保电路工作正常。
4、实验结果
当单片机控制输出端口时,LED灯会随之变化。
当单片机输出低电平时,LED灯熄灭;输出高电平时,LED灯亮起。
通过这次实验,我们掌握了单片机的基本原理和一些控制技巧。
这对于我们以后了解
和使用单片机会有很大的帮助。
同时,也加深了我们对电路基础知识的认识和理解。
单片机_LED灯闪烁实验报告

实验报告一、实验目的1、掌握51单片机实验开发板的使用步骤。
2、以LED闪烁为例子,通过keil4软件进行汇编程序的输入、运行、调试、仿真。
3、掌握STC-ISP的使用方法,将程序下载到实验板中。
二、实验设计1、实验仪器、设备:计算机、型号为STC89C52RC的51单片机开发板2、软件:USB驱动软件、keil4开发软件、STC-ISP3、实验流程图设计:4、软件设计:1)keil4软件使用A.双击keil4标志,执行keil4软件B.在E盘中新建文件夹:zuoye1,以保存本实验中所产生的文件。
将计算机中原有的main.c文件复制到文件夹zuoye1中。
C.点击“project”“New uVision project”,给工程取名为zuoye1,保存在文件夹zuoye1中。
在新出现的窗口中选择“Atmel”“AT89C51”,按“OK”后在新出现的窗口选择“否”。
D.点击“file”“New”,新建一个原文件。
双击“source Group1 ”,添加main.c文件。
添加成功后将LED程序输入文件中。
#include<AT89X51.H>//=======================================#define uint unsigned int;#define uchar unsigned char;//=======================================uint x,y;uchar idx;//=======================================void main(void){P1_3 = 1;P0 = 0xff;idx=0;while(1){P1_3 = 0;P0 = ~(7<<idx);//add delayfor( x=0;x<250;x++ ){for( y=0;y<1000;y++ ){}}idx++;idx=(idx%8);}}//=======================================//endE、输入完成后,点击图标保存,再分别点击进行调试。
单片机仿真软件Keil C51软件的使用教程(中文版)

单片机仿真软件Keil C51软件的使用教程(中文版)keil uvision2 C51软件是目前功能最强大的单片机c语言集成开发环境,本软件及视频教程可以本站下载。
下面我们通过图解的方式来Keil C51软件的使用教程,学习最简单的,如何输入源程序→ 新建工程→ 工程详细设置→ 源程序编译得到目标代码文件。
第一步:双击Keil uVision2的桌面快捷方式(图1),启动Keil集成开发开发软件。
软件启动后的界面如图2所示。
图1:启动Keil uVision2单片机集成开发环境图2:软件启动后的界面第二步:新建文本编辑窗。
点击工具栏上的新建文件快捷按键,即可在项目窗口的右侧打开一个新的文本编辑窗,见图3所示。
图3:新建文本编辑窗第三步:输入源程序。
在新的文本编辑窗中输入源程序,可以输入C语言程序,也可以输入汇编语言程序,见图4。
图4:输入源程序第四步:保存源程序。
保存文件时必须加上文件的扩展名,如果你使用汇编语言编程,那么保存时文件的扩展名为“.asm”,如果是C语言程序,文件的扩展名使用“*.C ”。
图5:保存源程序注:第3步和第4步之间的顺序可以互换,即可以先输入源程序后保存,也可以先保存后输入源程序。
第五步:新建立Keil工程。
如图6所示,点击 "工程" → "新建工程" 命令,将出现保存对话框(图7)。
图6:新建工程图7:保存工程对话框在保存工程对话框中输入你的工程的文件名,Keil工程默认扩展名为".uv2",工程名称不用输入扩展名(见图7),一般情况下使工程文件名称和源文件名称相同即可,输入名称后保存,将出现"选择设备"对话框(图8),在对话框中选择CPU的型号。
第六步:选择CPU型号。
如图8所示,为工程选择CPU型号,本新建工程选择了ATMEL公司的AT89C51单片机。
图8:选择CPU型号对话框第七步:加入源程序到工程中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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、观察数据存储器(运行程序后)
20
总结(Keil过程)
(1)新建一个Project项目文件(.uv2) 选择单片机型号(Atmel-AT89C51) (2)编辑源文件并存盘(.ASM) (3)将源程序添加到工程中 (4)设置Keil工程目标项
编辑窗口 输出信息窗口
图2-6 Keil C51在编辑状态下的操作界面
5
1、新建一个项目(New Project)
点击Project菜单,选择弹出的下拉式菜单中的New Project,如下图。接着弹出一个标准Windows文件对话 窗口。
6
如下图在“文件名”中输入您的第一个C程序项目 名称,这里我们用“test”, “保存”后的文件扩 展名为uv2,这是KEIL uVision2项目文件扩展名
RXD TXD ALE/P PSEN
10 11 30 29
1K
23
部分源代码
• 一个发光管显示的例子 ORG 0000H
START: MOV P1,#0FEH SJMP $ END
24
• 一个发光管闪烁的程序 ORG 0000H
START:MOV P1,#0FEH ACALL DELAY MOV P1,#0FFH ACALL DELAY SJMP START
单片机控制LED灯 实验例程
河南大学 王艺
1
本讲内容:
介绍Keil的使用 设置,新建一个工程,新建一个程序ASM文 件,加载一个文件,编译与传输到硬件。 观察:学会硬件的观察,以及存储器单元的 观察 实例:完成对一组LED灯的闪烁控制。
2
Keil软件介绍
启动界面
3
4
菜单栏 工具栏
工程管理器窗口
13
8、选择程序存储目标
14
9、创建EPROM可以存储的HEX文件
15
11、开始/停止调试
16
12、连接到仿真器
• 操作:先按仿真器的“复位” 按钮,再“开始Debug”
17
13、观察程序存储器
• 操作:在“Address”中输入:0000,或者c:0000
18
14、观察数据存储器(运行程序前)
Q0
D0
Q1
D1
Q2
D2
Q3
D3
Q4
D4
Q5
D5
Q6
D6
Q7
D7
OE LE
74LS373
3 4 7 8 13 14 17 18
1 11
VCC
VCC
33pF
33pF 100
10uF RESET
12MHz
1 2 3 4 5 6 7 8
P10 P11 P12 P13 P14 P15 P16 P17
13 12
MOVC A,@A+DPTR ;取数据表中的值
CJNE A,#0FFH,SHOW;检查流水结束标志
AJMP START ;所有花样流完,则从头开始重复流
SHOW: MOV P1,A ;将数据送到P1口
ACALL DELAY ;调用延时子程序
INC DPTR ;取数据表指针指向下一数据
注意: 先在F盘建 “09DQ xxx yyy” 的文件夹
7
2、选择所用的单片机类型 Atmal下的AT89C52
8
3、新建单片机源文件(.ASM是汇编程序)
“1”是新建文件的快捷按钮,在“2”中出现一个新的文字编辑窗口 “3”是存盘的快捷按钮
9
4、编辑源文件
• 注意:Tab键的使用
10
5、保存源文件为xxx.asm文件
WR
39 P00 38 P01 37 P02 36 P03 35 P04 34 P05 33 P06 32 P07
10K
1 P10 2 P11 3 P12 4 P13 5 P14 6 P15 7 P16 8 P17
10 RXD 11 TXD 30 ALE/P 29 PSEN
AT89C51
+5V 1K 9013
AJMP LOOP ;继续查表取数据
28
TAB: ;下面是流水花样数据表,用户可据要求任意编写 DB 11111110B ;二进制表示的流水花样数据,从低到高左移 DB 11111101B DB 11111011B DB 11110111B DB 11101111B DB 11011111B DB 10111111B DB 01111111B DB 01111111B ;二进制表示的流水花样数据,从高到低右移 DB 10111111B DB 11011111B DB 11101111B DB 11110111B DB 11111011B DB 11111101B DB 11111110B DB 0FEH,0FDH,0FBH,0F7H ;十六进制表示的流水花样数据 DB 0EFH,0DFH,0BFH,7FH DB 7FH,0BFH,0DFH,0EFH DB 0F7H,0FBH,0FDH,0FEH DB 0FFH ;流水花样结束标志0FFH END ;程序结束
S1:
MOV P1,A
RL A
ACALL DELAY
SJMP S1
DELAY: ……
END
是
设置初始值 设移位次数 数据输出
左一位 延时
否
ห้องสมุดไป่ตู้
移位次数完 成?
(A)P1口循环点灯程序框图27
发光管任意变换的程序
ORG 0000H
START:
MOV DPTR,# TAB ;流水花样表首地址送DPTR
LOOP: CLR A ;累加器清零
• 注意:文件的后缀名
11
6、向项目中添加文件
操作:选择source group,按右键,选择 Add Files to Group ’Source group1’
12
7、编译源文件为机器码
1、2、3都是编译按钮。1是用于编译单个文件。2是编译当 前项目(如果先前编译过一次之后文件没有编辑改动,不会 再次重新编译的)。3是重新编译(每点击一次均会再次编 译链接一次,不管程序是否有改动)。在3右边的是停止编 译按钮,只有点击了前三个中的任一个,停止按钮才会生效。 4是信息窗口。5是包含了1、2、3。6是进入调试模式。
Output:Create HEX files Debug: Use Keil Monitor-51 Driver (5)汇编源程序,生成HEX文件 (6)运行调试 Debug—Start/Stop Debug Session 连接仿真器(注意复位) 运行:Go、Step、Step Over、Stop
部分源程序
DELAY:MOV R5,#0FFH D1: MOV R4,#0FFH
DJNZ R4,$ DJNZ R5,D1 RET END
25
观察:延时程序的延时时间
• Sec=0.06s=60ms • 如何计算,以后会讲
26
部分源程序
开始
发光管循环(流水灯)程序
ORG 0000H
START: MOV A,#0FEH