简易电子书(24C64+Atmega16+128*64+红外接收+串口下载)
来源:互联网 发布:网络标志图标 编辑:程序博客网 时间:2024/05/20 21:59
简易电子书(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:yunjin12@163.com
由于该次使用的液晶是无字库的,因此上位机得有自动提取字模的功能,对这个感兴趣的朋友可以看我之前写的一扁关于如何利用QT提取字模的文章,这里就不做介绍了。
- 简易电子书(24C64+Atmega16+128*64+红外接收+串口下载)
- ATMEGA16串口发送和中断接收CVAVR程序
- 红外发射、接收头(红外基础知识)
- 红外发射、接收头(红外基础知识)
- 红外接收程序
- 红外接收程序
- 红外接收程序
- 红外遥控接收
- 一体化红外接收头有两种
- 红外接收程序讲解
- 红外接收头
- 1838红外接收头
- Arduino - 红外接收
- 红外接收代码解析
- Arduino接收红外信号
- H1838红外接收头
- 红外接收原理
- 红外接收显示二进制
- 在Web上运行Linux
- Oracle 自定义 Exception
- Linux文件与目录操作函数
- 给分类,订单等添加一个属性字段!!
- hdu--1372 knight moves (BFS+数据结构)
- 简易电子书(24C64+Atmega16+128*64+红外接收+串口下载)
- Tomcat连接线程池配置
- 常识
- 本机图片缓存,距离上次好久了
- 调查称世界最受欢迎食物中餐排名第8
- 对外回调设计结合DLL应用
- 编程之美 2.14 子数组之后最大值 中的错误
- 数据窗口中多行选中程序
- 关于自定义alertdialog 遇到的inflateexception错误