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