今天主要做我喜歡的單片機,哦,順便簡單介紹下我學的專業(yè)吧! 呵呵!我所學專業(yè)名字叫“自動化”怎么樣,聽上去還可以吧!其實當是報志愿的時候也不知具體是學什么的。經(jīng)過兩三年的摸索才大致知道了我應該重點學什么,怎么學,將來參加后能干什么。說實話還真難摸索啊!兩年多才明白了一二,也許這就是當初高中時沒好好學上二流大學的懲罰吧!不過還好了現(xiàn)在很喜歡這個專業(yè),怎么介紹這個自動化呢,感覺挺高科技的,其實也沒什么,大家在現(xiàn)實生活中都能看到,社會上的很多作業(yè)流程都是盡可能的實現(xiàn)自動控制,一個按鈕按下從最初的原材料就能得到想要的產品。我們所學就是怎樣讓它實現(xiàn),其中的各個環(huán)節(jié)是怎樣起作用的,最后將各個環(huán)節(jié)數(shù)字化實現(xiàn)用以計算機為核心控制并顯示的一些整套系統(tǒng),不過一整套系統(tǒng)不可能一個人都學會全部搞定的,能搞通期中一個環(huán)節(jié)就可以算是高手了!~呵呵
這個學期接觸到了單片機,算是個微處理機,是把計算機的部分功能集成化了的。在生活中隨處可見:想廚房用的電磁爐內就集成了單片機的控制,客廳掛的數(shù)字萬年歷也是用單片機實現(xiàn)的!經(jīng)過了解后,我對此產生了極大的興趣。下面簡單展示一個我做的基于單片機的實驗,望在這方面有研究的一起分享學習哈!
這個是用Proteus做的硬件設計,對單片機有興趣大概都用過吧!另外還有軟件程序,如果把這個硬件比作人的外觀和手腳(是的還可以控制步進電機伺服系統(tǒng)再用電機去控制一些操作的話就更像機器人了)。那么軟件程序就好比是人的大腦。下面我也把自己編的程序展示一下吧!望高手指點:是用C語言編的
#include <reg51.h> unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,}; unsigned char disbitcode[]={0X00,0x10,0x20,0x30,0x40,0x50,0x60,0x70};//經(jīng)38譯碼器片選數(shù)碼管 unsigned char disbuf[8]={0,0,0,0,0,0,0,0};//八次循環(huán)逐個片選導通并顯示。 sbit OE=P2^6; sbit LE=P2^7; sbit K1=P1^0; sbit K2=P1^1; sbit K3=P1^2; unsigned char second; unsigned char minite; unsigned char hour; unsigned int tcnt; void delay(unsigned int N) { while(N--); } void getbuff() { disbuf[0]=second%10; disbuf[1]=second/10; disbuf[2]=10; disbuf[3]=minite%10; disbuf[4]=minite/10; disbuf[5]=10; disbuf[6]=hour%10; disbuf[7]=hour/10; } void display() { unsigned char i=0; for(i=0;i<8;i++) { LE=1; P3=disbitcode[i]; //經(jīng)38譯碼器依次片選 P0=dispcode[disbuf[i]]; //將相應值送入P0口 OE=0; delay(500); } } void key() { if(K1==0) { delay(5000); if(K1==0) { second++; if(second==60) { second=0; } while(K1==0); } } if(K2==0) { delay(5000); if(K2==0) { minite++; if(minite==60) { minite=0; } while(K2==0); } } if(K3==0) { delay(5000); if(K3==0) { hour++; if(hour==24) { hour=0; } while(K3==0); } } } void t0() interrupt 1 using 0 { tcnt++; if(tcnt==4000) { tcnt=0; second++; if(second==60) { second=0; minite++; if(minite==60) { minite=0; hour++; if(hour==24) {hour=0;} } } } } void main() { TMOD=0x02; TH0=0x06; TL0=0x06; TR0=1; ET0=1; EA=1; second=0; minite=0; hour=0; tcnt=0; while(1) { key(); getbuff(); display(); } }
經(jīng)過近兩個月的努力探索,還是有一點小小的成就感!確實我也做出點東西!相對現(xiàn)在來說是簡單的事了!于是就想著做點復雜的有用的,唉!做起來真難!發(fā)現(xiàn)自己想做出產品來還差的遠啊,之前所做的都應歸為實驗階段的東西,拿不出手的啊!現(xiàn)在開始具體的做東西時發(fā)現(xiàn)之前學的東西太虛了,在高手面前甚至根本不能說自己學過更不必說會了!
于是我覺得學東西一定要親歷親為,不能放過一些關鍵細節(jié),想想當有人問你你會什么技能的時候!你是否能底氣十足的說我是個高手呢!呵呵!在學技術時,一定要自己狠一點,要學的東西弄得越透徹越好!不能對自己有寬容,不能打折扣!
事情往往是麻煩之后才會變的簡單!就像武林高手那樣無招勝有招!哈哈!~