嵌入式系统课程设计.docx
嵌入式系统课程设计 嵌入式系统概论综合设计报告书 设计题目:用键盘限制LED显示不同图形 中心民族高校 二零零八年十月三十一日 一、设计目的 了解LED点阵和矩阵键盘的工作原理。 二、设计内容 编写程序限制用矩阵键盘限制LED点亮,产生不同的图形。 三、设计方案 功能概述: 本设计要实现的功能是通过键盘限制LED点阵图形显示,假如键盘输入0-9十个数字时显示相应的数字,假如输入其他的键,则显示“+”号。 1、程序设计思路 本设计要实现键盘限制LED点阵图形显示,就必需要编写键盘和LED点阵的程序。先通过扫描矩阵键盘,得到键盘值,然后再调用点阵显示子函数,依据扫描的键盘值,在LED点阵上显示不同的图形。 2、主程序设计 主程序要实现的功能是矩阵键盘扫描,得到键盘值,然后把值传给LED显示函数。 程序流程图如下: 3、LED点阵显示函数设计 本函数要实现的功能是依据键盘的值,在LED点阵上显示不同的图形。 假如键盘的输入值为0-9则显示相应的数字,假如输入的是其他值,则显示“+”。本程序采纳二维数组存放要显示的图形的字模,然后再通过逐行扫描LED点阵,把要显示的图形分8次显示,一次显示一行,利用人眼的视觉暂留效应,是人看到的是一个图形一次显示出来,通过一个循环限制图形显示的时间。 程序流程图如下: 4、点阵图形设计 依据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 /+ ; 四、程序源代码 /* #include #include #include #include / open() close() #include / read() write() #include #define DEVICE_NAME "/dev/led_ary_ctl" #define DEVICE_NAME1 "/dev/keypad" void 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); / 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=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 /+ ; / begin of led ary buf0= 1; buf1= 0; if(b0 i=10; fd = open(DEVICE_NAME, O_RDWR); printf("fd = %dn",fd); if (fd = -1) printf("open device %s errorn",DEVICE_NAME); else for(j=0;j for(k=0;k buf0=buf1ik;buf1=buf2k; write(fd,buf,2); usleep(1); / close ret = close(fd); printf ("ret=%dn",ret); printf ("close led_driver testn"); /- 五、设计结果 实现键盘限制LED点阵显示,输入0-9十个数字时显示相应的数字,假如输入其他的键,则显示“+”号。 六、心得体会 通过本次试验,我们对linux下的试验更加熟识了,对LED点阵显示和矩阵键盘的原理有了深化的了解,驾驭了点阵图形的设计方法和键盘的输入的读取,并把二者结合起来,实现了键盘限制点阵图形现实。 在试验过程中,我们也出现了问题,最起先时,由于不清晰点阵的C,R的凹凸位的对应状况,经过试验,才确定。然后就是点阵的显示是一闪即过的,然后我们通过循环限制了点阵的显示时间。总之,通过这次设计,我们都学到了许多东西。 嵌入式系统课程设计 嵌入式系统课程设计题目 嵌入式系统课程设计题目 嵌入式课程设计报告 嵌入式系统基础课程设计报告 嵌入式系统课程设计教学大纲 嵌入式系统基础课程设计报告 嵌入式系统设计课程设计大纲(给学生) 嵌入式程序设计课程设计 嵌入式操作系统程课程设计报告 本文来源:网络收集与整理,如有侵权,请联系作者删除,谢谢!第11页 共11页第 11 页 共 11 页第 11 页 共 11 页第 11 页 共 11 页第 11 页 共 11 页第 11 页 共 11 页第 11 页 共 11 页第 11 页 共 11 页第 11 页 共 11 页第 11 页 共 11 页第 11 页 共 11 页