实验六 8字数码管和点阵数码管实验 ................................................................................ 1
6.1实验目的 ..................................................................................................................... 1 6.2实验内容 ..................................................................................................................... 1 6.3预备知识 ..................................................................................................................... 1 6.4实验设备及工具 ......................................................................................................... 2 6.5实验原理 ..................................................................................................................... 2 6.6、程序分析 .................................................................................................................. 4 6.7实验步骤 ..................................................................................................................... 6 八、思考题 ....................................................................................................................... 7
实验六 8字数码管和点阵数码管实验
6.1实验目的
? 学习LED的相关知识
? 掌握74HC273芯片的工作原理 ? 了解SPI接口的相关知识
6.2实验内容
学习LED相关知识,了解74HC273芯片对LED点亮的工作机制,熟练阅读74HC273芯片资料,掌握对它的使用。
6.3预备知识
? ? ? ?
有C语言基础
掌握在Linux下常用编辑器的使用 掌握Makefile 的编写和使用
掌握Linux下的程序编译与交叉编译过程
需要部分数字电路的知识
6.4实验设备及工具
硬件:UP-TECH S2410/P270 DVP嵌入式实验平台、PC机Pentium 500以上, 硬盘10G以上。 软件:PC机操作系统REDHAT LINUX 9.0+MINICOM+ARM-LINUX开发环境
6.5实验原理
6.5.1、LED知识
1.什么是LED?
在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会 把多余的能量以光的形式释放出来,从而把电能直接转换为光能。PN结加反 向电压,少数载流子难以注入,故不发光。这种利用注入式电致发光原理制 作的二极管叫发光二极管,通称LED。 LED的发光颜色和发光效率与制作LED的材料和工艺有关,目前广泛使用 的有红、绿、蓝三种。由于LED工作电压低(仅1.5-3V),能主动发光且有 一定亮度,亮度又能用电压(或电流)调节,本身又耐冲击、抗振动、寿命 长(10万小时),所以在大型的显示设备中,目前尚无其他的显示方式与 LED显示方式匹敌。 把红色和绿色的LED放在一起作为一个像素制作的显示屏叫双基色屏或 伪彩色屏;把红、绿、蓝三种LED管放在一起作为一个像素的显示屏叫三基 色屏或全彩屏。制作室内LED屏的像素尺寸一般是2-10毫米,常常采用把几 种能产生不同基色的LED管芯封装成一体,室外LED屏的像素尺寸多为12-26 毫米,每个像素由若干个各种单色LED组成,常见的成品称像素筒或像素模 块。 LED显示屏如果想要显示图象,则需要构成像素的每个LED的发光亮度都 必须能调节,其调节的精细程度就是显示屏的灰度等级。灰度等级越高,显 示的图像就越细腻,色彩也越丰富,相应的显示控制系统也越复杂。在当前 的技术水平下,256级灰度的图像,颜色过渡已十分柔和,图像还原效果比 较令人满意。 资料显示,LED光源比白炽灯节电87%、比荧光灯节电50%,而寿命比白 炽灯长20~30倍、比荧光灯长10倍。LED光源因具有节能、环保、长寿命、安 全、响应快、体积小、色彩丰富、可控等系列独特优点,被认为是节电降能 耗的最佳实现途径。
6.5.2、LED数码管电路图
其中各个引脚的功能在下面都有描述。
6.5.3、74HC273在开发板上的连接
74HC273在8字数码管中开发板中的连接如图2.5.1所示:
开发板设置2 个数码管,由74HC273 控制。74HC273是同步串行转并行的锁存器,在此通过SPI 总线和CPU 连接,锁存数据后驱动数码管发光。
上面一副图的最左边接的是下面图的最右边。
6.6、程序分析
重要代码片断分析如下:
unsigned char LEDCODE[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//这个是10个数字的编码 //在这里主要是用到编码的过程 假设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】数组中的第一位。其他的每一位值,大家可以根据上面的方法依次类推。 在for循环中我们写了如下语句。 LEDWORD=(LEDCODE[i]<<8)|LEDCODE[9-i]; 那是因为LEDWORD是一个16位的数。我们是需要将两个8字数码管同时显示,所以将LEDCODE[i]左移8位,然后再加上个位使得十位和个位同时显示。 至于显示点阵数码管还是显示8字数码管,主要是通过IOCTL函数中的命令来实现的,也就是在代码中出现的 ioctl(fd,0x12,LEDWORD); ioctl(fd,0x11,LEDWORD); 下面分析这个IOCTL函数的原型 static int s3c2410_led_ioctl (struct inode *inode, struct file *filp, unsigned int cmd, unsigned int arg) { //printk(\ switch(cmd){ case LED_TUBE_IOCTRL://如果是0x11命令,那么点亮8字数码管 return *(volatile unsigned short *)s3c2410_led_tube_base=arg; case LED_DIG_IOCTRL://如果是0x12命令 ,那么点亮点阵数码管 return *(volatile unsigned short *)s3c2410_led_dig_base=arg; default : return printk(\ } return 0; } 其中宏定义#define LED_TUBE_IOCTRL 0x11 #define LED_DIG_IOCTRL 0x12 由于在s3c2410_led_init函数中 s3c2410_led_tube_base 0x01);//IO映射 s3c2410_led_dig_base = (unsigned int) ioremap(LED_DIG_PHY_START, 0x01);//将物理地址转换成为虚拟地址 由于我们操作的是虚拟地址,而不是物理地址,所以需要将物理地址转换成为物理地址。物理地址在开发板的电路图中有表明很清楚。在驱动中我们也有定义 #define LED_TUBE_PHY_START 0x08000100 #define LED_DIG_PHY_START 0x08000102 = (unsigned int) ioremap(LED_TUBE_PHY_START,
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库6嵌入式系统设计实验六(8字数码管和点阵数码管)在线全文阅读。
相关推荐: