ARM实验5-流水灯仿真实验

一、实验名称:流水灯仿真实验

二、实验目的:

  1. 掌握ARM处理器的输入输出接口。
  2. 掌握通过MDK提供的仿真功能,实现系统的仿真运行。
  3. 通过该编程实验,进一步巩固和强化学生ARM汇编编程的能,ARM应用程序框架,培养学生实际应用的能力。

三、实验内容:

按下面电路图,编写一个流水灯程序,并通过MDK的仿真功能进行验证。

ARM实验5-流水灯仿真实验_第1张图片

实验要求:

  1. 有1个拨码开关K1(接GPB1端口)作为输入;
  2. 有4个指示灯作为输出(接GPB5-GPB5端口);
  3. 拨码开关K1输入高电平时,指示灯从上到下(LED1到LED4)循环显示,每次只有一个灯亮;
  4. 拨码开关K1输入低电平时,指示灯从下到上(LED4到LED1)循环显示,每次只有一个灯亮;
  5. 要求每个灯点亮持续的时间是20ms-30ms之间。
  6. 使用C语言编写程序,给完整程序并加注释。
  7. 通过MDK的仿真功能验证程序的正确性。                                                                        

 四、实验器材(设备、元器件):

            (1)PC机一台;

(2)Keil MDK-ARM uVision5开发工具。

五、实验步骤:

(1)打开Keil MDK-ARM uVision5开发工具;

(2)新建一个工程文件;

(3)在新建的工程文件中,添加新的源程序文件

(4)编写代码

(5)选择“Build target”菜单对编写好的工程文件进行编译链接。

(6)点击““Start/Stop Debug Section””按键,对程序进行跟踪调试,在调试界面,单步执行,对CPU各寄存器的值的变化、以及相关内存的变化进行分析比较,判断程序的执行是否符合预期要求。在程序调试期间,利用MDK的“Logic Analyzer”对输出波形进行仿真,以验证程序执行是否正确。仿真的步骤如下:

  1.  在调试界面中,选择“Analysis Windows”→“Logic Analyzer”,进入“Logic Analyzer”界面后,点击“Setup”按键,设置需要观察的输出端口。
  2. 进入“Setup Logic Analyzer”窗口后,就可以对需要观察的输出端口引脚信号进行设置。由于本实验主要涉及到GPB5-8共4个输出端口的输出信号进行观察,因此需要添加这4个信号。
  3. 设置好相关引脚信号后,就可以进行回到“Debug”界面,调试运行。
  4. 先测试拨码开关K1(GPB1)输入为高电平的时候情况,指示灯从上到下(LED1到LED4)循环显示的输出情况。
  5. 然后选择“Peripherals”→“I/O Ports”→“PortB(GPB)”,设置拨码开关K1(GPB1)输入为低电平。
  6. 再次回到“Debug”界面,继续调试运行,测试拨码开关K1(GPB1)输入为低电平的时候情况,指示灯从下到上(LED4到LED1)循环显示的输出情况。

(7)最后得到完整的仿真输出波形

注意事项:
        给接口寄存器赋值,建议使用与或操作,只修改需 要配置的对应bit位,其余位都保持其原值不变。
         可以直接使用标准实验报告中给出的模板,在C编 程时可以直接使用寄存器的名称对其寻址。相关定 义如下:
#define GPBCON (*(volatile unsigned long *) 0x56000010)
#define GPBDAT (*(volatile unsigned long *) 0x56000014)
比如:
GPBCON = 0x155551; //GBP1是输入端口,
//其余端口都是输出端口

main.c参考代码:

#include  
#include
#include 
#define GPBCON (*(volatile unsigned long *) 0x56000010)
#define GPBDAT (*(volatile unsigned long *) 0x56000014)
void delay()  
{  
    int i;
	for(i = 0; i < 5; i++); 
}  
int main(){
	int i;
	GPBCON = 0x155551; //GPB1是输入端口,其余端口都是输出端口
	GPBDAT = ~(0);
	while(1){
		while((GPBDAT & (1<<1)) == 0){ // 开关k1关闭,端口GPB1是低电平
			// 指示灯从下到上(LED4到LED1)循环显示,每次只有一个灯亮
			for(i = 8; i >= 5; i--){
				GPBDAT &= ~(1<

 

五、实验结论

        通过仿真测试,可以看出,GPB5-8这4个端口,在GPB1为高电平时,轮流输出低电平,使得指示灯从上到下(LED1到LED4)循环显示;在GPB1为低电平时,轮流输出低电平,使得指示灯从下到上(LED4到LED1)循环显示。且低电平的持续时间约为20-30ms,即使得每个灯被点亮的持续时间约为20-30ms。符合实验要求。

六、总结及心得体会:

       通过本次实验,我掌握了ARM处理器的输入输出接口相关设置及使用,也掌握了如何通过MDK提供的仿真功能,实现系统的仿真运行。同时通过该编程实验,也进一步巩固和强化我的ARM汇编编程的能力、ARM应用程序框架,培养了我的实际应用的能力。

你可能感兴趣的:(ARM,arm开发,单片机)