logo资料库

嵌入式系统实验报告.docx

第1页 / 共41页
第2页 / 共41页
第3页 / 共41页
第4页 / 共41页
第5页 / 共41页
第6页 / 共41页
第7页 / 共41页
第8页 / 共41页
资料共41页,剩余部分请下载后查看
嵌入式系统设计 实验报告 教室:E504 班级:030914 学号:03091360 姓名:刘俊波
实验一:LED 等控制实验 一. 实验目的:显示一个动态模拟时钟(显示分钟和秒)。 通过本次试验,熟悉实验环境,以及编程,调试,下载流程;具体如下: 1.了解 PXA270 处理器结构 ; 2. 了解 ARM 指令集; 3. 了解嵌入式系统的引导过程; 4. 了解八段数码管的知识 ; 5. 了解系统的硬件寻址方式; 6. 掌握 ADS 编程和调试方法; 7. 掌握 JTAG 调试技巧; 二. 实验内容: 1.分析 PXA270 基本结构; 2.分析 Eeliod 实验平台实现的存储系统架构; 3.分析 PXA270 的引导过程; 4.分析 Eeliod 实验平台 LED 发光管和 7 段数码管的设计原理图; 5.参考系统引导示例程序完成数码管的控制代码; 6.编译程序,下载执行,让数码管显示一组特定的数据。 三. 实验准备知识及原理: 1.认识 Eeliod 实验平台,了解各模块及相应的功能; 2.熟悉相关软件环境: ADS(ARM Developer Suite):ARM 公司推出的 ARM 集成开发工具。 Code Warrior:集成开发环境(IDE),为管理和开发项目提供了多样化的 图形用户界面。 AXD(ARM eXtended Debugger): ARM 扩展调试器,可以对包含有调试信息 的,正在运行的可执行代码进行比如变量的查看,断点的控制等调试操作。 Debug target:目标处理器可以是硬件,也可仿真 ARM 仿真器代理软件 : H-JTAG:仿真器代理服务器
H-Flash:基于 JTAG 的烧写程序 四. 实验原理: 根据阅读相关器件的原理图(数码管,译码器等)和寄存器工作原理,编程控制读写 寄存器里的相关数据,改变跟数码管相连的锁存器的值使数码管持续显示写入数码管锁存 器的值。 五. 实验步骤: 1. 编写实验程序。 2. 编译链接生成映像文件,用 ADS 软件将该映像文件下载到 FALSH 或者 SDRAM 运行和调试。 3. 运行和调试 观察运行结果。
六. 实验源代码: #include #define LED_CSL and LED2 #define LED_CSR and LED4 vooid Delay(unsigned int x) { //延时函数 (*((volatile unsigned short int *)(0x10300000))) (*((volatile unsigned short int *)(0x10400000))) //LED1 //LED3 unsigned int i, j, k; for (i =0; i <=x; i++) for (j = 0; j <0xff; j++) for (k = 0; k <0xff; k++); } int main(void) { //定义数码管显示相关数据 a[10]={0x0040,0x0079,0x0024,0x0030,0x0019,0x0012,0x0002,0x0078,0x0000,0x00 10}; short mini,sec; short sec1,sec2,mini1,mini2; //显示分秒个位和十位 short sec3,mini3; //定义秒,分计时 //将要显示的内容 mini=sec=0; //初始化 LED_CSL=0X4040; LED_CSR=0X4040; //初始化数码管显示 0000 while(1) { sec++; Delay(100); if(sec==60) { mini++; sec=0; }
sec1=a[sec/10]; sec2=a[sec%10]; sec2=sec2<<8; sec3=sec1|sec2; //秒的十位左移八位 mini1= a[mini/10]; mini2= a[mini%10]; mini2= mini2<<8; mini3= mini1| mini2; //分的十位左移 8 位 LED_CSL=mini3; LED_CSR=sec3; } return 0; } 七. 心得体会: 通过这次实验让我对 ADS 有了初步了解,学会了配置编译环境。同时也学会了通 过编程定义寄存器地址,让指针变量与寄存器地址相关联以便向寄存器写入数据。但是对 于编译软件的使用还是不太熟练,调试过程遇到 很多麻烦,不过最后在同学的帮助下都得 到圆满解决。总之,这次实验让我对嵌入式开发有了初步了解,对开发步骤有了深刻映像。
实验二:键盘控制实验 一. 实验目的:显示一个动态模拟时钟(显示分钟和秒)。 1.了解直入式键盘与矩阵键盘的工作原理; 2.学习如何配置键盘控制器的寄存器; 3.掌握键盘扫描程序的实现过程; 二. 实验内容: 1.熟悉 PXA270 提供的键盘接口; 2.分析 Eeliod 实验平台的键盘原理图; 3.参考直连键盘示例程序实现矩阵键盘扫描,利用数码管显示区分不同按键; 4.编译程序,下载执行,验证程序工作是否正常。 三. 实验准备知识及原理: 通过阅读 PXA270 的接口原理图和键盘的原理图,分析键盘引脚的工作原理,查看键 盘引脚与 CPU 相连的原理图,利用行扫描键盘法的原理。通过控制 GPIO 接口功能的寄存 器组来将 GPIO94、GPIO95、GPIO98、GPIO99 四个 GPIO 上,设置成 KP-DKIN 功能。 键盘输入用到的接口:GPIO94、GPIO95、GPIO98 、GPIO99、GPIO100、GPIO101、 GPIO102 键盘输出用到的接口:GPIO103、GPIO104、GPIO105 、GPIO108 KPC 键盘接口控制寄存器是一个可读写的寄存器,用于设置直入/矩阵键盘的使能、中断、 自动扫描等控制。 KPDK 直入式键盘寄存器是一个只读寄存器,它显示了直入式键盘的所按键盘位置。如图 3.6 所示,表示各个直入式键盘的状态。 相关原理图如下:
四. 实验原理: 利用行扫描原理,先将行寄存器中表示第一行状态的位置 1,然后判断列寄存器的值, 判断是第一行哪个键按下,输出相应的置,接着按第二行依次进行下去,四行扫描是一个 循环。 五. 实验步骤: 1. 分析实验要求,得出编程思路: 矩阵键盘 一共有 3 行 :
第 0 行:KPMK_VALUE= 0x01; 第 1 行:KPMK_VALUE= 0x02; 第 3 行:KPMK_VALUE= 0x03; 第 4 行:KPMK_VALUE= 0x04; 共有 4 列: 第 0 列:KPC_VALUE |= 0x00002000; 第 1 列:KPC_VALUE |= 0x00004000; 第 2 列:KPC_VALUE |= 0x00008000; 第 5 列:KPC_VALUE |= 0x00040000; 要实现键盘控制八段数码管,可以用 switch 语句,当扫描到键盘某个按键按下时,赋给 LED_CS2 和 LED_CS3 不同的值,来标识哪个按键被按下; 实验中我实现的 16 个按键对应的数码管的值如下: 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 2. 实验中还用到了延时函数: void Delay(unsigned int x) { unsigned int n, j, k; for (n =0; n <=x; n++) for (j = 0; j <0xff; j++) for (k = 0; k <0xff; k++);
分享到:
收藏