本设计使用的仿真工具是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<DelayTime; 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

转载于:https://www.cnblogs.com/it_mac/archive/2010/05/12/1733095.html

【原创】基于ARM的流水灯仿真示例相关推荐

  1. 基于STM32单片机流水灯仿真与程序设计

    STM32单片机流水灯仿真与程序设计 摘要 本次程序设计和仿真是基于Proteus和keil的环境对STM32F103系列单片机进行流水灯设计,通过配置STM32的GPIO工作模式,实现LED的点亮和 ...

  2. multisim13学习_基于Multisim13数字流水灯电路设计与仿真 - 镇江高专学报.PDF

    基于Multisim13数字流水灯电路设计与仿真 - 镇江高专学报 第30卷第1期 镇 江 高 专 学 报 Vol.30 No.1 2017年1月 JournalofZhenjiangCollege ...

  3. 【嵌入式04.2】STM32F103C8T6的简易流水灯仿真(寄存器实现+STM32CubeMX实现)

    题目要求:假设你手中已有 STM32最小系统核心板(STM32F103C8T6)+面板板+3只红绿蓝LED,并搭建了电路,分别GPIOA-5.GPIOB-9.GPIOC-14 这3个引脚上控制LED灯 ...

  4. [AT89C51 ]用汇编语言实现流水灯仿真(含keil与Proteus)

    前言:笔者发文主要是为了记录笔者单片机学习课程,可能实用性不多,大佬看着玩就行. 关键词:51单片机:AT89C51:流水灯仿真:初学 要求:使用AT89C51实现流水灯,使用汇编语言. 思路:用51 ...

  5. c语言流水灯仿真程序设计框图,基于单片机c语言控制的流水灯程序设计及prtes仿真图.docx...

    基于单片机c语言控制的流水灯程序设计及prtes仿真图 89c51与8个发光二极管相连流水控制 一.不同花样的控制源程序代码: /*#include #define uchar unsigned ch ...

  6. 基于stm32的流水灯实现

    一.开发环境介绍 主控芯片:  正点原子STM32F103ZET6精英开发板 oled:中景园七针脚0.96寸oled 代码编程软件: keil5 代码下载地址: stm32流水灯项目 希望大家仔细看 ...

  7. 实验一 简单io应用—流水灯控制示例程序_【正点原子FPGA连载】第十章呼吸灯实验--领航者ZYNQ之linux开发指南...

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

  8. 基于STM32F103C8T6实现流水灯的操作实验

    一.GPIO端口的初始化 1.配置时钟 1.找到时钟使能寄存器映射基地址即复位时钟控制 由于本次实验采用GPIOA.B.C三个端口,该三个端口又都属于APB2总线. 2.找到APB2总线端口偏移地址以 ...

  9. VHDL||数字系统设计实验--基于VHDL的流水灯电路设计

    实验目的: 学习设计一个流水灯电路,并在实验板验证. 学习简单时序电路的设计和硬件测试. 学习使用VHDL语言方法进行逻辑设计输入. 实验内容: 实验VHDL程序: LIBRARY IEEE; USE ...

最新文章

  1. hp 380g9服务器用户手册,HP ProLiant DL380Gen9服务器用户指南
  2. 计算音频数据音量_【翻译】线性的音量推子……简直像一个个秤砣!
  3. Vue 的路由实现 Hash模式 和 History模式
  4. 滤镜怎么调_手机、电脑怎么剪辑视频?真心求推荐实用工具
  5. WebBrowser设置打印页眉页眉和页边距
  6. iOS与JS交互之UIWebView协议拦截
  7. APS生产计划排程系统优化方案
  8. 多商户酒店预订小程序PMS管理系统成品源码
  9. WiFi图标在任务栏里不见了,提示:适配器Qualcomn Atheros QCA9377 Wireless Network Adapter遇到驱动程序或硬件相关的问题
  10. 认知无线电的能量检测
  11. 微软MDT 安装与配置(二)
  12. 【Adobe安装】安装程序在Adobe Reader XI -Chinese Simplelified 安装完成之前被中断,错误代码150210
  13. 毫无PS痕迹 你的第一本Photoshop书pdf
  14. 【全套资料.zip下载】数电课设-色子骰子模拟电路Multisim仿真设计【Multisim仿真+报告+讲解视频.zip下载】
  15. 【Tableau server 8.0】Tableau server 考试真题回顾总结
  16. python-恩尼格码密码机实现
  17. 西直门立交桥的破事儿
  18. Springboot拦截器实现IP黑名单
  19. 2005年5月23日星期一
  20. Python快速复制粘贴ins数据,采集网站内视频内容

热门文章

  1. English trip -- VC(情景课)1 D
  2. python_104_面向对象总结
  3. XML学习笔记之XML的简介
  4. arm64的适配问题,这次真醉了
  5. web中用纯CSS实现筛选菜单
  6. ADO.Net练习1
  7. ueditor1.4.3jsp版成功上传图片后却回显不出来与在线管理显示不出图片的解决方案...
  8. [置顶] 自己动手实现OpenGL之glViewPort(一)
  9. 安卓开发小知识 - 3
  10. Spark Streaming 编程新手入门指南