嵌入式系统及设计
综合实验报告
学 院:物理与信息工程学院 专 业:微电子 姓 名: 强书连 学 号: 111000628 指导老师:张志晓
实验一:GPIO、流水灯
1、实验目的
1. 熟悉Keil及protues的使用方法; 2. 熟悉keil和protues的联调方式;
3. 熟悉ARM7的GPIO功能特性及使用方法; 4. 掌握ARM7的中断控制过程及应用;
2、实验要求
应用GPIO设计流水灯,编写代码,与PROTUES联调仿真。
3、实验内容
(1、)通过I/O模拟同步串口与74HC595进行连接,控制74HC595驱动LED显示。
(2)、利用ARM开发工具,建立工程,并添加代码,编译并连接工程,生成HEX文件。
(3)、在PROTEUS软件中,连接电路原理图。右击LPC2124,弹出的Edit Component对话框中,为LPC2124添加HEX文件路径。启动仿真,观察结果。
4、设计流程图
5、实验总结
本次实验在既轻松又紧张的氛围中结束了,说起这次时长三节课的实验,满满的都是收获。
首先,对嵌入式的认识加深了一步。从大一到大二,直至大三,都感觉嵌入式是一个比较神圣庄严的学科,学好了就业就不愁的感觉。可是本门课一开课,就感觉,学的基本都是外部电路,对于一些指令并没有接触,或者说都是虚的东西,实验带我了解了嵌入式。
其次对上节课学的指令集有了一次切身的应用,更加印象深刻。虽说实验过程不算是很顺利,但总体来说是让我学到了东西的。
我会更加积极的进入接下来几次实验的学习。
6、附录 程序关键代码
#include \ uint32 i; #define uchar unsigned char for(;dly>0;dly--) #define uint32 unsigned int for(i=0;i<5000;i++); #define SPI_CS 0x00000100 /*P0.8*/ }
#define SPI_DATA 0x00000040 void HC595_SendDat(uint32 dat) /*P0.6*/ {
#define SPI_CLK 0x00000010 uint32 i; /*P0.4*/ IO0CLR=SPI_CS; #define PIN_P014 0x00004000 #define SPI_IOCON 0x00000150 for(i=0;i<8;i++) uint32 key_flag=1; { const uint32 IO0CLR=SPI_CLK; DISP_TAB[]={ 0x01,0x02,0x04,0x08,0x10 if((dat&0x80)!=0) ,0x20,0x40,0x80,0x00}; IO0SET=SPI_DATA; void delayns(uint32 dly) else { IO0CLR=SPI_DATA;
dat<<=1; IO0SET=SPI_CLK; } IO0SET=SPI_CS; }
int main(void) { uint32 i; PINSEL0=0x00000000; IO0DIR=SPI_IOCON; while(1) { for(i=0;i<8;i++)
{
HC595_SendDat(~DISP_TAB[i]); delayns(50);
while((IO0PIN&PIN_P014)==0 ) { delayns(10) ; } }} }
实验二:GPIO、中断应用
1、实验目的
5. 熟悉Keil及protues的使用方法; 6. 熟悉keil和protues的联调方式;
7. 熟悉ARM7的GPIO功能特性及使用方法; 8. 掌握ARM7的中断控制过程及应用;
2、实验要求
应用中断及GPIO设计一个按键控制秒表,编写代码,与PROTUES联调仿真。