一個(gè)簡(jiǎn)單的pos機(jī)程序,我第一次跑起跑馬燈程序的時(shí)候開(kāi)心的像個(gè)兩百斤的孩子

 新聞資訊  |   2023-04-23 13:12  |  投稿人:pos機(jī)之家

網(wǎng)上有很多關(guān)于一個(gè)簡(jiǎn)單的pos機(jī)程序,我第一次跑起跑馬燈程序的時(shí)候開(kāi)心的像個(gè)兩百斤的孩子的知識(shí),也有很多人為大家解答關(guān)于一個(gè)簡(jiǎn)單的pos機(jī)程序的問(wèn)題,今天pos機(jī)之家(m.afbey.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來(lái)看下吧!

本文目錄一覽:

1、一個(gè)簡(jiǎn)單的pos機(jī)程序

一個(gè)簡(jiǎn)單的pos機(jī)程序

我第一次跑起跑馬燈程序的時(shí)候開(kāi)心的像個(gè)兩百斤的孩子

///插播一條:我自己在今年年初錄制了一套還比較系統(tǒng)的入門(mén)單片機(jī)教程,想要的同學(xué)找我拿就行了免費(fèi)的,私信我就可以哦~點(diǎn)我頭像黑色字體加我地球呺也能領(lǐng)取哦。最近比較閑,帶做畢設(shè),帶學(xué)生參加省級(jí)或以上比賽///

單片機(jī)底層思考_硬件電路與寄存器編程1

以控制燈跑馬燈為例,思考硬件電路與寄存器編程的關(guān)系

最一般的實(shí)現(xiàn)跑馬燈的電路如下

從任意單片機(jī)引出四個(gè)含GPIO功能的引腳引出來(lái),GPIO是General Purpose Input Output是經(jīng)典的實(shí)現(xiàn)設(shè)置輸出電平,檢測(cè)捕獲輸入電平的硬件電路。

四個(gè)GPIO口與電阻和LED燈連接,共同連接在接地端。

如果想實(shí)現(xiàn)1亮234滅,2亮134滅,類(lèi)似這樣的跑馬燈功能,該如何實(shí)現(xiàn)呢?

如果是我來(lái)做這些事,首先我會(huì)把第一個(gè)電路接在VCC上,然后其他電路都接在地上,這樣一路電路有了壓降LED亮了,其他沒(méi)有,就滅了,然后我再把一路接地,二路接VCC,就實(shí)現(xiàn)了一個(gè)跑馬燈的動(dòng)畫(huà)效果。

好像下圖這樣

以此類(lèi)推,只要我不停的換連導(dǎo)線(xiàn),就可以完成這樣的動(dòng)畫(huà)效果了。

但是這樣好麻煩,我不想一直不斷的機(jī)械做這些事,可以花更多的時(shí)間在散步讀書(shū)上才對(duì)。

所以我特別希望改進(jìn)這個(gè)電路,仔細(xì)觀察,找到規(guī)律

如果用1代表導(dǎo)線(xiàn)接入VCC,用0代表接地,那么順序應(yīng)該是

1000 -> 0100 -> 0010 -> 0001 ->1000

能不能有什么設(shè)備幫助我們換連導(dǎo)線(xiàn)呢?

這里有兩個(gè)思路,第一個(gè)使用經(jīng)典的數(shù)字電路,移位寄存器,用邏輯門(mén)啥的,在時(shí)鐘信號(hào)的驅(qū)動(dòng)下幫我們切換導(dǎo)線(xiàn)連接方法。

那么第二個(gè)思路就是用單片機(jī)啦!單片機(jī)那可比簡(jiǎn)單的數(shù)字電路厲害多了。

單片機(jī)的GPIO設(shè)備有好幾種工作方式,按照其工作的特點(diǎn)來(lái)看可以分為輸出/輸入兩種模式。

當(dāng)我們需要單片機(jī)去感應(yīng)外部電平的時(shí)候,我們會(huì)把它設(shè)置在輸入模式,當(dāng)然現(xiàn)在在我們希望他能輸出特定的電壓,所以設(shè)置他為輸出模式。

單片機(jī)是一個(gè)大黑盒子,里面的原理很深?yuàn)W很復(fù)雜,但是幸運(yùn)的是,設(shè)計(jì)單片機(jī)的人,給我們提出了寄存器的概念,這樣我們就不需要理解復(fù)雜的電路原理,就可以完成特定的功能操作了!

例如,選擇GPIO口為輸出還是輸入,其切換電路可以抽象成這樣

當(dāng)P0SEL寄存器的BIT0的數(shù)值為1的時(shí)候,P0.0口硬件與一大片輸出相關(guān)電路相連,也就是說(shuō)此時(shí)P0.0口是處于輸出功能狀態(tài)下,反之BIT0為數(shù)值0則與一大片輸入相關(guān)電路相連。其底層的原理大概是利用三極管開(kāi)關(guān)特性完成的吧!無(wú)論如何我們配置寄存器,就完成了開(kāi)關(guān)的操作,選擇了怎樣的電路與我的P0.0口連接!

值得高興的是在GPIO一系列的寄存器里,我找到了切換輸出電平的寄存器 P0OUT寄存器,我抽象的思考這樣寄存器應(yīng)該是這樣的。

當(dāng)我給P0OUT的最低位寫(xiě)上1的時(shí)候P0.0口與VCC連接,寫(xiě)上0的時(shí)候P0.0口與GND連接。大底是這樣思考的。

于是我驚喜的發(fā)現(xiàn),單片機(jī)可以幫助我實(shí)現(xiàn)切換導(dǎo)線(xiàn)連接這樣的事情。

于是我用了MSP430單片機(jī),把P0.0 P0.1 P0.2 P0.3接在了上述的電路上。

寫(xiě)下了這樣的C代碼

int main(void){unsigned char led_flash_pos=0x01;Basic_init(); //基礎(chǔ)配置P0SEL = 0x0f;//確保P0SEL寄存器低四位是1,使得硬件電路與輸出相關(guān)電路相連Loop:if(led_flash_pos == 0x10)led_flash_pos = 0x01; //限制左移范圍P0OUT = led_flash_pos;DELAY_S(1); //延時(shí)1S讓眼睛看到現(xiàn)象led_flash_pos </計(jì)算機(jī)算法,左移操作goto Loop;//跳轉(zhuǎn)循環(huán)}

可以有非?;ㄉ诘膶?xiě)法,但是最底層的操作就是配置P0OUT這個(gè)寄存器,單片機(jī)編程所有對(duì)硬件的操作都是對(duì)寄存器的操作,我們無(wú)需對(duì)底層硬件有太多深?yuàn)W的理解,就可以完成操作!

作者思考:

分工的時(shí)代,如果認(rèn)真深入的去了解學(xué)習(xí)單片機(jī)最底層的硬件原理的話(huà),那會(huì)消耗大量的時(shí)間和精力,成為一名優(yōu)秀的軟件開(kāi)發(fā)工程師的話(huà),對(duì)底層硬件有一定的理解就好,更多精力花費(fèi)在對(duì)代碼數(shù)據(jù)結(jié)構(gòu),算法的優(yōu)化,例如對(duì)P0OUT這個(gè)寄存器,何時(shí)寫(xiě)他,怎么寫(xiě)他,寫(xiě)多少比較合適,這都是需要考慮的事情,還有就是延時(shí)的時(shí)間是否過(guò)長(zhǎng),用定時(shí)器延時(shí)比較好,還是用阻塞延時(shí)比較好?另外,怎樣的跑馬燈動(dòng)畫(huà)更好看?很多可以編程的花樣!

記得筆者第一次跑起跑馬燈程序,興奮的寫(xiě)了好多衍生代碼,例如隔著一個(gè)燈閃爍,快速閃爍,等等,好像往你手上塞了好多好多樂(lè)高積木(寄存器),你可以任意的搭接。

以上就是關(guān)于一個(gè)簡(jiǎn)單的pos機(jī)程序,我第一次跑起跑馬燈程序的時(shí)候開(kāi)心的像個(gè)兩百斤的孩子的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于一個(gè)簡(jiǎn)單的pos機(jī)程序的知識(shí),希望能夠幫助到大家!

轉(zhuǎn)發(fā)請(qǐng)帶上網(wǎng)址:http://m.afbey.com/news/30126.html

你可能會(huì)喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 babsan@163.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。