機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開(kāi)發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開(kāi)發(fā)
培訓(xùn)信息
贊助商
基于視覺(jué)暫留原理的搖動(dòng)顯示裝置探討
基于視覺(jué)暫留原理的搖動(dòng)顯示裝置探討
 更新時(shí)間:2009-11-13 13:41:30  點(diǎn)擊數(shù):0
【字體: 字體顏色
摘要:“搖動(dòng)顯示裝置”,俗稱“搖搖棒”,是基于人的視覺(jué)暫留原理的,通過(guò)分時(shí)刷新32個(gè)發(fā)光二極管來(lái)顯示輸出文字或圖案等信息的顯示裝置。輸出信號(hào)頻率的控制通過(guò)單片機(jī)來(lái)實(shí)現(xiàn),用搖動(dòng)傳感器檢測(cè)當(dāng)前搖動(dòng)狀態(tài)。當(dāng)進(jìn)行搖動(dòng)時(shí),由于人的視覺(jué)暫留原理,會(huì)在發(fā)光二極管搖動(dòng)區(qū)域產(chǎn)生一個(gè)視覺(jué)平面,在視覺(jué)平面內(nèi)的二極管通過(guò)不同頻率的刷新,會(huì)在搖動(dòng)區(qū)域內(nèi)產(chǎn)生圖像,從而達(dá)到在該視覺(jué)平面上傳達(dá)信息的作用。
關(guān)鍵字:單片機(jī);搖搖棒;發(fā)光二極管 ;搖動(dòng)



前言:隨著人們物質(zhì)生活水平的提高,人們對(duì)精神生活的追求也愈加強(qiáng)烈,對(duì)信息的渴求已成為了人們必不可少的需要,更加簡(jiǎn)捷與新穎的信息傳遞方式無(wú)疑會(huì)給人們帶來(lái)耳目一新的感受。而現(xiàn)代工具務(wù)求簡(jiǎn)捷化、便攜化,因此,搖動(dòng)顯示裝置的到來(lái),必將會(huì)給人們帶來(lái)一種新的方便的文化傳遞方式。



一、系統(tǒng)硬件
系統(tǒng)功能主要體現(xiàn)在3個(gè)部分:
(1)單片機(jī)控制(STC12C2052)
本裝置采用了STC12C2052單片機(jī),它支持直接通過(guò)串口線下載程序,對(duì)于本設(shè)計(jì)而言,顯示文字需經(jīng)常改變,STC12C2052方便許多,因此選擇STC12C2052作為本設(shè)計(jì)所用的單片機(jī)。
(2)顯示功能。(D1~D32)
信息傳遞主要由顯示來(lái)完成,本設(shè)計(jì)顯示功能由32個(gè)發(fā)光二極管來(lái)完成。32個(gè)發(fā)光二極管分為4組,以共陽(yáng)的方式連接,共用P1口作為數(shù)據(jù)輸出口。另外4條I/O口作為段選,通過(guò)三極管選通相應(yīng)段。
(3)傳感器系統(tǒng)。(S2)
硬件傳感器主要為搖動(dòng)傳感器,本設(shè)計(jì)的搖動(dòng)傳感器由滾珠開(kāi)關(guān)構(gòu)成。
可選搖動(dòng)開(kāi)關(guān)有水銀搖動(dòng)開(kāi)關(guān)和滾珠開(kāi)關(guān)兩種。水銀搖動(dòng)開(kāi)關(guān)穩(wěn)定性較高,但容易發(fā)生破裂,水銀外泄,安全性較差。滾珠開(kāi)關(guān)穩(wěn)定性稍差,但不容易損壞,安全度很高?紤]到實(shí)際應(yīng)用環(huán)境,故選用滾珠開(kāi)關(guān)作為系統(tǒng)的搖動(dòng)傳感器。由滾珠開(kāi)關(guān)帶來(lái)的不穩(wěn)定性可以通過(guò)軟件進(jìn)行彌補(bǔ)。



            圖1:滾珠開(kāi)關(guān)內(nèi)部結(jié)構(gòu)圖


另外D_B1和D_B2為裝飾用的藍(lán)色發(fā)光二極管,J1為串口,供下載程序用。J2和J3為電池盒插座。



                                           圖2:系統(tǒng)硬件原理圖


二、系統(tǒng)軟件

