*劉 奕
(安徽省汽車工業(yè)學(xué)校 安徽 231131)
利用51單片機進行霓虹燈廣告牌設(shè)計的教學(xué)探索
*劉 奕
(安徽省汽車工業(yè)學(xué)校 安徽 231131)
隨著人們對物質(zhì)生活的智能化要求越來越高,單片機作為智能化的核心,將會日益成為我國未來的一個要發(fā)展的方向。本文通過在YL-236試驗臺上利用C語言,模擬設(shè)計霓虹燈廣告牌的項目,闡述了用十六進制編碼LED燈的狀態(tài),用定時器實現(xiàn)定時功能,呈現(xiàn)出霓虹燈光按照次序循環(huán)閃爍的功能的簡單智能控制。同時也讓學(xué)生們對學(xué)習(xí)單片機初步的認識,并且產(chǎn)生強烈的興趣。
AT89C51 單片機;C語言;二進制;十六進制;一維數(shù)組;延時中斷
在單片機教學(xué)過程中,為了讓學(xué)生做到“愿意學(xué)、學(xué)得會、用得上”,利用單片機試驗臺YL-236臺上的功能模塊,采用項目教學(xué),以“夠用為度”,從單片機的實際應(yīng)用出發(fā),將傳統(tǒng)單片機系統(tǒng)原理進行整合,是我們一線老師必須要面對和思考的問題。本文就以LED小燈模塊為例,模擬霓虹燈循環(huán)閃爍功能。
AT89C51是由ATMEL公司推出的一種小型單片機,95年出現(xiàn)在中國市場。其主要特點為采用Flash存貯器技術(shù),降低了制造本,其軟件、硬件與MCS-51完全兼容,可以很快被廣大用戶接受,其程序的電可擦寫特性,使得開發(fā)與測試方便又易于實現(xiàn)。本設(shè)計主要介紹由AT89C51單片機來實現(xiàn)霓虹燈循環(huán)閃爍系統(tǒng)。
匯編語言曾是單片機軟件開發(fā)工程師進行軟件開發(fā)的唯一選擇,但匯編語言程序的可讀性和可移植性較差,采用匯編語言編寫單片機應(yīng)用程序的時間周期較長,且調(diào)試和排錯比較困難。為了提高單片機應(yīng)用系統(tǒng)的開發(fā)效率,使用戶從繁瑣的匯編語言中解脫出來,世界上諸多軟件公司都致力于51單片機高級語言編譯器的開發(fā)研究。
與匯編語言相比,C語言在功能性、結(jié)構(gòu)性、可讀性和可維護性上有明顯的優(yōu)勢,易學(xué)易用,因此出現(xiàn)了專門用于51系列單片機編程的 C 語言——C51。目前最先進的功能最強大的C51編譯器是Keil C51。
要求:(1)霓虹燈的驅(qū)動。要求用LED來模擬霓虹燈工作。
(2)流水速度:每0.5秒變一次狀態(tài)(共8秒鐘循環(huán))。

(1)YL-236試驗臺的LED顯示模塊是共陽的。
共陽極公共端接陽極,發(fā)光二極管的陽極(正極)都聯(lián)在一起, 低電平有效(燈亮),在單片機里只有兩個數(shù)0和1,低電平用0表示,高電平用1表示,則燈亮對應(yīng)代碼為0。
(2)在弄清楚二進制與十六進制的轉(zhuǎn)換之前,先要明白十六位數(shù)的表示方式,具體如下:0—0,1—1,2—2,3—3,4—4,5—5,6—6,7—7,8—8,9—9,10—A,11—B,12—C,13—D,14—E,15—F。
(3)二進制數(shù)僅由0和1組成,二進制數(shù)的低位到高位分別表示1,2,4,8,16,32……,即2的(n-1)次方即可。對于四位二進制數(shù),從高到低分別是8,4,2,1。二進制轉(zhuǎn)16進制,只需將2進制數(shù)從右向左每四位一組合,每一個組合以一個十六進制數(shù)表示。例
1111=8+4+2+1=15=F
1110=8+4+2=14=E
1101=8+4+1=13=D
……
0011=2+1=3
0001=1=1
(4)用十六進制來表示8個LED燈的狀態(tài)(0x是十六進制的符號)

