LED點陣心形流水燈禮品設計_第1頁
LED點陣心形流水燈禮品設計_第2頁
LED點陣心形流水燈禮品設計_第3頁
LED點陣心形流水燈禮品設計_第4頁
LED點陣心形流水燈禮品設計_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、-大學物理與電子學院開放實驗室單片機設計報告LED點陣心形流水燈禮品設計設計人:開放實驗室入室人員目 錄0 前言11系統(tǒng)組成與功能.11.1 系統(tǒng)組成11.1.1 AT89C51單片機11.1.216乘16點陣21.2 系統(tǒng)功能32系統(tǒng)原理32.1系統(tǒng)仿真圖32.2 實物照片43程序流程圖.64程序代碼.75結論14參考文獻14. z-基于單片機控制心形流水燈跟點陣0 前言 隨著社會的開展,單片機得到了廣泛的應用,人們越來越重視單片機的應用。比方溫度是和每個人息息相關的,并且在有的生產車間里還要進展溫度時時測量,甚至是對溫度的進一步調控等,這些都是單片機的應用之例。本設計是用單片機和點陣加一個

2、小的流水燈電路,作為玩具挺有趣的。這次的作品,初衷是希望通過單片機學習,做個生日禮物送給朋友。由于時間緊迫,做的有些倉促,望原諒。1系統(tǒng)組成與功能1.1系統(tǒng)組成本系統(tǒng)主要有AT89C51單片機、18b20、1602、蜂鳴器、四位一體七段數碼管等元件組成。1.1.1 AT89C51單片機AT89S51具有如下特點:40個引腳,8k Bytes Flash片程序存儲器,256 bytes的隨機存取數據存儲器RAM,32個外部雙向輸入/輸出I/O口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數器,2個全雙工串行通信口,看門狗WDT圖1-1 AT89C51引腳圖電路,片時鐘振蕩器。此外,A

3、T89S52設計和配置了振蕩頻率可為0Hz并可通過軟件設置省電模式??臻e模式下,CPU暫停工作,而RAM定時計數器,串行口,外中斷 系統(tǒng)可繼續(xù)工作,掉電模式凍結振蕩器而保存RAM的數據,停頓芯片其它功能直至外中斷激活或硬件復位。引腳圖如圖1-1所示。16乘16點陣顯示模塊本點陣屏采用4塊8*8點陣組合,形成一個16*16的點陣,加驅動集成電路SN74HC164和74HC595組成。通過軟件控制,本屏以動態(tài)掃描的顯示方式,可顯示文字、圖形、動畫等多種把戲。 1、 SN74HC164是串行移位存放器,串行輸入并行輸出,當清零端CLR為高電平時,每來一個時鐘脈沖CLK存放器中的數據就會從Qa向Qh方

4、向移動一位,即QaQb、QbQc、QcQd、QdQe、QeQf、QfQg、QgQh,同時兩個輸入端A和B與非的結果進入Qa,SN74HC164的邏輯功能如圖1-2所示。圖1-2 SN74HC164的邏輯功能圖 2、 74HC595有一個8位串行輸入,并行輸出的移位存放器,該存放器向一個8位D型存儲存放器提供數據。74HC595N的存儲存放器具備三態(tài)輸出。移位存放器和存儲存放器分別有獨立的時鐘。74HC595N的移位存放器帶有最高優(yōu)先級的直接清零端SRCLR、串行輸入端SER和用于級聯的串行輸出端。當輸出使能端OE為高時,74HC595的輸出將處于高阻態(tài)。不管是移位存放器時鐘SRCLK還是存儲存

5、放器時鐘RCLK,都是上升沿觸發(fā)。如果當兩個時鐘綁定在一起時,則移位存放器將一直領先存儲存放器一個時鐘脈沖。SN74HC595特性:8位串行輸入,并行輸出移位;寬工作電壓圍:2.06.0 V高強度電流三態(tài)輸出,最多可驅動高達15個LSTTL負載;低功耗,最大ICC =80A;典型tpd=13 ns;5V下驅動電流為±6 mA;移位存放器可直接清零低輸入電流,最大1A;8位移位存放器,具有三態(tài)輸出鎖存。最后,集成了74HC595、74HC154的點陣實物圖見圖1-3所示。3、點陣主要技術參數:顯示容量:16*16個字符圖1-3 點陣實物圖芯片工作電壓:4.55.5V工作電流:2.0mA

