`

嵌入式版"Hello world"之流水灯实验

阅读更多

在短短的两周内,我们集中学习了ARM体系结构相关课程和ucos基础课程,并第一次深入一个操作系统的内部进行详细的学习探究。

在学习了ucos和相关工具下的demo之后,我终于将汇编、hex、c等底层代码和硬件联系在了一起。一直做web、桌面应用开发,我这次算是体验到了另外的世界和开发思路。

 

关注于:

  1. 代码计数用大小k
  2. 关注效率
  3. 关注空间
  4. 注意赋值--掩码赋值
  5. 学会看芯片时序图
  6. 看清引脚
  7. 等等

下面开始我们的Hello world之旅吧。

在实验室写blog,没有linux环境,所以在描述windows相关操作和技巧时会有疏漏,如果疑问敬请斧正。

 

点灯和闪亮的基本原理:对于一个发光二极管(流水灯的显示器),其发光是电流可正向通过,也就是说两边一边高电压一边低电压。如下图所示,如果上面是高电压,下面是低电压则这个发光二极管就可以亮。


 

首先需要建立一个工程,在这里使用的是一个强大的嵌入式IDE:Keil uVision3. Project->New u...Project->choose a file-> select device -> NXP(LPC2124)->确定拷贝数据


然后,让这个工程在编译完文件后输出hex(用于电路板的二进制文件)文件.

Project-> Options about... -> Output -> Create HEX File

 

最后编码并生成。

绘制电路图,并导入HEX文件。



 电路图的关键:左下方电源的配置连接,发光二极管的电阻连接。

代码结构:

#include <LPC21xx.h>

//多用宏,不论是迁移还是使用都很方便,而且方便阅读
#define ALL 0x3;//用于灯连接的端口 P0.0 P0.1

unsigned long i;//用于延时计数的变量
int j;

void delay(){
  i=0x000FFFFF;
  while(i)i--;
}

int main(){
  //所有的芯片默认状态时GPIO,输入输出数据口
  IO0DIR = ALL;//对应的二进制数是:0000 0000 0000 0011 ,
               //即对应的P0.0, P0.1口为数据输出口
  j = 0;
  while(1){
    IO0SET = ALL;//导致二极管的两极都为高电位,从而不亮
    j++;
    j%=2;//奇偶计数
    if(j){
      IO0CLR = 0x1; //让P0.0低电压 
    }else{
      IO0CLR = 0x2; //让P0.1低电压  
    }
    delay();
  }
}

 细节的讨论还会补充。

 

  • 描述: 新建工程
  • 大小: 72.9 KB
  • 描述: 发光二极管结构
  • 大小: 1.4 KB
  • 描述: 电路图
  • 大小: 36.9 KB
  • 07-13.rar (82.9 KB)
  • 描述: 整个工程数据和源代码文件
  • 下载次数: 3
分享到:
评论

相关推荐

    嵌入式版\"Hello world\"之流水灯实验

    "嵌入式版\"Hello world\"之流水灯实验"是一个典型的入门级项目,它通过控制LED灯的亮灭顺序来展示基本的嵌入式系统编程概念。在这个项目中,我们通常会使用微控制器(如Arduino、STM32或AVR等)作为硬件平台,用C或...

    基于microblaze的流水灯及打印helloworld

    《基于Microblaze的流水灯及打印Hello World详解》 在嵌入式系统设计领域,Microblaze是一款灵活且可定制的软核处理器,由Xilinx公司开发,广泛应用于FPGA(Field-Programmable Gate Array)设计。本项目以...

    STM32流水灯实验编程

    STM32流水灯实验编程是所有硬件编程的“Hello world!”程序,成功下载运行一个流水灯说明你已经走进了STM32的世界。下面我们一步一步的来做实验。 知识点1: STM32的基本概念 STM32是一种基于ARM Cortex-M内核的32位...

    arm仿真图(adc,流水灯,hello)

    总结来说,这些项目涵盖了嵌入式系统开发的关键方面:从物理世界获取数据(ADC),通过硬件接口控制输出(流水灯),以及在ARM平台上执行基本的软件操作(Hello World)。这些都是学习和理解ARM架构及嵌入式系统设计...

    arduino嵌入式设计实验例程源代码合集(44例).zip

    3.流水灯 30.咪头 31.DHT11温湿度 32.DS1302时钟 33.arduino 彩屏 34.315M发射接收模块 35.VS1003MP3解码芯片 36.直流电机 37.土壤湿度传感器程序 38.I2C模块 DS1307时钟 39.继电器 4.交通灯 40.74HC164 41.74HC138 ...

    FPGA Verilog 串口收发+流水灯程序

    打包的是整个FPGA Quartus II 工程,仿真脚本已经写好了,程序注释很到位,逻辑清晰明了,非常适合初学者用来作为第一个HelloWorld程序学习,希望能够帮助更多的FPGA爱好者进去FPGA神奇的天地。 Pang 敬上。 2018....

    STM8S-LED.rar_STM8S灯_stm8s led灯_stm8s208r8流水灯_stm8s入门_world

    STM8S运行LED程序和讲义 ...编程语言时学写“Hello,World”程序一样。流水灯例程的编写就是对 I/O 口的 简单操作, 当知道怎么点亮一盏 Led 灯的时候,恭喜你,你已经能够简单地控制 一款芯片了!

    Nexys4嵌入式接口实验大纲1

    - 建立在Lab3的基础上,实验将关注软件控制自定义LED IP,实现如流水灯、7段数码管显示等功能。 - 学生将学习如何在软件层面与自定义硬件IP进行交互。 5. **Lab5: GPIO实验 - 7段数码管** - 学习如何在系统中...

    PIC单片机实验

    内部包含多个简单的单片机实验,包括输入输出端口、流水灯、A/D转换等多个简单实验,并附有汇编语言程序及注释说明,对于但单片机初学者很有帮助。

    Arduino程序设计基础实验说明文档Arduino编程学习例程40个合集.zip

    实验二 流水灯.docx 实验二十 学会使用MQ2烟雾传感器.docx 实验二十一 烟雾报警.docx 实验二十七 距离检测.docx 实验二十三 温度报警.docx 实验二十九 红外发射.docx 实验二十二 闯入报警.docx 实验二十五 串口控制...

    蓝桥杯嵌入式例程指导手册

    该例程通过串口持续发送"HelloWorld",用户需配置串口助手(如波特率9600,无校验,8位数据位,1位停止位),下载程序后在串口助手查看输出。 5. 实验5:串口接收例程 用户可以通过串口发送命令(如发送00或FF)...

    基于Arduino程序设计基础实验说明文档Arduino编程学习例程合集(40个).zip

    实验二 流水灯.docx 实验二十 学会使用MQ2烟雾传感器.docx 实验二十一 烟雾报警.docx 实验二十七 距离检测.docx 实验二十三 温度报警.docx 实验二十九 红外发射.docx 实验二十二 闯入报警.docx 实验二十五 串口控制...

    编程最简单的开始是hellow word,而FPGA最简单的操作是流水灯

    “Hello World”是编程界的传统入门程序,而在FPGA世界里,这个角色通常由“流水灯”扮演。流水灯是一个简单的硬件示例,它演示了如何通过FPGA控制一组LED灯按特定顺序亮灭,直观地展示出硬件编程的概念。 首先,...

    DSP入门学习笔记2——从流水灯到GPIO

    流水灯是硬件学习的基础,犹如Hello World之于软件学习。下面将详细介绍流水灯的实现及GPIO控制的编程。 DSP入门学习笔记 DSP(Digital Signal Processor,数字信号处理器)是一种特殊的微处理器,主要用于实时...

    qsys实验手册2014(快速入门 quartus13.0 64位win7)

    qsys 快速入门基础实验(Hello World实验、数码管实验、流水灯实验、按键中断实验、pwm自定义组件实验),包含源代码,及硬件连线图,详细的描述出了qsys及niosii使用中反映的问题。可以帮助大家尽快熟悉Qsys,有不...

    Arduino RFID套件测试资料.zip

    资料目录.bat 例程1-Hello World! 例程10-抢答器 例程11-模拟值读取 例程12-光控声音 例程13-火焰报警 例程14-电压表 ...例程5-流水灯 例程6-交通灯 例程7-蜂鸣器 例程8-倾斜开关 例程9-按键控制实验

    黑金教程.zip

    第一章 ZYNQ开发板开箱检测,第六章 ZYNQ芯片开发流程的简介,第十章 PL端和PS端的协同设计流水灯实验,第九章 Hello World实验,第二十一章 Linux系统下的hello World实验

Global site tag (gtag.js) - Google Analytics