一、实验名称:流水灯仿真实验
二、实验目的:
- 掌握ARM处理器的输入输出接口。
- 掌握通过MDK提供的仿真功能,实现系统的仿真运行。
- 通过该编程实验,进一步巩固和强化学生ARM汇编编程的能,ARM应用程序框架,培养学生实际应用的能力。
三、实验内容:
按下面电路图,编写一个流水灯程序,并通过MDK的仿真功能进行验证。
实验要求:
- 有1个拨码开关K1(接GPB1端口)作为输入;
- 有4个指示灯作为输出(接GPB5-GPB5端口);
- 拨码开关K1输入高电平时,指示灯从上到下(LED1到LED4)循环显示,每次只有一个灯亮;
- 拨码开关K1输入低电平时,指示灯从下到上(LED4到LED1)循环显示,每次只有一个灯亮;
- 要求每个灯点亮持续的时间是20ms-30ms之间。
- 使用C语言编写程序,给完整程序并加注释。
- 通过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”对输出波形进行仿真,以验证程序执行是否正确。仿真的步骤如下:
- 在调试界面中,选择“Analysis Windows”→“Logic Analyzer”,进入“Logic Analyzer”界面后,点击“Setup”按键,设置需要观察的输出端口。
- 进入“Setup Logic Analyzer”窗口后,就可以对需要观察的输出端口引脚信号进行设置。由于本实验主要涉及到GPB5-8共4个输出端口的输出信号进行观察,因此需要添加这4个信号。
- 设置好相关引脚信号后,就可以进行回到“Debug”界面,调试运行。
- 先测试拨码开关K1(GPB1)输入为高电平的时候情况,指示灯从上到下(LED1到LED4)循环显示的输出情况。
- 然后选择“Peripherals”→“I/O Ports”→“PortB(GPB)”,设置拨码开关K1(GPB1)输入为低电平。
- 再次回到“Debug”界面,继续调试运行,测试拨码开关K1(GPB1)输入为低电平的时候情况,指示灯从下到上(LED4到LED1)循环显示的输出情况。
(7)最后得到完整的仿真输出波形
main.c参考代码:
#include <S3C2440.H>
#include<stdio.h>
#include<stdlib.h>
#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<<i);
delay();
GPBDAT = ~(0);
}
}
while((GPBDAT & (1<<1)) != 0){ // 开关k1打开,端口GPB1是高电平
// 指示灯从上到下(LED1到LED4)循环显示,每次只有一个灯亮
for(i = 5; i <= 8; i++){
GPBDAT &= ~(1<<i);
delay();
GPBDAT = ~(0);
}
}
}
}
五、实验结论
通过仿真测试,可以看出,GPB5-8这4个端口,在GPB1为高电平时,轮流输出低电平,使得指示灯从上到下(LED1到LED4)循环显示;在GPB1为低电平时,轮流输出低电平,使得指示灯从下到上(LED4到LED1)循环显示。且低电平的持续时间约为20-30ms,即使得每个灯被点亮的持续时间约为20-30ms。符合实验要求。
六、总结及心得体会:文章来源:https://www.toymoban.com/news/detail-610566.html
通过本次实验,我掌握了ARM处理器的输入输出接口相关设置及使用,也掌握了如何通过MDK提供的仿真功能,实现系统的仿真运行。同时通过该编程实验,也进一步巩固和强化我的ARM汇编编程的能力、ARM应用程序框架,培养了我的实际应用的能力。文章来源地址https://www.toymoban.com/news/detail-610566.html
到了这里,关于ARM实验5-流水灯仿真实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!