6、(5.0V)模塊最正確工作電壓:5.0V4、引腳功能說明VCC 5V電源GND 接地DS 串行數據輸入STcp 并行數據輸出時鐘SHcp 串行數據輸入時鐘CS 選擇器使能A0-A3 16位數據選擇器輸入不算電源線,共8線,算電源為10線。本點陣已將驅動集成電路74HC595、74HC154等放在點陣后面了,引入10線及信號即可顯示。2 系統(tǒng)設計 2.1 系統(tǒng)設計方案 利用TC89C52RC單片機,16*16點陣LED,74HC164N 和74HC595N芯片,TIP127三極管組成的漢字點陣顯示系統(tǒng)。本系統(tǒng)主要分成屏體和控制器兩大局部。屏體的主要局部是LED點陣,還有行列驅動電路。LED點陣屏

7、采用16*16LED顯示模塊連接而成。一塊16行16列顯示屏,其LED發(fā)光器件數量相當大,不適合使用靜態(tài)驅動電路,而采用動態(tài)掃描驅動電路。掃描驅動電路采用多行的同名列共用一套驅動器,行驅動器一行的行線連接到電源的一端,列驅動器一列的列連接到電源的另一端??刂齐娐坟撠熡行虻剡x通各行,選通每一行之前還要把該行該列的數據準備好,一旦該行選通,這一行上的LED發(fā)光器件就可以根據列數據進展顯示。 本系統(tǒng)的控制電路采用單片機方法,由于單片機的I/O口數量少,驅動能力不強,則要擴展一定的硬件電路,才能滿足顯示屏的需要。硬件電路大體上可分為單片機控制器、LED顯示屏行列驅動電路、LED點陣屏三局部,LED顯示

8、屏驅動電路使用通用的數字電路并盡量減少外圍硬件,做到電路簡單、適應性強、本錢不高、維護方便等要求。 為了增強漢字點陣的顯示效果,LED漢字點陣顯示系統(tǒng)也可以有多種顯示模式。最簡單的顯示模式是靜態(tài)顯示。同靜態(tài)顯示模式相對應有多種動態(tài)顯示模式,它們所顯示的文字是動態(tài)的。按照文字運動的特點可以分為平移、閃爍、旋轉、縮放等多種顯示模式。產生不同顯示模式的方法可以通過一定的算法從原來的顯示數據產生。不過當算法太復雜時就會太浪費時間,也可以考慮預先生成刷新數據,存儲藏用。 本系統(tǒng)采用動態(tài)顯示的模式,所謂的動態(tài)顯示模式是指逐行輪流點亮。我們把所有的同一行發(fā)光管的陽極連接在一起,把所有第一列發(fā)光管的陰極連接一

9、起,先送出對應第一行的發(fā)光管亮滅的數據并且鎖存,然后選通第一行使其點亮一定的時間然后熄滅;再送出第二行的數據并且鎖存,然后宣統(tǒng)第二行使其點亮同樣的時間,然后熄滅;直到第第十六行顯示完后再重新點亮第一行,這樣反復輪回。如圖2所示。單片機行掃描LED點陣屏列掃描圖2 系統(tǒng)的整體構造圖 2.2點陣局部程序流程圖2.3流水燈局部基于單片機的流水燈是一個小設計,其原理就不詳細說明。單片機1左控制流水燈,單片機2右控制點陣。下面是系統(tǒng)連線圖:圖21 系統(tǒng)電路連線圖2.2實物照片具體的實物照片如下列圖實物圖一實物圖二圖23 實物照片圖三3 合并程序流程圖開場心形流水燈一個接一個亮起點陣依次顯示 葛靜寶寶生日

