基于ARM的流水灯仿真示例

发布者:RadiantRiver最新更新时间:2020-01-28 来源: eefocus关键字:ARM  流水灯  仿真 手机看文章 扫描二维码
随时随地手机看文章

本设计使用的仿真工具是Proteus 7.4,IDE是ADS 1.2,芯片是LPC2134


在Proteus中的电路图如下图所示: 

本设计使用的是周立功的LPC2131的工程模板。LPC2131的RAM为8K,而LPC2134的为16K,因此在使用工程模板时必须修改mem_a.scf、mem_b.scf和men_c.scf文件中的RAM最高端地址,即把“0x40002000”改为“0x40004000”。


本设计中的四个按钮对应着四个外部中断,用于控制流水灯的工作方式。


PS:本设计中的电路图只限用于仿真,在实际应用中还应加上晶振、复位电路等 。


源代码及注释如下:  


  1 #include "config.h"

  2 

  3  int DelayTime=50; //延时参数

  4  int ModeSel=0;  //流水灯控制

  5 

  6  //延时函数原型声明

  7  void delay(int dly);

  8 

  9  //中断服务程序原型声明

 10  void __irq IRQ_Eint0(void);

 11  void __irq IRQ_Eint1(void);

 12  void __irq IRQ_Eint2(void);

 13 void __irq IRQ_Eint3(void);

 14 

 15 //流水灯工作模式定义

 16 int LED_Mode[2][8]=

 17 {

 18 

 19  {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f},

 20  {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}

 21 };

 22 

 23 int ModeIndex;  //工作模式索引

 24 

 25 //********************************************************************************************************

 26 //主函数

 27 int main (void)

 28 {

 29  //配置引脚功能

 30  PINSEL0=0x000cc0cc; 

 31  PINSEL1=0x00000000;  

 32  

 33  IO1DIR=0xff<<16; //设P1.16-P1.23为输出

 34 

 35  EXTMODE=0x00;  //设置外部中断为电平触发

 36  

 37  IRQEnable();  //使能IRQ中断

 38  

 39  VICIntSelect=0x00000000; //设置所有分配为IRQ中断

 40  

 41  VICVectCntl0=0x20|0x0e;  //分配外部中断0到向量中断0

 42  VICVectCntl1=0x20|0x0f;  //分配外部中断1到向量中断0

 43  VICVectCntl2=0x20|0x10;  //分配外部中断2到向量中断0

 44  VICVectCntl3=0x20|0x11;  //分配外部中断3到向量中断0

 45  

 46  

 47  //设置中断服务程序地址

 48  VICVectAddr0=(uint32)IRQ_Eint0;

 49  VICVectAddr1=(uint32)IRQ_Eint1;

 50  VICVectAddr2=(uint32)IRQ_Eint2;

 51  VICVectAddr3=(uint32)IRQ_Eint3;

 52  

 53  EXTINT=0x0f; //清除所有外部中断标志

 54  

 55  VICIntEnable=(1<<0x0e)|(1<<0x0f)|(1<<0x10)|(1<<0x11); //使能外部中断

 56  

 57  while(1)

 58  {

 59   for(ModeIndex=0; ModeIndex<8; ModeIndex++)

 60   {

 61    IO1SET=LED_Mode[ModeSel][ModeIndex]<<16; //点亮LED灯

 62    delay(DelayTime);       //延时

 63    IO1CLR=LED_Mode[ModeSel][ModeIndex]<<16; //熄灭LED灯

 64   }

 65  }

 66     return 0;

 67 }

 68 

 69 //********************************************************************************************************

 70 //延时函数

 71 void delay(int dly)

 72 {

 73  int i,j;

 74  for(i=0; i 75   for(j=0; j<25000; j++);

 76   

 77 }

 78 

 79 //********************************************************************************************************

 80 //外部中断0服务程序

 81 void __irq IRQ_Eint0(void)

 82 {

 83  ModeSel=0;   //设置LED工作模式

 84  while((EXTINT&0x01)!=0)

 85  {

 86   EXTINT=0x01; //清除中断标志

 87  }

 88  VICVectAddr=0;

 89 }

 90 

 91 //********************************************************************************************************

 92 //外部中断1服务程序

 93 void __irq IRQ_Eint1(void)

 94 {

 95  ModeSel=1;   //设置LED工作模式

 96  while((EXTINT&0x02)!=0)

 97  {

 98   EXTINT=0x02; //清除中断标志

 99  }

100  VICVectAddr=0;

101 }

102 

103 //********************************************************************************************************

104 //外部中断2服务程序

105 void __irq IRQ_Eint2(void)

106 {

107  if(DelayTime>30)

108   DelayTime=DelayTime-10;  //减少延时

109  

110  while((EXTINT&0x04)!=0)

111  {

112   EXTINT=0x04;   //清除中断标志

113  }

114  VICVectAddr=0;

115 }

116 

117 //********************************************************************************************************

118 //外部中断3服务程序

119 void __irq IRQ_Eint3(void)

120 {

121  if(DelayTime<80)

122   DelayTime=DelayTime+10;  //增加延时

123  

124  while((EXTINT&0x08)!=0)

125  {

126   EXTINT=0x08;   //清除中断标志

127  }

128  VICVectAddr=0;

129 }

130 

131 


关键字:ARM  流水灯  仿真 引用地址:基于ARM的流水灯仿真示例

上一篇:基于ARM的流水灯仿真示例(第一次修改)
下一篇:ARM与X86 CPU架构区别

推荐阅读最新更新时间:2024-11-08 12:23

基于ARM的光学指纹识别系统的设计方案
  本方案采用ARM处理器作为控制核心,构建指纹识别算法的嵌入式系统的设计方法及过程。该系统采用光学指纹传感器(内建格科微电子有限公司的光学GC0307 CMOS图像采集芯片)与ARM Cortex M3内核的意法半导体公司32位高性能单片机STM32F205RE组成功能主体,采用Sobel边缘检测算子、Gabor滤波、图像二值化等图像采集与处理算法对指纹图像进行识别。经过反复实践证明,该方案适合嵌入式组件开发中需要进行生物指纹特征提取、识别,指纹身份认证、比对等场合。系统具有高性价比且交互简易、识别率高、扩展性强,便于嵌入式应用。    0 引言   随着电子信息技术应用面日益拓展,不少场合需要对特定用户群体进行身份识别或身
[单片机]
基于<font color='red'>ARM</font>的光学指纹识别系统的设计方案
基于ARM的智能储物系统设计
  智能储物系统由上位机、物品存取软件和以下位机为核心的自动控制执行机构组成。上位机为一台内部安装了物品存取软件的PC机,它为智能储物系统提供人机交互平台,实现智能储物系统的用户验证功能、物品存取界面显示、存储物品的管理和检索功能。以基于ARM LPC2210的下位机为核心的自动控制执行机构接收上位机发送的控制指令,通过自动控制使被选中的储物箱体到达预定的位置来实现物品的自动存取和异常情况下的快速报警功能。整个储物系统被安装在一个坚固、密封的金属箱体中。该金属箱体可以被嵌入到非承重墙体中或者作为房屋隔断使用,其大小可根据用户需要做成整面墙或为墙体的一部分。与传统保险柜相比,它非常隐蔽,而且合理、有效地利用了室内空间。储物系统存
[单片机]
基于<font color='red'>ARM</font>的智能储物系统设计
车联网仿真测试解决方案
概述 V2X 技术作为车联网信息通信技术中的重要组成部分,是实现车内网、车际网和车载移动互联网融合、智能化管理、智能化控制的关键技术手段。 经纬恒润结合硬件在环技术、通信信息、云平台、场景仿真、车载单元仿真技术,开发了车联网V2N测试&V2X应用场景测试系统,实现了对移动通信网络、云平台上下行数据链路、V2X应用场景、车载终端与其余通信单元的仿真模拟,满足了实验室环境下对车联网系统的功能测试需求,可为车载终端TBOX/OBU软硬件开发与测试、数据后台系统功能开发与验证以及智能网联车辆系统级测试等提供全方位的仿真与测试环境,让测试更简单、更高效、更加可靠,并有可追溯性,从而为车联网相关技术的开发、研究和分析提供了
[汽车电子]
车联网<font color='red'>仿真</font>测试解决方案
仿真技术驱动混合动力车和电动汽车设计
  面对高度竞争化的 混合动力 车和电动汽车(HEV/EV)市场,动力集成研发工程师正在向更高的系统效率、稳定性和可靠性挑战。功率逆变器在动力集成系统中至关重要,通常由6 个4英寸×6英寸封装的 IGBT模块 组成。这些IGBT模块通过快速地切换数百安培电流的通断向电动机输出交流电,控制电子系统及其它系统。IGBT的开关频率从数十kHz 到数百kHz,开通上升时间和关断下降时间达50~100ns。   高开关速度使得IGBT 非常适用于功率逆变器系统但是它同时也带来两个主要的电磁问题:传导辐射(通过载流结构件)通常低于30MHz,可能导致电源完整性问题或者引起对逆变器和电动机存在潜在危害的能量反射波;辐射电磁场(通过空气)通常高
[汽车电子]
<font color='red'>仿真</font>技术驱动混合动力车和电动汽车设计
ARM+FPGA最新重大进展!赛灵思ARM联手开拓嵌入式应用新蓝海
就像行走江湖的武林侠客都梦想有一把神兵利器一样,耕耘于电子产业的工程师们也希望有一种强大器件可以实现自己诸多的设计梦想,现在,这个器件终于要诞生了,近日,赛灵思和ARM联合发布了基于28nm工艺的全新的可扩展式处理平台 (Extensible Processing Platform) 架构,这款基于双核ARM® Cortex™-A9 MPCore™ 处理器平台可以让开发人员同时拥有串行和并行处理能力!它可为各种嵌入式系统的开发人员提供强大的系统性能、灵活性和集成度。   “与以往在FPGA中嵌入处理器内核最大的不同是,以往嵌入的内核都是依FPGA为主以处理器为辅,这次是以处理器为主FPGA为辅。”在该平台全球发布会上,赛灵
[汽车电子]
<font color='red'>ARM</font>+FPGA最新重大进展!赛灵思<font color='red'>ARM</font>联手开拓嵌入式应用新蓝海
ARM笔记: GPIO口LED程序
leds.bin:crt0.S leds.c arm-linux-gcc -g -c -o crt0.o crt0.S arm-linux-gcc -g -c -o leds.o leds.c arm-linux-ld -Ttext 0x00000000 -g crt0.o leds.o -o leds_elf arm-linux-objcopy -O binary -S leds_elf leds.bin arm-linux-objdump -D -m arm leds_elf leds.dis clean: rm -f leds.dis leds.bin leds_elf *.o .text .gl
[单片机]
Proteus仿真51单片机C语言程序实例-开关控制报警器
简介:51单片机C语言程序实例-开关控制报警器(用K1开关控制报警器,程序控制P1.0输出两种不同频率的声音,模拟很逼真的报警效果)。
[单片机]
Proteus<font color='red'>仿真</font>51单片机C语言程序实例-开关控制报警器
10.代码搬移
[单片机]
10.代码搬移
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved