流水灯小程序

合集下载

串口通信控制流水灯应用开发课件

串口通信控制流水灯应用开发课件

串口通信控制流水灯应用开发课件一、概述其实流水灯并不是一个遥不可及的高科技产品,简单来说它就是由一组LED灯组成的,通过特定的程序控制,让LED灯按照一定的顺序亮起,就像流水一样。

这种效果在很多场合都非常实用,比如节日装饰、产品展示等等。

而要实现这个效果,就需要用到串口通信。

串口通信是一种非常常见的通信方式,它可以让我们的电脑和硬件设备之间进行数据传输。

通过编写特定的程序,我们可以控制电脑通过串口发送信号给流水灯设备,让设备上的LED灯按照我们设定的方式亮起。

通过这个开发课件,我们将带领大家一步步了解串口通信控制流水灯的原理,学习如何编写程序来控制流水灯。

相信大家通过学习,都能轻松掌握这项技术,为自己的生活增添更多色彩!1. 串口通信简介简单来说串口通信就像是给电子设备之间搭建的一座桥梁,让不同的设备能够互相传递信息。

就好像我们平时和人交流,通过说话或者写信,把想法和信息传达给对方。

电脑和其他设备之间,就是通过串口来“说话”的。

它们之间可以传递控制指令、数据等,让我们的设备按照我们的意愿工作。

在流水灯的开发中,串口通信就像是一个总指挥,发送控制信号给流水灯,让它按照预设的模式亮起。

没有串口通信,流水灯就像失去了大脑的机器人,无法正常工作。

所以掌握串口通信的知识,是开发流水灯的重要基础。

接下来我们就一起来探索如何玩转串口通信,让流水灯炫起来吧!2. 流水灯应用背景及意义大家有没有注意到,在很多场合,像是商场、节日庆典或者家居装饰,都会看到五彩斑斓的流水灯?它们一闪一闪的,真的非常吸引人眼球。

其实这背后就是串口通信控制流水灯的应用,今天我们就来聊聊这个有趣又实用的技术。

想象一下流水灯的应用场景是多么的广泛,在商场里它们能吸引顾客的眼球,提升购物氛围;在节日庆典中,流水灯能增添节日气氛,让人们感受到浓浓的节日氛围;在家庭中,流水灯能作为装饰,让家里更加温馨。

而这背后都离不开串口通信控制流水灯的技术,通过编程和硬件连接,我们可以让多个LED灯按照一定的顺序闪烁,形成流水灯的效果。

51单片机爱心流水灯原理及制作

51单片机爱心流水灯原理及制作

51单片机爱心流水灯原理及制作一、引言爱心流水灯是一种常见的电子制作项目,它使用51单片机控制LED灯的亮灭顺序,形成一个流动的爱心图案。

本文将详细介绍51单片机爱心流水灯的原理及制作过程。

二、原理介绍1. 51单片机51单片机是一种非常常见的单片机,具有广泛的应用领域。

它具有强大的计算能力和丰富的外设接口,非常适合用于控制LED灯的亮灭。

2. LED灯LED灯是一种半导体发光二极管,具有低功耗、长寿命和高亮度等特点。

在爱心流水灯中,我们使用红色的LED灯来形成爱心图案。

3. 流水灯原理流水灯是一种常见的电子灯光效果,通过控制LED灯的亮灭顺序,形成一个流动的效果。

在爱心流水灯中,我们将多个LED灯按照特定的顺序亮灭,形成一个流动的爱心图案。

4. 原理图以下是51单片机爱心流水灯的原理图:(在此处插入原理图)三、制作材料准备在开始制作爱心流水灯之前,我们需要准备以下材料:1. 51单片机开发板2. LED灯(红色)3. 电阻4. 面包板5. 连接线6. 电源四、制作步骤1. 连接电路首先,将51单片机开发板和面包板连接起来。

然后,根据原理图连接LED灯、电阻和51单片机的引脚。

确保连接正确且稳固。

2. 编写程序使用C语言编写51单片机的程序。

程序的主要功能是控制LED灯的亮灭顺序,形成一个流动的爱心图案。

以下是一个简单的示例程序:(在此处插入示例程序)3. 烧录程序将编写好的程序烧录到51单片机中。

可以使用专业的烧录工具,也可以使用通用的USB转串口模块进行烧录。

4. 测试将电源接入电路,打开电源开关,观察LED灯的亮灭情况。

如果一切正常,LED灯将按照程序中设定的顺序亮灭,形成一个流动的爱心图案。

五、注意事项在制作爱心流水灯时,需要注意以下几点:1. 连接线的接触要牢固,确保电路的稳定性。

2. 程序的编写要准确无误,确保LED灯按照预期的顺序亮灭。

3. 使用适当的电阻限流,以保护LED灯和51单片机。

多种方法写出的51单片机流水灯C语言程序

多种方法写出的51单片机流水灯C语言程序

目录流水灯最原始 (1)流水灯位左移 (3)流水灯移位函数 (4)流水灯数组 (5)流水灯精确定时器 (6)流水灯最原始#include "reg51.h"sbit p0=P1^0;sbit p1=P1^1;sbit p2=P1^2;sbit p3=P1^3;sbit p4=P1^4;sbit p5=P1^5;sbit p6=P1^6;sbit p7=P1^7;voidmdelay(unsigned int t){unsigned char n;for(;t>0;t--)for(n=0;n<125;n++){;}}void main(){while(1){P1=0;p0=1;mdelay(1000);p0=0;p1=1;mdelay(1000);p1=0;p2=1;mdelay(1000);p2=0;p3=1;mdelay(1000);p3=0;p4=1;mdelay(1000);p4=0;p5=1;mdelay(1000);p5=0;p6=1;mdelay(1000);p6=0;p7=1;mdelay(1000);p7=0;}}流水灯位左移#include "reg51.h"voidmdelay(unsigned int t){unsigned char n;for(;t>0;t--)for(n=0;n<125;n++){;}}void main(){unsigned char i;unsignedint led;while(1){led=0xfe;for(i=0;i<8;i++){P1=led;mdelay(1000);led=led<<1;led=led|0x01;}}}流水灯移位函数#include "reg51.h"#include "intrins.h"voidmdelay(unsigned int t){unsigned char n;for(;t>0;t--)for(n=0;n<125;n++){;}}void main(){unsigned char led;led=0x01;while(1){P1=led;led=_crol_(led,1);mdelay(1000);}}流水灯数组#include "reg51.h"unsigned char table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; voidmdelay(unsigned int t){unsigned char n;for(;t>0;t--)for(n=0;n<125;n++){;}}void main(){unsigned char i;while(1){for(i=0;i<8;i++){P1=table[i];mdelay(1000);}}}流水灯精确定时器#include "reg51.h"#include "intrins.h"unsignedint count=0,led;void main(){P1=0x00;led=0x01;EA=1;ET0=1;TMOD=0x01;TH0=0x3c;TL0=0xb0;TR0=1;for(;;){;}}voidbiao() interrupt 1{count++;if(count==20){count=0;P1=led;led=_crol_(led,1);}TH0=0x3c;TL0=0xb0;}。

PLC流水灯程序

PLC流水灯程序

贯穿全篇,却有两个句子别出深意,不单单是在写乐,而是另有所指,表达出另外一种情绪,请你找出这两个句子,说说这种情绪是什么。明确:醉翁之意不在酒,在乎山水之间也。醉能同其乐,醒能述以文者,太守也。这种情绪是作者遭贬谪后的抑郁,作者并未在文中袒露胸怀,只含蓄地说:“醉能同其乐,醒能述以文者,太守也。”此句与醉翁亭的名称、“醉翁之
变化,使文章越发显得音调铿锵,形成一种骈散结合的独特风格。如“野芳发而幽香,佳木秀而繁阴”“朝而往,暮而归,四时之景不同,而乐亦无穷也”。(2)文章多用判断句,层次极其分明,抒情淋漓尽致,“也”“而”的反复运用,形成回环往复的韵律,使读者在诵读中获得美的享受。(3)文章写景优美,又多韵律,使人读来不仅能感受到绘画美,也能感受到韵律
“山水之乐”的具体化。3.第三段同样是写“乐”,但却是写的游人之乐,作者是如何写游人之乐的?明确:“滁人游”,前呼后应,扶老携幼,自由自在,热闹非凡;“太守宴”,溪深鱼肥,泉香酒洌,美味佳肴,应有尽有;“众宾欢”,投壶下棋,觥筹交错,说说笑笑,无拘无束。如此勾画了游人之乐。4.作者为什么要在第三段写游人之乐?明确:写滁人之游,
参知政事范仲淹等人遭谗离职,欧阳修上书替他们分辩,被贬到滁州做了两年知州。到任以后,他内心抑郁,但还能发挥“宽简而不扰”的作风,取得了某些政绩。《醉翁亭记》就是在这个时期写就的。目标导学二:朗读文章,通文顺字1.初读文章,结合工具书梳理文章字词。2.朗读文章,划分文章节奏,标出节奏划分有疑难的语句。节奏划分示例
谢谢!
11 醉翁亭记
1.反复朗读并背诵课文,培养文言语感。
2.结合注释疏通文义,了解文本内容,掌握文本写作思路。
3.把握文章的艺术特色,理解虚词在文中的作用。
4.体会作者的思想感情,理解作者的政治理想。一、导入新课范仲淹因参与改革被贬,于庆历六年写下《岳阳楼记》,寄托自己“先天下之忧而忧,后天下之乐而乐”的政治理想。实际上,这次改革,受到贬谪的除了范仲淹和滕子京之外,还有范仲淹改革的另一位支持者——北宋大文学家、史学家欧阳修。他于庆历五年被贬谪到滁州,也就是今天的安徽省滁州市。也

