本篇文章友人在广东喝咖啡的时候突然想到的...最近就有想写几篇关于单片机输出的博客,所以回家到之后就奋笔疾书的写出来发表了
如同学习每一门编程语言的Hello World!一样,点灯自然成了单片机入门的HelloWorld。因为单片机上的HelloWorld实在是太难了!
在电子上只有电压电流之类的概念,而对于单片机来说,我们可以认为0代表低电压(低电平、接地),1代表高电压(高电平)。在我们学习的STM32单片机上,高电平其实就是3.3伏!今天我们要点亮的小灯,就是发光二极管,让3.3V和0V分离接在发光二极管的正负(是非)两端,就能够让其发光!
我们采取的单片机有很多针脚(ZET6是144脚,VET6是100脚),一般是PA0~PA15,PB0~PB15这样子命名。理论上,我们可以把任何一个脚设为高电平或者低电平,通过单片机程序。
那么,接线上就有两种了:一是二极管一头接一个针脚Pin,另一头接地GND脚,然后控制Pin高电平,就能够点亮;而是接两个针脚,控制让正脚(长)输出高电平,负脚(短)输出低电平,也可以点亮。
如果用C写这个控制程序,会有点小庞杂,因为你需要先设置针脚的工作模式,上拉下拉什么的,然后才可以通过01控制高低电平。我们做C#开辟的同学,绝大多数不懂这些。MF在这方面封装得很好,针对指定针脚实例化一个输出端口OutputPort,并指定初始状态true/false,然后就能够读写布尔值了。当然,这个输出端口也可以指定上拉下拉那种模式,但是如果我们不懂,就不用那个构造函数啦。
一般的开辟板上都配有LED,就不需要我们自己去接LED啦!如果想做跑马灯什么的,可以自己去淘宝上买,一毛钱一个,10块钱可以买一百个了,不过记得买杜邦线,哈哈!
我们来看代码:
- // 红牛二
- //var pins = new Cpu.Pin[] { Pins.PF6, Pins.PF7, Pins.PF8, Pins.PF9, Pins.PF10 };
- // 阿波罗一号
- //var pins = new Cpu.Pin[] { Pins.PE11, Pins.PE12, Pins.PE13, Pins.PE14, Pins.PE15 };
- // 探索者一号
- //var pins = new Cpu.Pin[] { Pins.PB11 };
- // 探索者二号
- //var pins = new Cpu.Pin[] { Pins.PC6, Pins.PC7 };
- // 雅典娜二号
- var pins = new Cpu.Pin[] { Pins.PF8, Pins.PF9 };
- // 雅典娜三号
- //var pins = new Cpu.Pin[] { Pins.PF8, Pins.PF9 };
- var leds = new OutputPort[pins.Length];
- for (int i = 0; i < pins.Length; i++)
- {
- leds[i] = new OutputPort(pins[i], i % 2 == 0);
- }
- //var led4 = new Led4();
- for (int i = 0; i < 20000; i++)
- {
- for (int j = 0; j < leds.Length; j++)
- {
- leds[j].Write(!leds[j].Read());
- }
- //led4.Display(i);
- //led4.Value = i;
- Thread.Sleep(50);
- }
这个程序很简单,首先是实例化一个小灯所在的针脚数组,然后再创立输出端口数组,创立的时候,隔个的设置不同的初始化状态,形成小灯分开来亮的效果。
每一次大循环,都包含一次小循环,而小循环所做的,就是读出来针脚现在的值,取反后写入。大循环需要暂停一会,要不太快了也看不清楚呀,呵呵!
然后,小灯就闪动起来了!
到这里,或许很多人会问,点亮小灯,顶多只能做跑马灯之类的玩具而已。其实这个跟用C语言电灯一样,我们只需要稍稍转变,针脚出来接的不是小灯,而是一个继电器,那么就能够控制220v的强电了啦!剩下的就看自己要做什么了!
本文可能非常简单,但作为单片机的MF入门来说,并非每个人都可以做得到!
MF是微软的开源嵌入式系统框架,经过了很多年的发明,在海内始终很冷淡,可能是因为开辟板极为昂贵并且移植困难吧!我们新生命团队经过不懈努力,总算找到了绝对比拟便宜的MF开辟板(淘宝200元阁下),还有可以跑MF的核心板(淘宝最低售价只需要46元);并且我们把握了一些基本的移植技巧,可以把 MF移植到比拟热门和高性价比的多款板子上去。我们欢送更多志趣相投的友人一起来研讨MF!
.Net Micro Framework,让我们尽可能的在不懂单片机的情况下做一些简单的单片机控制系统!
End
我不相信神话,我只相信汗水!我不相信命运,我只相信双手!
文章结束给大家分享下程序员的一些笑话语录: IT业众生相
第一级:神人,天资过人而又是技术狂热者同时还拥有过人的商业头脑,高瞻远瞩,技术过人,大器也。如丁磊,求伯君。
第二级:高人,有天赋,技术过人但没有过人的商业头脑,通常此类人不是顶尖黑客就是技术总监之流。
第三级:牛人,技术精湛,熟悉行业知识,敢于创新,有自己的公司和软件产品。
第四级:工头,技术精湛,有领导团队的能力,此类人大公司项目经理居多。
第五级:技术工人,技术精湛,熟悉行业知识但领导能力欠加,此类人大多为系分人员或资深程序员,基本上桀骜不逊,自视清高,不愿于一般技术人员为伍,在论坛上基本以高手面目出现。
第六级:熟练工人,技术有广度无深度,喜欢钻研但浅尝辄止。此类人大多为老程序员,其中一部分喜欢利用工具去查找网上有漏洞的服务器,干点坏事以获取成绩感。如果心情好,在论坛上他们会回答菜鸟的大部分问题。此级别为软件业苦力的重要组成部分。
第七级:工人,某些技术较熟练但缺乏深度和广度,此类人大多为程序员级别,经常在论坛上提问偶尔也回答菜鸟的问题。为软件产业苦力的主要组成部分。
第八级:菜鸟,入门时间不长,在论坛上会反复提问很初级的问题,有一种唐僧的精神。虽然招人烦但基本很可爱。只要认真钻研,一两年后就能升级到上一层。
第九级:大忽悠,利用中国教育的弊病,顶着一顶高学历的帽子,在小公司里混个软件部经理,设计不行,代码不行,只会胡乱支配下属,拍领导马屁,在领导面前胡吹海侃,把自己打扮成技术高手的模样。把勾心斗角的办公室文化引入技术部门,实在龌龊!
第十级:驴或傻X,会写SELECT语句就说自己精通ORALCE,连寄存器有几种都不知道就说自己懂汇编,建议全部送到日本当IT产业工人,挣了日本人的钱还严重打击日本的软件业!