10、快樂心形流水燈一個間隔一個亮起點陣流動顯示生日快心形流水燈全亮然后全滅返回開場4 局部程序源代碼點陣單片機程序/*/*include<reg51.h>*define uchar unsigned char*define uint unsigned intuchar N=7; / N 表示有多少個漢字, 如要加多個字,只需改動N的值即可sbit DS=P10; /74HC595串行數據sbit STcp=P11; /74HC595并行輸出時鐘sbit SHcp=P12; /74HC595串行時鐘sbit CS=P13; /74HC154輸出有效信號/=P2口作為74HC154的選擇控

11、制數據輸入=/=P2口整體控制A0-A4,所以無需單獨控制每個信號=/sbit A0=P30;/sbit A1=P31;/sbit A2=P32;/sbit A3=P33;/=字模表=/=取模方法:陰碼,逆向,逐行=/=uchar code Hanzi=/*0*60,0*02,0*1C,0*0A,0*10,0*12,0*10,0*12,0*10,0*02,0*FF,0*7F,0*10,0*02,0*10,0*12,0*70,0*14,0*1C,0*0C,0*13,0*04,0*10,0*0A,0*90,0*49,0*10,0*50,0*14,0*60,0*08,0*40,/*"我&q

12、uot;,00*00,0*1F,0*FC,0*09,0*48,0*08,0*90,0*04,0*FC,0*7F,0*44,0*40,0*42,0*00,0*FC,0*3F,0*20,0*00,0*E0,0*0F,0*30,0*04,0*D0,0*02,0*08,0*03,0*C6,0*0C,0*31,0*70,0*0C,0*20,/*"愛",10*90,0*00,0*90,0*01,0*88,0*20,0*C8,0*7F,0*44,0*20,0*2C,0*12,0*16,0*02,0*45,0*0A,0*C4,0*12,0*44,0*12,0*24,0*22,0*24,0*

13、62,0*14,0*22,0*84,0*02,0*04,0*01,0*00,0*00,/*"你",2*/0*60,0*02,0*1C,0*0A,0*10,0*12,0*10,0*12,0*10,0*02,0*FF,0*7F,0*10,0*02,0*10,0*12,0*70,0*14,0*1C,0*0C,0*13,0*04,0*10,0*0A,0*90,0*49,0*10,0*50,0*14,0*60,0*08,0*40,/*"我",3*/* (16 * 16 , 宋體 )*/0*00,0*1F,0*FC,0*09,0*48,0*08,0*90,0*04,

14、0*FC,0*7F,0*44,0*40,0*42,0*00,0*FC,0*3F,0*20,0*00,0*E0,0*0F,0*30,0*04,0*D0,0*02,0*08,0*03,0*C6,0*0C,0*31,0*70,0*0C,0*20,/*"愛",4*/* (16 * 16 , 宋體 )*/0*90,0*00,0*90,0*01,0*88,0*20,0*C8,0*7F,0*44,0*20,0*2C,0*12,0*16,0*02,0*45,0*0A,0*C4,0*12,0*44,0*12,0*24,0*22,0*24,0*62,0*14,0*22,0*84,0*02,0*

15、04,0*01,0*00,0*00,/*"你",5*/* (16 * 16 , 宋體 )*/0*00,0*00,0*00,0*00,0*00,0*00,0*00,0*00,0*08,0*00,0*08,0*00,0*08,0*00,0*08,0*00,0*08,0*00,0*08,0*00,0*08,0*00,0*08,0*00,0*08,0*00,0*00,0*00,0*08,0*00,0*00,0*00,/*"!",6*/一定要在字模后加一個清屏的字模,否則移動顯示時出現亂麻0*00,0*00,0*00,0*00,0*00,0*00,0*00,0*0