系統(tǒng)開(kāi)始運(yùn)行,內(nèi)部進(jìn)行初始化后,等待外部中斷。當(dāng)搖動(dòng)到指定位置時(shí),由滾珠開(kāi)關(guān)出觸發(fā)外部中斷,再經(jīng)過(guò)一段時(shí)間延時(shí)后開(kāi)始顯示。顯示完成返回主程序,等待下一個(gè)搖動(dòng)周期的到來(lái)。
程序清單如下:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int


#define out P1 //數(shù)據(jù)輸出端口
sbit led1=P3^2; //第1組LED
sbit led2=P3^4; //第2組LED
sbit led3=P3^5; //第3組LED
sbit led4=P3^7; //第4組LED


uchar code disp_tab[]=
{0xFF,0xFF, 0x0F,0xFF,
0xFF,0x9F, 0xFF,0xFF,
0xFF,0xCF, 0x00,0x80,
0xFF,0xE7, 0x00,0x80,
0xFF,0xF3, 0xEF,0xFF,
0xFF,0xF8, 0xDF,0xFF,
0x00,0xFC, 0x8F,0x9F,
0x00,0xFE, 0x81,0x9C,
0x7F,0xFC, 0xE1,0x9C,
0xFF,0xF9, 0xE7,0x9C,
0xFF,0xF3, 0x00,0x80,
0xFF,0xE7, 0x00,0x80,
0xFF,0xCF, 0xE7,0x9C,
0xFF,0x9F, 0xE7,0x9C,
0xFF,0xDF, 0xE7,0x9F,
0xFF,0xFF,0xFF,0xFF,

0xFF,0xDF, 0xFF,0xF7,
0xCF,0xCF, 0xE7,0xE7,
0xCF,0xE7, 0xE7,0xF3,
0xCF,0xF7, 0xE7,0xF9,
0xCF,0xE3, 0x67,0xF0,
0xCF,0xC9, 0x27,0xF2,
0xCE,0xDC, 0x07,0xF3,
0x48,0x9E, 0x00,0x80,
0x09,0x9F, 0x00,0x80,
0x8F,0x9F, 0x27,0xF3,
0x8F,0x9F, 0x67,0xF2,
0xCF,0x9F, 0xE7,0xF0,
0xCF,0x9F, 0xE7,0xF9,
0xCF,0x9F, 0xE7,0xF3,
0xFF,0x9F, 0xE7,0xF7,
0xFF,0xFF,0xFF,0xFF,

0xFF,0xFD, 0xFF,0xFF,
0xE7,0xFC, 0xFF,0xFD,
0x64,0xFE, 0xBB,0x85,
0x20,0x80, 0x2A,0x85,
0x01,0x80, 0x28,0xD4,
0x47,0xFC, 0xA9,0xD4,
0x3F,0x99, 0xAB,0xD5,
0xB3,0xCF, 0x03,0xD4,
0xF3,0xE3, 0x03,0xD4,
0x03,0xF0, 0xA9,0xD5,
0x03,0x9C, 0xA8,0xD4,
0xF3,0x9F, 0x2A,0x84,
0xF3,0x8F, 0x2B,0x85,
0x03,0xC0, 0xBB,0xFD,
0x03,0xE0, 0xFF,0xFD,
0xFF,0xFF,0xFF,0xFF};


void delay(n); //延時(shí)子程序
void display(); //顯示子程序


void main()
{
EX1=1; //開(kāi)放外部中斷1
IT1=0; //中斷1為邊沿觸發(fā)方式
EA=1;
while(1);
}


void display()
{uchar i,n;
n=0; //初始化數(shù)據(jù)表計(jì)數(shù)
for(i=0;i<48;i++) //共顯示16*3=48列
{
out=0xff; //清顯示
led4=1; //關(guān)閉第4組LED
led1=0; //開(kāi)啟第1組LED
out=disp_tab[n++]; //輸出數(shù)據(jù)到LED
delay(20); //延時(shí)

out=0xff; //清顯示
led1=1; //關(guān)閉第1組LED
led2=0; //開(kāi)啟第2組LED
out=disp_tab[n++]; //輸出數(shù)據(jù)到LED
delay(20); //延時(shí)

out=0xff; //清顯示
led2=1; //關(guān)閉第2組LED
led3=0; //開(kāi)啟第3組LED
out=disp_tab[n++]; //輸出數(shù)據(jù)到LED
delay(20); //延時(shí)

out=0xff; //清顯示
led3=1; //關(guān)閉第3組LED
led4=0; //開(kāi)啟第4組LED
out=disp_tab[n++]; //輸出數(shù)據(jù)到LED
delay(20); //延時(shí)
}
}


