点亮一个LED程序
教你用STM32一步一步点亮led灯

教你⽤STM32⼀步⼀步点亮led灯STM32之⼀步⼀步点亮led (2011-05-09 19:40)标签: stm32led v3.4MDK 4.12⼊门分类:stm32⼊⼿stm32以来,⼀直想快速上⼿,所以在各⼤论坛闲逛,各个达⼈的blog上学习,正所谓欲速则不达,⼼急是吃不了热⾖腐的!有⽊有?最终决定使⽤st官⽹的库开发,据⼤侠们写道使⽤库可以快速上⼿,貌似的确如此,⼀个个教程写的那么好,直接拿过来⽤就是了。
可是那么多个库,聪明的你请告诉到底选择哪⼀个啊?My God!实话实说,我被这些库折腾了个够!好吧,我最后还是承认最后⽤的是v3.4的库,是很⽅便!切⼊正题,点亮LED。
硬件:红⽜开发板,STM32F103ZET6(144封装).软件:RealView MDK 4.12stm32固件库:v3.4 附上⾃⼰整理后的库: V3.4_clean.rar根据官⽹库⾃⼰整理了下,新建了⼯程模板如下图:(主要参考⽂章《在Keil MDK+环境下使⽤STM32 V3.4库.pdf》)在KeilMDK+环境下使⽤STM32V3.4库.pdf⼊图所⽰:新建⼀个⽬录01_ProLed,建议放在英⽂路径下,避免不必要的⿇烦。
将上⾯的库v3.4解压到此⽬录,再新建⼀个project⽬录,存放⼯程。
说明:CMSIS:最底层接⼝。
StartUp:系统启动⽂件。
StdPeriph_Lib:stm32外围设备驱动⽂件。
Project:⼯程⽂件。
User:⽤户⽂件。
新建⼯程步骤:此处略去300字。
简单说明:1.core_cm3.c/core_cm3.h该⽂件是内核访问层的源⽂件和头⽂件,查看其中的代码多半是使⽤汇编语⾔编写的。
在线不甚了解。
--摘⾃《在Keil MDK+环境下使⽤STM32 V3.4库》2.stm32f10x.h该⽂件是外设访问层的头⽂件,该⽂件是最重要的头⽂件之⼀。
就像51⾥⾯的reg51.h⼀样。
51单片机LED程序代码

sbit wei=P1^1; // 数码管位控制,点阵列控制 sbit Line=P1^3; //点阵行控制
unsigned int i,j;
/*-----------------------------------------------主函数
------------------------------------------------*/ void main (void) { P0=0X00; //关闭点阵
void main() {
P0=0X00; //关闭点阵 Line=0; P0=0XFF; //关闭数码管 wei=0;
Leden=1; i=0xfe; while(1)
{ P0=i; delay(100); i=_crol_(i,1); //流水灯移位 } }
void delay(unsigned int sm) //延时函数 {
} }
P0=i; delay(100); i=_cror_(i,1); }
void delay(unsigned int sm) //延时函数 {
for(x=sm;x>0;x--) for(y=110;y>0;y--); }
Line=0; P0=0XFF; //关闭数码管 wei=0;
while (1) {
//主循环
LED=0; delay(150);
} } void delay(unsigned int sm) {
for(i=sm;i>0;i--) for(j=110;j>0;j--); } 2.LED 右移 #include<reg52.h> //头文件 #include<intrins.h> sbit Leden=P1^2; sbit wei=P1^1; // 数码管位控制,点阵列控制 sbit Line=P1^3; //点阵行控制 int x,y; void delay(unsigned int); unsigned char i; //定义变量
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所示。
单片机8个led灯循环点亮程序

