基于ARM7,使用8个LED灯和1个按键,Keil编程实现学号后两位BCD码和流水灯的交替显示(上电后先显示学号,按键后交替切换流水灯和学号)

时间: 2024-03-10 20:50:24 浏览: 20
好的,这是一个比较简单的嵌入式系统应用,我可以给您提供一个基于ARM7的程序实现。 首先,需要连接8个LED灯和1个按键到ARM7的相应引脚上,具体连接方式可以参照开发板的引脚图。接下来,您可以使用Keil软件来编写程序。 在程序中,需要定义8个LED灯和1个按键的引脚号,并进行初始化。然后,可以编写一个函数来实现将学号后两位转化为BCD码的功能。接着,编写一个函数来实现流水灯的效果,即依次点亮8个LED灯,然后逐个熄灭。最后,编写一个主函数,实现按键的检测和流水灯与学号的交替显示。 以下是示例代码: ```c #include <LPC214x.h> #define LED1 (1 << 16) #define LED2 (1 << 17) #define LED3 (1 << 18) #define LED4 (1 << 19) #define LED5 (1 << 20) #define LED6 (1 << 21) #define LED7 (1 << 22) #define LED8 (1 << 23) #define KEY (1 << 24) unsigned char code table[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; void delay(unsigned int t) // 延时函数 { while(t--); } void init() // 初始化函数 { IO1DIR |= LED1 | LED2 | LED3 | LED4 | LED5 | LED6 | LED7 | LED8; // 将LED灯的引脚设为输出 IO0DIR &= ~KEY; // 将按键的引脚设为输入 IO0SET = KEY; // 上拉 } void show_number(unsigned char num) // 显示学号函数 { IO1CLR = LED1 | LED2 | LED3 | LED4 | LED5 | LED6 | LED7 | LED8; IO1SET = table[num / 10] << 16; IO1SET = table[num % 10] << 16; } void flow_light() // 流水灯函数 { IO1SET = LED1; delay(50000); IO1SET = LED2; delay(50000); IO1SET = LED3; delay(50000); IO1SET = LED4; delay(50000); IO1SET = LED5; delay(50000); IO1SET = LED6; delay(50000); IO1SET = LED7; delay(50000); IO1SET = LED8; delay(50000); IO1CLR = LED8; delay(50000); IO1CLR = LED7; delay(50000); IO1CLR = LED6; delay(50000); IO1CLR = LED5; delay(50000); IO1CLR = LED4; delay(50000); IO1CLR = LED3; delay(50000); IO1CLR = LED2; delay(50000); IO1CLR = LED1; delay(50000); } int main() { unsigned char num = 99; unsigned char flag = 0; init(); while(1) { if(!(IO0PIN & KEY)) // 检测按键是否按下 { delay(1000); // 延时去抖动 if(!(IO0PIN & KEY)) { flag = ~flag; // 取反标志位 } while(!(IO0PIN & KEY)); // 等待按键松开 } if(flag == 0) // 显示学号 { show_number(num); delay(1000); } else // 显示流水灯 { flow_light(); } } return 0; } ``` 以上程序仅供参考,您可以根据具体的硬件连接情况和需求进行修改。

相关推荐

最新推荐

recommend-type

工业电子中的基于ARM和FPGA的多路电机控制方案

介绍了一种基于fpga的多轴控制器,控制器主要由arm7(LPC2214)和fpga(EP2C5T144C8)及其外围电路组成,用于同时控制多路电机的运动。利用Verilog HDL硬件描述语言在fpga中实现了电机控制逻辑,主要包括脉冲控制信号...
recommend-type

JPEG软件解码及其在ARM7上的实现

介绍了一种用ARM7实现JPEG控制解码的方案。采用LPC2478软件解码JPEG图像并将图像实时显示在具有LVDS接口的TFT_LCD显示器上。在硬件设计中,解决了LVDS信号与LPC2478的LCD控制器输出信号的转换问题,并对解码及显示所...
recommend-type

ARM7各种指令的周期数

ARM7具有3级流水线结构(取指、译码、执行),对大多数指令来说每条流水线的处理都是单周期的,不过某些情况下,取指和执行的周期数会延长,导致流水线进入stall状态,指令执行时间超过1个周期。
recommend-type

嵌入式开发教程之基于ARM7的LCD设计与实现--[千锋培训]

文档介绍了1嵌入式开发教程引言,2嵌入式开发教程之S3C4510B介绍,3 OCMJ4X8C液晶模块,4嵌入式开发教程之软件实现,5结束语,6创新点,参考文献
recommend-type

基于FPGA的SOC设计与实现

本文通过对基于ARM7的SOC系统的设计,介绍了一种Flash结构的FPGA器件及其片上系统的设计方法,进而给出了两种验证该片上系统准确性的方法,通过实际验证,该系统不仅能准确进行片外存储器的擦写,而且可以准确进行...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

2. 通过python绘制y=e-xsin(2πx)图像

可以使用matplotlib库来绘制这个函数的图像。以下是一段示例代码: ```python import numpy as np import matplotlib.pyplot as plt def func(x): return np.exp(-x) * np.sin(2 * np.pi * x) x = np.linspace(0, 5, 500) y = func(x) plt.plot(x, y) plt.xlabel('x') plt.ylabel('y') plt.title('y = e^{-x} sin(2πx)') plt.show() ``` 运行这段
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。