PLC控制流水灯系统的设计

PLC控制流水灯系统的设计

目录第一章绪论 (3)1.1 前言 (3)1.1流水灯系统的意义、现状及要求 (4)1.1.2 技术现状 (5)1.2彩灯的发展 (6)1.2.1 彩灯的最初来源 (6)1.2.2 彩灯给城市带来的五彩缤纷 (6)1.3PLC的发展前景及趋势 (7)1.4PLC的定义及特点 (11)第2章硬件电路的设计 (12)2.1流水灯电路的设计 (13)2.2开关电路的设计 (14)第3章软件设计 (15)3.1软件设计的方案 (11)3.2PLC结构 (14)3.3工作原理 (15)3.4编程语言 (16)3.5S7-200的指令系统 (19)3.6流水灯的工作要求 (18)3.7梯形图 (22)结束语 (41)致谢 (42)参考文献 (43)PLC控制流水灯系统的设计[摘要]本次毕业设计是应用S7-200 PLC流水灯设计的硬件电路,并利用OB1的梯形图控制程序设计。

通过控制S7-200 PLC的定时继电器的功能来实现各彩灯按一定的规律点亮和熄灭。

接通延迟定时器SD的特点(如果RLO有正跳沿,则接通延迟定时器启动指令,以设定的时间值启动指令的定时器)。

这种控制电路结构简单,可靠性高,应用性强;软件程序适应范围广,对各彩灯按一定的规律点亮和熄灭的控制,只需要改变相应的定时器的时间接通即可。

第一章绪论前言随着科技的飞速发展,无论在日常生活中,还是在工农业发展中,PLC具有广泛的应用。

PLC的一般特点:抗干扰能力强,可靠性极高、编程简单方便、使用方便、维护方便、设计、施工、调试周期短、易于实现机电一体化。

PLC总的发展趋势是:高功能、高速度、高集成度、大容量、小体积、低成本、通信组网能力强。

本次毕业设计是应用S7-200 PLC流水灯设计的硬件电路,并利用OB1的梯形图控制程序设计。

通过控制S7-200 PLC的定时继电器的功能来实现各彩灯按一定的规律点亮和熄灭。

接通延迟定时器SD的特点(如果RLO有正跳沿,则接通延迟定时器启动指令,以设定的时间值启动指令的定时器)。

花样流水灯程序