单片机8个led灯循环点亮程序一、前言单片机是一种非常重要的电子元件,它可以通过编程来实现各种功能。
其中,点亮LED灯是最基础的操作之一。
本文将介绍如何使用单片机8个LED灯循环点亮。
二、硬件准备1. 单片机:STC89C52RC或其他8051系列单片机;2. LED灯:8个;3. 电阻:8个(220欧姆);4. 面包板:1个;5. 杜邦线:若干。
三、程序设计首先,我们需要了解一些基本的概念和知识:1. 端口:单片机的I/O口被称为端口,其中P0、P1、P2、P3四个端口分别对应着不同的引脚。
2. 输出:通过控制端口输出高电平或低电平来控制外部设备。
3. 延时函数:为了让程序在执行时停留一段时间,需要使用延时函数。
接下来,我们开始编写程序。
具体步骤如下:1. 定义引脚首先,我们需要定义每个LED所对应的引脚。
这里我们将8个LED分别连接到P0口的0~7引脚上。
sbit led0=P0^0;sbit led1=P0^1;sbit led2=P0^2;sbit led3=P0^3;sbit led4=P0^4;sbit led5=P0^5;sbit led6=P0^6;sbit led7=P0^7;2. 定义延时函数为了让程序在执行时停留一段时间,我们需要定义一个延时函数。
这里我们使用循环来实现延时。
void delay(unsigned int i){while(i--);}3. 循环点亮LED灯接下来,我们就可以开始循环点亮LED灯了。
这里我们使用for循环来实现。
void main(){while(1){for(int i=0;i<8;i++){switch(i){case 0:led0=1;break;case 1:led1=1;break;case 2:led2=1;break;case 3:led3=1;break;case 4:led4=1;break;case 5:led5=1;break;case 6:led6=1;break;case 7:led7=1;break;}delay(50000);switch(i){case 0:led0=0;break;case 1:led1=0;break;case 2:led2=0;break;case 3:led3=0;break;case 4:led4=0;break;case 5:led5=0;break;case 6:led6=0;break;case 7:led7=0;break;}}}}四、总结通过以上步骤,我们就可以实现单片机8个LED灯循环点亮的程序了。
430单片机点亮LED实验报告

430单片机点亮LED实验报告一.安装实验软件IAR二.编写点亮LED灯程序1.使P1.0口LED灯会不停的闪烁着,程序#include <msp430x14x.h>typedef unsigned int uint;typedef unsigned char uchar;/*延时函数*/void Delay_Ms(uint x){uint i;while(x--)for(i=0;i<250;i++);}/*主函数*/int main( void ){WDTCTL = WDTPW + WDTHOLD;// Stop watchdog timer to prevent time out resetP2DIR|=BIT0;//定义P1口为输出while(1)//死循环{P2OUT^=BIT0;//P1.0口输出取反Delay_Ms(600);//稍作延时}}下载进去看到了P1.0口LED灯会不停的闪烁着。
2.实验目的让两盏灯交换闪烁程序#include"msp430g2553.h"void main(void) {void Blink_LED();WDTCTL=WDTPW+WDTHOLD; //关闭看门狗P1DIR=BIT6;P2DIR=BIT0;while(1){Blink_LED();}}void Blink_LED(){_delay_cycles(1000000); //控制第二个LED P1OUT^=BIT6;_delay_cycles(1000000); //控制第一个LEDP2OUT^=BIT0;}我编写这段程序的现象是一个灯先亮,另一个后亮,一个灯先灭,后一个再灭。
就是两个灯的状态没有做到相反。
后来我在我程序上做了一些改动。
#include"msp430g2553.h"void main(void) {void Blink_LED();WDTCTL=WDTPW+WDTHOLD; //关闭看门狗P1DIR=BIT6;P2DIR=BIT0;P1OUT |= BIT6;P2OUT &= ~BIT6;while(1){Blink_LED();}}void Blink_LED(){_delay_cycles(1000000); //控制第二个LEDP1OUT^=BIT6;P2OUT^=BIT0;}3.LED灯逆循环点亮程序#include <reg52.h>typedef unsigned char uint8; typedef unsigned int uint16; sbit ENLED1=P1^4;sbit ENLED2=P1^3;sbit ADDR0 =P1^0;sbit ADDR1 =P1^1;sbit ADDR2 =P1^2;main(){uint16 i;uint8 j;ENLED1=0; ENLED2=1;ADDR0=0; ADDR1=1; ADDR2=1; while(1){P0=~(80>>j++);for(i=1;i<20000;i++);if(j==8)j=0;}}我写好程序了可是运行的时候结果不对),之后继续修改程序while循环都没有对LED的串口做任何处理,把“P0=~(80>>j++); ”改成“P0=~(0x80>>j++); ”#include <reg52.h>typedef unsigned char uint8;typedef unsigned int uint16;sbit ENLED1=P1^4;sbit ENLED2=P1^3;sbit ADDR0 =P1^0;sbit ADDR1 =P1^1;sbit ADDR2 =P1^2;main(){uint16 i;uint8 j;ENLED1=0; ENLED2=1;ADDR0=0; ADDR1=1; ADDR2=1;while(1)P0=~(0x80>>j++); //P0=~(80>>j++);for(i=1;i<20000;i++);if(j==8){j=0;}}四.实验总结由于之前学过一段时间51单片机,所以有些东西比较清楚,但430和51一有很大不同,虽然内部结构很像,但430的寄存器的设置很麻烦,比如P1 P2口,那可真是麻烦得很,430这个IO口设置了如很多的功能,并且单独抽出了好几个设置的寄存器。
模块一 点亮一个发光二极管实现

