簡易電子書(24C64+Atmega16+128*64+紅外接收+串口下載)
小店地址:http://shop62796340.taobao.com
目前市場上各式各樣的電子書琳琅滿目,可自己總有一種自己DIY一個電子書的衝動。材料基本是拆機的,前後停停續續花了一個多星期,基本算是完成。可以通過串口下載TXT格式的文本文件,由於只掛了一個24C64的存儲器,顯示器是IC電話機上拆下來的無字庫因此一個24C64只能存儲2048個漢字,不過可以通過增加24C64個數來加大存儲容量。新發幾張圖上來瞧瞧:
顯示器效果圖
控制電路及遙控器
串口接口
洞洞板反面
上位機
以下來分解下:
顯示器:
顯示器爲IC電話機上折下來的,128*64可顯示4行漢字。前後花了兩天的時間來研究接口和寫驅動程序,本程序目前只適用於AVR單片機,不過可方便的移植到51、430等單片機上。上前手頭上還有十幾塊該液晶顯示器。有需要的朋歡迎拍磚。
按鍵控制:
本來想焊接開關來控制顯示,後來正好朋友那麼有個紅外接收頭,決定用紅外搖器來控制,感覺更酷。紅外解碼採用的是中斷的方式,這裏和串口接收有衝突。由於串口也是採用中斷的方式,因些會導致串口無法完整正確的接收上位機發來的數據。這裏筆者通過採用通信協議來控制數據的發送,即當下載的時候關閉紅外中斷來保證串完整的接收數據。當數據接收完後再重先找開紅外中斷。本交採用的協議也比較簡單如下所示:
struct uarData{
char cmd;
char sum;
char *pData;
};
存儲器:
本次採用的是常用的24C64存儲器可存儲2048個漢字。然而一條總線上可掛接8個,因些可能過掛接個數來擴展存儲的容量或是更換更大容量的存儲器,該存器採用的是I2C總線,驅動程序比較簡單,網上很多這裏不做介紹。
上位機軟件:
上位機軟件採用QT編寫,不知道QT是什麼的朋友可以百度一下。這裏說兩句題外話,之前學過VC++,學了一個月下來基本是一頭的霧水只能死搬硬套的寫幾個很SB的程序。個人感覺MFC的結構組織的比較的亂,有種讓人摸不着頭腦的感覺,整個MSDN下下來有好幾個G,文檔的組織也比較差而且用中國人的話就是很繞,讓人看的很糾結。最讓人噁心的是整個程序寫下來,不知道程序是從那開始的,好多語句是固定死的,沒有爲什麼只用死記着,也讓人看不太懂。最終還是放棄了VC++;直到後來學校組織電子設計大賽培訓,第一次接觸到了QT,可謂一見鍾情。當時老師給我們分配了任務,我當時是學QT然後寫個示波器的界面程序。QT是面向多平臺的,一次編寫代碼只要簡單的修改下就能到處編譯,可移植性非常的OK。相比MFC於QT組織的非常的好,每個部件和類都非常的清晰明瞭,最讓人不可思議的是QT全部的幫助文檔下下來才十幾個M,比起MSDN的好幾個G確實有點讓人難以致信,沒錯QT確實做到了,而且做的非常的好。當初學習QT不到兩個星期基本就把示波器界面給寫出來了。另外一組用的是VB,得運行在WINCE上。想比我的他那個效果有點,而且得運行於WINCE上。開機得先啓動好WINCE後才能運行界面程序。而我用QT寫得直接運行於LINUX上,開機可直接運行。這讓我更加的喜愛QT了,QT確實好東西,要是還在MFC上掙扎的朋友不煩了解下QT,希望你也能愛上她。
跑遠了,速速返回。
其實對於學習QT的朋友來說,有好多不知道如何向下位機發送16進制數據。對於用QT寫串口通信程序好多朋友作用的是第三方串口類qextserialport,之前我也上網大四搜過,基本沒什麼收穫。後來自己研究了下,感覺效果還不錯。這裏簡單介紹下我的方法,僅做參考:
比如說你要向串口發0xaa,你可以這樣寫:
QString str;
str.append(QChar(0XAA);
write(str.toAssic());
接收就不用說了吧:收到的看16進制直接就是了,要是你想取出來 的話可以這樣:
int data;
QByteArray temp;
temp=readAll();
比如你要取出第一個16進制你可以樣:
data=temp.at(0)&0x000000ff;
這樣data就是你想要的16進制了
還有什麼不明白的可以Q我或是給我發郵件:
QQ:445159738
eMail:[email protected]
由於該次使用的液晶是無字庫的,因此上位機得有自動提取字模的功能,對這個感興趣的朋友可以看我之前寫的一扁關於如何利用QT提取字模的文章,這裏就不做介紹了。