《UESTC微机原理第四次实验.ppt》由会员分享,可在线阅读,更多相关《UESTC微机原理第四次实验.ppt(20页珍藏版)》请在三一办公上搜索。
1、1,1,实验六 基于ARM的键盘及数码管驱动实验,临身圭雪榜蛰钢赊色梳跨敬摆坠勺您燎份狸粥魁羽之虏战笆迎箩股宪握辽UESTC微机原理第四次实验UESTC微机原理第四次实验,2,2,一、实验目的1.掌握键盘及数码管驱动原理。2.掌握ZLG7290芯片的使用方法。3.掌握I2C总线的协议标准。4.掌握Linux下键盘驱动的实现方法。二、实验内容编写测试程序控制键盘和数码管。,浸缝俊柜迭蝗已候惦嚼屁簿招傀拙燥潘柠者轩舶击绚墟而命公腋蒸殷确翼UESTC微机原理第四次实验UESTC微机原理第四次实验,3,3,三、预备知识1.了解ARM9处理器结构2.了解i2c协议四、实验设备与工具硬件:ARM嵌入式开发
2、平台,PC 机Pentium100 以上。软件:PC机Linux操作系统MINICOM AMRLINUX开发环境,菜尤谆胀酌呵袭脉诉笑样热枪唉轩筋晃遗肚腕埃纂阉码历幅另撰烟焰候圣UESTC微机原理第四次实验UESTC微机原理第四次实验,4,4,五、实验原理与说明1、ZLG7290寄存器介绍 ZLG7290内部有16个8bits寄存器,访问这些寄存器需要通过I2C 总线接口来实现.访问内部寄存器要通过“I2C总线地址+子地址”的方式来实现。ZLG7290B 的I2C 总线器件地址是70H(写操作)和71H(读操作)。,笔醇花突狰岔珠飘隙神团课逆赔渠拳均锨奖睦个跋伟定俞证轨嫁避显纽跳UESTC微机
3、原理第四次实验UESTC微机原理第四次实验,5,5,键值寄存器Key(地址:01H)如果某个普通键(K1K56)被按下,则微控制器可以从键值寄存器Key中读取相应的键值156。如果微控制器发现ZLG7290 的INT 引脚产生了中断请求,而从Key 中读到的键值是0,则表示按下的可能是功能键。键值寄存器Key 的值在被读走后自动变成0。,鉴痢庄汹碳曙决土扑恤敝诱森踞葵袭俯额贪村伊践锻画陨砖喉隅濒撅犀哥UESTC微机原理第四次实验UESTC微机原理第四次实验,6,6,显示缓冲区DpRam0DpRam7(地址:10H17H),DpRam0DpRam7 这8 个寄存器的取值直接对应8个数码管的显示内
4、容。每个寄存器的8 个位分别对应数码管的a,b,c,d,e,f,dp 段,MSB 对应a,LSB 对应dp。例如大写字母H 的字型数据为6EH(不带小数点)或6FH(带小数点)。,男然亡汕建搬蝴辣叶消邹悠啡项虾甄抵凛摇傀现捅铣魔貌子礁雾鹊晨错权UESTC微机原理第四次实验UESTC微机原理第四次实验,7,7,命令缓冲区CmdBuf0 和CmdBuf1(地址:07H 和08H)通过向命令缓冲区写入相关的控制命令可以实现段寻址、下载显示数据、控制闪烁等功能。,倒漆盆拣央度浙渠凿节宦吏汹避鸳育诌庇身佩耶驮沉阴醛榔摸须堰遇题砧UESTC微机原理第四次实验UESTC微机原理第四次实验,8,8,2、ZLG
5、7290控制命令介绍 寄存器CmdBuf0(地址:07H)和CmdBuf1(地址:08H)共同组成命令缓冲区。通过向命令缓冲区写入相关的控制命令可以实现段寻址、下载显示数据、控制闪烁等功能。,员禄甩惊焚铜沈刑铜邦饰柠曳她哲氨耕肾幼刚途阁哼饵胰蹲双瓷氏朗久对UESTC微机原理第四次实验UESTC微机原理第四次实验,9,9,下载数据并译码(Download)在指令格式中,高4 位的0110 是命令字段;A3A2A1A0 是数码管显示数据的位地址(其中A3 留作以后扩展之用,实际使用时取0 即可),位地址编号依次为0,1,2,3,4,5,6,7,代表8个数码管,dp 控制小数点是否点亮,0点亮,1熄
6、灭;flash 表示是否要闪烁,0正常显示,1闪烁;d4d3d2d1d0 是要显示的数据,包括10 种数字和21 种字母。显示数据按照表一中的规则进行译码:,侵者辊瓢运沉很坛炽狄律茅页蛊蛾访多会拖望选史扮筏蔚具管嘲筹膝时篆UESTC微机原理第四次实验UESTC微机原理第四次实验,10,10,表一 下载数据并译码命令规则,轰坟饯伦庄颂胃倡按腮酪笛乾酋提歼耙旨曝随侮帅舟李吾彼匹嚏青状林蛹UESTC微机原理第四次实验UESTC微机原理第四次实验,11,11,闪烁控制(Flash)在命令格式中,高4 位的0111 是命令字段;xxxx 表示无关位,通常取值0000;第2 字节的Fn(n07)控制数码管
7、相应位的闪烁属性,0正常显示,1闪烁。复位后,所有位都不闪烁。,尧露魂粕捏份薛泣涕耽蜀代卸腆翘疾耘根栋琵蒂锗舀杂矗眠硫伞孕捆册靴UESTC微机原理第四次实验UESTC微机原理第四次实验,12,12,3、Linux下i2c驱动接口函数介绍 Linux为我们提供了一系列的接口函数,通过调用这些函数可以很方便的访问到我们的I2C设备,达到对它的操作和控制。在本实验中,就是通过调用这些函数,完成对zlg7290内部寄存器的配置,从而驱动键盘和数码管按照我们需要的方式工作。下面对接口函数进行介绍:,恰退掩性腐鹰允虫急沃州亭统鞭挝允误绸剿诵跟粱重程类王展厨衡梯瓢湘UESTC微机原理第四次实验UESTC微机
8、原理第四次实验,13,13,3、Linux下i2c驱动接口函数介绍打开设备:在linux下编程实现对具体设备的操作,首先要做的就是打开要操作的设备文件,zlg7290设备的设备文件是“/dev/zlg7290/0”。具体实现函数是:fd=open(“/dev/zlg7290/0”,O_RDWR),顾护蕉框酶劲柑帛醋恭汀男习容违榨碘毖讥闯惑类鸳碗仍毗斟锥臻共如词UESTC微机原理第四次实验UESTC微机原理第四次实验,14,14,向设备写数据(1/2):具体实现过程是先写入要配置的寄存器的地址,然后写入要配置的值,具体实现函数是:unsigned char temp2;/定义一个数组用于存放要发
9、送的数据,包括寄存器地址和要写入该寄存器内的值 temp0=address;/将要配置的寄存器的地址address写入temp0中。temp1=data;/将要写入该寄存器中 的值data写入/temp1中。write(fd,temp,2);/用write函数向设备写入数据temp,首先写入地址address,然后写入值data。,冀倚猎姚拢向穷清另按涅慈天且续怯吸举范晶送啮窄色沸戊王张匪羡捉褂UESTC微机原理第四次实验UESTC微机原理第四次实验,15,15,向设备写数据(2/2):配置一般的寄存器都是这个步骤,但是唯一例外的是配置命令寄存器cmdbuf0和cmdbuf1,因为写入命令寄存
10、器中的命令码均为16bit,因此需要通过两步完成对命令码的发送,具体实现代码如下:unsigned char temp3;temp0=address;temp1=cmd1;/要写入的命令码的高八位 temp2=cmd2;/要写入的命令码的低八位 write(fd,temp,3);,赂驰摸懦满模来弥短窘烽序丙梨伶衬过箩雹刹终疥况铸侄卵柱踞炼切请武UESTC微机原理第四次实验UESTC微机原理第四次实验,16,16,关闭设备:close(fd);,噎仙坞女邪桔坤颅浊未鹤兰砷鬼镰缺宪怨从副丝遂儒呵翁漠痹梁托晓配提UESTC微机原理第四次实验UESTC微机原理第四次实验,17,17,数码管位码键盘键值
11、、布局图,瓢央吹疤肛您淤缩娘阐忍捣忿刨头升取故油加隶丈毕楷氧勉淑勃柏人巳厅UESTC微机原理第四次实验UESTC微机原理第四次实验,18,18,六、实验步骤(详见实验指导书)在数码管上显示数据有两种方法,一种方法是直接向8个数据缓冲区DpRam0DpRam7写入数据分别控制每个数码管的8个独立led的亮灭,使其显示不同的数据。在数码管上显示数据的另一种方法是直接向命令寄存器cmdbuf0或cmdbuf1写入“下载数据并译码”命令,直接控制数码管的显示内容,具体译码规则如表一所示。当某个按键被按下时,可以通过读取“键值寄存器Key(地址:01H)”的值来得到键值,将所按键的键值显示在数码管上。z
12、lg7290提供数码管的闪烁功能,通过向命令寄存器发送闪烁控制命令可以控制某个数码管闪烁。通过按键控制数码管的闪烁,具体功能是当按下键盘1-4时,控制数码管1-4闪烁。,钟襟痉挨乓抛匿羔呵勿枉捡寨两茵选键滦敌呜铀翻肝墙亏坊属袱赶沾秀丰UESTC微机原理第四次实验UESTC微机原理第四次实验,19,19,5、打开一个终端1,将四个源文件交叉编译成arm下的可执行文件example1-example4(具体参见实验五一些步骤)6、重新打开一个终端2,输入命令minicom进入ARM开发板的命令行界面,检查硬件是否连接好后,上电开发板,进入ARM-linux操作系统的命令行。7、在终端2的ARM-linux操作系统的命令行下依次运行example1-example4可执行程序,观察结果。,艘涸光盆刹纸筒伤片曾手臼蜕晦圃喜何骡梗测咳赏征护蚁舍戏鲍额享吏釜UESTC微机原理第四次实验UESTC微机原理第四次实验,注:实验报告手写,封面采用电子科大标准实验报告纸,黎惫贴赣驳欧阵念倒惜冤浚铝徘垢恍赣舶婴槛憨芍穗坊键十钞肪峻心漓柬UESTC微机原理第四次实验UESTC微机原理第四次实验,