序號 二進制 十六進制 序號 二進制 十六進制1 0111 0111 0x77 9 1110 1110 0xee 2 0011 0011 0x33 10 1100 1100 0xcc 3 0001 0001 0x11 11 1000 1000 0x88 4 0000 0000 0x00 12 0000 0000 0x00 5 1000 1000 0x88 13 0001 0001 0x11 6 1100 1100 0xcc 14 0011 0011 0x33 7 1110 1110 0xee 15 0111 0111 0x77 8 1111 1111 0xff 16 1111 1111 0xff
(5)將16種狀態(tài)寫在一個一維數(shù)組里,在程序里只要調(diào)用tab[]這個數(shù)組就可以用來表示小燈的狀態(tài)。
unsigned char code tab[16]={ 0x77,0x33,0x11,0x11,0 x00,0x88,0xcc,0xee,0xff,0xee,0xcc,0x88,0x00,0x11,0x33, 0x77,0xff};將16種狀態(tài)寫在一個一維數(shù)組里,在程序里只要調(diào)用tab[]這個數(shù)組就可以用來表示小燈的狀態(tài)。
unsigned char code tab[16]={ 0x77,0x33,0x11,0x11,0 x00,0x88,0xcc,0xee,0xff,0xee,0xcc,0x88,0x00,0x11,0x33, 0x77,0xff};
(1)首先利用定時器計算出定時開始的初值。
①首先明確三種方式的計數(shù)范圍:
方式0是13位的定時/計數(shù)器,記滿值為213=8192
方式1是16位的定時/計數(shù)器,計滿為216=65536
方式2是8位的定時/計數(shù)器,計滿為28=256
②以方式1來舉例說明(12M晶振):
如果想定時0.5S,但是計數(shù)方式1的計數(shù)最大計數(shù)65536us即65ms,為了方便計數(shù),選取50ms,計數(shù)10次就能實現(xiàn)0.5S計數(shù)。這里討論對計數(shù)器賦初值。計數(shù)器定時50ms,那么給定時器的初值應(yīng)該是65536-50000=15536。(定時器從15536一直計數(shù)到65536,共計50000次記數(shù),也即是50ms。)將初值15536,化為16進制為3CB0H,所以對計數(shù)器賦值:TL0=B0H;TH0=3CH。即得到初值。
(2)用單片機定時器實現(xiàn)的程序如下:

基于51單片機的霓虹燈系統(tǒng)的設(shè)計,價格低廉,結(jié)構(gòu)簡單,還有系統(tǒng)穩(wěn)定性好。熟練的應(yīng)用十六進制表示LED的狀態(tài)和定時器中斷控制功能,利用一維數(shù)組的將小燈的16種狀態(tài)與中斷聯(lián)系起來,簡化了程序的書寫,也使程序簡潔明了。
[1]陳巧莉,馮于戶.基于AT89C51 單片機的定時器控制音樂門鈴的仿真與實現(xiàn)[A].價值工程,1006-4311(2011)20-0146-03.
[2]陶孝海.51單片機C語言編程技巧[J],計算機時代,2009年第6期.
[3]宋國富主編.《單片機技能與實訓(xùn)》,電子工業(yè)出版社.
[4]雷林均主編.《單片機控制裝置安裝與調(diào)試上冊》,電子工業(yè)出版社.
[5]雷林均主編.《單片機控制裝置安裝與調(diào)試下冊》,電子工業(yè)出版社.
劉奕(1987~),女,安徽省汽車工業(yè)學(xué)校,研究方向:電工電子技術(shù)。
(責任編輯 高鎮(zhèn)峰)
Teaching Exploration of the Neon Light Billboards Design by Using the 51 Microcontroller
Liu Yi
(Automobile technical school of Anhui Province, Anhui, 231131)
Along with people's increasingly higher intelligence require for material life, the microcontroller, as the core of intelligence, will increasingly become one important developing direction for China’s future. In this paper, by utilizing the C language on the YL-236 test bed, it simulates the program of designing the neon light billboards, expounds the state of using the hexadecima code to code the LED lights and uses the timer to realize the timing function, finally presents the simple and intelligent control of neon light’s cycle flashing function in order. At the same time, it also can let the students take preliminary understanding of the learning microcontroller and stimulate students’ strong interest.
AT89C51 microcontroller;C language;binary system;hexadecimal;one-dimensional array;time-delay interruption
T
A