㈠ 本人大三學生,《單片機原理與應用》掛了,老師給了5道大題,其中有原題,希望幫忙做一下,後天考試...
大二自學單片機,表示這題無壓力……用C編程還是匯編?
㈡ 求單片機高手幫忙!
基於單片機交通燈智能控制系統研究
隨著經濟發展,汽車數量急劇增加,城市道路日漸擁擠,交通擁塞已成為一個國際性的問題。因此,設計可靠、安全、便捷的多功能交通燈控制系統有極大的現實必要性。通常情況下,交通信號燈控制主要有兩個缺陷:1、車道放行車輛時,時間設定相同且固定,十字路口經常出現主車道車輛多,放行時間短,車流無法在規定時間內通過,而副車道車輛少,放行時間明顯過長;2、未考慮急車強通(譬如,消防車執行緊急任務時,兩車道都應等待消防車通過)。由於交通信號燈控制系統缺乏有效的應急措施,導致十字路口交通受阻,造成不必要的經濟損失。
本系統利用單片機AT89C51,藉助CAN匯流排作為現場通信匯流排實現智能交通信號燈控制系統設計,實現了根據區域車流、紅外遙控以及PC機進行十字路口交通信號燈智能控制,並在軟、硬體方面採取一些改進措施,實現了根據十字路口車流、紅外遙控進行交通信號燈智能控制,使交通信號燈現場控制靈活、有效。從一定程度上解決了交通路口堵塞、車輛停車等待時間不合理、急車強通等問題。系統具有結構簡單、可靠性高、成本低、實時性好、安裝維護方便等優點,有廣泛的應用前景。
2 設計方案與系統結構
本智能交通信號燈控制系統硬體主要由車流信息檢測電路、鍵盤時間設置電路、紅外遙控發射/接收電路、單片機控制器、CAN匯流排控制器、CAN匯流排收發器、光電隔離晶元、單片機並行介面、看門狗電路等電路組成。本系統設置與上位PC機相連的上位節點為主節點,各路口信號燈控制裝置為底層節點,共同構成區域交通信號燈控制系統。系統原理框圖如圖1所示。
系統利用紅外遙控裝置實現各十字路口現場信號燈控制,紅外發射器發射出的編碼信號經接收器接收後送入單片機控制器,控制信號燈紅綠變換、等待時間、急車強通。另外,車流檢測裝置安放在各十字路口東西、南北道路方向實時檢測車道車流信息。並將檢測到的信息輸至單片機進行處理,通過單片機編程技術實現信號燈綠、紅切換及等待時間設定。此外,PC機通過通訊串口與節點上的單片機控制器進行通信,實現數據信息在CAN匯流排上的發送與接收。PC機負責網路上所有信號燈控制裝置的集中管理功能;同時向各信號燈控制器下傳工作模式控制信息。3 系統設計
3.1 紅外遙控發射電路
由於系統需實現十字路口不同方向信號燈變化。假設兩方向為東西、南北方向。則需實現東西、南北兩個方向信號燈的選定、時間增減、急車強通等功能。紅外遙控發射電路原理框圖如圖2所示。
紅外遙控發射器與外接陶瓷諧振器、電容器組成振盪電路,分頻產生一定脈沖寬度的載頻信號。輸出編碼信號,經達林頓管放大後,驅動紅外線發射二極體向外發射。
3.2 紅外遙控接收電路
紅外接收、解調模塊接收來自發射器的紅外信號,經內部集成電路放大、解調後,由輸出端輸出編碼脈沖信號,經三極體反相放大後,送至接收器,由接收器解調模塊進行解碼。當發射器相應鍵按下時,接收器輸出高電平信號,通過或非門接入單片機控制器的外中斷,申請中斷,由中斷服務程序檢測鍵按下狀態,從而完成相應的中斷服務。紅外接收器與單片機控制器介面電路如圖3所示。
3.3 CAN匯流排節點介面電路
各路口交通信號燈控制器與上位機的通訊都通過各自的CAN匯流排介面模塊完成。匯流排系統節點硬體電路原理框圖如圖4所示。
單片機控制器負責CAN匯流排控制器初始化,控制實現數據的接收和發送等通信任務。CAN匯流排收發器與CAN匯流排介面部分採用了一定的安全和抗干擾措施。為增強CAN匯流排節點的抗干擾能力,CAN控制器不直接與CAN收發器相連,而是通過加接高速光電隔離器晶元,實現匯流排上各節點間的電氣隔離。但是,光耦電路所採用的VCC和VDD電源必須完全隔離,否則採用光耦電路就失去了意義,可採用小功率電源隔離模塊或不大於5V隔離輸出開關電源模塊實現。
3.4 看門狗電路
由於單片機控制器自身抗干擾能力較差,尤其在一些條件比較惡劣、雜訊大的場合,常會出現單片機因受外界干擾輕者導致系統內部數據出錯,重者將嚴重影響程序的運行而死機,造成系統不能正常工作。設置看門狗是為了防止單片機死機、提高單片機系統抗干擾性的一種重要途徑。考慮系統可靠性設計,滿足苛刻環境下的正常運行,本設計中採用硬體看門狗電路。電路原理框圖如圖5所示。
通過硬體看門狗電路設計,可有效防止運行程序進入「死循環」。保證系統不受惡劣天氣及環境條件造成的干擾。
3.5 分布式檢測控制系統由於CAN匯流排具有較強的抗干擾能力,通訊中沒有地址的概念及節點數不受限制等優點,已經被廣泛應用於汽車、數控機床、儀器儀表、現場匯流排控制等領域[1]。本設計將若干智能交通信號燈控制器、上位節點介面和PC機組成CAN匯流排通信系統方便實現智能分布式區域信號燈實時監控、高速數據採集等。單片機控制器與PC機實現串列通信,設置CAN匯流排控制器工作在Intel模式,由PC機發送數據寫入單片機控制器,再通過控制信號由單片機將數據寫入CAN匯流排控制器並通過CAN匯流排收發器發送。接收數據通過中斷進行,CAN BUS數據經CAN匯流排收發器接收並寫入CAN匯流排控制器。然後通過中斷提請單片機讀取數據上傳PC機。
4 實驗分析
本系統單片機控制器選用MSC-51系列IntelAT89C51晶元,紅外遙控發射/接收器使用BA5104/BA5302設計。利用MAX692設計看門狗監控電路。匯流排通信介面中選取PHILIPS公司的SJA1000 CAN匯流排控制器及82C250匯流排收發器[2] [3]。光耦合器採用6N137晶元。系統硬體電路利用Protel DXP設計並制板。
通過實驗測試,按下紅外遙控發射器按鍵K1-K6有效地控制了東西、南北方向時間設定、急車強通,時間增、減。持續使WDI低電平時間>1.6s後,看門狗RESET端產生200ms負溢出脈沖信號使AT89C51復位,均有效地達到了系統設計要求。
為了提高系統通訊抗干擾性及可靠性,在匯流排收發器82C250的CANH和CANL引腳通過5Ω電阻與CAN匯流排相連,保護其免受過流沖擊的影響;82C250的CANH和CANL與地之間分別並聯30pF電容,濾除匯流排高頻干擾並起到防電磁輻射的作用;匯流排兩端接入120Ω終端電阻[4],匹配匯流排阻抗。此外,在CAN匯流排輸入端與地之間接防雷擊管,當兩輸入端與地之間出現瞬變干擾時,通過防雷擊管放電起到保護匯流排的作用,避免了雷電天氣對系統通訊的影響。這些部分雖然增加了節點的復雜度,但卻有效保證了數據通信的穩定性和安全性。
5 結語
交通信號燈智能控制系統為改善城市交通擁堵,提高道路的交通運輸能力發揮了積極作用。本系統設計實現了十字路口信號燈自動化、智能化、人性化實時控制。通過系統功能擴展,系統亦可應用於其他控制領域,應用前景廣闊。
㈢ 單片機 編程題 請幫幫忙,小妹剛學,很多不懂,請把程序寫出來啦!謝謝
1、 MOV R0,#20H
MOV R2,#00H
M: MOV A,@R0
CJNE A,#00H,HERE
SJMP END0
HERE: CJNE A,#42H,MA
INC R2
MA: INC R0
SJMP M
END0: END
2、 MOV A,20H
MOV B,A
MUL AB
MOV 21H,A
3、 MOV A,30H
CJNE A,#00H,T
MOV R3,31H
JMP END0
XIAO: CLR C
ADD A,B
MOV R3,A
JNC END0
MOV R2,#01H
ENDO: END
4、 MOV TMOD,#10H
SETB TR1
LOOP: MOV TH1,#0BEH
MOV TL1,#010H
JNB TF1,$
CLR TF1
CPL P1.1
SJMP LOOP
5、 MOV TMOD,#02H
MOV TH0,#06H
MOV TL0,#06H
SETB TR0
LOOP: JBC TF0,轉
SJMP LOOP
參考一下吧,很多單片機書上應該都有這樣的例子,最好看一下啊呵呵
㈣ 如何學單片機
請看郭天祥大師的《怎麼學好單片機》
很多單片機初學者問我的第一句話就是怎樣才能學好單片機?對於這個問題我今天就我自己是如何開始學單片機、如何開始上手、如何開始熟練這個過程給大家講講。先說說單片機,我們現在用的比較多的是8051單片機,它的資料比較多,用的人也較多,市場也很大,51單片機內部結構比較簡單,非常適合初學者學習,建議初學者將51單片機做為入門級晶元。單片機屬於硬體,我強烈不推薦大家使用單片機模擬軟體來學習單片機,也可以肯定的告訴大家,使用模擬軟體是學不會單片機的,硬體只有把它擺在你的面前,親自操作它,才會有深刻的體會,才能學明白它。單片機這門課是一科非常重視動手實踐的科目,不能總是看書,但是也不能完全不看書,我們需要從書中大概了解一下單片機的各個功能寄存器,如果看的多了反而容易搞亂,尤其是現在市場上大多數講單片機的書一開始就講解較復雜的內存、地址、存儲器什麼的,更讓初學者感到不知所雲、難以入門。簡單的說,當我們使用單片機時,實際上就是用我們自己編寫的軟體去控制單片機的各個功能寄存器,再簡單些,就是控制單片機哪些引腳的電平什麼時候輸出高,什麼時候輸出低。由這些高低變化的電平來控制外圍電路,實現我們需要的各個功能。
關於看書,大家只需大概了解單片機各引腳的功能,了解下寄存器。第一次、第二次你可能看不明白,但這不要緊,因為還缺少實際的感觀認識。所以我總是說,學單片機看書看兩三天就夠了,而我們要把更多的時間放到實踐中去,這才是最關鍵的,在實踐的過程有不懂之處再查書,這樣記憶才深刻。關於實踐有兩種方法你可以選擇,方法一、你自己花錢買一塊單片機的學習板,不要求那種價格上千塊功能太太全的,對於初學者來說你買功能太全的板子,上面有很多東西你這輩子都用不著,我建議有流水燈、數碼管、獨立鍵盤、矩陣鍵盤、AD 和DA、液晶、蜂鳴器、IIC匯流排、有USB擴展也最好,這些就差不多了。如果說我上面提到的這些功能你能熟練應用,那可以說對於單片機本身的操作你已經入門了,剩下的就是自己練習設計外圍電路,不斷的積累經驗。只要過了第一關,後面的路就好走多了,萬事開頭難,大家都聽過。方法二、你身邊如果有單片機方面的高手,向他求助,讓他幫你搭個簡單的最小系統板。對於高手來說,做個單片機的最小系統板可能只需要幾分鍾的時間,而對於初學者可就難多了,因為只有對硬體徹底了解了,你才能熟練的駕馭它。而如果你身邊沒有這樣的高手,又找不到可以幫助你的人,那我勸你還是選擇方法一,畢竟自己有一塊學習板要方便的多,以後做單片機類的小實驗時經常都能用得上,省時又省事。
有了單片機學習板之後你就要多練習,最好是自己有台電腦,少看電影,少打游戲,把學習板和電腦連好,打開調試軟體坐在電腦前,先學會怎麼用調試軟體,然後從最簡單的流水燈實驗做起,等你能讓那八個流水燈按照你的意願隨意流動時你已經入門了,你會發現單片機是多麼迷人的東西啊,太好玩了,這不是在學習知識,而是在玩,比起跑跑卡丁車,比起魔獸世界,要好玩的多的多。當你編寫的程序按你的意願實現時,你比做任何事都開心,你會上癮的,真的,做電子設計的人真的會上癮。然後讓數碼管亮起來,這兩項會了後,你已經不能自拔了。就是要這樣練習,在寫程序的時候你肯定會遇到很多問題,而這時你再去翻書找,或是問別人,或是上網搜索。當得到解答後你會記住一輩子的,知識必須應用於現實生活中,解決實際問題,這樣才能發揮它的作用,你自己好好想想,上了這么多年大學,天天上課,你在課堂上學到了什麼?是不是為了期末考試而忙碌呢?考完得了90分,哈哈哈好高興啊,過一個假期,甚至過一個周末,然後忘的一干二凈,是不是?你學到什麼了?我認為這樣的生活沒有意義。但是我告訴你單片機一旦學會,永遠不會忘了。
另外我再說說關於用匯編語言還是C語言編程的問題。很多同學大一、二就開設了C語言的課,我也上過,我知道那時上課老師講的就是幾乘幾、幾加幾、求個階乘、畫個星星、編個月亮什麼的。學完了有什麼用?雖然考試我考了90分,可我心裡比誰都明白,C語言到底是什麼?它有什麼用?到底它能做什麼我一無所知。我們不能過多的評價當今的高校教育,但我們必須得為自己負責任。讓你用C語言編單片機的程序你是不是就傻了?單片機編程用C語言或匯編語言都可以,但是我建議用C語言比較好,如果原來有C語言的基礎那學起來會更好,如果沒有,也可以邊學單片機邊學C語言,C語言很簡單,只是一門工具而已,我勸大家最好學好學精它,將來肯定用得著,要不然以後也得學,你一點匯編都不會根本無所謂,但你一點C語言都不會那你將來會吃苦頭。給大家推薦一本書,作者譚浩強,書名>,清華大學出版社,大家在學習本書的同時再參考上面提到的這本書更有利C語言學習。也根本沒必要再從頭把>學一邊,就算再學一邊也許結果還是和你現在一樣,最好的辦法就是用到哪裡學哪裡。匯編寫程序代碼效率高,但相對難度較大,而且很繁瑣,尤其是遇到演算法方面的問題時,根本是麻煩的不得了,現在單片機的主頻在不斷的提高,我們完全不需要那麼高效率的代碼,因為有高頻率的時鍾,單片機的ROM也在不斷的提高,足夠裝得下你用C語言寫的任何代碼,C語言的資料又多又好找,將來可移植性非常好,所以我勸大家用C語言。
總結上面,只要你有信心,做事能堅持到底,有不成功絕不放棄的強烈意志,那學個單片機對你來說就是件非常容易的事。建議步驟:
1 、看書大概了解一下單片機結構,大概了解就行。不用都看懂,又不讓你出書。
2 、用學習板練習編寫程序,學單片機主要就是練編程序,遇到不會的再問人或查書。
3 、自己網上找些小電路類的資料練習設計外圍電路。焊好後自己調試,熟悉過程。
4 、自己完全設計具有個人風格的電路、產品 … 你已經是高手了。
㈤ 單片機 思考題與習題 急 謝謝。。。。
1、分4組,分別由PSW中RS1、RS0控制,每組8個單元,復位後的寄存器是第0組。能被8整除的都可以進行位定址。EA:片內外程序存儲器片選端,ALE:地址鎖存使用,PSEN:片外程序存儲器讀允許信號,1個機器周期是12個時鍾周期,1個指令周期是1、2、4個機器周期。1/10US,P0-P3,口的不同之處在與:P0口沒有上拉電阻,其餘的都有上拉電阻,外電路不用加上拉電阻。在作為輸入口時要向埠寫1,防止讀入的數據錯誤。
2、地址相同,但是,使用的指令不同,MOVC,MOVX。P3口的第二功能很豐富:串列口RX,TX、外部中斷INT0,INT1、定時記數器T0,T1、讀寫WR,RD。一個是位地址,一個是位元組地址,採用訪問的指令不同,7C在位地址定址區的2F中,PSW記錄累加器A的狀態,CY,AC,OV等,具體是第7位進位或者借位時,CY=1,反之為0,第3位進位或者借位時,AC=1反之為0,當運算結果不對時,OV=1。
3、那是程序的總入口地址,中斷地址入口。說白了,就是即可以輸入又可以輸出的口叫雙向口,P0-P3:復位時,為FFH。定址方式:直接、間接、立即、寄存器、變址、位定址。內部低128位定址,和整個256位元組定址。
4、DA A的作用是緊跟著加法後面的指令,用與十進制調整。MOV A,80H,XCH A,90H,MOV 80H,A。算術運算利用CY,OV判斷結果是否正確。如果CY=1,說明減數小,與此同時OV=1,說明正數減去負數得負數的情況。依次類推。
以上是部分內容回答。
由於時間關系先到此吧,後續再補上!
㈥ 單片機主要用途是什麼
單片機的應用
1、單片機在智能儀表中的應用單片機廣泛地用於各種儀器儀表,使儀器儀表智能化,並可以提高測量的自動化程度和精度,簡化儀器儀表的硬體結構,提高其性能價格比。
2、單片機在機電一體化中的應用機電一體化是械工業發展的方向。機電一體化產品是指集成機械技術、微電子技術、計算機技術於一體,具有智能化特徵的機電產品。
例如微機控制的車床、鑽床等。單片機作為產品中的控制器,能充分發揮它的體積小、可靠性高、功能強等優點,可大大提高機器的自動化、智能化程度。
3、單片機在實時控制中的應用單片機廣泛地用於各種實時控制系統中。例如,在工業測控、航空航天、尖端武器、機器人等各種實時控制系統中,都可以用單片機作為控制器。單片機的實時數據處理能力和控制功能,可使系統保持在最佳工作狀態,提高系統的工作效率和產品質量。
4、單片機在分布式多機系統中的應用在比較復雜的系統中,常採用分布式多機系統。多機系統一般由若乾颱功能各異的單片機組成,各自完成特定的任務,它們通過串列通信相互聯系、協調工作。
單片機在這種系統中往往作為一個終端機,安裝在系統的某些節點上,對現場信息進行實時的測量和控制。單片機的高可靠性和強抗干擾能力,使它可以置於惡劣環境的前端工作。
5、單片機在人類生活中的應用自從單片機誕生以後,它就步入了人類生活,如洗衣機、電冰箱、電子玩具、收錄機等家用電器配上單片機後,提高了智能化程度,增加了功能,倍受人們喜愛。單片機將使人類生活更加方便、舒適、豐富多彩。
綜合所述,單片機已成為計算機發展和應用的一個重要方面。另一方面,單片機應用的重要意義還在於,它從根本上改變了傳統的控制系統設計思想和設計方法。
從前必須由模擬電路或數字電路實現的大部分功能,現在已能用單片機通過軟體方法來實現了。這種軟體代替硬體的控制技術也稱為微控制技術,是傳統控制技術的一次革命。
(6)單片機幫考擴展閱讀
單片機的組成:
它通過內部匯流排把計算機的各主要部件接為一體,其內部匯流排包括地址匯流排、數據匯流排和控制匯流排。其中,地址匯流排的作用是在進行數據交換時提供地址,CPU通過它們將地址輸出到存儲器或I/O介面;數據匯流排的作用是在CPU與存儲器或I/O介面之間。
或存儲器與外設之間交換數據;控制匯流排包括CPU發出的控制信號線和外部送入CPU的應答信號線等。
單片機的特點由於單片機的這種結構形式及它所採取的半導體工藝,使其具有很多顯著的特點,因而在各個領域都得到了迅猛的發展。
㈦ 單片機高手們快幫我看一道簡單題吧,我剛學單片機
unsigned char 取值范圍好像是從0到255。
P1=_crol_(P1,1); 函數crol_(P1,1)是干什麼的?沒用過。
沒電路圖只看程序確實很費勁。
這是我寫的一個鍵盤加數碼管的程序,參考一下吧。
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uint p,q,s;
uchar i,j,a,r,sz[4];
uchar code asd[4][4]={4,8,12,16,3,7,11,15,2,6,10,14,1,5,9,13}; //鍵盤解碼
uchar code tab[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09}; //數字編碼
void delay(void) //延時程序
{
uchar i;
for(i=125;i>0;i--);
}
uchar key(void) //鍵盤掃描程序
{
P1=0xff;
p=0xfe; //1111 1110
for(i=0;i<4;i++) //低四位依次取0
{
P1=p; //P1取1111 1110
q=0x7f; //0111 1111
for(j=0;j<4;j++) //高四位依次取0
{
s=p&q; //0111 1110
if(P1==s) //判斷
{
delay();
if(P1==s)
{
a=asd[i][j];
}
}
q=q>>1|0x80; //高四位移位
}
p=p<<1|0x01; //低四位移位
}
return a; //返回值
}
void show(uchar y) //顯示程序
{ uchar b;
sz[0]=0; //千位
sz[1]=0; //百位
sz[2]=y/10; //十位
sz[3]=y%10; //個位
r=0x0e;
for(b=0;b<4;b++)
{
P0=r; //選通最右邊的數碼管
P2=tab[sz[b]]; //送字型碼
delay(); //顯示延時
r=r<<1|0x01; //移位以顯示前一位
P2=0xff;
}
}
main()
{
uchar x;
while(1)
{
x=key();
show(x);
}
}
㈧ 單片機考試題
假定(A)=0C5H,執行指令SWAP A 後,累加器(A)中的內容為5CH
若(A)=0FFH,執行指令 DEC A 後,結果為 0FEH
㈨ 試簡述C51的變數存儲類型與單片機存儲空間之間的關系。考試題目幫幫啊。。