电子科技大学微机实验报告(含思考题)河畔下的哈】实验6

电子科技大学微机实验报告(含思考题)河畔下的哈】实验6

ID:6337184

大小:49.00 KB

页数:18页

时间:2018-01-10

电子科技大学微机实验报告(含思考题)河畔下的哈】实验6_第1页
电子科技大学微机实验报告(含思考题)河畔下的哈】实验6_第2页
电子科技大学微机实验报告(含思考题)河畔下的哈】实验6_第3页
电子科技大学微机实验报告(含思考题)河畔下的哈】实验6_第4页
电子科技大学微机实验报告(含思考题)河畔下的哈】实验6_第5页
资源描述:

《电子科技大学微机实验报告(含思考题)河畔下的哈】实验6》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验六 基于ARM的键盘及数码管驱动实验 1.掌握键盘及数码管驱动原理。 2.掌握ZLG7290芯片的使用方法。 3.掌握I2C总线的协议标准。 4.掌握Linux下键盘驱动的实现方法。 编写测试程序控制键盘和数码管。 1.了解ARM9处理器结构 2.了解i2c协议 硬件:ARM嵌入式开发平台,PC机Pentium100以上。 软件:PC机Linux操作系统+MINICOM+AMRLINUX开发环境 1、ZLG7290寄存器介绍 ZLG7290内部有16个8bits寄存器,访问这些寄存器需要通过I2C总线接口来实现.访 问内部寄存器要通过“I2C总线地址+子地址

2、”的方式来实现。ZLG7290B的I2C总线器件 地址是70H(写操作)和71H(读操作)。 ?键值寄存器Key(地址:01H) 如果某个普通键(K1~K56)被按下,则微控制器可以从键值寄存器Key中读取相应 的键值1~56。如果微控制器发现ZLG7290的INT引脚产生了中断请求,而从Key中读 到的键值是0,则表示按下的可能是功能键。键值寄存器Key的值在被读走后自动变成0。 ?显示缓冲区DpRam0~DpRam7(地址:10H~17H) DpRam0~DpRam7这8个寄存器的取值直接对应8个数码管的显示内容。每个寄存器 的8个位分别对应数码管的a,b,c,d,e,

3、f,dp段,MSB对应a,LSB对应dp。例如大写字母H 的字型数据为6EH(不带小数点)或6FH(带小数点)。 ?命令缓冲区CmdBuf0和CmdBuf1(地址:07H和08H) 通过向命令缓冲区写入相关的控制命令可以实现段寻址、下载显示数据、控制闪烁等功 能。 2、ZLG7290控制命令介绍 寄存器CmdBuf0(地址:07H)和CmdBuf1(地址:08H)共同组成命令缓冲区。通过 向命令缓冲区写入相关的控制命令可以实现段寻址、下载显示数据、控制闪烁等功能。 ? 下载数据并译码(Download) 在指令格式中,高4位的0110是命令字段;A3A2A1A0是数码管显示

4、数据的位地址(其 中A3留作以后扩展之用,实际使用时取0即可),位地址编号依次为0,1,2,3,4,5,6,7,代表 8个数码管,dp控制小数点是否点亮,0-点亮,1-熄灭;flash表示是否要闪烁,0-正 常显示,1-闪烁;d4d3d2d1d0是要显示的数据,包括10种数字和21种字母。 ?闪烁控制(Flash) 在命令格式中,高4位的0111是命令字段;xxxx表示无关位,通常取值0000;第2字 节的Fn(n=0~7)控制数码管相应位的闪烁属性,0-正常显示,1-闪烁。复位后,所有 位都不闪烁。 3、Linux下i2c驱动接口函数介绍 Linux为我们提供了一系列的接

5、口函数,通过调用这些函数可以很方便的访问到我们的 I2C设备,达到对它的操作和控制。在本实验中,就是通过调用这些函数,完成对zlg7290 内部寄存器的配置,从而驱动键盘和数码管按照我们需要的方式工作 ?打开设备: 在linux下编程实现对具体设备的操作,首先要做的就是打开要操作的设备文件,zlg7290 设备的设备文件是“/dev/zlg7290/0”。 具体实现函数是: fd=open(“/dev/zlg7290/0”,O_RDWR) ?向设备写数据: 具体实现过程是先写入要配置的寄存器的地址,然后写入要配置的值,具体实现函数是: unsignedchartemp[2]

6、;//定义一个数组用于存放要发送的数据,包括寄存器地址和 要写入该寄存器内的值 temp[0]=address;//将要配置的寄存器的地址address写入temp[0]中。 temp[1]=data;//将要写入该寄存器中的值data写入//temp[1]中。 write(fd,temp,2);//用write函数向设备写入数据temp,首先写入地址address, 然后写入值data。 配置一般的寄存器都是这个步骤,但是唯一例外的是配置命令寄存器cmdbuf0和 cmdbuf1,因为写入命令寄存器中的命令码均为16bit,因此需要通过两步完成对命令码的发 送,具体实现代

7、码如下: unsignedchartemp[3]; temp[0]=address; temp[1]=cmd1;//要写入的命令码的高八位 temp[2]=cmd2;//要写入的命令码的低八位 write(fd,temp,3); ?关闭设备: close(fd); 1.在数码管上显示数据有两种方法,一种方法是直接向8个数据缓冲区DpRam0~ DpRam7写入数据分别控制每个数码管的8个独立led的亮灭,使其显示不同的数据。 2.在数码管上显示数据的另一种方法是直接向命令寄存器cmdbuf0或cmdbuf1写入

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。