流水灯小程序
- 格式:doc
- 大小:191.00 KB
- 文档页数:20
串口通信控制流水灯应用开发课件一、概述其实流水灯并不是一个遥不可及的高科技产品,简单来说它就是由一组LED灯组成的,通过特定的程序控制,让LED灯按照一定的顺序亮起,就像流水一样。
这种效果在很多场合都非常实用,比如节日装饰、产品展示等等。
而要实现这个效果,就需要用到串口通信。
串口通信是一种非常常见的通信方式,它可以让我们的电脑和硬件设备之间进行数据传输。
通过编写特定的程序,我们可以控制电脑通过串口发送信号给流水灯设备,让设备上的LED灯按照我们设定的方式亮起。
通过这个开发课件,我们将带领大家一步步了解串口通信控制流水灯的原理,学习如何编写程序来控制流水灯。
相信大家通过学习,都能轻松掌握这项技术,为自己的生活增添更多色彩!1. 串口通信简介简单来说串口通信就像是给电子设备之间搭建的一座桥梁,让不同的设备能够互相传递信息。
就好像我们平时和人交流,通过说话或者写信,把想法和信息传达给对方。
电脑和其他设备之间,就是通过串口来“说话”的。
它们之间可以传递控制指令、数据等,让我们的设备按照我们的意愿工作。
在流水灯的开发中,串口通信就像是一个总指挥,发送控制信号给流水灯,让它按照预设的模式亮起。
没有串口通信,流水灯就像失去了大脑的机器人,无法正常工作。
所以掌握串口通信的知识,是开发流水灯的重要基础。
接下来我们就一起来探索如何玩转串口通信,让流水灯炫起来吧!2. 流水灯应用背景及意义大家有没有注意到,在很多场合,像是商场、节日庆典或者家居装饰,都会看到五彩斑斓的流水灯?它们一闪一闪的,真的非常吸引人眼球。
其实这背后就是串口通信控制流水灯的应用,今天我们就来聊聊这个有趣又实用的技术。
想象一下流水灯的应用场景是多么的广泛,在商场里它们能吸引顾客的眼球,提升购物氛围;在节日庆典中,流水灯能增添节日气氛,让人们感受到浓浓的节日氛围;在家庭中,流水灯能作为装饰,让家里更加温馨。
而这背后都离不开串口通信控制流水灯的技术,通过编程和硬件连接,我们可以让多个LED灯按照一定的顺序闪烁,形成流水灯的效果。
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单片机。
目录流水灯最原始 (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;}。
目录第一章绪论 (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有正跳沿,则接通延迟定时器启动指令,以设定的时间值启动指令的定时器)。
最近有很多学弟来问我流水灯该怎么做,程序怎么写,现在在这里统一说下,很多时候没有时间让你们白跑一趟了,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)流⽔灯项⽬讲解写在前⾯的话这⼀节呢,我们来实现⼀个流⽔灯驱动程序的编写,当然啦,点灯不是⽬的,最重要的是我们通过这个流⽔灯代码的实现可以掌握⼀些重要的规范。
项⽬需求我们要求流⽔灯模式如下:当复位键按下时,灯全部熄灭,当复位键放开以后,⾸先,点亮第⼀个灯,然后第⼀个灯熄灭,同时点亮第⼆个灯,接着,第⼆个灯熄灭,同时点亮第三个灯,然后,第三个灯熄灭,同时点亮第四个灯,最后第四个灯熄灭,同时点亮第⼀个灯,如此循环往复,实现流⽔。
相关技术介绍项⽬需求,我相信⼤家已经看清楚了,那么,接下来我们该怎么做呢?写代码?NO 我们来仔细的看看项⽬需求,这⾥⾯涉及到了按键,LED灯,还需要我们⽤按键控制流⽔灯的启动或停⽌。
那么,在写代码之前,我们⾸先应该明确按键按下和放开有什么区别、LED是低电平点亮还是⾼电平点亮。
只有清楚外设的性能,我们才可能编写代码正确地驱动这些外设。
代码体现的是我们的思路,所以在写代码之前我们必须⾸先理顺⾃⼰的思路,否则盲⽬的编写代码,⼀定是徒劳的。
硬件设计下图所⽰为轻触按键与FPGA的连接关系⽰意图由上述电路图可知,当按键放开时,FPGA端⼝等于接到了上拉电阻,所以检测到的为⾼电平。
当按键按下时,FPGA端⼦通过按键接到了地平⾯,检测到的为低电平。
下图所⽰为LED与FPGA的连接关系⽰意图由上述电路图可知,LED正极全部接到了3.3V电源。
那么,只有当FPGA端⼝给出低电平的时候,LED才会点亮。
当FPGA端给⾼电平时,LED熄灭。
顶层架构设计项⽬需求以及项⽬需求中所涉及到的所有外设都已经分析清楚了,那么接下来是不是可以开始编写代码了呢?答案还是—NO!哈哈,别着急,其实对于⼯程师⽽⾔,编写代码真的是⼩菜⼀碟,闭着眼睛都能敲⼏⾏哦。
⼀个项⽬最重要的、最终决定成败的⼀般来说不是代码的具体实现,⽽是前期的架构设计,好的架构可以化简为易,将⼀个很复杂的⼯程逐步的拆分成很多简单的⼦模块,不但提⾼了设计效率和成功率,同时也⽐较适合团队作战,分⼯合作。
流水灯小程序#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){。