2020年 01月 12日 星期日
您的位置: 威廉希尔主页 > 单片机技术 >

AVR单片机8位数码管显示的程序实现

来源:未知     作者:威廉希尔     发布时间:2020-01-12 08:37         

  下面给出这个程序的主程序文件,在这个程序中我们应该能够知道这个程序都包含了那几块,具体来说我们应该能够在这个程序中把以下几个部分找出来:预编译语句、的定义、函数的声明、主函数、函数定义。如果你还不能够准确找出这几部分,那么需要把前面的内容再详细阅读一下。

  在这个主程序文件中有人可能会注意到有一些我们前面没有介绍过的内容,比如extern这个单词,它在这里起什么作用?

  这就牵涉到C语言的关键字了,关于C语言的关键字,我们可以到相关的C语言教材中去做详细了解,在这里我们只针对extern这个关键字作出解释,我们注意到extern用在一个函数声明的地方,它的作用就是把这个函数声明为外部函数,这样我们在整个项目的所有文件中就都可以调用这个函数了。同理extern也可以用来声明一个变量为外部变量。

  我们可能还会有一个疑惑:#include hc595.h这个头文件包含语句中的hc595.h有什么作用,它是GCC提供的还是我们自己编写的?

  这里我们就要学习C语言中的一个重要的概念:模块化程序设计。何为模块化程序设计?它实现什么功能?如果要铺开来讲的话,可能需要一本书的内容。我们耗不起这个时间和精力。其实我们只需要知道,模块化程序设计是为了简化程序容量而采取的一种将一个程序分成不同的模块,然后通过特定的方法将这些模块组合起来共同完成同一个目标。通俗的说就是化整为零。

  在我们刚开始学习 的时候,我们编写的程序都很简单,程序量也不大,所以往往涉及不到模块化程序设计,但是这是一种很好的编程思,我们有必要掌握。本实例就是采用的这种方法。

  模块化程序设计的思是:将实现相同功能的程序单独编写,然后实现一个综合的功能,举个例子,我们想实现一个液晶显示的温度测量程序,那么我们可以把液晶显示相关的程序放在一个文件中,把温度测量的程序放在另一个文件中,最后在主程序中调用这两个文件来实现整体的功能。

  通常我们在进行模块化程序设计的时候,常常将,端口设置,函数声明等部分保存在一个.h文件中,而将函数定义部分放在一个.c文件中,在编写主程序文件的时候,用预处理命令#include将.h文件包含起来,而在编译的时候将所有用到的.c文件一起编译。这样就实现了模块化文件的整合。

  在本实例中,我们将74HC595相关的变量定义,端口定义,函数声明放在74HC595.h文件中,而主程序中的#include hc595.h这句话实现了将这个文件包含到主程序中的功能。

  在主程序中我们使用预定义语句将.h文件包含到了主程序文件中,那么我们怎样实现将.c文件编译到整个项目程序中呢?在这里我们只要在makefile文件中将这个.c文件加进去就可以了,如下图所示,在src= $(TARGET).C的后面空一格,然后输入我们所定义的.c文件的名称,然后保存makefile文件的更改。最后进行编译就可以了,编译的时候如果我们仔细观察编译器的输出信息,会发现不但编译了main.c文件,同时也编译了74hc595.c文件。

  本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

  1.舵机驱动的基本原理(可以参考)控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。简单的来讲,就是输出一个周期为20Ms,不同的占空比对应舵机转过不同的角度。难点主要在于舵机控制信号需要保持,这样就比用脉冲控制步进电机要复杂一些。你需

  在avrfeaks论坛里,有一个帖子是关于在codeblocks下(与winavr结合)开发avr单片机的,挺不错的,这里转载一下:I got curious, so I downloaded the current C::B installer. It looks better than when I last used it (a year ago?):- A working installation program, with no need to install graphics packages and stuff (WxWidget, MinGW) separately.- A user manual is now

  三倍,同时,晶振频率最高可达40MHz。W77系列还增加了看门狗WatchDog、两组uART、两组DVTR数据指针、ISP等多种功能。2、PIC单片机的优缺点分析PIC单片机CPU采用RISC结构,分别有33、35、58条指令(视单片机的级别而定),属精简指令集。而51系列有111条指令,AVR单片机有118条指令,都比前者复杂。采用Haryard双总线结构,运行速度快(指令周期约160~200nS),它能使程序存储器的访问和数据存储器的访问并行处理,这种指令流水线结构,在一个周期内完成两部分工作,一是执行指令,二是从程序存储器取出下一条指令,这样总的看来每条指令只需一个周期(个别除外),这也是高效率运行的原因之一。此外,它还

  旋转编码器好像不是单片机玩家很常用的器件,但是我们的开发板上有,原因如下:旋转编码器挺好用的。电位器能旋转的角度有限,旋转编码器可以无限圈旋转;旋转时不连续,有卡点,适合对应离散数据。开发板上选用的旋转编码器,使用起来简单、方便。本来旁边的电位器(旋钮,以后会讲)一枝独秀,挺孤单的,我就配一个高度大致相同的旋转编码器陪伴它。今天我想写旋转编码器,于是在网络上搜索了一下,相关资料很少。最基本地,旋转编码器的作用是将角位移、角速度等机械量转换为电信号。本文不求成为旋转编码器的百科全书,但会把触点电刷式增量式旋转编码器的原理楚。这里出现了两个定语,是对类别的限定;关于旋转编码器的分类,请自行百度

  )。AVR单片机提供的硬件组件不是UART,而是USART(S代表Synchronous,同步的),相比UART额外支持同步通信。所谓“同步”是指收发双方通过时钟同步,“异步”是指没有时钟来同步,但实际上双方还是由一些特殊信号同步的。数据在UART总线上以“帧(frame)”为单位发送,如下图所示,带有方括号的位是可选的。一帧包含一个起始位、5~9个数据位(常用8位;很多设备不支持9位)、可选的一个校验位(偶校验或奇校验,即所有数据位与0或1的异或结果)与1或2个终止位。起始位与终止位统称为同步位,用于在异步总线上起到同步的作用,这样接收方才能知道一帧何时开始。波特率的定义是信息在通信信道上传输的速率。假如信号线

  1. 概述1.1 背景EasyElectronics Library v1.0是开发板EasyElectronics配套的库。EasyElectronics是一款基于AVR单片机的开发板,以板载资源丰富、使用简便为特色。1.2 库组织结构库由C语言编写,release中包含若干头文件与一个静态库文件。在头文件中,ee.h直接或间接地包含了所有其他头文件。用户手动include ee.h中没有直接include的头文件是不推荐的,但也不会报错。1.3 版本号本手册对应的库版本号为1.0。版本号由两位构成,前一位为主版本号,当库有结构性的变化或不与先前版本兼容时,此位+1;后一位为副版本号,当库中加入少量新内容时,此位+1。对于修正版

  【报名】在RISC-V应用中实现MultiZone安全性|Microchip 安全解决方案系列在线研讨会

  了解ADI电网管理、能源计量方案,答题赢Kindle、《新概念模拟电》【世健的ADI之主题游 能源站】

  STM32MP1系列通用型MPU, 集成双 Arm® Cortex®-A7和 Cortex®-M4 内核

  STM32MP1系列通用型MPU, 集成双 Arm® Cortex®-A7和 Cortex®-M4 内核

  51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程

      威廉希尔