arm力天电子 lpc2148流水灯驱动程序详解

发布者:幸福梦想最新更新时间:2019-05-20 来源: eefocus关键字:arm  lpc2148  流水灯驱动 手机看文章 扫描二维码
随时随地手机看文章

一个破流水灯程序看了两天了,void WriteByte(unsigned char data)这部分还是没看懂,力天电子上面介绍说这部分三端口的数据输入,选出8位的串行数据。


选择16,17,18,19四个控制位,主要跟电路图的连接有关,4块74HC595,组成32位(如图所示),从下往上依次是0~31为,图中写反了。因此到D13对应的引脚应该是16,D12对应的是17,D11对应的是18,D10对应的是19. 当16,17,18,19分别为低电平时二极管才能够导通发光。高电平时熄灭


1#include


2#define         SCLK  0x01<<24  //指定P1.24管脚,通过 IO1DIR |= SCLK;可判断是IO1端口,而不是IO0端口

3#define         MISO  0x01<<5    //指定P0.5口

4#define         MOSI  0x01<<6   //指定P0.6口

5#define         RCK   0x01<<7  //指定P0.7口

6void Delayn(unsigned long n);  //unsigned long n是一个入口函数

7void HC595_Init(void);

8void Write595(void);

9unsigned int HC595_DATA = 0;

10int main(void)

11{

 12 //初始化74HC595

 13 HC595_Init();

14  //主循环

15  while(1)

16  {

17    HC595_DATA &=~(1<<16);Write595();  //首先1左移16位,得到0000 0000 0000 0001 0000 0000 0000 0000,取反(~)得到1111 1111 1111 1110 1111 1111 1111 1111


    //然后跟HC595_DATA取与(&),HC595_DATA的值为0xFFFFFFFF(在42行),得到1111 1111 1111 1110 1111 1111 1111 1111 //此处取与的目的是为了保证在改变16位的同时不会影响到其他位。之后跳转到60行执行Write595(),依次写入第一个八位,0xff。写入第二个八位,0xff。写入第三个八位,0xfe。写入第四个八位,0xff  因此写入的32位数据就是0xfffeffff  (16位为0)


18    Delayn(250000);  //延迟,使D13发亮一段时间


19    HC595_DATA &=~(1<<17);Write595(); //类似于上面,最终得到的是1111 1111 1111 1101 1111 1111 1111 1111 写入的32位数据时0xfffdffff  (17位为0)

 20   Delayn(250000);   //延迟,使D12发亮一段时间

 21   HC595_DATA &=~(1<<18);Write595(); //类似于上面,最终得到的是1111 1111 1111 1011 1111 1111 1111 1111 写入的32位数据时0xfffbffff  (18位为0)

22    Delayn(250000);   //延迟,使D12发亮一段时间

23    HC595_DATA &=~(1<<19);Write595();//类似于上面,最终得到的是1111 1111 1111 0111 1111 1111 1111 1111 写入的32位数据时0xfff7ffff  (19位为0)

24   Delayn(250000);   //延迟,使D10发亮一段时间 

    

25    HC595_DATA |=(1<<16);Write595(); 

26    Delayn(250000); //D13灭

27    HC595_DATA |=(1<<17);Write595(); 

28    Delayn(250000);  //D12灭

29   HC595_DATA |=(1<<18);Write595();

30   Delayn(250000);  //D11灭

31   HC595_DATA |=(1<<19);Write595();

32   Delayn(250000);  //D10灭

33  }

34}


35//初始化595接口

36void HC595_Init(void)  //初始化IO口

37{

38  IO0DIR |= MOSI|RCK; //此处可以换一种写法IO0DIR |= (1<<6)|(1<<7),方向寄存器设置成输出

39  IO1DIR |= SCLK;  //方向寄存器设置成输出

40  IO1CLR |= SCLK;

41 // IO0DIR |= RCK; (可以不要)

  

42  HC595_DATA = 0xFFFFFFFF;  Write595(); //HC595_DATA = 0xFFFFFFFF的作用是置595所有的端口为高电平,使所有的发光二级管熄灭

43}

44//写字节(此处的功能不是很懂,希望有知道的朋友可以指点!)

45void WriteByte(unsigned char data)  //unsigned char data是一个入口函数

