键盘控制LED显示不同图形---嵌入式系统课程设计.doc_第1页
键盘控制LED显示不同图形---嵌入式系统课程设计.doc_第2页
键盘控制LED显示不同图形---嵌入式系统课程设计.doc_第3页
键盘控制LED显示不同图形---嵌入式系统课程设计.doc_第4页
键盘控制LED显示不同图形---嵌入式系统课程设计.doc_第5页
免费预览已结束,剩余7页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系统课程设计实验报告嵌入式系统概论综合设计报告书 设计题目:键盘控制LED显示不同图形 学院:信息工程学院班级:09自动化学号:姓名:指导老师:完成地点:完成时间: 2011年12月29号目录一、设计目的2二、设计内容2三、设计方案2功能概述2程序设计思路2主程序设计2LED点阵显示函数设计3点阵图形设计4四、设计结果6五、心得体会8附录9一、设计目的了解LED点阵和矩阵键盘的工作原理二、设计内容编写程序控制用矩阵键盘控制LED点亮,产生不同的图形三、设计方案功能概述:本设计要实现的功能是通过键盘控制LED点阵图形显示,如果键盘输入0-9十个数字时显示相应的图形,如果输入其他的键,则显示“+”号。程序设计思路本设计要实现键盘控制LED点阵图形显示,就必须要编写键盘和LED点阵的程序。先通过扫描矩阵键盘,得到键盘值,然后再调用点阵显示子函数,根据扫描的键盘值,在LED点阵上显示不同的图形。主程序设计主程序要实现的功能是矩阵键盘扫描,得到键盘值,然后把值传给LED显示函数。程序流程图如下:LED点阵显示函数设计本函数要实现的功能是根据键盘的值,在LED点阵上显示不同的图形。如果键盘的输入值为0-9则显示相应的数字,如果输入的是其他值,则显示“+”。本程序采用二维数组存放要显示的图形的字模,然后再通过逐行扫描LED点阵,把要显示的图形分8次显示,一次显示一行,利用人眼的视觉暂留效应,是人看到的是一个图形一次显示出来,通过一个循环控制图形显示的时间。程序流程图如下:点阵图形设计根据8*8 LED点阵的原理,8X8 点阵共需要64 个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1 电平,某一行置0 电平,则相应的二极管就亮;先绘制出要显示的图形如下:根据图形中点亮的LED灯的位置,得到相应图形的16进制数,存放在二维数组Buf1118中。所以要显示的图形的字模如下:buf1118= 0x3c,0x24,0x24,0x24,0x24,0x24,0x3c,0x00, /0 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, /1 0x3c,0x20,0x20,0x3c,0x04,0x04,0x3c,0x00, /2 0x3c,0x20,0x20,0x3c,0x20,0x20,0x3c,0x00, /3 0x24,0x24,0x24,0x3c,0x20,0x20,0x20,0x00, /4 0x3c,0x04,0x04,0x3c,0x20,0x20,0x3c,0x00, /5 0x3c,0x04,0x04,0x3c,0x24,0x24,0x3c,0x00, /6 0x3c,0x20,0x20,0x20,0x20,0x20,0x20,0x00, /7 0x3c,0x24,0x24,0x3c,0x24,0x24,0x3c,0x00, /8 0x3c,0x24,0x24,0x3c,0x20,0x20,0x3c,0x00, /9 0x08,0x08,0x08,0x3e,0x08,0x08,0x08,0x00 /+ ;四、设计结果通过以上设计实现键盘控制LED点阵显示,输入0时显示“元”,输入1时显示“旦”,输入2时显示“快”,输入3时显示“乐”,输入4和5时显示两个笑脸,输入79时显示相应的数字,如果输入其他的键,则显示“+”号。得出的图像如下所示: 五、心得体会 通过这次编写程序控制用矩阵键盘控制LED点亮,产生不同的图形的实验,我们不仅对linux系统的实验更加熟悉而且还掌握了LED点阵显示的编译和烧写和矩阵键盘的的编译和烧写,点阵图形的设计方法和键盘的输入的读取,并把二者结合起来,实现了键盘控制点阵图形的实验。这次课程设计对于我们来说虽然做的时候比较复杂,不是很顺利,但是从整个过程和结果来看是受益匪浅的。在实验过程中,我们出现的问题不少,耗费了许多时间,从最开始的换电脑到后面的编译程序我们都遇到很多困难,由于我们原来的电脑出现问题我们不得不重新换电脑做实验,这就意味着一切都要从头开始,我们从编译烧写linux系统开始到led点阵烧写和键盘的点阵烧写都用了不少时间,后来编写程序设计所要显示的图像也花费了许多时间。虽然我们在各个环节花费的时间比较多但是最后我们都很顺利的完成了实验,而且从中学到不少关于linux系统的知识。更重要的是,做实验的过程,思考问题的方法,让我们在实验中提升自我。附录:程序源代码根据以上步骤和图形的数模编码我们写出程序的源代码:/*#include #include #include #include / open() close()#include / read() write()#include #define DEVICE_NAME /dev/led_ary_ctl#define DEVICE_NAME1 /dev/keypadvoid Key(unsigned char b);/- main -int main(void) int fd; int ret; unsigned char buf2 ; double x; char pre_scancode = 0xff; printf(n start keypad_driver test nn); fd = open(DEVICE_NAME1, O_RDWR); printf(fd = %dn,fd); if (fd = -1) printf(open device %s errorn,DEVICE_NAME1); else buf0=0x22; while (1) read (fd,buf,1); if(buf0!= pre_scancode) if(buf0!=0xff) printf(key =%xn,buf0); Key(buf); pre_scancode = buf0; usleep(50000); /延迟us为单位 / close ret = close(fd); printf (ret=%dn,ret); printf (close keypad_driver testn); return 0;/ end main/*/-void Key(unsigned char b)int fd; int ret; int i,j,k; unsigned char buf2 ; unsigned char buf28=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;unsigned char buf1118=0x00,0x3c,0x00,0x7e,0x28,0x28,0x66,0x00, / 0x00,0x3c,0x24,0x3c,0x24,0x3c,0x7e,0x00, / 0x22,0x72,0x63,0xff,0x22,0x52,0x8a,0x00, / 0x10,0x08,0x14,0x14,0x7c,0x54,0x9a,0x10, / 0x42,0x42,0xa5,0xa5,0x00,0x24,0x18,0x00, / 0x00,0x42,0xa5,0xad,0x10,0x08,0x10,0x08, / 0x3c,0x04,0x04,0x3c,0x24,0x24,0x3c,0x00, /6 0x3c,0x20,0x20,0x20,0x20,0x20,0x20,0x00, /7 0x3c,0x24,0x24,0x3c,0x24,0x24,0x3c,0x00, /8 0x3c,0x24,0x24,0x3c,0x20,0x20,0x3c,0x00, /9 0x08,0x08,0x08,0x3e,0x08,0x08,0x08,0x00 /+ ; / begin of led ary buf0= 1; buf1= 0; if(b0=9) i=b0;else i=10; fd = open(DEVICE_NAME, O_RDWR); printf(fd = %dn,fd); if (fd = -1) printf(open device %s errorn,DEV

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论