嵌入式系统实践上机实践报告--数码管和键盘控制

上传人:liy****000 文档编号:373310970 上传时间:2023-12-15 格式:DOC 页数:12 大小:181KB
返回 下载 相关 举报
嵌入式系统实践上机实践报告--数码管和键盘控制_第1页
第1页 / 共12页
嵌入式系统实践上机实践报告--数码管和键盘控制_第2页
第2页 / 共12页
嵌入式系统实践上机实践报告--数码管和键盘控制_第3页
第3页 / 共12页
嵌入式系统实践上机实践报告--数码管和键盘控制_第4页
第4页 / 共12页
嵌入式系统实践上机实践报告--数码管和键盘控制_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《嵌入式系统实践上机实践报告--数码管和键盘控制》由会员分享,可在线阅读,更多相关《嵌入式系统实践上机实践报告--数码管和键盘控制(12页珍藏版)》请在金锄头文库上搜索。

1、计算机科学技术系上机实践报告课程名称:嵌入式系统实践年级:上机实践成绩:指导教师:姓名:创新实践成绩:上机实践名称:数码管和键盘控制学号:上机实践日期:上机实践编号:组号:上机实践时间:一、 实验目的1. 通过实验掌握LED 的显示控制方法.2. 巩固实验4.1 中所掌握的对存储区进行访问的方法。二、 实验设备1. 硬件:Embest EduKit-III 实验平台,Embest ARM 标准/增强型仿真器套件,PC 机。2. 软件:Embest IDE Pro ARM 集成开发环境,Windows 98/2000/NT/XP。三、 实验内容1. 编写程序使实验板上八段数码管循环显示0 到9

2、字符。2. 编写程序,获得实验板上54键盘输入,并发送到串口显示四、 实验原理1. 八段数码管 嵌入式系统中,经常使用八段数码管来显示数字或符号,由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。 结构八段数码管由八个发光二极管组成,其中七个长条形的发光管排列成“日”字形,右下角一个点形的发光管作为显示小数点用,八段数码管能显示所有数字及部份英文字母。见图4-13。 类型八段数码管有两种不同的形式:一种是八个发光二极管的阳极都连在一起的,称之为共阳极八段数码管;另一种是八个发光二极管的阴极都连在一起的,称之为共阴极八段数码管。工作原理以共阳极八段数码管为例,当控制某段发光

3、二极管的信号为低电平时,对应的发光二极管点亮,当需要显示某字符时,就将该字符对应的所有二极管点亮;共阴极二极管则相反,控制信号为高电平时点亮。电平信号按照 dp,g,ea 的顺序组合形成的数据字称为该字符对应的段码,常用字符的段码表如下:显示方式八段数码管的显示方式有两种,分别是静态显示和动态显示。静态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管控制信号一直保持有效。动态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管是轮流点亮的,即控制信号按一定周期有效,在轮流点亮的过程中,点亮时间是极为短暂的(约1ms),由于人的视觉暂留现象及发光二极管的余辉效应,数码管的显示

4、依然是非常稳定的。2. 电路原理 EMBEST EduKit-III 教学电路中,使用的是共阳极八段数码管,数码管的控制通过芯片ZLG7290 控制,各段的控制信号是芯片ZLG7290 的SEGASEGG 引脚控制,需要显示的段码通过IIC 总线传送到该芯片,见图4-14、图4-15。 图 4-14 八段数码管连接电路 图4-15 八段数码管控制电路 键盘中断工作示意图键盘工作原理(88)8行8列产生64个信号,支持64个键 Dig和Seg,分别用作键盘矩阵的行线和列线其中ZLG7290系统框图:五、 实验步骤1. 准备实验环境 使用 Embest 仿真器连接目标板,使用Embest EduK

5、it-III 实验板附带的串口线,连接实验板上的UART0 和PC 机的串口。2. 串口接收设置 在 PC 机上运行windows 自带的超级终端串口通信程序(波特率115200、1 位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序。3. 打开实验例程 1)拷贝光盘CD1SoftwareEduKit44b0 文件夹到EmbestIDEExamplesSamsung目录下;2) 使用Embest IDE 通过Embest JTAG 仿真器连接实验板, 打开实验例程目录4.6_8led_test 子目录下的8led_test.pjf 例程,编译链接工程成功;3) 点击IDE 的Debu

