首页 嵌入式系统实验报告

嵌入式系统实验报告

举报
开通vip

嵌入式系统实验报告嵌入式系统实验报告 小组成员 指导老师 实验三 键盘及 LED 驱动实验 一、实验目的 1,学习键盘及LED 驱动原理。 2,掌握ZLG7289 芯片的使用方法。 二、实验内容 通过ZLG7289 芯片驱动17 键的键盘和8 个共阴极LED,将按键值在LED 上显示出来 三、实验原理 1. ZLG7289A是一片具有串行接口的,可同时驱动8位共阴式数码管,或64只独立LED,的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成LED显示,键盘接口的全部功能。 ZLG7289A...

嵌入式系统实验报告
嵌入式系统实验报告 小组成员 指导老师 实验三 键盘及 LED 驱动实验 一、实验目的 1,学习键盘及LED 驱动原理。 2,掌握ZLG7289 芯片的使用方法。 二、实验内容 通过ZLG7289 芯片驱动17 键的键盘和8 个共阴极LED,将按键值在LED 上显示出来 三、实验原理 1. ZLG7289A是一片具有串行接口的,可同时驱动8位共阴式数码管,或64只独立LED,的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成LED显示,键盘接口的全部功能。 ZLG7289A内部含有译码器,可直接接受BCD码或16进制码,并同时具有2种译码方式。此外,还具有多种控制指令,如消隐,闪烁,左移,右移,段寻址等。 ZLG7289A具有片选信号可方便地实现多于8位的显示或多于64键的键盘接口。 2,带有数据的指令 3,串行接口, ZLG7289A采用串行方式与微处理器通讯,串行数据从DATA引脚送入芯片,并由CLK 端同步。当片选信号变为低电平后,DATA引脚上的数据在CLK引脚的上升沿被写入ZLG7289A的缓冲寄存器. ZLG7289与ARM的连接方法如图3-1所示, 四,实验步骤 1,新建工程,将“Exp3 键盘及LED 驱动实验”中的文件添加到工程。 2,定义ZLG7289 寄存器 ,ZLG7289.h, #define ZLG7289_CS (0x20) //GPB5 #define ZLG7289_KEY (0x10) //GPG4 #define ZLG7289_ENABLE() do{ZLG7289SIOBand=rSBRDR;ZLG7289SIOCtrl=rSIOCON; rSIOCON=0x31;rSBRDR=0xff;rPDATB&=(~ZLG7289_CS);}while(0) #define ZLG7289_DISABLE() do{rPDATB|=ZLG7289_CS;rSBRDR=ZLG7289SIOBand; rSIOCON=ZLG7289SIOCtrl;}while(0) 3,编写ZLG7289 驱动函数,ZLG7289.c, 4,定义键盘映射表,,Keyboard16.c, unsigned char KeyBoard_Map[]= { 7,4,1,0,10,0,0,0,8,5, 2,0,11,0,0,0,9,6,3,16, 12,13,0,0,14,0,15,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0 }; //64 键值映射表,通过查找键盘映射表来确定键盘扫描码对应的按键值。 5,定义键值读取函数 6,编写主函数,将按键值在数码管上显示 五,程序改动部分 实现功能,使键盘部分正确输出对应的键盘数字,并且使个位数的数字显示 在最右边一个的数码管上,十位数的两数字显示在数码管的最左边的两个数码 管。 ? /************数码管对应键值改动部分***************/ unsigned char KeyBoard_Map[]={ 7,4,1,0,10,0,0,0,8,5, 2,0,11,0,0,0,9,6,3,16, 12,13,0,0,14,0,15,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0 }; //64,键值映射表 /************数码管对应键值改动部分***************/ ?/************LED显示改动部分*****************/ while(1) { key=GetKey(); //得到按键值 Delay(1); ZLG7289_ENABLE(); //使zlg7289占有同步串口 WriteSDIO(ZLG7289_CMD_DATA0|0); //数码管以方式0译码,第一个数码管亮 WriteSDIO(key%10); //显示个位 Delay(1); //延时 if(key>9) { //键值大于9显示十位 WriteSDIO(ZLG7289_CMD_DATA0|1);//发送十位数据 WriteSDIO((unsigned char)(key/10)); Delay(1); WriteSDIO(ZLG7289_CMD_HIDE); //使一、二两位数码管显示 WriteSDIO(3); } else { //键值小于10不显示十位 WriteSDIO(ZLG7289_CMD_HIDE);//使个位数码管显示 WriteSDIO(1); } ZLG7289_DISABLE(); //zlg7289放弃同步串口控制权 } return 0; } /************LED显示改动部分*****************/ 实验五 ARM的A/D 接口实验 一、实验目的 1,熟悉ARM 本身自带的八路十位A/D 控制器及相应寄存器。 2,编程实现ARM 系统的A/D 功能。 3,掌握带有A/D 的CPU 编程实现A/D 功能的主要方法。 二、实验内容 学习A/D 接口原理,了解实现A/D 系统对于系统的软件和硬件要求。阅读ARM 芯片文档,掌握ARM 的A/D 相关寄存器的功能,熟悉ARM 系统硬件的A/D 相关接口。利用外部模拟信号编程实现ARM 循环采集全部前4 路通道,并且在超级终端上显示。 三,实验原理 1.A/D转换器 A/D 转换器是模拟信号源和CPU 之间联系的接口,它的任务是将连续变化的模拟信号转换为数字信号,以便计算机和数字系统进行处理、存储、控制和显示。在工业控制和数据采集及许多其他领域中,A/D 转换是不可缺少的。 逐次逼近型的A/D 转换器 逐次逼近型(也称逐位比较式)的A/D 转换器,应用比积分型更为广泛,其原理框图如图5-1 所示,主要由逐次逼近寄存器SAR、D/A 转换器、比较器以及时序和控制逻辑等部分组成。它的实质是逐次把设定的SAR 寄存器中的数字量经 D/A 转换后得到电压Vc 与待转换模拟电压V。进行比较。比较时,先从SAR 的最高位开始,逐次确定各位的数码应是“1”还是“0”,其工作过程如下,转换前,先将SAR 寄存器各位清零。转换开始时,控制逻辑电路先设定SAR 寄存器的最高位为“1”,其余位为“0”,此试探值经D/A 转换成电压Vc,然后将Vc 与模拟输入电压Vx 比较。如果Vx?Vc,说明SAR 最高位的“1”应予保留,如果Vx=0; i--) { switch(i) //采样0~3路A/D值 case 0: d=GetADresult(i)*2.5/1023;break; // 数据 采集,处理 case 1: d=GetADresult(i)*100/1023;break; case 2: d=100-GetADresult(i)*100/1023;break; case 3: d=GetADresult(i)*(-2.5) /1023;break; Uart_Printf("a%d=%f\t",i,d); Delay(1000); } Uart_Printf("\r"); } return 0;} 实验十二 A uCOS-II 在ARM 微处理器上的移植及编译 一、实验目的 1,了解uCOS-II 内核的主要结构。 2,掌握将uCOS-II 内核移植到ARM7 处理器上的基本方法。 二、实验内容 1,将uCOS-II 内核移植到ARM7 微处理器上。 2,编写两个简单任务,在超级终端上观察两个任务的切换。 三.实验原理 所谓移植,指的是一个操作系统可以在某个微处理器或者微控制器上运行。虽然uCOS-II的大部分源代码是用C 语言写成的,仍需要用C 语言和汇编语言完成一些与处理器相关的代码。比如,uCOS-II 在读写处理器、寄存器时只能通过汇编语言来实现。因为uCOS-II 在设计的时候就已经充分考虑了可移植性,所以,uCOS-II 的移植还是比较容易的。要使 uCOS-II 可以正常工作,处理器必须满足以下要求, 1.处理器的C编译器能产生可重入代码。 可重入的代码指的是一段代码,如一个函数,可以被多个任务同时调用,而 不必担心会破坏数据。也就是说,可重入型函数在任何时候都可以被中断执行,过一段时间以后又可以继续运行,而不会因为在函数中断的时候被其他的任务重新调用,影响函数中的数据。下面的两个例子可以比较可重入型函数和非可重入型函数. 2,在程序中可以打开或者关闭中断。 在uCOS-II 中,可以通过OS_ENTER_CRITICAL()或者OS_EXIT_CRITICAL()宏来控制系统关闭或者打开中断。这需要处理器的支持,在ARM7TDMI 的处理器上,可以设置相应的寄存器来关闭或者打开系统的所有中断。 3,处理器支持中断,并且能产生定时中断,通常在10HZ?1000HZ 之间,。 uCOS-II 是通过处理器产生的定时器的中断来实现多任务之间的调度的。在ARM7TDMI的处理器上可以产生定时器中断。 4,处理器支持能够容纳一定量数据的硬件堆栈。 5,处理器有将堆栈指针和其他CPU寄存器存储和读出到堆栈,或者内存,的指令。 uCOS-II 进行任务调度的时候,会把当前任务的CPU 寄存器存放到此任务的堆栈中,然后,再从另一个任务的堆栈中恢复原来的工作寄存器,继续运行另一个任务。所以,寄存器的入栈和出栈是uCOS-II 多任务调度的基础。 四.实验步骤 1,新建一个文件夹,将Exp12中文件复制到新文件夹中。 为了使 uCOS-II 可以正常运行,除了上述必须的移植工作外,硬件初始化和配置文件也 是必须的。STARTUP 目录下的文件还包括中断处理,时钟,串口通信等基本功能函数。 2.在程序开头定义任务堆栈,任务函数声明和任务优先级, OS_STK TaskName_Stack[STACKSIZE]={0, }; //任务堆栈 void TaskName(void *Id); //任务函数 #define TaskName_Prio N //任务优先级 3.在文件 main.c 中给出了应用程序的基本框架,包括初始化和多任务的创建,启动等。设置main.h中与处理器和编译器相关的代码。 /********** LCD320修改部分的程序***************/ for(i=0;ptr[i]!=0;i++){ if(ptr[i]=='\n'){ //换行 for(j=LCDCurrentPrnTxtx;jLCDRow-1){ LCDCurrentPrnTxt-=LCDRow; LCDIsprnOverPage=TRUE; } if(LCDIsprnOverPage) k=2; else k=1; break; } else if (ptr[i]=='\r') { LCDCurrentPrnTxtx=0; } else{ if(LCDCurrentPrnTxtx
本文档为【嵌入式系统实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_471618
暂无简介~
格式:doc
大小:132KB
软件:Word
页数:15
分类:生活休闲
上传时间:2017-10-11
浏览量:256