单片机输出C#点灯神话

发布者:upsilon30最新更新时间:2017-01-15 来源: eefocus关键字:单片机输出  点灯神话 手机看文章 扫描二维码
随时随地手机看文章

本篇文章友人在广东喝咖啡的时候突然想到的...最近就有想写几篇关于单片机输出的博客,所以回家到之后就奋笔疾书的写出来发表了

    

如同学习每一门编程语言的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块钱可以买一百个了,不过记得买杜邦线,哈哈!

    

我们来看代码:

  1. // 红牛二  

  2. //var pins = new Cpu.Pin[] { Pins.PF6, Pins.PF7, Pins.PF8, Pins.PF9, Pins.PF10 };  

  3. // 阿波罗一号  

  4. //var pins = new Cpu.Pin[] { Pins.PE11, Pins.PE12, Pins.PE13, Pins.PE14, Pins.PE15 };  

  5. // 探索者一号  

  6. //var pins = new Cpu.Pin[] { Pins.PB11 };  

  7. // 探索者二号  

  8. //var pins = new Cpu.Pin[] { Pins.PC6, Pins.PC7 };  

  9. // 雅典娜二号  

  10. var pins = new Cpu.Pin[] { Pins.PF8, Pins.PF9 };  

  11. // 雅典娜三号  

  12. //var pins = new Cpu.Pin[] { Pins.PF8, Pins.PF9 };  

  13. var leds = new OutputPort[pins.Length];  

  14. for (int i = 0; i < pins.Length; i++)  

  15. {  

  16.     leds[i] = new OutputPort(pins[i], i % 2 == 0);  

  17. }  

  18. //var led4 = new Led4();  

  19. for (int i = 0; i < 20000; i++)  

  20. {  

  21.     for (int j = 0; j < leds.Length; j++)  

  22.     {  

  23.         leds[j].Write(!leds[j].Read());  

  24.     }  

  25.     //led4.Display(i);  

  26.     //led4.Value = i;  

  27.  

  28.     Thread.Sleep(50);  

    每日一道理 
正所谓“学海无涯”。我们正像一群群鱼儿在茫茫的知识之海中跳跃、 嬉戏,在知识之海中出生、成长、生活。我们离不开这维持生活的“海水”,如果跳出这个“海洋”,到“陆地”上去生活,我们就会被无情的“太阳”晒死。

    

这个程序很简单,首先是实例化一个小灯所在的针脚数组,然后再创立输出端口数组,创立的时候,隔个的设置不同的初始化状态,形成小灯分开来亮的效果。

    

每一次大循环,都包含一次小循环,而小循环所做的,就是读出来针脚现在的值,取反后写入。大循环需要暂停一会,要不太快了也看不清楚呀,呵呵!

    

然后,小灯就闪动起来了!

    

到这里,或许很多人会问,点亮小灯,顶多只能做跑马灯之类的玩具而已。其实这个跟用C语言电灯一样,我们只需要稍稍转变,针脚出来接的不是小灯,而是一个继电器,那么就能够控制220v的强电了啦!剩下的就看自己要做什么了!

    

本文可能非常简单,但作为单片机的MF入门来说,并非每个人都可以做得到!

    

MF是微软的开源嵌入式系统框架,经过了很多年的发明,在海内始终很冷淡,可能是因为开辟板极为昂贵并且移植困难吧!我们新生命团队经过不懈努力,总算找到了绝对比拟便宜的MF开辟板(淘宝200元阁下),还有可以跑MF的核心板(淘宝最低售价只需要46元);并且我们把握了一些基本的移植技巧,可以把 MF移植到比拟热门和高性价比的多款板子上去。我们欢送更多志趣相投的友人一起来研讨MF!

    

.Net Micro Framework,让我们尽可能的在不懂单片机的情况下做一些简单的单片机控制系统!

    

End

    

我不相信神话,我只相信汗水!我不相信命运,我只相信双手!

文章结束给大家分享下程序员的一些笑话语录: IT业众生相
第一级:神人,天资过人而又是技术狂热者同时还拥有过人的商业头脑,高瞻远瞩,技术过人,大器也。如丁磊,求伯君。
第二级:高人,有天赋,技术过人但没有过人的商业头脑,通常此类人不是顶尖黑客就是技术总监之流。
第三级:牛人,技术精湛,熟悉行业知识,敢于创新,有自己的公司和软件产品。
第四级:工头,技术精湛,有领导团队的能力,此类人大公司项目经理居多。
第五级:技术工人,技术精湛,熟悉行业知识但领导能力欠加,此类人大多为系分人员或资深程序员,基本上桀骜不逊,自视清高,不愿于一般技术人员为伍,在论坛上基本以高手面目出现。
第六级:熟练工人,技术有广度无深度,喜欢钻研但浅尝辄止。此类人大多为老程序员,其中一部分喜欢利用工具去查找网上有漏洞的服务器,干点坏事以获取成绩感。如果心情好,在论坛上他们会回答菜鸟的大部分问题。此级别为软件业苦力的重要组成部分。
第七级:工人,某些技术较熟练但缺乏深度和广度,此类人大多为程序员级别,经常在论坛上提问偶尔也回答菜鸟的问题。为软件产业苦力的主要组成部分。
第八级:菜鸟,入门时间不长,在论坛上会反复提问很初级的问题,有一种唐僧的精神。虽然招人烦但基本很可爱。只要认真钻研,一两年后就能升级到上一层。
第九级:大忽悠,利用中国教育的弊病,顶着一顶高学历的帽子,在小公司里混个软件部经理,设计不行,代码不行,只会胡乱支配下属,拍领导马屁,在领导面前胡吹海侃,把自己打扮成技术高手的模样。把勾心斗角的办公室文化引入技术部门,实在龌龊!
第十级:驴或傻X,会写SELECT语句就说自己精通ORALCE,连寄存器有几种都不知道就说自己懂汇编,建议全部送到日本当IT产业工人,挣了日本人的钱还严重打击日本的软件业!


关键字:单片机输出  点灯神话 引用地址:单片机输出C#点灯神话

上一篇:单片机课程学习与感想
下一篇:单片机的FIFO(先入先出)循环队列实现

推荐阅读最新更新时间:2024-03-16 15:30

PIC单片机按键控制PWM输出LED灯亮度C语言程序
#include pic.h //调用头文件,可以去PICC软件下去查找PIC16F87XA单片机的头文件 __CONFIG(0x3b31); //定义配置字,晶振类型:XT,启动开门狗,禁止低电压编程 //************************************************************************ #define HC138_A RE2 //定义U6、U7、U8的A为RE2端口 #define HC138_B RE1 //定义U6、U7、U8的B为RE1端口 #define HC138_C RE0 //定义U6、U7、U8的C为RE0端口 //***************
[单片机]
AT89C51单片机高速串行输出口设计
    摘要: 介绍使用AT89C51单片机扩展高速串行同步移位输出口的方法,给出基于分立TTL元器件和可编程逻辑器件PLD两种电路的实现方案,在LED点阵显示屏系统中已得到应用。     关键词: 串行口 单片机 可编程逻辑器件 AT89C51(与MCS-51兼容)单片机的串行口在方式0工作状态下,使用移位寄存器芯片可以扩展多个8位并行I/O口。在LED点阵显示屏应用系统中,一般都采用数据同步移位输出方式,并使用移位寄存器芯片(如74LS595)扩展并行I/O口驱动LED点阵显示。LED点阵显示采用扫描方式,为不产生闪烁感,每秒需要传送50屏点阵显示数据,因此有大量的数据要通过同步移位的方式送到显示驱动电路部
[应用]
AVR单片机教程——数字输出
从上一篇教程中我们了解到,按键与开关的输入本质上就是数字信号的读取。这一篇教程要讲的是,控制LED的原理是数字信号的输出。数字IO是单片机编程之有别于桌面编程的各项内容中最简单、最基础的。 在讲数字信号输出之前,我们先来了解一下它控制的器件。LED,是一种二极管,在理想模型中,加以正向电压会发光,反向电压则不会。在稍微实际一点的模型中,当正向电压超过一定阈值时,二极管会发光,其电流会随着正向电压的增大而急剧增大;对反向电压的耐受力也是有限的。现实中的LED的具体参数因生产厂家而异,一般红色与黄色LED的导通压降为2V多,绿、蓝、白色的为3V左右或多一点;反向耐压一般为5V。 电流大到一定程度,任何器件都会烧毁,我们最好要把
[单片机]
AVR<font color='red'>单片机</font>教程——数字<font color='red'>输出</font>
飞思卡尔单片机DZ60---TPM1输出比较
#include hidef.h /* for EnableInterrupts macro */ #include derivative.h /* include peripheral declarations */ //输出比较试验 //定时计数器寄存器(TPMxCNTH:TPMxCNTL)中的值与通道寄存器(TPMxCnVH:TPMxCnVH)相匹配时,会产生一个中断标志位 //并且会在管理管脚强制执行所选的输出操作。输出比较可以选择用于强制将管脚设置为0或1,翻转管脚电平(本试验采用? //或忽略。本试验使能了TPM1中通道0(对应管理管脚为PTD2 ,led3 // TPM1中通道1 (对应管理管脚为PTD3?,
[单片机]
MCU 中输入/输出口的使用
简介: 在HT49C30-1/HT49R30A-1 中有8 个双向的输入/输出口(PA 口,8 位),6 个输入口(PB 口);HT49C50-1/HT49R50A-1 中有12 个双向的输入/输出口(PA 口,8 位;PC 口,4 位),8 个输入口(PB 口);HT49C70-1/HT49R70A-1 中有16 个双向的输入/输出口(PA 口,8 位;PC 口,8 位),8 个输入口(PB 口)PA、PB、PC 分别对应RAM 中地址 、 、 。掩膜时可选择PA、PC 口的结构(NMOS 或CMOS),及该口是否具有上拉电阻(具体介绍看使用手册)。 若PA、PC 口结构NMOS 时,在读取数据之前,必须向相关位写 1 以
[单片机]
<font color='red'>MCU</font> 中输入/<font color='red'>输出</font>口的使用
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved