[生活] 電子電路這門課

電子電路真是一門很奇妙的課,在短短幾個月內要塞一堆東西。之前玩焊接現在玩電子電路圖,聽說如果先玩麵包板大概會直接燒掉,我相信喔!因為在家裡玩軟體的時候就燒了好幾次led,我連電阻該下多少都沒去算,直接try,燒掉了大不了就按Ctrl+Z。

上周老師出了個作業,好妙,似乎只要是冠上作業之名,我都一定會交出來,不過內容就不能挑了。我把led減到三顆燈,然後依序閃,三更半夜拿著紙筆算零算一的,也摸了好久才弄出來三顆燈(不准說我沒慧根!),週六逛師大的時候剛好路過簡體電腦書店,順便就敗了一本8051晶片書回家,然後周一上課老師竟然給了我們教學pdf,害我想退書。


上一次上課的時候,有做完跑馬燈和接上led,當跑馬燈從0-9時,led並不會依序閃,這一個觀念讓我想很久。必須體認到我並不聰明,尤其在結果論的世界中太久,很久以前就放棄了最佳解這回事,職場裡面如果主管什麼都不懂,只求做出來的效果,花三天寫出的最佳解跟花三小時寫出來的方式只對我自己有差。很習慣不接受挑戰,我乖乖寫完就好。

其實我也想照著書上說的來做個稍稍複雜的電子時鐘,光是讀code大概就知道問題在哪裡,書上跟我們用的軟體不同,只要是看到困惑的地方應該就是該編譯器特有的語法或函式,不同編譯器都是一部不同的文化,而每個文化致命的永遠都是小地方,也就是每個程式語言彼此不同的25%,邏輯大同小異,語法各自不同,然後吳老師說不難不難,用改的就好。忽然想到,下一次月底的VB會是怎樣的光景?班上同學會不會連好不容易看懂的程式語法都忘了。

感覺到可惜,不過如果當事人不覺得在浪費生命,我在感嘆什麼呢?時間之前,每一個人都是平等的,混日子也是一天、抱怨也是一天、笑著也是一天,我期待能笑著度過每一天。

不開惡意的玩笑,我還是很習慣嘲諷、笑謔的角度切入,帶著惡意、帶著批判,所以呢,我還是盡量不思考。急著反應前先等一下。

總之,最簡單控制燈號的方式就是給table array,給入指定的值,像亮第一顆燈就給11111110,如果給八顆燈的話啦,然後單顆左移或上下移動,今天很感謝同學分享上次的練習給我,因為檔案亂存,一直找不到。然後老師今天出了三個題目讓大家來練習。

一是將跑馬燈從0-9改成9-0
我直接將for迴圈從0開始跑到9改成從9開始遞減到0,後來有同學這樣改跑不出來,那就只好將table當中的值反過來給囉。

for(i=9;i>9;Ii--)


二是將跑馬燈接上led,然後從上到下或由左到右單顆閃。
七段顯示器接腳有7ping,我直接拿7顆燈來算零算一。單顆亮的意思,就是那個腳位要為0。
111 1110 7e
111 1101 7d
111 1011 7b
111 0111 77
110 1111 6f
101 1111 5f
011 1111 3f
table值就出來啦。

解出來就好了,寫完過關之後去煩聰明的同學想迴圈怎麼寫,給定table值不是不好,只是會被定死。

後來老師提供了他寫的code,由下單顆閃到上(由右到左之意),看得我想叫犯規,我們(好啦,班上同學)連C都沒學過,而且我連~符號是啥鬼意思都不知道耶!這樣寫是要我們怎麼用,當然也感嘆當年才哥講 << 和 >> 我沒聽進來之痛。

#include "8051.h"
main()
{
void delay(int);
int i,j;

while(1)
{
i=0x80;
for(j=0;j<=7;j++)
{
P1=~i;
delay(100);
i>>=1;
}
}
}

void delay(int count)
{
int i;
for(i=0;i<=count;i++);
}

好吧,就算用迴圈寫出來了,啊不是跟題目要求的還是不一樣。我知道用迴圈聰明,我也想學這個邏輯,但是請給符合題意的好咩!
當然還是知道老師的用心,老師也會怕一開始說C就讓大家放棄,電路真的很硬。不過就我自己的經驗而言,同時體驗兩種語言,要不是兩種都能學到好就是很容易弄混,前提是學習者必須願意花時間去釐清兩者間之不同。像我雖然會C但也很久沒碰過非cgi的C了,架構在、文化精隨卻變了,仍然是要重新習慣它;而VB則是完全重新學。不過同學們還沒有讓程式驚豔到,我是因為太驚豔所以才願意下苦功去try。

第三題就是讓兩顆燈從左閃到右。再添一顆led,所以是八顆在跑,一樣囉,改table!別忘記有小算盤可以用,改成工程型,只需要key入職再按轉換便成。
1111 1100 fc
1111 1001 f9
1111 0011 f3
1110 0111 e7
1100 1111 cf
1001 1111 9f
0011 1111 3f

重點在體驗值與燈號的變化,原來電腦硬體裝修的乙級電路板,考的就很類似這個,給10顆燈,單顆從左閃到右、從右閃到左、兩顆燈左到右、兩顆燈右到左、從左亮到右、從右亮到左這類的變化十題來抽題目,看到這裡我就覺得有報考乙級的同學不用太擔心,燈號變化可以給定,問題就不大了。

總之,知道電路可以靠程式來玩,總算有點樂趣了。

張貼留言

0 留言