花样流水灯程序
}
}
{
time=0;
miao++;
miao=miao%10;//0-9
display();//数码管显示函数
}
}
void int_T0()//定时器T0初始化
{
EA=1;//打开总中断
ET0=1;//允许T1中断
TMOD=TMOD&0Xf0|0X01;//配置模式为定时模式(C/T=0),16位自动重装
TH0=(65536-500)/256;//50ms
TL0=(65536-500)%256;//从15536开始计数,到65536溢出,一共计50000个脉冲
TR0=1;//允许计数
}
void fuwu_int_T0(void) interrupt 1//定时器0的优先级比定时器1的优先级高
{//它先要执行完定时器0的服务程序,才能再去执行定时器1的服务程序
{
P0=a;
a=a>>1;
a=a|0x01;
delay_ms((num*100)+1);
}
for(i=0;i<2;i++)//8个led闪烁两次
{
P0=0Xff;//led全部消灭
delay_ms((num*100)+1);
P0=0x00;//led灯全部点亮
delay_ms((num*100)+1);
{
if(pwm1==1)
{
pwm1=1;
flag=0;
}
pwm1--;
}
}
if(num1>64)
{
num1=0;
}
if(num1<=pwm1)

按键控制流水灯程序

按键控制流水灯程序

最近有很多学弟来问我流水灯该怎么做,程序怎么写,现在在这里统一说下,很多时候没有时间让你们白跑一趟了,O(∩_∩)O~。

首先就说到单片机了,单片机对于你们来说是个新概念,可能以前都没听说过。

我想说的是它不是传统意义上的集成电路,只能按照特定的焊接来能工作,而是一块类似电脑CPU的芯片,对于一块正常的单片机,只要你提供合适的工作电源(4V都5.5V左右)、复位电路、起振电路它就可以工作了。

所有的输入输出口(以P开头的)都是可以灵活配置的,可以根据你焊接的硬件电路写程序,也可以根据你写的程序焊接硬件电路。

所以没有必要死板硬套。

前天没事写了一下,仿真了一下还可以用。

源码贴于下方供入门者参考,高手勿嘲笑,大家都是从流水灯程序写起的 (*^__^*) 嘻嘻……再就是我的51开发板不知道是谁借走了,很久没有用过51单片机了,所以下载程序的事就不要来找我了。

我把编译过后的代码也贴在下面,如果硬件和我做的一样的同学又不会写程序的就直接复制下面编译过后的代码,在电脑上新建一个文本文档(.txt)命名任意,将复制后的代码粘贴于记事本上,然后重命名,将".txt"改为“.hex”,保存,然后通过下载器下载到单片机里面去就可以用了。

不会的多去看一下教程。

以下仅供参考,不得一味模仿/****************************************************************************** *********************************源码:51单片机晶振频率12Mhz八位数码管采用共阳极接法(所有阳极接一起接Vcc,阴极接P0口)按键分别接P2.0 P2.1 P2.2(低电平有效)编译软件采用keil 4******************************************************************************* ************************************************************************/#include <reg52.h>#define uint unsigned int#define uchar unsigned charsbit key1 =P2^0; //按键1sbit key2 =P2^1; //按键2sbit key3 =P2^2; //按键3uchar flag1=0,flag2=0,flag3=0;void delay_ms(uint z){uint i,j;for(i=0;i<z;i++)for(j=0;j<110;j++);}void O_to_E() //1,3,5,7与2,4,6,8交替闪烁{P0=0Xaa;delay_ms(200);P0=~0Xaa;delay_ms(200);}void key_scan() //键盘扫描{if(!key1){delay_ms(10); //延时消抖if(!key1)flag1=1;}if(!key2){delay_ms(10); //延时消抖if(!key2)flag2=1;}if(!key3){delay_ms(10); //延时消抖if(!key3)flag3=1;}}void main(){uchar i;while(1){key_scan();if(flag1) //按键一按下?{for(i=0;i<8;i++) //从左至右亮,每次一盏{P0=~(0x80>>i);delay_ms(100);key_scan(); //按键扫描if(flag2||flag3){flag1= 0;break;} //如果有其它按键按下响应其它按键}}if(flag2) //按键一按下?{for(i=0;i<8;i++) //从右至左亮,每次一盏{P0=~(0x01<<i);delay_ms(100);key_scan();if(flag1||flag3){flag2= 0;break;}}}if(flag3){O_to_E(); //奇偶交替闪烁key_scan();if(flag1||flag2)flag3=0;}}}/****************************************************************************** *****************************************编译过后的文件注意:复制下面的代码(注意不要包含本句,注意不要改变格式):09015700010800010900010A0081:040123007F0A7E00D1:10012700E4FDFCC3ED9FEC9E5015E4FBFA0BBB000E:0F013700010AEB646E4A70F50DBD00010C80E407:010*********:100147007580AA7FC87E0012012775805502012796:0A00F400F4F5807F647E00120127FE:1000FE0020A00912012320A00375080120A10912D6:10010E00012320A10375090120A20912012320A2B7:05011E0003750A012237:10008F001200FE1200FEE5086021E4F97480A80159:10009F00088002C313D8FC1200F4E5097004E50AC6:1000AF006005E4F508800409B908E1E509601FE47B:1000BF00F97401A801088002C333D8FC1200F4E5DB:1000CF00087004E50A6003E4F50909B908E3E50AD5:1000DF0060B11201471200FEE5087004E50960A344:0500EF00E4F50A809E0B:03000000020003F8:0C000300787FE4F6D8FD75810A02004AFF:10000F0002008FE493A3F8E493A34003F68001F278:10001F0008DFF48029E493A3F85407240CC8C333F2:10002F00C4540F4420C8834004F456800146F6DFC1:10003F00E4800B0102040810204080900157E47EF9:10004F00019360BCA3FF543F30E509541FFEE493B6:10005F00A360010ECF54C025E060A840B8E493A37D:10006F00FAE493A3F8E493A3C8C582C8CAC583CAA8:10007F00F0A3C8C582C8CAC583CADFE9DEE780BE60:010********E:00000001FF结束(注意不要包含本句及上面的※号,注意不要改变格式!)。

基于单片机智能温控流水灯

基于单片机智能温控流水灯

基于单片机智能温控流水灯随着科技的不断发展,智能家居产品逐渐走进人们的生活,提高了生活的便利性和舒适度。

其中,基于单片机的智能温控流水灯是一种颇受欢迎的家居产品,它具有智能控制、节能环保等特点,在节约能源的同时还能提升家居氛围。

本文将介绍基于单片机的智能温控流水灯的设计原理和实现方法。

一、设计原理基于单片机的智能温控流水灯主要由单片机、温度传感器、流水灯灯带等部件组成。

其设计原理如下:1. 温度检测:通过温度传感器实时检测室内温度,并将数据传输给单片机进行处理。

2. 温度控制:单片机根据设定的温度阈值,自动控制流水灯的亮度和颜色。

当室内温度过高时,流水灯调整为低亮度和凉色调,以降低室内温度;反之,当室内温度过低时,流水灯调整为高亮度和暖色调,以提高室内温度。

3. 灯光效果:流水灯采用流水般变换的灯效,通过单片机控制灯珠的亮灭和颜色变化,实现灯光流动的效果,为家居环境增添情调和舒适感。

二、实现方法基于单片机的智能温控流水灯的实现方法如下:1. 硬件设计:选择合适的单片机控制芯片,并连接温度传感器、流水灯灯带等硬件部件,搭建硬件系统。

2. 软件编程:编写单片机的程序,实现对温度传感器数据的读取和处理,以及灯光效果的控制。

通过逻辑判断和控制指令,实现温度检测和灯光调节的功能。

3. 装配调试:将硬件系统组装完善,并进行功能调试和性能优化,确保智能温控流水灯的正常工作和稳定性。

三、应用优势基于单片机的智能温控流水灯具有以下优势:1. 智能化控制:通过单片机程序的设计,实现对室内温度的智能检测和控制,提高了灯光的智能化程度。

2. 节能环保:根据实时温度调节灯光亮度和颜色,避免了灯光长时间高亮度造成的能源浪费,节约了能源资源。

3. 美化家居:流水灯的灯效设计独特,能够为家居环境增添美感和舒适度,营造出温馨浪漫的氛围。

综上所述,基于单片机的智能温控流水灯是一种具有智能化控制和节能环保等特点的家居产品,其设计原理和实现方法都相对简单易行。

几种流水灯程序

几种流水灯程序

几种流水灯程序1. 基础流水灯程序:用来控制1个led灯,使其呈现流水灯的效果,代码如下: int led = 13; // 让led连接到电路的13号引脚void setup(){pinMode(led, OUTPUT); // 设置13号引脚的模式为输出}void loop(){digitalWrite(led, HIGH); // 让led灯亮起来delay(1000); // 等待1秒digitalWrite(led, LOW); // 让led灯熄灭int led1 = 13;int led2 = 12;int led3= 11;int led4 = 10;void setup (){pinMode (led1, OUTPUT);pinMode (led2, OUTPUT);pinMode (led3, OUTPUT);pinMode (led4, OUTPUT);}void loop (){digitalWrite (led1, HIGH);delay (500);digitalWrite (led1, LOW);digitalWrite (led2, HIGH);delay (500);digitalWrite (led2, LOW);digitalWrite (led3, HIGH);delay (500);digitalWrite (led3, LOW);digitalWrite (led4, HIGH);delay (500);digitalWrite (led4, LOW);delay (1000);}3.调节速度的流水灯程序:将第一个流水灯程序增加一个模拟变量,使得可以即时调节灯泡亮度以及闪烁速度,以及可以控制单个led灯或多个led灯,其代码如下:4.设置模式的流水灯程序:将流水灯程序改进,使得应用于不同的场景,可以调节闪烁模式,如快速,慢速,长亮等,其代码如下:。

基础项目(1)流水灯项目讲解

基础项目(1)流水灯项目讲解

基础项⽬(1)流⽔灯项⽬讲解写在前⾯的话这⼀节呢,我们来实现⼀个流⽔灯驱动程序的编写,当然啦,点灯不是⽬的,最重要的是我们通过这个流⽔灯代码的实现可以掌握⼀些重要的规范。

项⽬需求我们要求流⽔灯模式如下:当复位键按下时,灯全部熄灭,当复位键放开以后,⾸先,点亮第⼀个灯,然后第⼀个灯熄灭,同时点亮第⼆个灯,接着,第⼆个灯熄灭,同时点亮第三个灯,然后,第三个灯熄灭,同时点亮第四个灯,最后第四个灯熄灭,同时点亮第⼀个灯,如此循环往复,实现流⽔。

相关技术介绍项⽬需求,我相信⼤家已经看清楚了,那么,接下来我们该怎么做呢?写代码?NO 我们来仔细的看看项⽬需求,这⾥⾯涉及到了按键,LED灯,还需要我们⽤按键控制流⽔灯的启动或停⽌。

那么,在写代码之前,我们⾸先应该明确按键按下和放开有什么区别、LED是低电平点亮还是⾼电平点亮。

只有清楚外设的性能,我们才可能编写代码正确地驱动这些外设。

代码体现的是我们的思路,所以在写代码之前我们必须⾸先理顺⾃⼰的思路,否则盲⽬的编写代码,⼀定是徒劳的。

硬件设计下图所⽰为轻触按键与FPGA的连接关系⽰意图由上述电路图可知,当按键放开时,FPGA端⼝等于接到了上拉电阻,所以检测到的为⾼电平。

当按键按下时,FPGA端⼦通过按键接到了地平⾯,检测到的为低电平。

下图所⽰为LED与FPGA的连接关系⽰意图由上述电路图可知,LED正极全部接到了3.3V电源。

那么,只有当FPGA端⼝给出低电平的时候,LED才会点亮。

当FPGA端给⾼电平时,LED熄灭。

顶层架构设计项⽬需求以及项⽬需求中所涉及到的所有外设都已经分析清楚了,那么接下来是不是可以开始编写代码了呢?答案还是—NO!哈哈,别着急,其实对于⼯程师⽽⾔,编写代码真的是⼩菜⼀碟,闭着眼睛都能敲⼏⾏哦。

⼀个项⽬最重要的、最终决定成败的⼀般来说不是代码的具体实现,⽽是前期的架构设计,好的架构可以化简为易,将⼀个很复杂的⼯程逐步的拆分成很多简单的⼦模块,不但提⾼了设计效率和成功率,同时也⽐较适合团队作战,分⼯合作。

arduino课件3——流水灯

arduino课件3——流水灯

3.4编写程序
• digitalWrite(12, HIGH); • delay(100); • digitalWrite(12, LOW); • digitalWrite(11, HIGH); • delay(100); • digitalWrite(11, LOW); • digitalWrite(10, HIGH); • delay(100); • digitalWrite(10, LOW); • digitalWrite(9, HIGH); • delay(100); • digitalWrite(9, LOW); • digitalWrite(8, HIGH); • delay(100); • digitalWrite(8, LOW);
//执行的程序 }
3.8 程序设计基础
3.8.1程序结构介绍 用任何高级语言编写的程序都可分解为三种结构:顺序结构、
选择(分支)结构、循环结构。
3.8.2 流程图
3.8 程序设计基础
3.8.3 流程图表示程序结构
顺序结构
语句1 语句2
选择结构
成立
不成立
条件
语句1
语句2
循环结构
N 条件
Y 语句组
3.8 程序设计基础
3.8.4 Arduino 语法 (1)数据类型
数据类型 整型(int)
数值范围 -32768~+32767
无符号整型(unsigned int)
0~65536
长整型(long)
无符号长整型(unsigned long)
浮点型(float) 双精度浮点型(double)
布尔型(boolean)
字符型(char)
3.7 循环结构

ArduinoLED流水灯·基础实验

ArduinoLED流水灯·基础实验

ArduinoLED流⽔灯·基础实验Arduino初学IO控制,流⽔灯实验是很好的学习对象。

分两个进程学习。

⼀、假流⽔灯,即基础效果实现⼆、真流⽔灯,即采⽤PWM模拟真实流⽔渐变效果我们设⽴5盏灯,正极分别连接数字⼝(Digital Pin)3 5 9 10 11⼝,负极共地(GND)假流⽔灯int LED1 = 3;int LED2 = 5;int LED3 = 9;int LED4 = 10;int LED5 = 11;void setup() {pinMode(LED1, OUTPUT);pinMode(LED2, OUTPUT);pinMode(LED3, OUTPUT);pinMode(LED4, OUTPUT);pinMode(LED5, OUTPUT);}void loop() {//状态1digitalWrite(LED1, 1); //1 代表 HIGH 0 代表 LOWdigitalWrite(LED2, 0);digitalWrite(LED3, 0);digitalWrite(LED4, 0);digitalWrite(LED5, 0);delay(1000);//状态2digitalWrite(LED1, 0);digitalWrite(LED2, 1);digitalWrite(LED3, 0);digitalWrite(LED4, 0);digitalWrite(LED5, 0);delay(1000);//状态3digitalWrite(LED1, 0);digitalWrite(LED2, 0);digitalWrite(LED3, 1);digitalWrite(LED4, 0);digitalWrite(LED5, 0);delay(1000);//状态4digitalWrite(LED1, 0);digitalWrite(LED2, 0);digitalWrite(LED3, 0);digitalWrite(LED4, 1);digitalWrite(LED5, 0);delay(1000);//状态5digitalWrite(LED1, 0);digitalWrite(LED2, 0);digitalWrite(LED3, 0);digitalWrite(LED4, 0);digitalWrite(LED5, 1);delay(1000);}使⽤状态控制法去实现,⽅便理解和修改,每个状态持续⼀段时间,即使⽤delay()。

用AT89C51单片机实现流水灯的控制设计

用AT89C51单片机实现流水灯的控制设计

CLR P1.6 ;P1.6输出低电平,使LED7点亮
ACALL DELAY ;调用延时子程序
SETB P1.6 ;P1.6输出高电平,使LED7熄灭
CLR P1.7 ;P1.7输出低电平,使LED8点亮
ACALL DELAY ;调用延时子程序
DJNZ R0,LOOP ;没有移动够7次继续移动
AJMP START ;移动完7次后跳到开始重来,以达到循环流动效果
DELAY: ;延时子程序
MOV R0,#255 ;延时一段时间
D1: MOV R1,#255
DJNZ R1,$
DJNZ R0,D1
DB 11110111B
DB 11101111B
DB 11011111B
DB 10111111B
DB 01111111B
DB 01111111B ;二进制表示的流水花样数据,从高到低右移
DB 10111111B
DB 11011111B
SETB P1.7 ;P1.7输出高电平,使LED8熄灭
ACALL DELAY ;调用延时子程序
AJMP START ;8个LED流了一遍后返回到标号START处再循环
DELAY: ;延时子程序
MOV R0,#255 ;延时一段时间
D1: MOV R1,#255
点击看原图
图1 流水灯硬件原理图
从原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反, 如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。

单片机流水灯c语言实现

单片机流水灯c语言实现
//使数字0--9循环显示
//------------------------------------------------
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code DSY_CODE []=
red_a=1;yellow_a=1;green_a=0;
red_b=0;yellow_b=1;green_b=1;
delayMs(2000);
Operation_Type=2;
break;
case 2://东西向黄灯开始闪烁,绿灯关闭
delayMs(300);
yellow_a=!yellow_a; green_a=1;
while(x--)
{
for(i=0;i<120;i++);
}
}
//---------------------------------------------
//交通灯切换子程序
void Traffic_Light()
{
switch (Operation_Type)
{
case 1://东西向绿灯亮与南北向红灯亮
{
uchar i;
P2=0x01;//P2端口初始化
while(1)//死循环
{
for(i=0;i<7;i++)//i自加1,当i=7时执行第二个for语句
{
P2=_crol_(P2,1);//P2端口循环左移1位
delayMs(150);
}
for(i=0;i<7;i++)

51单片机经典流水灯程序

51单片机经典流水灯程序

单片机流水灯汇编程序设计开发板上的8只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。

程序A:;用最直接的方式实现流水灯ORG 0000HSTART:MOV P1,#B ;最下面的LED点亮LCALL DELAY;延时1秒MOV P1,#B ;最下面第二个的LED点亮LCALL DELAY;延时1秒MOV P1,#B ;最下面第三个的LED点亮(以下省略)LCALL DELAYMOV P1,#BLCALL DELAYMOV P1,#BLCALL DELAYMOV P1,#BLCALL DELAYMOV P1,#BLCALL DELAYMOV P1,#BLCALL DELAYMOV P1,#B ;完成第一次循环点亮,延时约0.25秒AJMP START ;反复循环;延时子程序,12M晶振延时约250毫秒DELAY:MOV R4,#2L3: MOV R2 ,#250L1: MOV R3 ,#250L2: DJNZ R3 ,L2DJNZ R2 ,L1DJNZ R4 ,L3RETEND程序B:;用移位方式实现流水灯ajmp main ;跳转到主程序org 0030h ;主程序起始地址main:mov a,#0feh ;给A赋值成loop:mov p1,a ;将A送到P1口,发光二极管低电平点亮lcall delay ;调用延时子程序rl a ;累加器A循环左移一位ajmp loop ;重新送P1显示delay:mov r3,#20 ;最外层循环二十次d1:mov r4,#80 ;次外层循环八十次d2:mov r5,#250 ;最内层循环250次djnz r5,$ ;总共延时2us*250*80*20=0.8Sdjnz r4,d2djnz r3,d1retend51单片机经典流水灯程序,在51单片机的P2口接上8个发光二极管,产生流水灯的移动效果。

ORG 0;程序从0地址开始START: MOV A,#0FEH ;让ACC的内容为LOOP: MOV P2,A ;让P2口输出ACC的内容RR A;让ACC的内容左移CALL DELAY ;调用延时子程序LJMP LOOP ;跳到LOOP处执行;0.1秒延时子程序(12MHz晶振)===================DELAY: MOV R7,#200 ;R7寄存器加载200次数D1: MOV R6,#250 ;R6寄存器加载250次数DJNZ R6,$ ;本行执RET;返回主程序END;结束程序开关控制的单片机流水灯汇编在单片机控制下,用一个拨动开关K1,控制8个发光二极管L1-L8,发光的时间间隔为0.5秒。

51单片机爱心流水灯原理及制作

51单片机爱心流水灯原理及制作

51单片机爱心流水灯原理及制作爱心流水灯是一种常见的电子制作项目,它利用51单片机控制LED灯的亮灭顺序,形成一个动态的爱心图案。

下面将详细介绍爱心流水灯的原理及制作过程。

一、原理介绍1. 51单片机:51单片机是一种常用的微控制器,具有较强的控制能力和广泛的应用领域。

2. LED灯:LED灯是一种半导体发光器件,具有低功耗、长寿命和丰富的颜色选择等特点。

3. 流水灯原理:流水灯是利用多个LED灯按照一定的顺序依次亮灭,形成一个动态的流动效果。

二、制作材料准备1. 51单片机开发板:用于编写和烧录控制程序。

2. LED灯:选择红色LED灯,数量根据实际需要确定。

3. 电阻:用于限流,根据LED灯的工作电流和电压确定合适的电阻值。

4. 连接线:用于连接单片机和LED灯。

三、制作步骤1. 连接电路:将LED灯按照心形的形状连接在面包板上,每个LED灯之间通过连接线连接。

2. 连接单片机:将51单片机开发板与面包板上的电路连接,确保每个LED灯的正极连接到单片机的输出引脚。

3. 编写程序:使用C语言编写控制LED灯亮灭的程序,并将程序烧录到51单片机中。

4. 供电测试:将电路连接到电源上,通过控制程序使LED灯按照设定的顺序亮灭,观察是否形成了爱心流水灯效果。

5. 优化调整:根据实际效果对程序进行优化和调整,使得爱心流水灯效果更加流畅和美观。

四、注意事项1. 电路连接:在连接LED灯的过程中,注意正负极的连接,确保LED灯正极连接到单片机的输出引脚。

2. 电阻选择:根据LED灯的工作电流和电压确定合适的电阻值,以保护LED 灯不受过电流的损坏。

3. 程序编写:编写程序时,注意控制LED灯的亮灭顺序和时间间隔,以达到预期的流水灯效果。

4. 安全用电:在进行供电测试时,确保使用稳定可靠的电源,并注意电路的绝缘和防触电措施。

五、扩展应用1. 调节亮度:通过调整LED灯的亮度,可以改变爱心流水灯的效果,使其更加柔和或明亮。

米思齐开源项目设计3:玩转流水灯

米思齐开源项目设计3:玩转流水灯

米思齐开源项目设计3:玩转流水灯Mixly是北京师范大学创客教育实验室傅骞教授团队研发的一款基于arduino的图形化编程工具,具有容易掌握,易于分享和适合编写大型程序等特点,中文名字为“米思齐”。

本期我们的开源项目的主题是常见的编程项目:流水灯。

如果有两个led,每个led都可以独立控制,那么它们闪亮的形式可以分为1.一起亮:他们同步亮同步灭,2.带动亮:一个led亮之后带动后面的一个led亮,此前的led并不熄灭,3.接力亮:一个led亮之后过一段时间熄灭,接下来下一个led开始亮,就像接力比赛一样,如果led比较多,看上去像是一个led在移动一样,因此成为流水灯。

4.二选一亮:两个灯每次随机选择任意一个led亮,5.随机亮:每个led都是随机闪亮,两个led之间没有排他关系。

本次选择的流水灯,项目涉及到更多数目的led,但是原理上是相同的。

1.制作:led排排站,开始点名了将数字引脚的号口和3号口插一个led灯,其中2号接负极,3号接正极。

接下来,依次类推,4,6,8,10,12接led的负极,4,7,9,11,13接led的正极如图所示led像是一排站好队列的士兵,通电以后,发现他们会像士兵报数一样依次亮起来,产生流水灯的效果。

但是实验的过程发现每个学生的led闪烁的速度都不一样,有的很快有的很慢,这个时候鼓励大家大胆的去“触摸”电路板,发现手指摸这个区域的时候,有的时候灯闪的很快几乎看不到闪烁,有的时候又闪的很慢,这就说明有一个输入的信息在控制led的闪烁速度。

这个信息就是端口A0的输入电压转换成了模拟输入A0的数值,在连接上,可以使用一个10千欧电位器,将其两端接power区的5V和GND(不分左右),中间接A0端口,此时旋转电位器,我们就能够看到通过电位器旋钮可以很好的控制led的闪烁速度,旋到一端时,不闪烁,所有led一直亮,另一端时闪烁时间比较慢,间隔大概两秒的样子。

2.改装:认识电位器通过观察我们可以判断每一个led持续亮的时间是相同的,这需要使用米思齐当中的“延时……毫秒”来完成,而这个命令当中一定包含一个与A0输入相关的参数,我们可以使用一个秒表来研究这一问题,将电位器旋转到闪烁最慢的位置,测量整组灯,流水十次所需要的时间。

微信小程序实现走马灯效果实例

微信小程序实现走马灯效果实例

微信⼩程序实现⾛马灯效果实例前⾔⽇常开发中,我们经常会遇到⽂字横向循环滚动的效果,俗称⾛马灯,也是项⽬中经常会使⽤的⼀个功能。

在⽹页web前端很常见,今天就介绍下⼩程序的实现⽅式,⼀种是⽤的css样式实现,另⼀种是运⽤⼩程序的动画功能实现。

@keyframes 实现利⽤@keyframes的规则来实现,⾮常⽅便,只需要css样式就可以满⾜,使⽤⽅法跟web上⼀样。

<view class="marquee"><text>这是⼀段滚动的⽂字</text></view>样式类,from to 来定义动画的开始结束,这⾥是从屏幕最右端向左滑,触及到最左侧后重新开始新⼀轮动画。

@keyframes translation {from {margin-left: 750rpx; //从屏幕最右端开始}to {margin-left: 0px;}}.marquee{white-space: nowrap;animation-name: translation; //定义动画的名称animation-duration: 3s;animation-iteration-count: infinite;animation-timing-function: linear;}如果想要的效果是滑动到左侧之后,⽂字继续左滑,直到全部消失,再从最右开始动画的,那么就需要再加上⽂字的长度,这⾥需要去计算⽂字的长度,使⽤SelectorQuery 对象实例来拿到⽂字节点的宽度。

在页⾯⾸次渲染完毕onReady时执⾏,查询到对应⽂字节点信息的对象,得到⽂字的长度。

这⾥定义的是上⾯的marquee类名。

onReady: function () {let query = wx.createSelectorQuery();query.select('.marquee').boundingClientRect();query.exec((res) => {if (res[0]) {this.setData({marqueeWidth: res[0].width})}})}然后使⽤css var() 函数插⼊定义的属性值,到结束的位置处,让它⾛完整个屏幕以及⾃⾝⽂字的长度。

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

流水灯小程序#include <lpc11xx.h>void delay() //延时函数,这里延时100ms{int i,j;for(i=0;i<100;i++){for(j=0;j<2242;j++){} //j循环一次大概1ms}}void main(){ //这里看LED原理图LPC_IOCON->JTAG_TMS_PIO1_0=0x01;//定义p1.0引脚为输出LPC_IOCON->JTAG_TDO_PIO1_1=0x01;//定义p1.1引脚为输出LPC_IOCON->JTAG_nTRST_PIO1_2=0x01;//定义p1.2引脚为输出//p1.9引脚默认为输出,不用写LPC_GPIO1->DIR=(1<<0)+(1<<1)+(1<<2)+(1<<9);LPC_GPIO1->DA TA=(1<<0)|(1<<1)|(1<<2)|(1<<9); //D1、D2、D3、D4灯全灭while(1){LPC_GPIO1->DA TA&=~(1<<0);//D1灯亮delay(); //调用延时函数LPC_GPIO1->DA TA|=(1<<0);//D1灯灭delay();LPC_GPIO1->DA TA&=~(1<<1);//D2灯亮delay();LPC_GPIO1->DA TA|=(1<<1);//D2灯灭delay();LPC_GPIO1->DA TA&=~(1<<2);//D3灯亮delay();LPC_GPIO1->DA TA|=(1<<2);//D3灯灭delay();LPC_GPIO1->DA TA&=~(1<<9);//D4灯亮delay();LPC_GPIO1->DA TA|=(1<<9);//D4灯灭delay();}}显示1234# include <lpc11xx.h>int main(void){const int table[4]={0x06,0x5b,0x4f,0x66,};//定义一个数组LPC_IOCON->JTAG_TDI_PIO0_11=0x01;//定义p1.1为输出//LPC_IOCON->PIO3_4=0x01; //默认为输出//LPC_IOCON->PIO3_5=0x01; //默认为输出LPC_GPIO3->DIR|=(1<<4)|(1<<5);//P3.4与P3.5输出LPC_GPIO0->DIR|=(1<<3)|(1<<11); //定义P0.3与P0.11为输出LPC_GPIO2->DIR|=0XFF+(1<<11); //定义P2.0~P2.7和P2.11为输出//这是将四个数码管的引脚都设置为输出LPC_GPIO2->DA TA|=0xff; //定义P2.0~P2.7输出高电平LPC_GPIO0->DA TA|=1<<3; //定义P0.3输出为高电平LPC_GPIO2->DA TA|=(1<<11); //定义P2.11输出高电平LPC_GPIO3->DA TA|=(1<<4); //定义P3.4输出高电平LPC_GPIO3->DA TA|=(1<<5); //定义P3.5输出高电平while(1){LPC_GPIO0->DA TA&=~(1<<11); //定义P0.11输出低电平,导通LPC_GPIO2->DA TA&=~table[0];//调用一个数组,因为为公共用到的引脚,所以要设置它为一开一关的形式LPC_GPIO0->DA TA|=(1<<11); //定义P0.11输出高电平,息灭LPC_GPIO2->DA TA|=0xff; //定义P2.0~2.7输出高电平,截止LPC_GPIO2->DA TA&=~(1<<11);LPC_GPIO2->DA TA&=~table[1];LPC_GPIO2->DA TA|=(1<<11);LPC_GPIO2->DA TA|=0xff;LPC_GPIO3->DA TA&=~(1<<4);LPC_GPIO2->DA TA&=~table[2];LPC_GPIO3->DA TA|=(1<<4);LPC_GPIO2->DA TA|=0xff;LPC_GPIO3->DA TA&=~(1<<5);LPC_GPIO2->DA TA&=~table[3];LPC_GPIO3->DA TA|=(1<<5);LPC_GPIO2->DA TA|=0xff;}}显示1的程序#include <lpc11xx.h>int main(void){const int table[1]={0xff};//定义一个数组LPC_IOCON->JTAG_TDO_PIO1_1=0x01;//定义p1.1为输出LPC_GPIO0->DIR|=1<<3; //定义P0.3为输出LPC_GPIO0->DIR|=1<<11; //定义P0.11为输出LPC_GPIO2->DIR=0XFF; //定义P2.0~P2.7为输出LPC_GPIO2->DA TA=0xff; //定义P2.0~P2.7输出高电平LPC_GPIO0->DA TA|=1<<3; //定义P0.3输出为高电平int i;for(i=0;i<10;i++){LPC_GPIO0->DA TA&=~(1<<11);LPC_GPIO2->DA TA&=~table[0];//调用一个数组//int i=1024;}}#include"lpc11xx.h"int main(void){#define LE_1 LPC_GPIO0->DA TA|=(1<<3) //74LS573#define LE_0 LPC_GPIO0->DA TA&=~(1<<3)//74LS573#define LED0_ON LPC_GPIO0->DATA&=~(1<<11)#define LED0_OFF LPC_GPIO0->DATA|=(1<<11)#define LED1_ON LPC_GPIO2->DATA&=~(1<<11)#define LED1_OFF LPC_GPIO2->DATA|=(1<<11)#define LED2_ON LPC_GPIO3->DATA&=~(1<<4)#define LED2_OFF LPC_GPIO3->DATA|=(1<<4)#define LED3_ON LPC_GPIO3->DATA&=~(1<<5)#define LED3_OFF LPC_GPIO3->DATA|=(1<<5)const uint8_ttable[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x0 };LPC_IOCON->JTAG_TDI_PIO0_11|=0x01; //set to IOLPC_GPIO0->DIR|=((1<<3)|(1<<11));LPC_GPIO2->DIR|= 0xff +(1<<11);//0x0000Fff;LPC_GPIO3->DIR=0xff;LE_1;while(1){int i;for(i=0;i<4;i++){LED0_OFF; LED1_OFF;LED2_OFF; LED3_OFF;char ch = table[4];LPC_GPIO2->DA TA = ~ ch;switch(i){case 0: LED0_ON; break;case 1: LED1_ON;break;case 2: LED2_ON; break;case 3: LED3_ON;break;}}// CoTickDelay(1);}}/*****头文件与宏定义*****/#include"lpc11xx.h"#define uint unsigned int#define uchar unsigned char#define on LPC_GPIO2->DA TA|=0x00/*****延时函数*****/void delay(){int i,j;for(i=1;i<20;i++)for(j=1;j<1141;j++);}/*****数码管显示函数*****/void show_number(num)//输入不大于四位整数{LPC_IOCON->JTAG_TDI_PIO0_11|=0x01; //set to IOLPC_GPIO0->DIR|=(1<<3)|(1<<11); //set P0_3 to inputLPC_GPIO2->DIR|=0xff|(1<<11); //set P2_0~P2_7 to inputLPC_GPIO3->DIR|=(1<<5)|(1<<4); //set P3_5 and P3_4 toinputLPC_GPIO0->DA TA|=(1<<3); //P0_3输出高电平驱动DM25LS573WM,使P2_0~P2_7导通到数码管uint i=num;const uint show[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f };//显示0~9LPC_GPIO0->DA TA&=~(1<<11);LPC_GPIO2->DA TA&=~show[(i/1000)%10];LPC_GPIO0->DA TA|=(1<<11);LPC_GPIO2->DA TA=0xffff;LPC_GPIO2->DA TA&=~(1<<11);LPC_GPIO2->DA TA&=~show[(i/100)%10];LPC_GPIO2->DA TA|=(1<<11);LPC_GPIO2->DA TA=0xffff;LPC_GPIO3->DA TA&=~(1<<4);LPC_GPIO2->DA TA&=~show[(i/10)%10];LPC_GPIO3->DA TA|=(1<<4);LPC_GPIO2->DA TA=0xffff;LPC_GPIO3->DA TA&=~(1<<5);LPC_GPIO2->DA TA&=~show[i%10];LPC_GPIO3->DA TA|=(1<<5);LPC_GPIO2->DA TA=0xffff;}/*****主函数*****/int main(void){while(1){int a,b;for( a=0;a<9999;a++)//1LED{for(b=1;b<20000;b++)show_number(a);}}}#include "LPC11xx.h"void delay() // 软件延时函数{int i,j;for(i=1;i<2000;i++)for(j = 0; j<1024;j++);}int main(){// LPC_IOCON->JTAG_TDI_PIO0_11|=0x01; //set toIOLPC_GPIO0->DIR=(1<<3);LPC_GPIO2->DIR=0xff;LPC_GPIO3->DIR=(1<<5);const char number[10]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x3f};while(1){LPC_GPIO0->DA TA|=(1<<3);LPC_GPIO3->DA TA&=~(1<<5);int i;for( i=0;i<10;i++)//1LED{LPC_GPIO2->DA TA=~number [i];delay ();// LPC_GPIO3->DA TA|=(1<<5);}}}#include"lpc11xx.h"void delay(){int i,j;for(i=1;i<1000;i++){for(j=1;j<1141;j++){};}}int main(void){LPC_IOCON->JTAG_TMS_PIO1_0=0x01;//JTAG_TMS_PIO1_0=0X01;LPC_IOCON->JTAG_TDO_PIO1_1=0X01;LPC_IOCON->JTAG_nTRST_PIO1_2=0X01; //set to IOLPC_GPIO1->DIR|=((1<<0)|(1<<1)|(1<<2)|(1<<9));LPC_GPIO1->DA TA|=((1<<0)|(1<<1)|(1<<2)|(1<<9));// LPC_GPIO1->DA TA;while(1){LPC_GPIO1->DA TA&=~(1<<0);//inputdelay();LPC_GPIO1->DA TA|=(1<<0);// delay();LPC_GPIO1->DA TA&=~(1<<1);delay();LPC_GPIO1->DA TA|=(1<<1);// delay();LPC_GPIO1->DA TA&=~(1<<2);delay();LPC_GPIO1->DA TA|=(1<<2);// delay();LPC_GPIO1->DA TA&=~(1<<9);delay();LPC_GPIO1->DA TA|=(1<<9);// delay();}}/************************************************* ************************************************************** *********/#include "LPC11xx.h"#include "UART.H"/**********************************************************//**********************************************************//**********************************************************/unsigned char key(void);void key_init(void);void key_to_UART(void);void delay_ms(uint32_t a) //软件延时函数{uint32_t i;while( --a != 0){for(i = 0; i<5500; i++);}}/**********************************************************/int main(void){SystemInit();LPC_IOCON->JTAG_TDI_PIO0_11|=0x01; //set toIOLPC_SYSCON->SYSAHBCLKCTRL |= (1<<6);LPC_GPIO0->DIR|=((1<<3)|(1<<11)|(1<<2));LPC_GPIO2->DIR=0x0000ffff;LPC_GPIO3->DIR=0xff;UARTInit(115200);UARTSend("UART TEST !",11);key_init();while(1){key_to_UART();}}/**********************************************************/void key_init(void){LPC_GPIO1->DIR|=((1<<5)|(1<<8));LPC_GPIO2->DIR&=~((1<<8)|(1<<9));LPC_GPIO1->DIR&=~(1<<10);}unsigned char key(void){unsigned char key=0;LPC_GPIO1->DA TA&=~(1<<8); //P1.8 LLPC_GPIO1->DA TA|=(1<<5); //P1.5 Hif((LPC_GPIO1->DA TA&(1<<10))==0){delay_ms(3);if((LPC_GPIO1->DA TA&(1<<10))==0)key=1;}if((LPC_GPIO2->DA TA&(1<<8))==0){delay_ms(3);if((LPC_GPIO2->DA TA&(1<<8))==0)key=2;}if((LPC_GPIO2->DA TA&(1<<9))==0){delay_ms(3);if((LPC_GPIO2->DA TA&(1<<9))==0)key=3;}LPC_GPIO1->DA TA|=(1<<8); //P1.8 L LPC_GPIO1->DA TA&=~(1<<5); //P1.5 H if((LPC_GPIO1->DA TA&(1<<10))==0){delay_ms(3);if((LPC_GPIO1->DA TA&(1<<10))==0)key=4;}if((LPC_GPIO2->DA TA&(1<<8))==0){delay_ms(3);if((LPC_GPIO2->DA TA&(1<<8))==0)key=5;}if((LPC_GPIO2->DA TA&(1<<9))==0) {delay_ms(3);if((LPC_GPIO2->DA TA&(1<<9))==0)key=6;}return key;}void key_to_UART(void){uint8_t key_data=0;key_data=key();if(key_data!=0){switch(key_data){case 1:UARTSend("按键1按下",10);break;case 2:UARTSend("按键2按下",10);break;case 3:UARTSend("按键3按下",10);break;case 4:UARTSend("按键4按下",10);break;case 5:UARTSend("按键5按下",10);break;case 6:UARTSend("按键6按下",10);break;}}}/**********************************************************//*****头文件与宏定义*****/#include"lpc11xx.h"#define uint unsigned int#define uchar unsigned char#define on LPC_GPIO2->DA TA|=0x00/*****延时函数*****/void delay(){int i,j;for(i=1;i<20;i++)for(j=1;j<1141;j++);}/*****数码管显示函数*****/void show_number(num)//输入不大于四位整数{LPC_IOCON->JTAG_TDI_PIO0_11|=0x01; //set to IOLPC_GPIO0->DIR|=(1<<3)|(1<<11); //set P0_3 to inputLPC_GPIO2->DIR|=0xff|(1<<11); //set P2_0~P2_7 toinputLPC_GPIO3->DIR|=(1<<5)|(1<<4); //set P3_5 and P3_4 toinputLPC_GPIO0->DA TA|=(1<<3); //P0_3输出高电平驱动DM25LS573WM,使P2_0~P2_7导通到数码管uint i=num;const uintshow[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9LPC_GPIO0->DA TA&=~(1<<11);LPC_GPIO2->DA TA&=~show[(i/1000)%10];LPC_GPIO0->DA TA|=(1<<11);LPC_GPIO2->DA TA=0xffff;LPC_GPIO2->DA TA&=~(1<<11);LPC_GPIO2->DA TA&=~show[(i/100)%10];LPC_GPIO2->DA TA|=(1<<11);LPC_GPIO2->DA TA=0xffff;LPC_GPIO3->DA TA&=~(1<<4);LPC_GPIO2->DA TA&=~show[(i/10)%10]; LPC_GPIO3->DA TA|=(1<<4);LPC_GPIO2->DA TA=0xffff;LPC_GPIO3->DA TA&=~(1<<5);LPC_GPIO2->DA TA&=~show[i%10]; LPC_GPIO3->DA TA|=(1<<5);LPC_GPIO2->DA TA=0xffff;}/*****主函数*****/int main(void){while(1){LPC_GPIO1->DIR|=((1<<5)|(1<<10)); LPC_GPIO2->DIR|=((1<<8)|(1<<9)); LPC_GPIO1->DA TA|=(1<<10);LPC_GPIO1->DA TA |=(1<<5);LPC_GPIO2->DA TA|=((1<<8)|(1<<9)); LPC_GPIO1->DIR&=~(1<<10);LPC_GPIO2->DIR&=~((1<<8)|(1<<9));int a=0,b=1;a=0xff;a&=((LPC_GPIO2->DATA)&(1<<8));// show_number(6311);b=0xff;if(a==b){show_number(6311);// LPC_GPIO0->DA TA&=~(1<<11);// show_number(1234);// break;}else{show_number(6935);}// show_number(6935);}}#include "lpc11xx_syscon.h"#include "lpc11xx_gpio.h"#include "coos.h"#include "clock.h"#define PRIORITY_BLINK_TASK0 3 /* Priority ofBlink task 0 */#define PRIORITY_BLINK_TASK1 4 /* Priority ofBlink task 1 */#define PRIORITY_BLINK_TASK2 2 /* Priority ofBlink task 1 */#define PRIORITY_BLINK_TASK3 5#define SIZE_BLINK_TASK0 100 /* Stack size ofBlink task 0 */#define SIZE_BLINK_TASK1 100 /* Stack size ofBlink task 1 */#define SIZE_BLINK_TASK2 100 /* Stack size ofBlink task 1 */#define SIZE_BLINK_TASK3 100OS_STK stkBlink0[SIZE_BLINK_TASK0]; /* Stack ofBlink task 0 */OS_STK stkBlink1[SIZE_BLINK_TASK1]; /* Stack of Blinktask 0 */OS_STK stkBlink2[SIZE_BLINK_TASK2]; /* Stack of Blinktask 0 */OS_STK stkBlink3[SIZE_BLINK_TASK3]; /* Stack of Blinktask 0 */void taskCLock(void *param);void taskBlink1(void *param);void display();void keyScan();int main(void){/* Enable GPIO block clock */SYSCON_AHBPeriphClockCmd(SYSCON_AHBPeriph_GPIO, ENABLE);CoInitOS();CoCreateTask( taskCLock,(void *)0,3,&stkBlink0[SIZE_BLINK_TASK0-1],100 );CoCreateTask( taskBlink1,(void *)0, 4,&stkBlink1[SIZE_BLINK_TASK1-1],100 );CoCreateTask(display,(void*)0,2,&stkBlink2[SIZE_BLINK_TASK2-1], 100 );CoCreateTask(keyScan,(void*)0,5,&stkBlink3[SIZE_BLINK_TASK3-1],100 );CoStartOS();while(1);}void adjustShowPos(volatile char* pPos){pPos[0]+= 2;pPos[0] %=4;}void updateString( char ch, char* pchar, BOOL show){if(show){pchar[0] = ch/10;pchar[1] = ch%10;}else {pchar[0] = 11;//blackpchar[1] = 11;//black}}void updataTime(struct Time* pTime){pTime->seconds ++;if(pTime->seconds>= 60){pTime->seconds -= 60;pTime->min ++;if(pTime->min >=60){pTime->min -= 60;pTime->hour ++;pTime->hour %= 24;//updateString(pTime->hour,pTime->ts.TMS.hour,TRUE);}//updateString(pTime->min,pTime->ts.TMS.min,TRUE); }updateString(pTime->hour,pTime->ts.TMS.hour,TRUE); updateString(pTime->min,pTime->ts.TMS.min,TRUE); updateString(pTime->seconds, pTime->ts.TMS.sec,TRUE);}static struct Time time;void display(){#define LE_1 LPC_GPIO0->DA TA|=(1<<3)//74LS573#define LE_0 LPC_GPIO0->DA TA&=~(1<<3)//74LS573#define LED0_ON LPC_GPIO0->DATA&=~(1<<11)#define LED0_OFF LPC_GPIO0->DATA|=(1<<11)#define LED1_ON LPC_GPIO2->DATA&=~(1<<11)#define LED1_OFF LPC_GPIO2->DATA|=(1<<11)#define LED2_ON LPC_GPIO3->DATA&=~(1<<4)#define LED2_OFF LPC_GPIO3->DATA|=(1<<4)#define LED3_ON LPC_GPIO3->DATA&=~(1<<5)#define LED3_OFF LPC_GPIO3->DATA|=(1<<5)const uint8_ttable[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x0 };LPC_IOCON->JTAG_TDI_PIO0_11|=0x01; //set to IOLPC_GPIO0->DIR|=((1<<3)|(1<<11)|(1<<2));LPC_GPIO2->DIR|= 0xff +(1<<11);//0x0000Fff;LPC_GPIO3->DIR=0xff;LE_1;time.showPos =2;while(1){int i;for(i=0;i<4;i++){LED0_OFF;LED1_OFF;LED2_OFF;LED3_OFF;{char pos = i + time.showPos;char ch = table[time.ts.str[pos]];if(pos ==3) ch += 0x80;LPC_GPIO2->DA TA = ~ ch;}switch(i){case 0:LED0_ON;break;case 1:LED1_ON;break;case 2:LED2_ON;break;case 3:LED3_ON;break;}CoTickDelay(1);}}}void taskCLock(void *param){time.hour =time.min =time.seconds = 0;{int i;for(i=0;i<6;i++) time.ts.str[i]= 0;}BOOL showLED = TRUE;for(;;){switch(time.showMode.sm ){case ShowNormal:updataTime(&time);break;case ShowAdjustSec:time.showPos = 2;updateString(time.seconds,time.ts.TMS.sec,showLED);break;case ShowAdjudtMin:updateString(time.min,time.ts.TMS.min,showLED);break;case ShowAdjustHour:time.showPos =0;updateString(time.hour,time.ts.TMS.hour,showLED);break;}showLED = !showLED;CoTickDelay(100);}}void taskBlink1(void *param){LPC_IOCON->JTAG_TDO_PIO1_1 =1;LPC_IOCON->JTAG_TMS_PIO1_0 =1;LPC_IOCON->JTAG_nTRST_PIO1_2 =1;LPC_GPIO1->DIR = (1<<0)+(1<<1)+(1<<2);while(1){int i;for(i=0;i<3;i++){unsigned int ch = ~(1<<i);// LPC_GPIO1->DA TA |= ch;// LPC_GPIO1->DA TA &= ~ch;int j;for(j=0;j<3;j++){LPC_GPIO1->MASKED_ACCESS[1<<j]= (ch%2)<<j;ch >>= 1;}//LPC_GPIO1->MASKED_ACCESS[1<<1] =(ch%2)<<1;//ch >>= 1;//LPC_GPIO1->MASKED_ACCESS[1<<2] =(ch%2)<<2;CoTickDelay(100);}}}void keyScan(){LPC_GPIO1->DIR|=((1<<5)|(1<<8));LPC_GPIO1->DA TA&=~((1<<8)|(1<<5)); //P1.8 LLPC_GPIO2->DIR&=~((1<<8)|(1<<9));LPC_GPIO1->DIR&=~(1<<10);while(1){int x= LPC_GPIO2->DA TA;if((LPC_GPIO2->DA TA&(1<<8))==0){CoTickDelay(2);if((LPC_GPIO2->DA TA&(1<<8))==0){//downswitch(time.showMode.sm){case ShowNormal:adjustShowPos(&time.showPos);break;case ShowAdjustSec:time.seconds--;if(time.seconds<0) time.seconds =59;break;case ShowAdjudtMin:time.min--;if(time.min < 0 ) time.min = 59;break;case ShowAdjustHour:time.hour--;if(time.hour < 0) time.hour = 23;break;}}while((LPC_GPIO2->DA TA&(1<<8))==0)CoTickDelay(2);}if((LPC_GPIO2->DA TA&(1<<9))==0){CoTickDelay(2);if((LPC_GPIO2->DA TA&(1<<9))==0){//upswitch(time.showMode.sm){case ShowNormal:adjustShowPos(&time.showPos);break;case ShowAdjustSec:time.seconds++;if(time.seconds >=60)time.seconds -= 60;break;case ShowAdjudtMin:time.min++;if(time.min >=60) time.min -=60;break;case ShowAdjustHour:if(time.hour >= 24) time.hour -= 24;break;}}while((LPC_GPIO2->DA TA&(1<<9))==0)CoTickDelay(2);}if((LPC_GPIO1->DA TA&(1<<10))==0){CoTickDelay(2);if((LPC_GPIO1->DA TA&(1<<10))==0){//modetime.showMode.smChar ++;time.showMode.smChar %=4;if(time.showMode.sm == ShowNormal){time.showPos =2;}}while((LPC_GPIO1->DA TA&(1<<10))==0)CoTickDelay(2 );}CoTickDelay(2);}}#include "lpc11xx_syscon.h"#include "lpc11xx_gpio.h"#include "coos.h"#include"001.h"void SEG1();void SEG2();void SEG3();void SEG4();void IO();#define SIZE_BLINK_TASK0 100 /* Stack size ofBlink task 0 */#define SIZE_BLINK_TASK1 100 /* Stack size ofBlink task 1 */#define SIZE_BLINK_TASK2 100 /* Stack size ofBlink task 1 */#define SIZE_BLINK_TASK3 100OS_STK stkBlink0[SIZE_BLINK_TASK0]; /* Stack ofBlink task 0 */OS_STK stkBlink1[SIZE_BLINK_TASK1]; /* Stack of Blinktask 0 */OS_STK stkBlink2[SIZE_BLINK_TASK2]; /* Stack of Blinktask 0 */OS_STK stkBlink3[SIZE_BLINK_TASK3]; /* Stack of Blinktask 0 */int main(void){SYSCON_AHBPeriphClockCmd(SYSCON_AHBPeriph_GPIO, ENABLE);CoInitOS();IO();CoCreateTask( SEG1,(void *)0,3,&stkBlink0[SIZE_BLINK_TASK0-1],100 );CoCreateTask( SEG2,(void *)0, 4,&stkBlink1[SIZE_BLINK_TASK1-1],100 );CoCreateTask(SEG3,(void*)0,2,&stkBlink2[SIZE_BLINK_TASK2-1], 100 );CoCreateTask(SEG4,(void*)0,5,&stkBlink3[SIZE_BLINK_TASK3-1],100 );CoStartOS();while(1);}void IO(){LPC_IOCON->JTAG_TMS_PIO1_0=0X01;LPC_IOCON->JTAG_TDO_PIO1_1=0X01;LPC_IOCON->JTAG_nTRST_PIO1_2=0X01; //set to IOLPC_GPIO1->DIR|=((1<<0)|(1<<1)|(1<<2)|(1<<9));LPC_GPIO0->DA TA|=(1<<3);LPC_GPIO1->DA TA|=((1<<0)|(1<<1)|(1<<2)|(1<<9));}void SEG1(){#define LE_1 LPC_GPIO0->DA TA|=(1<<3)//74LS573#define LE_0 LPC_GPIO0->DA TA&=~(1<<3)//74LS573#define LED0_ON LPC_GPIO0->DATA&=~(1<<11)#define LED0_OFF LPC_GPIO0->DATA|=(1<<11)#define LED1_ON LPC_GPIO2->DATA&=~(1<<11)#define LED1_OFF LPC_GPIO2->DATA|=(1<<11)#define LED2_ON LPC_GPIO3->DATA&=~(1<<4)#define LED2_OFF LPC_GPIO3->DATA|=(1<<4)#define LED3_ON LPC_GPIO3->DATA&=~(1<<5)#define LED3_OFF LPC_GPIO3->DATA|=(1<<5)const uint8_t table[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x0 };LPC_IOCON->JTAG_TDI_PIO0_11|=0x01; //set to IOLPC_GPIO0->DIR|=((1<<3)|(1<<11));LPC_GPIO2->DIR|= 0xff +(1<<11);//0x0000Fff;LPC_GPIO3->DIR=0xff;LE_1;while(1){int i;for(i=0;i<4;i++){LED0_OFF; LED1_OFF;LED2_OFF; LED3_OFF;LPC_GPIO3->DA TA=0xff;char ch = table[i];LPC_GPIO2->DA TA = ~ ch;switch(i){case 0: LED0_ON; break;case 1: LED1_ON;break;case 2: LED2_ON; break;case 3: LED3_ON;break;}}// CoTickDelay(1);}} void SEG2(){while(1){CoTickDelay(200);LPC_GPIO1->DA TA&=~(1<<1);CoTickDelay(100);LPC_GPIO1->DA TA|=(1<<1);CoTickDelay(200);}}void SEG3(){while(1){CoTickDelay(200);LPC_GPIO1->DA TA&=~(1<<2);CoTickDelay(100);LPC_GPIO1->DA TA|=(1<<2);CoTickDelay(100);}}void SEG4(){while(1){CoTickDelay(300);LPC_GPIO1->DA TA&=~(1<<9);CoTickDelay(100);LPC_GPIO1->DA TA|=(1<<9);}}#include "lpc11xx_syscon.h"#include "lpc11xx_gpio.h"#include "coos.h"#include "clock.h"#define PRIORITY_BLINK_TASK0 3 /* Priority ofBlink task 0 */#define PRIORITY_BLINK_TASK1 4 /* Priority ofBlink task 1 */#define PRIORITY_BLINK_TASK2 2 /* Priority ofBlink task 1 */#define PRIORITY_BLINK_TASK3 5#define SIZE_BLINK_TASK0 100 /* Stack size ofBlink task 0 */#define SIZE_BLINK_TASK1 100 /* Stack size ofBlink task 1 */#define SIZE_BLINK_TASK2 100 /* Stack size ofBlink task 1 */#define SIZE_BLINK_TASK3 100OS_STK stkBlink0[SIZE_BLINK_TASK0]; /* Stack ofBlink task 0 */OS_STK stkBlink1[SIZE_BLINK_TASK1]; /* Stack of Blinktask 0 */OS_STK stkBlink2[SIZE_BLINK_TASK2]; /* Stack of Blinktask 0 */OS_STK stkBlink3[SIZE_BLINK_TASK3]; /* Stack of Blinktask 0 */void taskCLock(void *param);void taskBlink1(void *param);void display();void keyScan();int main(void){/* Enable GPIO block clock */SYSCON_AHBPeriphClockCmd(SYSCON_AHBPeriph_G PIO, ENABLE);CoInitOS();CoCreateTask( taskCLock,(void *)0,PRIORITY_BLINK_TASK0,&stkBlink0[SIZE_BLINK_TASK0-1],SIZE_BLINK_TASK0 );CoCreateTask( taskBlink1,(void *)0,PRIORITY_BLINK_TASK1,&stkBlink1[SIZE_BLINK_TASK1-1],SIZE_BLINK_TASK1 );CoCreateTask(display,(void*)0,PRIORITY_BLINK_TASK2,&stkBlink2[SIZE_BLINK_TASK2-1],SIZE_BLINK_TASK2 );CoCreateTask(keyScan,(void*)0,PRIORITY_BLINK_TASK3,&stkBlink3[SIZE_BLINK_TASK3-1],SIZE_BLINK_TASK3 );CoStartOS();while(1);}/*void adjustShowPos(volatile char* pPos){//调整显示位置pPos[0]+= 2;pPos[0] %=4;}void updateString( char ch, char* pchar, BOOL show){//显示当前位置时间或更新时间时,更新位置的闪烁显示if(show){pchar[0] = ch/10;pchar[1] = ch%10;}else {pchar[0] = 10;//blackpchar[1] = 10;//black}}void updataTime(struct Time* pTime){//pTime->seconds ++;if(pTime->seconds>= 60){pTime->seconds -= 60;pTime->min ++;if(pTime->min >=60){pTime->min -= 60;pTime->hour ++;pTime->hour %= 24;//updateString(pTime->hour,pTime->ts.TMS.hour,TRUE);}//updateString(pTime->min,pTime->ts.TMS.min,TRUE);}updateString(pTime->hour,pTime->ts.TMS.hour,TRUE);updateString(pTime->min,pTime->ts.TMS.min,TRUE);updateString(pTime->seconds, pTime->ts.TMS.sec,TRUE);pTime->blink.tida = !pTime->blink.tida;}static struct Time time;*/void display(){#define LE_1 LPC_GPIO0->DA TA|=(1<<3)//74LS573#define LE_0 LPC_GPIO0->DA TA&=~(1<<3)//74LS573#define LED0_ON LPC_GPIO0->DATA&=~(1<<11)#define LED0_OFF LPC_GPIO0->DATA|=(1<<11)#define LED1_ON LPC_GPIO2->DATA&=~(1<<11)#define LED1_OFF LPC_GPIO2->DATA|=(1<<11)#define LED2_ON LPC_GPIO3->DATA&=~(1<<4)#define LED2_OFF LPC_GPIO3->DATA|=(1<<4)#define LED3_ON LPC_GPIO3->DATA&=~(1<<5)#define LED3_OFF LPC_GPIO3->DATA|=(1<<5)const uint8_ttable[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x0 };LPC_IOCON->JTAG_TDI_PIO0_11 |= 0x01; //set toIOLPC_GPIO0->DIR|=((1<<3)|(1<<11)|(1<<2));LPC_GPIO2->DIR|= 0xff +(1<<11);//0x0000Fff;LPC_GPIO3->DIR=0xff;LE_1;// time.showPos =2;while(1){int i;for(i=0;i<4;i++){LED0_OFF;LED1_OFF;LED2_OFF;LED3_OFF;{char pos = i + time.showPos;char ch = table[1];// if(pos ==3 && time.blink.tida) {// ch += 0x80;// }LPC_GPIO2->DA TA = ~ ch;}switch(i){case 0:LED0_ON;break;case 1:LED1_ON;break;case 2:LED2_ON;break;case 3:LED3_ON;break;}CoTickDelay(1);}}}void taskCLock(void *param){/*time.hour =time.min =time.seconds = 0;{int i;for(i=0;i<6;i++) time.ts.str[i]= 0;}BOOL showLED = TRUE;for(;;){switch(time.showMode.sm ){case ShowNormal:updataTime(&time);break;case ShowAdjustSec:time.showPos = 2;updateString(time.seconds,time.ts.TMS.sec,showLED);break;case ShowAdjudtMin:updateString(time.min,time.ts.TMS.min,showLED);break;case ShowAdjustHour:time.showPos =0;updateString(time.hour,time.ts.TMS.hour,showLED);break;}showLED = !showLED;//time.blink.tida = !time.blink.tida;CoTickDelay(100);//showLED = !showLED;//time.blink.tida = !time.blink.tida;//CoTickDelay(50);}*/CoTickDelay(1);}void taskBlink1(void *param){/*LPC_IOCON->JTAG_TDO_PIO1_1 =1;LPC_IOCON->JTAG_TMS_PIO1_0 =1;LPC_IOCON->JTAG_nTRST_PIO1_2 =1;LPC_GPIO1->DIR = (1<<0)+(1<<1)+(1<<2);while(1){int i;for(i=0;i<3;i++){unsigned int ch = ~(1<<i);// LPC_GPIO1->DA TA |= ch;// LPC_GPIO1->DA TA &= ~ch;int j;for(j=0;j<3;j++){LPC_GPIO1->MASKED_ACCESS[1<<j]= (ch%2)<<j;ch >>= 1;}//LPC_GPIO1->MASKED_ACCESS[1<<1] =(ch%2)<<1;//ch >>= 1;//LPC_GPIO1->MASKED_ACCESS[1<<2] =(ch%2)<<2;CoTickDelay(100);}}*/CoTickDelay(1);}void keyScan(){/*LPC_GPIO1->DIR|=((1<<5)|(1<<8));LPC_GPIO1->DA TA&=~((1<<8)|(1<<5)); //P1.8 LLPC_GPIO2->DIR&=~((1<<8)|(1<<9));LPC_GPIO1->DIR&=~(1<<10);while(1){。

相关文档
最新文档