單片機(jī)輸出C#點(diǎn)燈神話
本篇文章友人在廣東喝咖啡的時(shí)候突然想到的...最近就有想寫幾篇關(guān)于單片機(jī)輸出的博客,所以回家到之后就奮筆疾書的寫出來發(fā)表了
如同學(xué)習(xí)每一門編程語(yǔ)言的Hello World!一樣,點(diǎn)燈自然成了單片機(jī)入門的HelloWorld。因?yàn)閱纹瑱C(jī)上的HelloWorld實(shí)在是太難了!
在電子上只有電壓電流之類的概念,而對(duì)于單片機(jī)來說,我們可以認(rèn)為0代表低電壓(低電平、接地),1代表高電壓(高電平)。在我們學(xué)習(xí)的STM32單片機(jī)上,高電平其實(shí)就是3.3伏!今天我們要點(diǎn)亮的小燈,就是發(fā)光二極管,讓3.3V和0V分離接在發(fā)光二極管的正負(fù)(是非)兩端,就能夠讓其發(fā)光!
我們采取的單片機(jī)有很多針腳(ZET6是144腳,VET6是100腳),一般是PA0~PA15,PB0~PB15這樣子命名。理論上,我們可以把任何一個(gè)腳設(shè)為高電平或者低電平,通過單片機(jī)程序。
那么,接線上就有兩種了:一是二極管一頭接一個(gè)針腳Pin,另一頭接地GND腳,然后控制Pin高電平,就能夠點(diǎn)亮;而是接兩個(gè)針腳,控制讓正腳(長(zhǎng))輸出高電平,負(fù)腳(短)輸出低電平,也可以點(diǎn)亮。
如果用C寫這個(gè)控制程序,會(huì)有點(diǎn)小龐雜,因?yàn)槟阈枰仍O(shè)置針腳的工作模式,上拉下拉什么的,然后才可以通過01控制高低電平。我們做C#開辟的同學(xué),絕大多數(shù)不懂這些。MF在這方面封裝得很好,針對(duì)指定針腳實(shí)例化一個(gè)輸出端口OutputPort,并指定初始狀態(tài)true/false,然后就能夠讀寫布爾值了。當(dāng)然,這個(gè)輸出端口也可以指定上拉下拉那種模式,但是如果我們不懂,就不用那個(gè)構(gòu)造函數(shù)啦。
一般的開辟板上都配有LED,就不需要我們自己去接LED啦!如果想做跑馬燈什么的,可以自己去淘寶上買,一毛錢一個(gè),10塊錢可以買一百個(gè)了,不過記得買杜邦線,哈哈!
我們來看代碼:
//紅牛二
//varpins=newCpu.Pin[]{Pins.PF6,Pins.PF7,Pins.PF8,Pins.PF9,Pins.PF10};
//阿波羅一號(hào)
//varpins=newCpu.Pin[]{Pins.PE11,Pins.PE12,Pins.PE13,Pins.PE14,Pins.PE15};
//探索者一號(hào)
//varpins=newCpu.Pin[]{Pins.PB11};
//探索者二號(hào)
//varpins=newCpu.Pin[]{Pins.PC6,Pins.PC7};
//雅典娜二號(hào)
varpins=newCpu.Pin[]{Pins.PF8,Pins.PF9};
//雅典娜三號(hào)
//varpins=newCpu.Pin[]{Pins.PF8,Pins.PF9};
varleds=newOutputPort[pins.Length];
for(inti=0;i { leds[i]=newOutputPort(pins[i],i%2==0); } //varled4=newLed4(); for(inti=0;i<20000;i++) { for(intj=0;j { leds[j].Write(!leds[j].Read()); } //led4.Display(i); //led4.Value=i; Thread.Sleep(50); } 每日一道理 這個(gè)程序很簡(jiǎn)單,首先是實(shí)例化一個(gè)小燈所在的針腳數(shù)組,然后再創(chuàng)立輸出端口數(shù)組,創(chuàng)立的時(shí)候,隔個(gè)的設(shè)置不同的初始化狀態(tài),形成小燈分開來亮的效果。 每一次大循環(huán),都包含一次小循環(huán),而小循環(huán)所做的,就是讀出來針腳現(xiàn)在的值,取反后寫入。大循環(huán)需要暫停一會(huì),要不太快了也看不清楚呀,呵呵! 然后,小燈就閃動(dòng)起來了! 到這里,或許很多人會(huì)問,點(diǎn)亮小燈,頂多只能做跑馬燈之類的玩具而已。其實(shí)這個(gè)跟用C語(yǔ)言電燈一樣,我們只需要稍稍轉(zhuǎn)變,針腳出來接的不是小燈,而是一個(gè)繼電器,那么就能夠控制220v的強(qiáng)電了啦!剩下的就看自己要做什么了! 本文可能非常簡(jiǎn)單,但作為單片機(jī)的MF入門來說,并非每個(gè)人都可以做得到! MF是微軟的開源嵌入式系統(tǒng)框架,經(jīng)過了很多年的發(fā)明,在海內(nèi)始終很冷淡,可能是因?yàn)殚_辟板極為昂貴并且移植困難吧!我們新生命團(tuán)隊(duì)經(jīng)過不懈努力,總算找到了絕對(duì)比擬便宜的MF開辟板(淘寶200元閣下),還有可以跑MF的核心板(淘寶最低售價(jià)只需要46元);并且我們把握了一些基本的移植技巧,可以把 MF移植到比擬熱門和高性價(jià)比的多款板子上去。我們歡送更多志趣相投的友人一起來研討MF! .Net Micro Framework,讓我們盡可能的在不懂單片機(jī)的情況下做一些簡(jiǎn)單的單片機(jī)控制系統(tǒng)! End 我不相信神話,我只相信汗水!我不相信命運(yùn),我只相信雙手! 文章結(jié)束給大家分享下程序員的一些笑話語(yǔ)錄: IT業(yè)眾生相
正所謂“學(xué)海無涯”。我們正像一群群魚兒在茫茫的知識(shí)之海中跳躍、 嬉戲,在知識(shí)之海中出生、成長(zhǎng)、生活。我們離不開這維持生活的“海水”,如果跳出這個(gè)“海洋”,到“陸地”上去生活,我們就會(huì)被無情的“太陽(yáng)”曬死。
第一級(jí):神人,天資過人而又是技術(shù)狂熱者同時(shí)還擁有過人的商業(yè)頭腦,高瞻遠(yuǎn)矚,技術(shù)過人,大器也。如丁磊,求伯君。
第二級(jí):高人,有天賦,技術(shù)過人但沒有過人的商業(yè)頭腦,通常此類人不是頂尖黑客就是技術(shù)總監(jiān)之流。
第三級(jí):牛人,技術(shù)精湛,熟悉行業(yè)知識(shí),敢于創(chuàng)新,有自己的公司和軟件產(chǎn)品。
第四級(jí):工頭,技術(shù)精湛,有領(lǐng)導(dǎo)團(tuán)隊(duì)的能力,此類人大公司項(xiàng)目經(jīng)理居多。
第五級(jí):技術(shù)工人,技術(shù)精湛,熟悉行業(yè)知識(shí)但領(lǐng)導(dǎo)能力欠加,此類人大多為系分人員或資深程序員,基本上桀驁不遜,自視清高,不愿于一般技術(shù)人員為伍,在論壇上基本以高手面目出現(xiàn)。
第六級(jí):熟練工人,技術(shù)有廣度無深度,喜歡鉆研但淺嘗輒止。此類人大多為老程序員,其中一部分喜歡利用工具去查找網(wǎng)上有漏洞的服務(wù)器,干點(diǎn)壞事以獲取成績(jī)感。如果心情好,在論壇上他們會(huì)回答菜鳥的大部分問題。此級(jí)別為軟件業(yè)苦力的重要組成部分。
第七級(jí):工人,某些技術(shù)較熟練但缺乏深度和廣度,此類人大多為程序員級(jí)別,經(jīng)常在論壇上提問偶爾也回答菜鳥的問題。為軟件產(chǎn)業(yè)苦力的主要組成部分。
第八級(jí):菜鳥,入門時(shí)間不長(zhǎng),在論壇上會(huì)反復(fù)提問很初級(jí)的問題,有一種唐僧的精神。雖然招人煩但基本很可愛。只要認(rèn)真鉆研,一兩年后就能升級(jí)到上一層。
第九級(jí):大忽悠,利用中國(guó)教育的弊病,頂著一頂高學(xué)歷的帽子,在小公司里混個(gè)軟件部經(jīng)理,設(shè)計(jì)不行,代碼不行,只會(huì)胡亂支配下屬,拍領(lǐng)導(dǎo)馬屁,在領(lǐng)導(dǎo)面前胡吹海侃,把自己打扮成技術(shù)高手的模樣。把勾心斗角的辦公室文化引入技術(shù)部門,實(shí)在齷齪!
第十級(jí):驢或傻X,會(huì)寫SELECT語(yǔ)句就說自己精通ORALCE,連寄存器有幾種都不知道就說自己懂匯編,建議全部送到日本當(dāng)IT產(chǎn)業(yè)工人,掙了日本人的錢還嚴(yán)重打擊日本的軟件業(yè)!