前几天在网上找到一款2.4吋屏,买来几天一直没空玩,这几天放假,正在玩玩。这个屏价格不高,显示效果却非常好,分辨率为240×320的,显示非常细腻,买的时候看网上那个图片不太好,但反正不贵,所以抱着无所谓的态度买来玩玩。拿到手后看到的结果却远比当时的图片要好,全新的屏非常漂亮,光看外观就觉得值了。

拿到手的是一个套件,就是作者开源的数码相框作品。拿到手的板比较粗糙,包括板上用于编程的编程插座都没有安装。因为是贴片的ATMEGA88,估计没装插座的话也没有写过代码。按作者提示找了个二节电池座,接上电,果然什么也没有显示出来。因此,要玩第一步就要将代码写进去。我手边有西尔特的SUPRO U280编程器,但对于焊在板上的贴片无能为力。所以只能找ISP编程器了,由于这个玩艺是3V电池供电,所以要用它能ISP编程器供电可能够呛,这样只能用USB型的ISPRO了。找来USB型ISPRO,它是十脚接口中,板上是6针,不能匹配,于是又找来一个双排十针座和单排针,单排孔,将单排针焊到板子上,单排孔与双排十针座用线连接,做个转接器。这里要注意板上的针是6针单排,所以一不小心有可能会插反,那可能会烧毁的,怎么办呢?从原来买的周立功的那个ISP座得到启发,6针中第一针是VCC,在USB型的编程器上用不到,仍装6针,但是将第一针(VCC)剪掉,而孔仍装6个,但是将第一个孔用一段线给塞上。这样,只要保证不错位插入,就可以保证不会插反了(插反了插不进去)。一阵忙活,一个下午完了。

    说句多余的话,准备给板子上电时,是先做了个小开关电源将15V电源转成3V,这么做着,突然想明白了一件事。多年前就知道“本质安全”这个词,当时也觉得自己能理解了,但要自己表述就觉得讲不清,现在我能够完全理解“本质安全”的概念了,这样做不是“本质安全”的。做产品手边备件多不要紧,毁了一套也就丢掉些钱而已。现在手边就一套器件,做实验尤其是摸索性的实验还是保险为好,万一烧掉了,恐怕就再也没有兴致来玩这个东西了。所以放弃了这一方案,还是用电池了,至多就是多买几节电用着吧。

上电、下载演示程序、将图片文件写入SD卡...一番忙之后,图片出来了,真个是非常的清晰!虽然是65K色的,但人眼根本分辨不出来。下载程序之前,很是犹豫了一会,因为我知道ATMEGA有锁死的问题,如果熔丝设得不对,一次性就完蛋。这个是贴片的,要拿下来修复或者外接晶振之类进行修复,相当麻烦,所以查了好半天的ATMEGA88的数据手册,上网查了关于锁死的答疑,但心里总不能踏实,最后想想算啦,保留其原来的熔丝,我不改它了,将自动编程里有关熔丝的设置全部勾掉。

接下来当然就由简到难地玩了......先按作者的提示,找一些自己的图片替代原来的图片,虽不过是一些图形软件的分辨率调整、图片切割、转换、写SD卡之类的操作,实在没有什么技术含量,不过自己的图片出来了仍是非常兴奋。环顾左右,恨不能像贝尔德那样抓个人过来看看......当然,小兴奋一过,接下来就要修改程序了。AVR我不是很熟,但好歹还是玩过一段时间的,作者用的是WINAVR,我写过这方面的教程,所以还不至于手忙脚乱。装上WINAVR,用PE打开程序,一开始是简单改改,就是多写几张图片、改变一下浏览速度之类的......其实也没改着什么有用的功能,可是一个晚上却已过去了,明天继续。

按作者的提示,到目前为止,要是要多装几个图片之类肯定是没有问题了,可是这个好像没有什么价值。还是要玩汉字显示,图形显示之类,接下来的一天半时间就是不断地查资料、写代码、下载软件(Avrstudio、字模生成软件)、安装软件……这里不是技术博客,就不一一细述了,反正到今天我写文章为止(第三天中午),我能随心所欲地在指定位置显示16点阵汉字,24点阵汉字,为什么要用到24点阵的汉字呢?这是因为在这个尺寸下16点阵的字实在是太小了,而24点阵的汉字则大小较为适宜。前景色、背景色可调,可以显示16点阵、24点阵的图形(如圆、三角形等),而且我还找了26种颜色及其对应的代码,并用#define语句作了定义,并将其单独作为一个文件mydef.h保存,也就是说,只要我在程序中用#include “mydef.h”就能用CBlue,CGreen,CRed之类的符号来表示所需要的颜色了,非常方便。最令我满意的是我可以用一般的单色点阵字库了,一个16点阵的单色字库只要32字节,如果用全色的,可是要512字节啊。在玩的过程中,早年学过的有关BMP图形结构的知识发挥了作用,并且我开始对所谓“透明”、“异或运算”等一些计算机图形操作中的专业述语有所悟了。只是可惜没有这个液晶屏的控制芯片手册,找不到不写数据而让地址指针增加的方法(当然,如果有的话),否则,可以写一些画线的函数,这样,可以做个分针不停转动的时钟玩玩了。