电路设计
1. 选取元器件AT89C5(单片机)
• 单击模式选择工具栏“元件”按钮,单击器件选 择按钮“P”,在弹出的 “Pick Devices”(选 取元器件)对话框的“Keywords”(关键字) 栏中输入元器件名称“AT89C51”(也可以是分 类、小类、属性值),与关键字匹配的元器件 “AT89C51”显示在元器件列表(Results)中。
模块一 点亮一个发光二极管实现
用Proteus软件完成模块一的步骤
双击桌面上的ISIS 7 Professional图标或者单击屏幕左下方的 “开始”→“程序”→“Proteus 7 Professional” →“ISIS 7 Professional”,进入Proteus ISIS集成环境,如图所示。
VCC
GND
C3
R9
10k 10uF
C1 30pF X1
CRYSTAL
C2
30pF
U1
19 XTAL1
18 XTAL2
R1
220
D1
LED-RED
9 RST
29 30 31
PSEN ALE EA
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
• 双击选中的元器件“AT89C51”,便将所选元器 件“AT89C51”加入到对象选择器窗口。单击 “OK”完成元器件选取。
电路设计
2. 放置元器件
• 单击对象选择器窗口的元器件“AT89C51”,元 器件名“AT89C51”变为蓝底白字,预览窗口显 示“AT89C51”元器件;
• 单击方向工具栏按钮可实现元器件的左旋、右旋、 水平和垂直翻转,以调整元器件的摆放方向;
使用STM32F103系列芯片点亮LED流水灯(STM32入门)

