资源描述:
《6嵌入式系统设计实验六(8字数码管和点阵数码管)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验六8字数码管和点阵数码管实验16.1实验目的16.2实验内容16.3预备知识16.4实验设备及工具26.5实验原理26.6、程序分析46.7实验步骤6八、思考题7实验六8字数码管和点阵数码管实验6.1实验目的Ø学习LED的相关知识Ø掌握74HC273芯片的工作原理Ø了解SPI接口的相关知识6.2实验内容学习LED相关知识,了解74HC273芯片对LED点亮的工作机制,熟练阅读74HC273芯片资料,掌握对它的使用。6.3预备知识Ø有C语言基础Ø掌握在Linux下常用编辑器的使用Ø掌握Makefile的编写和使用Ø掌握Linux下的程序编译与交叉编译过程需要部
2、分数字电路的知识6.4实验设备及工具硬件:UP-TECHS2410/P270DVP嵌入式实验平台、PC机Pentium500以上,硬盘10G以上。软件:PC机操作系统REDHATLINUX9.0+MINICOM+ARM-LINUX开发环境6.5实验原理6.5.1、LED知识1.什么是LED? 在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。PN结加反向电压,少数载流子难以注入,故不发光。这种利用注入式电致发光原理制作的二极管叫发光二极管,通称LED。 LED的发光颜色和发光效率与制作L
3、ED的材料和工艺有关,目前广泛使用的有红、绿、蓝三种。由于LED工作电压低(仅1.5-3V),能主动发光且有一定亮度,亮度又能用电压(或电流)调节,本身又耐冲击、抗振动、寿命长(10万小时),所以在大型的显示设备中,目前尚无其他的显示方式与LED显示方式匹敌。把红色和绿色的LED放在一起作为一个像素制作的显示屏叫双基色屏或伪彩色屏;把红、绿、蓝三种LED管放在一起作为一个像素的显示屏叫三基色屏或全彩屏。制作室内LED屏的像素尺寸一般是2-10毫米,常常采用把几种能产生不同基色的LED管芯封装成一体,室外LED屏的像素尺寸多为12-26毫米,每个像素由若干个各种单
4、色LED组成,常见的成品称像素筒或像素模块。 LED显示屏如果想要显示图象,则需要构成像素的每个LED的发光亮度都必须能调节,其调节的精细程度就是显示屏的灰度等级。灰度等级越高,显示的图像就越细腻,色彩也越丰富,相应的显示控制系统也越复杂。在当前的技术水平下,256级灰度的图像,颜色过渡已十分柔和,图像还原效果比较令人满意。资料显示,LED光源比白炽灯节电87%、比荧光灯节电50%,而寿命比白炽灯长20~30倍、比荧光灯长10倍。LED光源因具有节能、环保、长寿命、安全、响应快、体积小、色彩丰富、可控等系列独特优点,被认为是节电降能耗的最佳实现途径。6.5.2
5、、LED数码管电路图其中各个引脚的功能在下面都有描述。6.5.3、74HC273在开发板上的连接74HC273在8字数码管中开发板中的连接如图2.5.1所示:开发板设置2个数码管,由74HC273控制。74HC273是同步串行转并行的锁存器,在此通过SPI总线和CPU连接,锁存数据后驱动数码管发光。上面一副图的最左边接的是下面图的最右边。6.6、程序分析重要代码片断分析如下:unsignedcharLEDCODE[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//这个是10个数字的编码//在这里主
6、要是用到编码的过程假设a是8字型数码管的最上一横,以顺时针以次列出b,c,d,e,f.中间那一横为g,如果要显示为0的话,由于在开发板中的连接是共阳极(请参考我们的电路图),所以只需要满足a,b,c,d,e,f为0即可,而g为1,因为两个数码管的中间是个点号,我们用h表示,并且总是让它置为1。因为我们在开发板的连接上可以看到a对应d0,b对应d1,..........h对应d7,所以当想显示为0的时候,那么应该是11000000。转化成为16进制的数据,也就成了0Xc0.对应我们在LEDCODE【10】数组中的第一位。其他的每一位值,大家可以根据上面的方法依次类
7、推。在for循环中我们写了如下语句。LEDWORD=(LEDCODE[i]<<8)
8、LEDCODE[9-i];那是因为LEDWORD是一个16位的数。我们是需要将两个8字数码管同时显示,所以将LEDCODE[i]左移8位,然后再加上个位使得十位和个位同时显示。至于显示点阵数码管还是显示8字数码管,主要是通过IOCTL函数中的命令来实现的,也就是在代码中出现的ioctl(fd,0x12,LEDWORD);ioctl(fd,0x11,LEDWORD);下面分析这个IOCTL函数的原型staticints3c2410_led_ioctl(structinode*ino
9、de,structfil