下面给出几个函数

const unsigned char Hz16[][32]=

{

{0x01,0x00,0x01,0x00,0x01,0x04,0x7F,0xFE,

0x41,0x04,0x41,0x04,0x41,0x04,0x41,0x04,

0x7F,0xFC,0x41,0x04,0x01,0x00,0x01,0x00,

0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00},

{0x03,0xC0,0x0F,0xF0,0x1F,0xF8,0x3F,0xFC,

0x7F,0xFE,0x7F,0xFE,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0x7F,0xFE,0x7F,0xFE,

0x3F,0xFC,0x1F,0xF8,0x0F,0xF0,0x03,0xC0},

{ 0x00,0x00,0x00,0x00,0x01,0x00,0x03,0x80,

0x03,0x80,0x07,0xC0,0x07,0xC0,0x0F,0xE0,

0x0F,0xE0,0x1F,0xF0,0x1F,0xF0,0x3F,0xF8,

0x3F,0xF8,0x7F,0xFC,0x00,0x00,0x00,0x00

}

};

const uchar Hz24[]=

{     0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x3F,

0xF0,0x07,0xF8,0x70,0x07,0x18,0x30,0x03,

0x18,0x30,0x03,0x1F,0x30,0x02,0x7C,0x30,

0x02,0x18,0x30,0x02,0x1B,0xB0,0x02,0x7F,

0xB0,0x02,0xE0,0x30,0x06,0x02,0x30,0x06,

0xFF,0x30,0x06,0xC7,0x30,0x06,0x46,0x30,

0x04,0x4E,0x30,0x0C,0x7E,0x30,0x08,0x40,

0x30,0x18,0x00,0x30,0x10,0x01,0xF0,0x20,

0x00,0xF0,0x40,0x00,0x70,0x00,0x00,0x20

};

//有关位操作的代码

#define  testbit(var, vBit)   ((var) & (1 <

#define  setbit(var, vBit)    ((var) |= (1 << (vBit)))

#define  clrbit(var, vBit)    ((var) &= ~(1 << (vBit)))

//参数:起始行,超始列,前景色,背景色,汉字序号

void DrawHz16(uchar StartH,uchar StartV,uint FColor,uint BColor,uint HzID)

{    uchar i,j,k;

LCD_WR_CMD(0,0x02,StartH);       //起始行

LCD_WR_CMD(1,0x03,StartV);       //起始列

LCD_WR_CMD(0,0x04,StartH+15);    //16点阵

LCD_WR_CMD(1,0x05,StartV+15);

LCD_WR_REG(0x0E);

for(i=0;i<32;i++)

{    j=Hz16[HzID][ i];            //从16点阵的小字库中取得字形码

for(k=0;k<8;k++)

{    if(testbit(j,(7-k)))

LCD_WR_Data(FColor);

else

LCD_WR_Data(BColor);

L(CTL_P,LCD_WR );

H(CTL_P,LCD_WR );

}

}

}

//参数:起始行,超始列,前景色,背景色,汉字序号

void DrawHz24(uchar StartH,uchar StartV,uint FColor,uint BColor,uint HzID)

{    uchar i,j,k;

LCD_WR_CMD(0,0x02,StartH);       //起始行

LCD_WR_CMD(1,0x03,StartV);       //起始列

LCD_WR_CMD(0,0x04,StartH+23);

LCD_WR_CMD(1,0x05,StartV+23);

LCD_WR_REG(0x0E);

for(i=0;i<72;i++)

{    j=Hz24[ i];                       //从24点阵字库中取得字形码

for(k=0;k<8;k++)

{    if(testbit(j,(7-k)))

LCD_WR_Data(FColor);

else

LCD_WR_Data(BColor);

L(CTL_P,LCD_WR );

H(CTL_P,LCD_WR );

}

}

}

最后用一个自己的图结束:

单片机c语言是怎么写彩屏,51单片机驱动2.4寸彩屏赏玩记相关推荐

  1. 单片机c语言计数器测速,基于51单片机的光电编码器测速.doc

    课程设计报告 课程名称: 微机原理课程设计 题 目: 基于51单片机的光电编码器测速 摘要 光电编码器是高精度位置控制系统常用的一种位移检测传感器.在位置控制系统中,由于电机既可能正转,也可能反转,所 ...

  2. 单片机 c语言百位加上小数点,51单片机水温控制LCD显示加VB上位机温度曲线绘制...

    现功能,1L水由1KW电炉加热,要求水温在一定范围内人工设定,并能随着环境温度改变自动调节,以维持设定的温度不变. 矩阵键盘输入设定温度,LCD1602显示温度值,VB上位机绘制温度曲线 /***** ...

  3. 单片机C语言流水灯花样编程,51单片机学习之陆 —— 1.3 流水灯的花样玩法

    原标题:51单片机学习之陆 -- 1.3 流水灯的花样玩法 上一次我们点亮了一个1,其实仅仅点亮一个流水灯还是有些单调的. 这一次让我们试着尝试些别的花样 1 多个流水灯的点亮 a 打开将原来的c文件 ...

  4. 单片机c语言100例 的案例,51单片机C语言100个实例 [推荐下载】

    51单片机c语言100例 ,墙裂推荐下载 附上目录 ************************************************************函数的使用和熟悉****** ...

  5. 51单片机c语言编程的头文件,51单片机编程的头文件reg51.h详解

    我们在用c语言编程时往往第一行就是头文件,51单片机为reg51.h或reg52.h,51单片机相对来说比较简单,头文件里面内容不多,像飞思卡尔.ARM系列的单片机头文件往往内容就非常多,尽管如此,对 ...

  6. 51单片机c语言的秒表设计,基于51单片机的计时器设计

    描述 用51单片机的定时器0的方式1计时,结果用4位数码管显示,分别为秒十位,秒个位,毫秒百位,毫秒十位.所以总共最大计时为1分钟,精确到了0.01s.同时,加上3个独立按键,分别控制秒表的清零,暂停 ...

  7. 单片机c语言数码管显示5,51单片机数码管显示实验报告(5页)-原创力文档

    51单片机数码管显示实验 实验内容: 编写程序让8只数码管初始显示0,每隔大约1s加1显示(可以用延时函数实现),到数码管显示9后,再从0开始显示,如此循环反复. C语言程序 #include #de ...

  8. 单片机c51语言实训总结,大学生51单片机实训心得体会

    <大学生51单片机实训心得体会>由会员分享,可在线阅读,更多相关<大学生51单片机实训心得体会(1页珍藏版)>请在人人文库网上搜索. 1.大学生51单片机实训心得体会实践是检验 ...

  9. 单片机c语言程序开发洗衣机,基于51单片机洗衣机控制器的设计(附程序)☆

    基于51单片机洗衣机控制器的设计(附程序)☆(任务书,开题报告,中期检查表,毕业论文21000字,程序) 摘  要 洗衣机是人们日常生活中常见的一种家电,已经成为人们生活中不可缺少的家用电器.在工业生 ...

  10. 单片机c语言reti的用法,基于51单片机中断跳出指令“RETI”浅议

    原标题:基于51单片机中断跳出指令"RETI"浅议 =RET指令+通知CPU中断服务已结束. 最近在基于编程的过程中出现了个很奇怪的问题"程序执行中在寄存器EA=1,ET ...

最新文章

  1. Chrome浏览器扩展开发系列之五:Page Action类型的Chrome浏览器扩展
  2. Stanford CS107 Programming Paradigms 编程范式
  3. wxpython多个面板_wxpython笔记:wxPython的布局管理实践【嵌入matplotlib、页面切换】...
  4. ZOJ - 3228 Searching the String(AC自动机求不重复子串出现次数)
  5. 2019秋季PAT甲级考试心得
  6. android studio配置java_android studio配置Javah 和ndk-build
  7. @Async注解配合@EnableAsync注解使用
  8. 腾讯:向今日头条开炮,只为1块钱和一声道歉!
  9. fastboot烧写命令
  10. Vue提示warn:”[vue-router] Named Route ‘home’ has a default child route…”
  11. 面经 | NLP算法岗(百度)
  12. 2019-数学建模美赛-B题翻译
  13. 02 - i3wm 安装、配置TIM WeChat
  14. 手机sim卡插到电脑上网_怎么用手机卡在电脑上上网
  15. 网络协议--05--IP子网划分
  16. Android App瘦身实战
  17. 学会这三款软件,可以轻松完成录音转文字操作
  18. 清华出品:最易懂的AI芯片报告!人才技术趋势都在这里
  19. USB驱动开发(五)之程序设计
  20. 快慢指针(Java版)

热门文章

  1. python编程买什么书看_有什么自学python编程的书吗?
  2. 设置网易邮箱大师为 Win10 默认邮件客户端
  3. 中国互联网 30 年
  4. 使用Python语言制作贪吃蛇游戏,并制作成为exe可执行文件
  5. You have requested to run MSC.Patran on a Windows DESKTOP-(Windows 6.2 (Build 9200: Service Pack 0))
  6. Java正则校验密码至少包含:字母数字特殊符号中的2种
  7. java 生成随机字母数字组合
  8. 十二星座超级可爱的小笑话
  9. c语言图像剪影代码,信息系C语言社团活动剪影-南京商业学校.PDF
  10. Linux常用命令--文件搜索命令:压缩解压命令