46{

47  unsigned char i;

48  //IO0CLR = RCK; (可以不要,62已经声明过了)

49  for(i=0;i<8;i++)

50  {

51    if(data&0x01)      IO0SET=MOSI;

52    else      IO0CLR=MOSI;

53    IO1SET=SCLK;  //时钟高电平

54    data>>=1;  //数据移位,把数据移到串行端口

55    IO1CLR=SCLK;  //时钟低电平

56  }

57  //IO0SET = RCK; (可以不要,67已经声明过了)

58}


59//刷新595的数据

60void Write595(void)   //第一步595片选,然后数据写入第一个八位(0-7),再数据写入第二个八位(8-15),第三个八位(16-23),第四个八位(24-31)

61{

62  IO0CLR = RCK;                     //595片选

63  WriteByte(HC595_DATA&0xff);   //写入第一个八位,0xff  然后跳转到45行执行WriteByte

64  WriteByte((HC595_DATA&0xff00)>>8);//写入第二个八位,0xff  然后跳转到45行执行WriteByte

65  WriteByte((HC595_DATA&0xff0000)>>16); //写入第三个八位,0xfe  然后跳转到45行执行WriteByte

66  WriteByte((HC595_DATA&0xff000000)>>24);//写入第四个八位,0xff  然后跳转到45行执行WriteByte

67  IO0SET = RCK;

68}

69//延时周期数   

70void Delayn(unsigned long n)     //()里面不能是void,因为此处有一个入口函数unsigned long n

71{

72  while(n--);

73}

关键字:arm  lpc2148  流水灯驱动 引用地址:arm力天电子 lpc2148流水灯驱动程序详解

上一篇:lpc2148基于DS18B20的温度控制系统程序代码之dat=(j1)详解
下一篇:S3C2440核心板原理图设计:与NAND FLASH接线分析

推荐阅读最新更新时间:2024-11-01 18:36

ARM 汇编的mov操作立即数的疑问
1. 因为对arm汇编有些指令还不能理解,特别是一些相似功能指令间的区别。偶然在网上搜到 faq ARM assembly ,其中描述的几个问题还是值得好好研究一下。 2. 慢慢的发现自己也不再害怕英文的文档了,耐心看至少也能懂个大概。大批经典的文章和书籍都是en文的,所以经常看英文文档是一个非常好的习惯。看看GNU的一些reference manual,哪个不是经典而又值得学习并研究的! 3. 学习别人写文档的风格,重点要注意条理性。能够把一个问题、一个知识点阐述清晰明白,这不仅需要对知识点的掌握,还需要良好的语言表达能力以及对文章细心、整洁的排版。我想,这些细节才能够体现一个人的水平和他所能到达的高度。 -- 本篇来看一下m
[单片机]
ARM TCM(紧耦合内存)内存--简介
1. 简介 TCM : Tightly Coupled Memory 为了弥补Cache访问的不确定性,而增加的OnChip Memory. 有的CPU含有分立的Instruction TCM / Data TCM. TCM包含在存储器的地址映射空间中,可以作为快速存储器来访问。 TCM使用物理地址,对TCM的写访问,受到MMU内部保护信息的控制. 向 TCM 中的内存位置写入时,不会发生任何外部写入。 TCM 用于向处理器提供低延迟内存,它没有高速缓存特有的不可预测性。 可以使用 TCM 来存放重要例程,如中断处理例程或者极需要避免高速缓存不确定性的实时任务。此外,可以使用 TCM 来保存暂时寄存器数据、局部属性不适合
[单片机]
<font color='red'>ARM</font> TCM(紧耦合内存)内存--简介
基于ARM9的CMOS图像采集系统的设计与实现
 机器视觉在国民经济、科学研究以及国防建设等领域都有着广泛的应用。在大批量工业生产过程中,用人工视觉检查产品质量效率低且精度不高,用机器视觉可以提高生产效率和自动化程度。图像采集系统是机器视觉系统的重要组成部分,目前图像采集常用的两种图像传感器为CCD与CMOS图像传感器。CCD一般输出带制式的模拟信号,需要经过视频解码器得到数字信号才能传入微处理器中,而CMOS图像传感器直接输出数字信号,可以直接与微处理器进行连接。不同的CMOS图像传感器有不同的性能,主要表现在图像分辨率大小不同、帧速率不同、曝光方式不同等,CMOS图像传感器可直接通过I2C来设置图像分辨率大小及曝光、增益等参数,而CCD图像传感器则需要对视频解码器进行设置来
[单片机]
基于<font color='red'>ARM</font>9的CMOS图像采集系统的设计与实现
人工智能又近了一步!百度携手ARM、RDA发布DuerOS智慧芯片
集微网3月30日消息(文/茅茅),百度“万物语,智慧芯” DuerOS智慧芯片战略合作发布会在上海举行。会上,百度发布DuerOS智慧芯片,并与紫光展锐、ARM、上海汉枫达成战略合作,将人工智能赋能传统制造业,开启“可对话”智慧设备时代。 百度公司首席架构师,度秘事业部首席技术官朱凯华、紫光集团执行副总裁兼紫光展锐总裁张永红、紫光展锐首席科学家、锐迪科微电子CEO魏述然、ARM集团技术副总裁Krisztian Flautner (Simon Segars)、上海汉枫电子科技有限公司首席执行官谢森、百度度秘事业部副总经理葛行飞均有出席此次发布会,共同见证DuerOS智慧芯片的问世。 据悉,此次合作将构建包括度秘大脑、语音解决
[手机便携]
关于ADS容易出错的地方
建立工程,编辑源文件,把文件加入工程,设置工程属性、编译与链接选项,make! Error : A1163E: Unknown opcode vector.s line 14 14 00000020 Reset_Addr DCD Reset_Handler 。。。 全国人民再次震惊了,世界人民傻眼了。。。 我这次的的确确是在ADS的CodeWarrior中编辑的代码~!为什么!?为什么armassembler又不认识DCD了呢? 我一个字母一个字母的检查,没有发现错误。我狠狠地在出错的代码前后各敲了一次回车,确保正确换行,还是报错。。。我去掉了Reset_Addr DCD Reset_Handler这条伪操作语句前面的Tab
[单片机]
关于ADS容易出错的地方
ARM与SDRAM芯片的联接
通常ARM芯片内置的内存很少,要运行Linux,需要扩展内存。ARM9扩展内存使用SDRAM内存,ARM11使用 DDR SDRAM。以ARM9核心的S3C2440为例,介绍一下内存的扩展。 S3C2440通常外接32位64MBytes的SDRAM,采用两片16位256Mbits的SDRAM芯片(如HY57V561620),SDRAM芯片通过地址总线、数据总线、若干控制线与S3C2440芯片相连。 S3C2440的地址总线:27根地址线----ADDR 。 S3C2440的数据总线:32根数据线----DATA 。 S3C2440的SDRAM控制线: 1、SDRAM片选----nGCS6(对应ARM的地址0x3000 0
[单片机]
Arm指令集寻址方式
我这里讲的快速是指能够快速的上手工作,但任何一门学问都包含着比较具体的知识在里面,这些知识是需要长年累月的积累才可以逐渐从未知到已知,从笨拙到熟练.快速只是一种学知识的步骤,能够在短的时间里把那些不常用的知识排到后面来学习. 一些书中介绍,不需要了解汇编语言就可以进行Arm的编程,我想对于一般的开发者来讲C语言大概是够用了,但不了解汇编,很多原理性和底层的工作就会做起来困难了.即要快速,又要保证一定的汇编知识,那么学的时候可以走马观花的看一下,至少有个印象,再以后如果碰到的时候,逐渐学习和加深就可以了. 记忆是比较苦涩的事情,我觉得使用例子最好的方法,例子再加查找,以后用起来比较方便.前面讲过,Arm
[单片机]
TI 宣布为其新型OMAP35x发展软件及开发套件
产品必需先能完美整合清晰的视讯、影像、声音及多媒体组件,才能在顺利运作的同时提供吸引人的使用者界面。为协助视讯、工业、医疗及汽车工业的开发人员减轻繁重的软件整合及开发作业,德州仪器 (TI) 近 日宣布推出 OMAP35x 数字视讯软件开发套件( DVSDK )、多种开放原始码开发套件,以及三款以 ARM® Cortex ™ -A8 为基础的 OMAP35x 装置,包含 OMAP3515 、 OMAP3525 与 OMAP3530 应用处理器。这几款超纯量处理器提供笔电般的效能与低功耗,可促使开发人员采用先进的直觉式使用者界面、 3D 图像、完整的浏览功能及多种联机选项,以提升作业效率
[嵌入式]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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