void delay(n)
{
uchar i;
for(;n>0;n--)
{
for(i=0;i<7;i++);
}
}


void int1() interrupt 2 //使用外部中斷1
{
uint i=5000; //延時(shí)一段時(shí)間開(kāi)始顯示
out=0xff;
while(i--);
display(); //顯示
}


三、“pctolcd2002”軟件使用方法
程序中“字符點(diǎn)陣數(shù)據(jù)表”中的數(shù)據(jù)是由“pctolcd2002”軟件生成的,下面介紹使用pctolcd2002生成3個(gè)×2行的漢字點(diǎn)陣數(shù)據(jù)的方法:
1、啟動(dòng)pctolcd2002軟件,“模式”設(shè)為“字符模式”。字寬和字高設(shè)為16*16!斑x項(xiàng)”中的“自定義格式”選擇“C51”格式。其它默認(rèn)即可。

2、輸入第一行的三個(gè)(或四個(gè))漢字,生成字模。
例如:
{0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11}
{0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22}
{0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33}
3、將字模保存好,輸入第二行的三個(gè)(或四個(gè))漢字,生成字模。
例如:
{0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44}
{0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55}
{0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66}
4、由于搖搖棒是逐列掃描,需要將同一列上下兩行16位的數(shù)據(jù)組成一列32位數(shù)據(jù)。

按上面的數(shù)據(jù),組合后為:
{0x11,0x11,0x44,0x44,
0x11,0x11,0x44,0x44,
0x11,0x11,0x44,0x44,
0x11,0x11,0x44,0x44,
0x22,0x22,0x55,0x55,
0x22,0x22,0x55,0x55,
0x22,0x22,0x55,0x55,
0x22,0x22,0x55,0x55,
0x33,0x33,0x66,0x66,
0x33,0x33,0x66,0x66,
0x33,0x33,0x66,0x66,
0x33,0x33,0x66,0x66};
5、將數(shù)據(jù)替換,如每行顯示4個(gè)漢字則修改程序 for(i=0;i<48;i++)為 for(i=0;i<64;i++)



四、結(jié)論
本文以傳感器和單片機(jī)的實(shí)際應(yīng)用為背景,介紹了以單片機(jī)和傳感器為核心系統(tǒng)搖動(dòng)傳感器和顯示設(shè)計(jì)的基本結(jié)構(gòu)和基本原理。
本文將使用單片機(jī)對(duì)搖動(dòng)顯示進(jìn)行實(shí)例化,設(shè)計(jì)一個(gè)LED搖動(dòng)顯示器來(lái)顯示文字、圖像等信息。掌握利用8051型單片機(jī)對(duì)發(fā)光二極管陣列進(jìn)行搖動(dòng)控制的方法。輸出信號(hào)頻率的控制通過(guò)單片機(jī)來(lái)實(shí)現(xiàn),用搖動(dòng)傳感器檢測(cè)當(dāng)前搖動(dòng)狀態(tài),用32個(gè)發(fā)光二極管進(jìn)行不同頻率的亮滅刷新,通過(guò)手動(dòng)搖動(dòng)可顯示輸出文字及圖案等信息。當(dāng)進(jìn)行搖動(dòng)時(shí),由于人的視覺(jué)暫留原理,會(huì)在發(fā)光二極管搖動(dòng)區(qū)域產(chǎn)生一個(gè)視覺(jué)平面,在視覺(jué)平面內(nèi)的二極管通過(guò)不同頻率的刷新,會(huì)在搖動(dòng)區(qū)域內(nèi)產(chǎn)生圖像,從而達(dá)到在該視覺(jué)平面上傳達(dá)信息的作用。
設(shè)計(jì)具有市場(chǎng)前景,可滿足各種大型演出、集會(huì)、游行等宣傳需要,為人們的生活提供便利。

  • 上一篇: 智能電機(jī)轉(zhuǎn)速計(jì)數(shù)器設(shè)計(jì)
  • 下一篇: 沒(méi)有了
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1