使用STM32F103系列芯片点亮LED流水灯(STM32入门)STM32F103系列芯片是意法半导体(STMicroelectronics)推出的一款32位ARM Cortex-M3内核的微控制器。
本文将介绍如何使用STM32F103系列芯片点亮LED流水灯,从而帮助初学者入门STM32首先,我们需要准备以下材料和工具:1. STM32F103系列开发板(如:STMicroelectronics的STM32F103C8T6开发板)B转串口模块3.杜邦线和杜邦线母头4.面包板(可选)5.电脑接下来,我们将一步一步地进行操作。
第一步,准备环境:2.将USB转串口模块连接到STM32开发板上,用于通过串口与电脑进行通信。
第二步,编写代码:在STM32CubeIDE中创建一个新项目,并选择适合的开发板型号和启动文件。
然后,将以下代码复制到main.c文件中:```#include "stm32f1xx.h"void delay(int n)for(int i=0; i<n; i++);int main(void)GPIOC->CRH &= 0xFF0FFFFF; // Clear PC13 configurationwhile(1)// Turn on the LED// Delay// Turn off the LED// Delay}```第三步,编译和烧录:在STM32CubeIDE中,使用编译工具将代码编译成可执行文件。
然后,通过USB转串口模块将编译后的可执行文件烧录到STM32开发板中。
第四步,连接LED:在STM32开发板上找到PC13引脚,将LED的长针连接到PC13引脚上,将LED的短针连接到开发板的地线上。
可以使用面包板或杜邦线连接器来连接LED和开发板。
第五步,运行程序:将STM32开发板连接到电脑上,通过串口与开发板进行通信,然后运行编译后的程序。
[Micropython]TPYBoard开发板:点亮LED-详细教程
![[Micropython]TPYBoard开发板:点亮LED-详细教程](https://img.taocdn.com/s3/m/729012d06137ee06eff918b0.png)
[Micropython]TPYBoard开发板:点亮LED-详细教程关于MicroPython?MicroPython是在单片机上可以跑的Python,也就是说,你可以通过Python脚本语言开发单片机程序。
由剑桥大学的理论物理学家乔治·达明设计。
和Arduino类似,但Micro Python 更强大。
MicroPython开发板让你可以通过Python代码轻松控制微控制器的各种外设,比如LED等,读取管脚电压,播放歌曲,和其他设备联网等等。
关于TPYBoard?TPYBoard是一款MicroPython开发板,有v101、v102两个版本,v102是v101的升级版,新增swd接口,TPYBoard亮点是高级python语言控制硬件,各种物联网开发都可适用,还能画板子定制开发,你可以充分体验MicroPython带来的开发乐趣!为了最大使用好你的pyboard开发板,工作前的一些注意事项是需要知道的1.1 小心你的pyboard开发板因为pyboard开发板没有防护罩的缘故,故需要注意的一些事项:. 轻力插拔USB 线。
尽管USB 接头是焊接在电路板上且十分牢固的,一旦有所损坏将非常难以修理。
. 静电能够损坏开发板上的元器件。
如果你在你的工作范围积累了许多的静电(例如干冷的环境下),需要额外小心注意不要击穿开发板。
如果开发板是装在静电袋里边的,这个袋子将是保存和携带该开发板的最好的抗静电工具(其由传导性泡沫的塑料组成)。
如果在硬件层面你能够注意到这些事项,开发板使用起来不会有大问题。
软件层面造成开发板损坏几乎是不可能的,所以大可随心所欲敲写你的代码。
如果文件系统损坏,可以在接下来的内容中了解如何修复它。
最糟糕的情况乃是需要重刷新MicroPython固件,但这可以轻易地通过一条USB线实现。
1.2 pyboard的布局USB 接头在板子的右上方,SD 卡槽在其左上方。
卡槽和接口之下是四颗LED 灯,从上到下依次为蓝色,橙色,绿色和红色。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何点亮一个LED #include<reg52.h> sbit D=P0^0;
void main()
{
D=0;
}
使LED闪烁
#include<reg52.h> sbit D=P0^0;
void delay(int z); void main()
{
D=0;
delay(110);
D=1;
delay(110);
}
void delay(int z) {
int x,y;
for(x=z;x>0;x--)
for(y=200;y>0;y--);
}
#include<reg51.h>
sbit D=p1^3;
void main(void)
{ int j;
while(1)
{ D=0;
for(j=0;j<30000;j++);
D=1;
for(j=0;j<30000;j++);
}
}
手把手教您编写第一个单片机程序
来源:21ic作者:
关键字:手把手编写单片机程序
51单片机的开发环境是Keil 软件。
Keil 软件虽然是一个收费软件,但从uVision2到目前的uVison4版本都有破解版,在网上都可以找到下载。
笔者推荐大家使用uVisong4破解版本,好处不用多说。
Keil uVision4软件的压缩包里附有安装和破解说明,本文不再赘述。
开发一个单片机程序,一般都要经过这几个步骤:建立工程->建立C文件->添加C文件到工程->编写C代码->设置目标工程的选项->编译工程产生HEX文件->将HEX文件下载到单片机。
本文将一步一步手把手教您开发一个LED闪烁的简单且实用的C51程序。
让您从0基础起步学习开发51单片机。
安装Keil uVison4之后,第一次运行出现如图1的界面,从上往下数,依次是菜单栏、第一条工具栏、第二条工具栏,接下来左边白色部分为工程文件区(显示文件、函数、语言模板和相关书籍),右边灰色部分为文本区(编写源文件),最下边为编译信息栏(显示编译时产生的相关信息)。
图1
一.建立工程
点击“Project”菜单项,选“New uVision Project…”,跳出创建新工程对话框,选择工程放置位置,在这里笔者选择F盘,并在根目录创建LED这个文件夹,用来放置工程文件,如图2:
图2
打开LED文件夹,然后给新工程取个名字(可以任意取),在这里笔者取工程名字为“LED”,如图3:
图3
点击“保存”按钮,跳出器件选择对话框,如图4:
图4
找到Atmel单片机,选择AT89S52,同时右边的描述栏里显示了该器件的基本信息,如图5:
图5
点击“OK按钮,”跳出提示对话框,如图6:
图6
提示对话框问您“是否将8051标准启动代码复制到工程文件夹并添加到工程?”,根据您的需要选择,一般不需要,在这里笔者选择“否”。
此时,可看到keil uVision4界面左边的工程窗口里多了一个目标文件夹“Target 1”,其下有一个源文件组文件夹“Suorce Group 1”,如图7。
此时,新工程已经建立,但还只是一个空的工程。
图7
二.建立C文件和保存C文件
从图7可看到,“Suorce Group 1”这个源文件夹下还没有任何文件。
接下来就是创建一个C文件。
点击“File”菜单,选择“New”,文档区便出现了一个默认文件名为“Text 1”的空白文档,如图8:
图8
在该文档上随便输入一个空格,然后点击“File”菜单,选择“Save”,跳出保存对话框,如图9,输入文件名为“LED.c”,点击“保存”按钮。
这一步需要注意的是这个C文件必须保存在刚才创建的工程文件夹下,否则在后面编译时会出错。
C文件的文件名一般和工程名一致。
扩展名必须为“.c”。
这个C文件就是您后面要编写C语言源代码的源文件,现在已经在你的工程文件夹里了。
图9
三.添加C文件到工程
虽然“LED.c”这个文件已经在您的工程文件夹里,但还不属于你的工程文件,如果您不把它添加到工程里去,它的存在对您这个工程没有任何意义。
接下来就是把C文件添加到您的工程里,让它变成您的工程文件。
右键点击左边工程窗口里的“Suorce Group 1”这个源文件夹,选“Add File to Group ‘Suorce Group 1’…”,跳出添加源文件对话框,找到刚才建立的“LED.c”文件,点击“Add”按钮后,再点击“Close”按钮退出,不要重复点击,如图10:
图10
这时可以看到“Suorce Group 1”这个源文件下多了一个源文件“LED.c”,同时,右边的文档区的文件名也改变了,如图11。
图11
四.编写C代码
在空白的文档区输入如下C代码:
///////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////
#i nclude//包含头文件
sbit led=P2^0;//定义位变量led,使其关联单片机管脚P2.0
void Delayms(unsigned int t);//声明延时函数
///////////////////////////////////////////////////////////////////////////////// int main(void)//主函数(C语言程序入口函数)
{
while(1)
{
led=0;//P2.0拉低,点亮LED
Delayms(500);//调用延时函数,延时500毫秒
led=1;//P2.0拉高,熄灭LED
Delayms(500);//调用延时函数,延时500毫秒
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////// /
void Delayms(unsigned int t)//定义延时函数
unsigned int i,j;
for(i=0;i
for(j=0;j<120;j++);//大约延时1毫秒
}
///////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////
这是一个常用的指示灯闪烁的程序,输入完成以后,先不要马上编译,还需要作一些设置。
五.工程选项设置
这一步主要是设置时钟频率和产生HEX文件这两项。
进入工程选项有两个途径:从“Project”菜单进入和直接点击工具栏快捷按钮进入。
这里使用工具栏快捷
按钮进入,点击第二条工具栏的第7个按钮(Target Opsions…)
,跳出选项对话框,默认选项卡为“Target”,如图12,将晶振频率设为你目标板所使用的晶振频率,这里设为12.0;再点击“Output”选项卡,将“Create HEX File ”复选框打勾,这个项设置绝不能忽略,否则您的工程就没有HEX 文件产生。
其他选项保持默认。
最后点击“OK”按钮,完成选项设置。
图12
六.编译工程产生HEX文件
点击第二条工具栏的第三个按钮(Rebuild)
,工程便进入编译链接状态,“Build Output”信息栏就会出现相关的编译信息,如图13。
从该信息栏可以知道程序的大小,使用了的多少内部RAM和外部RAM、生成多少个代码、是否生成HEX文件、有多少个错误和警告等信息。
如果有错误,目标文件将不会被创建,只要双击错误信息,光标就会跳到C文档错误代码的行号或错误代码的附近,方便您排查错误。
图13
七.将HEX文件下载到单片机
编译通过的C代码,在工程文件夹下就会生成很多文件,其中有两个文件是最重要的,一个是扩展名为“.c”文件“LED.c”,这是移植程序用的C源文件,是程序的核心,拥有这个文件就相当于拥有整个程序;另一个是扩展名为“.hex”的文件“LED.hex”,这是下载程序用的文件。
这两个文件都可以用记事本打开。
“LED.hex”文件是采用Intel hex文件格式存储程序代码的。
下载程序的时用下载软件打开这个hex文件,将文件里的程序代码提取出来写入单片机的程序存储区里。
在下载单片机程序之前,您需要构建一个单片机最小系统,请参阅笔者的《学单片机从构建最小系统开始》一文。
下载软件使用WSFISP软件,也可以用AtmelISP软件。
下载线可根据笔者提供的原理图自己DIY,也可以购买。
51单片机程序下载软件操作都很简单,本文不再叙述。