這個(gè)課程拖了挺久的,從上學(xué)期的十幾周開(kāi)始的。現(xiàn)在的成功也是建立在一款現(xiàn)成的電腦軟件——串口調(diào)試助手,本來(lái)想自己用C++的MFC編寫(xiě)的,不過(guò)之后的突襲學(xué)習(xí)C++并沒(méi)有達(dá)到想要的結(jié)果,加上后來(lái)考試就拖了下來(lái)。不過(guò)在單片機(jī)方面也系統(tǒng)的學(xué)習(xí)了串口通信(異步,UART)和程序的編寫(xiě)方式,實(shí)現(xiàn)了兩個(gè)單片機(jī)之間的通信,至于隨機(jī)數(shù)的產(chǎn)生,這個(gè)是用了定時(shí)器,很簡(jiǎn)單。
昨天看站長(zhǎng)用到串口調(diào)試助手,覺(jué)得不錯(cuò),想下一個(gè),沒(méi)想到原來(lái)我以前就下過(guò),所以順便就做完了這個(gè)猜數(shù)字游戲,具體來(lái)說(shuō),除了電腦上的編程還是很簡(jiǎn)單的,應(yīng)該說(shuō)是最基礎(chǔ)的,在方式一9600波特率下通信,9位含停止位傳輸,學(xué)單片機(jī)的是必學(xué)的。
對(duì)于筆記的話九針串口(即RS232串口)轉(zhuǎn)USB需要驅(qū)動(dòng)程序,不過(guò)在我觀察USB和串口除了電平不同,其他都一樣(串口是12V電平,單片機(jī)下載程序需要用MAX232芯片來(lái)轉(zhuǎn)化串口電平到TTL電平),都是VCC,GND,TX,RX,雖然RS232是九針即九個(gè)接觸線,但是真正用到單片機(jī)的就四根線。
對(duì)于C51的用法已經(jīng)比以前成熟多了,還是要學(xué)習(xí),接下來(lái)要完成我的16*8點(diǎn)陣俄羅斯方塊,繼續(xù)努力吧
不費(fèi)話了,大家看看效果吧。
制作要求:?jiǎn)纹瑱C(jī)產(chǎn)生隨機(jī)數(shù),在電腦上猜數(shù)字,猜三次,如果猜的數(shù)比產(chǎn)生的隨機(jī)數(shù)大,那么在電腦上顯示大,猜的數(shù)小的話在電腦上顯示小,猜出來(lái)和失敗都有提示、
圖1 程序(局部)
圖中軟件為單片機(jī)程序強(qiáng)力編譯器Keil uVision2,這是為微處理器打造的。Keil uVision3是為ARM打造
按下第一個(gè)鍵后單片機(jī)發(fā)送字符串,電腦接收到字符串“ready”
按下第二個(gè)鍵,產(chǎn)生了隨機(jī)數(shù)07
當(dāng)隨機(jī)數(shù)產(chǎn)生的時(shí)候,電腦接收到單片機(jī)的字符串“go”,意為可以猜數(shù)字了
有點(diǎn)遺憾,發(fā)送數(shù)據(jù)的時(shí)候這個(gè)軟件只能十六進(jìn)制發(fā),也就是說(shuō)等等看到0a就是十進(jìn)制10,0b是11,0c是12,0d是13,0e是14,0f是15。如果把左下角的“十六進(jìn)制發(fā)送”勾去掉,就是用ASCII碼發(fā),會(huì)出錯(cuò)的。而我從單片機(jī)發(fā)到電腦上的當(dāng)然是ASCII碼。
圖中是02,因?yàn)殡S機(jī)數(shù)是07,所以小了,電腦就接收到“small”,讓你繼續(xù)猜。
09 大了
再猜一個(gè)錯(cuò)的。
后記:沒(méi)什么好說(shuō)的,我想希望有人對(duì)這個(gè)感興趣吧,因?yàn)榇趯?duì)于單片機(jī)控制很重要,如果我現(xiàn)在不是用串口線而是用無(wú)線發(fā)射模塊,那么我就可以用來(lái)控制我上次做的小車(chē),這個(gè)是很有趣的一件事情吧,但是要等到我學(xué)好C++,因?yàn)?1hei站長(zhǎng)曾經(jīng)用計(jì)算機(jī)來(lái)控制無(wú)人飛機(jī)讓飛機(jī)按照固定的軌道飛行,還有單片機(jī)控制GSM和GPS的,就可以用來(lái)發(fā)短信和全球定位,所以單片機(jī)是很有趣的東西,希望有更多人來(lái)玩單片機(jī)吧。
曾經(jīng)RAM兄弟告訴我,搞單片機(jī)要耐得住寂寞,呵呵,看來(lái)是這樣的。