16、0,0*00,0*00,0*00,0*00,0*00,0*00,0*00,0*00,/清屏0*00,0*00,0*00,0*00,0*00,0*00,0*00,0*00,0*00,0*00,0*00,0*00,0*00,0*00,0*00,0*00,;/=延時程序=void delay(uint N) uchar i; uint j; for(j=0;j<N;j+) for(i=125;i>0;i-);/=逐行測試=/=目的:查看有無壞點=void display_test(uchar N) uchar i,j; for(j=0;j<100;j+) DS=0; /整行顯示 f

17、or(i=0;i<16;i+) SHcp=0; SHcp=1; STcp=0; STcp=1; P3=N; CS=0; delay(10); /本程序太長,省去局部,需要完整程序請 CS=1; /聯系QQ154401855(或154401856)下載 /+靜態(tài)顯示+/=+顯示程序=/ N表示傳遞過來的第幾個文字,一個文字占32個字節(jié),所以M為32的倍數/=void display_state(uchar M) uchar i,j,n,cont=0; uchar temp; for(n=0;n<50;n+) /重復顯示50次,以便能清楚顯示 for(i=0;i<16;i=i+2

18、) temp=HanziM+i+16; /取一字模數據存放于temp,高8位 /進展8次轉換,使8位并行數據轉換為串行數據for(j=0;j<8;j+)if(temp&0*80) /并行數據轉為串行數據,高位在前 DS=1;else DS=0;SHcp=0;SHcp=1; /SHcp上升沿鎖存一位數據temp=temp<<1; /左移一位,進展下一次轉換temp=HanziM+i; /取一字模數據存放于temp,低8位 /進展8次轉換,使8位并行數據轉換為串行數據for(j=0;j<8;j+)if(temp&0*80) /并行數據轉為串行數據,高位在前

19、DS=1;else DS=0;SHcp=0;SHcp=1; /SHcp上升沿鎖存一位數據temp=temp<<1; /左移一位,進展下一次轉換STcp=0;STcp=1; /STcp上升沿使8位數據并行輸入P3=cont; /cont計數器作為74HC154的選擇信號,由P2口輸出CS=0; /74HC154 使能,開啟顯示delay(2); /延時一下,以便有足夠的點亮時間CS=1; /關顯示,不關顯示會出現花屏現象cont+; /cont計數器加一 for(i=1;i<16;i=i+2) temp=HanziM+i+16;for(j=0;j<8;j+)if(temp

20、&0*80) DS=1;else DS=0;SHcp=0;SHcp=1;temp=temp<<1;temp=HanziM+i;for(j=0;j<8;j+)if(temp&0*80) DS=1;else DS=0;SHcp=0;SHcp=1;temp=temp<<1;STcp=0;STcp=1;P3=cont;CS=0;delay(2);CS=1;cont+; for(i=0;i<16;i+) DS=0;SHcp=0;SHcp=1; /SHcp上升沿鎖存一位數據 cont=0; CS=1; /+動態(tài)顯示文字+void display_move

21、(void) uchar i,j,n,cont=0; uchar temp,hang; for(hang=0;hang<32*N;hang=hang+2) /每次上移一行,即實現動態(tài)移動顯示效果 for(n=0;n<10;n+) /程序太長,省略一局部,需要完整程序請 /聯系QQ154401855(或154401856)下載 /=主函數=void main(void) uchar i; P1=0*FF; P2=0*FF; while(1) /* for(i=0;i<16;i+) /16行點陣測試 display_test(i); delay(100); */ for(i=0;

22、i<32*N;i=i+32) /靜態(tài)漢字顯示 display_state(i); delay(1000);display_move(); /動態(tài)漢字顯示 流水燈陣程序/*/*include<reg51.h>/*8位將流水燈編碼存于單片機程序存儲中*unsigned char code LED1_shun=0*FE,0*FD,0*FB,0*F7,0*EF,0*DF,0*BF,0*7F; /順時針點亮數據unsigned char code LED2_ni=0*7F,0*BF,0*DF,0*EF,0*F7,0*FB,0*FD,0*FE; /逆時針點亮數據unsigned int N=300;void delay(unsigned int n)unsigned int i;unsigned char j;for(i=0;i<n;i+)for(j=100;j>0;j-); /程

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論