6、g 菜单,选择Remote Connect 项或F8 键,远程连接目标板;4) 点击IDE 的Debug 菜单,选择Download 下载调试代码到目标系统的RAM 中;5) 点击Debug 菜单的Go 或F5 键运行程序。4. 观察实验结果1).在PC 机上观察超级终端程序主窗口,可以看到如下界面:2). 实验系统八段数码管循环显示0 9 字符。5. 完成实验练习题理解和掌握实验后,完成实验练习题六、 调试过程、结果和分析1. 首先分别装载运行了实验6数码管、实验7键盘的示例程序,了解了试验箱上数码管对应的地址,如下表所示:0x130x120x110x100x170x160x150x14 接

7、着观察实验7的程序发现从试验箱上的键盘输入的字符是放在ucChar这个变量中,然后通过串 口通信显示在超级终端上的;所以只需要将这个变量记录下,同时调用实验6数码管中的全局数组即可将键盘输入在数码管上显示出来。2. 理清楚这个总体思路后,再根据实验要求上的内容逐步实现:初始化数码管的清空还是很容易的,直接将0写入到数码管地址中即可;09、AF情形类似,新输入的值放入在0x14中之前的值全部左移一位,在写左移这部分代码for循环时由于数码管地址有些混乱所以调试花费了不少时间。3. 在显示+、-、*时需要左移的不再是一位,需要写一个封装的move函数,当判断出ucChar255时分别对输入的+、-

8、、*调用move函数后再将输入值放到0x16、0x15、0x14中;其中FUN需要单独判断ucChar 是否为 0xFF再左移、输入。七、 总结1. 这次的实验由于是数码管与键盘两次合并在一起,所以还是给了比较充足的时间来完成。预习时不太清楚怎么将数码管与键盘相联系,在运行了示例程序后了解到变量ucChar和数组f_szDigital起到了桥接的作用。2. 总体来说这次实验还是完成得比较成功的,理解示例程序花费了不少的时间,一旦读懂了程序之后这次实验就可以解决了。(创新)下面代码中用颜色标注的部分是我自己写的代码用来实现题目要求。不过那是一个比较直接的方法,简单易懂。为此我还有一种方法:因为L

9、1包含03数码管,L2包含47数码管,从左向右分别为3,2,1,0,7,6,5,4。为此数码管上的字符移动起来比较麻烦。我们可以新建一个buffer8。每次我们往相应的数码管写入字符的时候,我们可以先写入buffer里面,字符的移动也可以先在buffer里面执行。然后,我们将buffer与原来数码管的地址数组相对应。这样我们便于理解问题,写的程序也比较简练。八、 附件1. 程序代码1#include 44b.h#include 44blib.h#include def.h#include iic.hint f_nKeyPress;unsigned char f_szDigital =0xFC,

10、0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6,/ 0 9 0xEE,0xFF,0x9C,0xFD,0x9E,0x8E,/ A 8. C 0. E F 0x1,0x2,0x0,0x92,0x90;/ , - close 三 二void keyboard_test(void);void keyboard_int(void);UINT8T key_set(UINT8T ucChar);void keyboard_test(void)int i, j, k;UINT8T ucChar, t;iic_init();for(i=0; i8; i+)iic_wri

11、te(0x70, 0x10+i,0);/ set EINT2 interrupt handler pISR_EINT2 = (int)keyboard_int;for(;) f_nKeyPress = 0;rINTMSK = rINTMSK & (BIT_GLOBAL|BIT_EINT2);/ enable EINT2 intwhile(f_nKeyPress = 0);iic_read(0x70, 0x1, &ucChar);/*if(ucChar !=0)ucChar = key_set(ucChar);if(ucChar 10) ucChar += 0x30;else if(ucChar

12、 16) ucChar += 0x37;if(ucChar 255)uart_printf(press key %cn, ucChar);if(ucChar = 0xFF) uart_printf( press key FUN (exit now)nr);return; */ if(ucChar !=0) char t;ucChar = key_set(ucChar);if(ucChar 0;j-)i=j-1;iic_read(0x70, 0x10+i,&t);iic_write(0x70, 0x10+j, t);iic_read(0x70, 0x10+7,&t);iic_write(0x70

13、, 0x10, t);for(j=7;j4;j-)k=j-1;iic_read(0x70, 0x10+k,&t);iic_write(0x70, 0x10+j, t);iic_write(0x70, 0x10+4, f_szDigitalucChar);delay(500);else if(ucChar 255)if(ucChar=+)move_three();iic_write(0x70, 0x16, 0xEE);iic_write(0x70, 0x15, 0xFD);iic_write(0x70, 0x14, 0xFD);if(ucChar=-)move_three();iic_write(0x70, 0x16, 0xB7);iic_write(0x70, 0x15, 0x7C);iic_write(0x70, 0x14, 0xFF);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 实验设计

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号