一、前言 科技的進步需要技術不斷的提升。一塊大而復雜的模擬電路花費了您巨大的精力,繁多的元器件增加了您的成本。而現(xiàn)在,只需要一塊幾厘米見方的單片機,寫入簡單的程序,就可以使您以前的電路簡單很多。相信您在使用并掌握了單片機技術后,不管在您今后開發(fā)或是工作上,一定會帶來意想不到的驚喜。
二、單片機簡介
我國開始使用單片機是在1982 年,短短五年時間里發(fā)展極為迅速。1986 年在上海召開了全國首屆單片機開發(fā)與應用交流會,有的地區(qū)還成立了單片微型計算機應用協(xié)會,那是全國形成的第一次高潮。截止今日,單片機應用技術飛速發(fā)展,我們上因特網輸入一個“單片機”的搜索,將會看到上萬個介紹單片機的網站,這還不包括國外的。與它相應的專業(yè)雜志現(xiàn)在也有很多,比如由單片機界的權威何立民主編的《單片機與嵌入式系統(tǒng)應用》雜志現(xiàn)以風靡電子界,在2003年7月,91student.com(91 獵頭網)在上海、廣州、北京等大城市所做的一次專業(yè)人才需求報告中,單片機人才的需求量位居第一。
一塊小小的片子,為何有這樣的魔力?
我們首先從它的構成說起:單片機,亦稱單片微電腦或單片微型計算機。它是把中央處理器(CPU)、隨機存取存儲器(RAM)、只讀存儲器(ROM)、輸入/輸出端口
(I/0)等主要計算機功能部件都集成在一塊集成電路芯片上的微型計算機。
計算機的產生加快了人類改造世界的步伐,但是它畢竟體積大。微計算機(單片機)在這種情況下誕生了,它為我們改變了什么?縱觀我們現(xiàn)在生活的各個領域,從導彈的導航裝置,到飛機上各種儀表的控制,從計算機的網絡通訊與數(shù)據傳輸,到工業(yè)自動化過程的實時控制和數(shù)據處理,以及我們生活中廣泛使用的各種智能IC 卡、電子寵物等,這些都離不開單片機。以前沒有單片機時,這些 東西也能做,但是只能使用復雜的模擬電路,然而這樣做出來的產品不僅體積大,而且成本高,并且由于長期使用,
元器件不斷老化,控制的精度自然也會達不到標準。在單片機產生后,我們就將控制這些東西變?yōu)橹悄芑?,我們只需要在單片機外圍接一點簡單的接口電路,核心部分只是由人為的寫入程序來完成。這樣產品的體積變小了,成本也降低了,長期使用也不會擔心精度達不到了。所以,它的魔力不僅是在現(xiàn)在,在將來將會有更多的人來接受它、使用它。據統(tǒng)計,我國的單片機年容量已達1——3 億片,且每年以大約16%的速度增長,但相對于世界市場我國的占有率還不到1%。特別是沿海地區(qū)的玩具廠等生產產品多數(shù)用到單片機,并不斷地輻射向內陸。所以,學習單片機在我國是有著廣闊前景的。
學習單片機,推廣單片機,做現(xiàn)代生活的領航人,你還在等什么呢?
① 流水燈② 數(shù)碼顯示
③ AD 轉換④ 波形輸出
⑤ 編程接口⑥ PC通訊接口
⑦ 遙控解碼接收頭⑧ 功能擴展插槽
⑨ 編程插座⑩ 程序運行插座
四、I/O 口功能實例
4.1 流水燈
程序介紹:利用P1 口通過一定延時輪流產生低電平輸出,以達到發(fā)光二極管輪流亮的效果。實際應用中例如:廣告燈箱彩燈、霓虹燈閃爍。
程序實例(LAMP.ASM)
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV A,#00H
MOV P1,A ;滅所有的燈
MOV A,#11111110B
MAIN1:
MOV P1,A ;開最左邊的燈
ACALL DELAY ;延時
RL A ;將開的燈向右邊移
AJMP MAIN ;循環(huán)
DELAY:
MOV 30H,#0FFH
D1: MOV 31H,#0FFH
D2: DJNZ 31H,D2
DJNZ 30H,D1
RET
END
4.2 方波輸出
程序介紹:P1.0 口輸出高電平,延時后再輸出低電平,循環(huán)輸出產生方波。實際應用中例如:波形發(fā)生器。
程序實例(FAN.ASM):
ORG 0000H
MAIN:;直接利用P1.0口產生高低電平地形成方波//////////////
ACALL DELAY
SETB P1.0
ACALL DELAY
CLR P1.0
AJMP MAIN
;//////////////////////////////////////////////////
DELAY:
MOV R1,#0FFH
DJNZ R1,$
RET
END
五、定時器功能實例
5.1 定時1秒報警
程序介紹:定時器1每隔1秒鐘將p1.o的輸出狀態(tài)改變1次,以達到定時報警的目的。實際應用例如:定時報警器。
程序實例(DIN1.ASM):
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP DIN0 ;定時器0入口
MAIN:
TFLA G EQU 34H ;時間秒標志,判是否到50個0.2秒,即50*0.2=1秒
MOV TMOD,#00000001B;定時器0工作于方式1
MOV TL0,#0AFH
MOV TH0,#3CH ;設定時時間為0.05秒,定時20次則一秒
SETB EA ;開總中斷
SETB ET0 ;開定時器0中斷允許
SETB TR0 ;開定時0運行
SETB P1.0
LOOP: AJMP LOOP
DIN0:
;是否到一秒////////////////////////////////////////
INCC: INC TFLAG
MOV A,TFLAG
CJNE A,#20,RE
MOV TFLAG,#00H
CPL P1.0
;//////////////////////////////////////////////////
RE:
MOV TL0,#0AFH
MOV TH0,#3CH ;設定時時間為0.05秒,定時20次則一秒
RETI
END
5.2 頻率輸出公式
介紹:f=1/ts51 使用12M晶振,一個周期是1微秒使用定時器1工作于方式0,最大值為65535,以產生200HZ的頻率為例:200=1/t:推出t=0.005 秒,即5000 微秒,即一個高電平或低電平的時間為2500 微秒。這樣,定時值應設為65535-2500=63035,將它轉換為十六進制則為:F63B。
具體程序請看f200.asm
頻率遞增:
200HZ:63035:F63B
250HZ:63535:F82F
300HZ:63868:F97C
5.3 200HZ頻率輸出程序介紹:利用定時器定時,在P1.0 口產生200HZ的頻率輸出。實際應用例如:傳感器前級推動。
程序實例(F200.ASM):
ORG 0000H
AJMP MAIN
ORG 001BH
AJMP DIN0
MAIN:
CLR P1.0 ;產生一個低電平,實際上是從p1.0口產生頻率
MOV TMOD,#00010000B ;定時器1工作于方式0
MOV TH1,#0F6H
MOV TL1,#3BH ;頻率產生的時間,詳細請見頻率公式
SETB EA ;開總中斷
SETB TR1 ;開定時器1運行
SETB ET1 ;開定時器1允許
LOOP: AJMP LOOP ;無限循環(huán)
DIN0: CPL P1.0 ;產生一個高電平,
下次來就是低電平(因為取反),一個高電平和一個低電平形成一個周期
MOV TH1,#0F6H
MOV TL1,#3BH ;重置頻率產生時間
RETI ;返回
END
5.4 200——250HZ變化頻率輸出
程序介紹:利用定時器定時時間的變化,由P1.0 口產生200——250HZ變化的頻率。實際應用例如:傳感器前級推動、頻率發(fā)生器。
程序實例(F250.ASM):
ORG 0000H
AJMP MAIN
ORG 001BH
AJMP DIN1
MAIN:
;定義頻率200和300//////////////////////////////////
F2H EQU 30H
|