TC0单次定时时间与系统时钟频率、预分频比及TCNT0初值密切相关,需要仔细考虑和计算,但向导程序可以很轻松地为我们解决这些问题。向导程序将为我们计算出合适的预分频比及定时器初值,并打开TC0中断,同时还给出了单次定时的误差。计数器溢出后本应自动从0开始计数,但在TC0中断服务程序中计数初值被更改为0x64,而且应该一进入中断服务程序立即被更改。......
2023-11-26
ISIS元件库中没有加速度传感器ADXL345,所以需要在实际的电路板上来学习和应用这个三轴加速度传感器的编程。ADXL345加速度传感器已经在和本书配套的电路学习板上焊接好,与单片机的连接采用的是TWI总线。在这个练习中,软件编程主要工作是首先设置好传感器芯片内部的工作寄存器,使其正常工作,然后源源不断地取出x、y和z轴的加速度数值,并将加速度数值显示出来。如果需要,可以根据得到的加速度值,进行各种具体应用。在程序中,最好先用宏定义以明确的寄存器名称来代替各个相关的寄存器地址,部分如下:
由于ADXL345在初始化的时候,要频繁地给各个寄存器赋初值,为方便编程,将TWI主机双字节写程序变成函数如下。程序中假设每次发送的结果都正确,所以将每次发送后查看状态寄存器信息的语句注释掉了。addr是要写入的寄存器地址,v是要写入的初值,slv_ad为ADXL345从机地址。
ADXL345的简单初始化工作如下:
下面为从ADXL345的dataX、dataY、dataZ寄存器中取加速度测量值的示例程序函数,在主程序while循环中调用。在程序执行过程中,如果对ADXL345只是执行了单字节的读取操作,那么FIFO缓存中当前采样值的其余字节数据就会丢失。因此,所有目标轴的数据应以多字节读取操作进行。与单字节读取不同,在TWI多字节读取时,每收到一个字节数据,主机都应给出应答信号。读取加速度数据开始时,应先给出起始地址0x32,每读取一个字节,ADXL345会自动将内部寄存器地址递增,直到0x38,表明数据传输结束。加速度测量值以二进制补码形式给出,而计算机以及单片机中的数据通常也是以二进制补码表示,所以,可以直接将取回来的加速度数值送给变量存储和运算。下面的示例程序是将加速度传感器作为单片机的任务之一,并写成一个函数,在main函数中调用。在主程序之前,需要先定义一些全局变量,它们分别为:
下面为单片机INT1按键中断服务程序,在其中更改显示哪个轴的加速度值。
ADXL345进一步练习:(www.chuimin.cn)
(1)应用ADXL345设计一个倾角测量系统。
(2)应用ADXL345设计一个计步器。
(3)应用ADXL345设计自由落体检测。
(4)应用ADXL345设计振动、晃动检测。
有关AVR单片机与传感器基础的文章
TC0单次定时时间与系统时钟频率、预分频比及TCNT0初值密切相关,需要仔细考虑和计算,但向导程序可以很轻松地为我们解决这些问题。向导程序将为我们计算出合适的预分频比及定时器初值,并打开TC0中断,同时还给出了单次定时的误差。计数器溢出后本应自动从0开始计数,但在TC0中断服务程序中计数初值被更改为0x64,而且应该一进入中断服务程序立即被更改。......
2023-11-26
1.提示CVAVR中,为了减小代码体积和加快程序运行速度,最好遵循下述原则:尽可能使用无符号变量;使用最小的数据类型,例如位型和无符号字符型;通过“Project”→“Configure”→“C Compiler”→“Compilation”→“Bit Variables Size”命令分配的位变量空间要尽可能的小,以便空出寄存器用以分配给其他全局变量;尽可能使用TINY模式;使用flash关键字把常量放在Flash中;程序调试结束后要关闭“Stack End Markers”选项,把程序再编译一次;与时间有关的部分用汇编语言来写。......
2023-11-26
应用判0指令控制累加“1”循环显示的程序。程序点评:控制“01”位就改变“01”位的状态,由“0”变“1”。应用判0指令编写倒计时程序实例运行效果:在单片机键盘上输入机器码程序复位并运行后,01位灯亮,倒计时程序不运行。只有跨线一端接电源正极,另一端触接01位,01位被触接置“1”状态,倒计时程序才开始计时显示。实际中可以通过程序控制驱动执行机构做动作。程序点评:在单片机电路中“-1”键与06位相连接。......
2023-11-07
1997年,Atmel公司出于市场需求,推出了全新配置的精简指令集RISC单片机高速8位单片机,简称AVR。AVR单片机废除机器周期,采用RISC,以字为指令长度单位,取指周期短,可预取指令,实现流水作业,可高速执行指令,有高可靠性为后盾。AVR单片机在软/硬件开销、速度、性能和成本多方面取得优化平衡,是高性价比的单片机。......
2023-06-26
由于单片机编程与硬件联系紧密,所以每一种单片机以及同种单片机不同的C语言编译器的语法可能稍有不同。它是HP Info Tech专门为AVR系列单片机设计的C语言编译器。下面是一个最简单的单片机C语言程序,通过这个例子,可以学习和了解单片机编程的特点及与PC机C语言编程的区别。不管是计算机还是单片机,程序代码都是由CPU来执行的。计算机上有操作系统,某一程序运行时只是暂时取得了CPU的控制权,程序结束后要把控制权返还给操作系统。......
2023-11-26
硬件设计一个嵌入式系统的硬件电路设计包括三部分内容:单片机芯片的选择、单片机系统扩展、系统配置。2)系统的扩展与外设配置的水平应充分满足应用系统当前的功能要求,并留有适当余地,便于以后进行功能的扩充。4)整个系统中相关的元器件要尽可能做到性能匹配。2)各功能程序实现模块化、系统化。4)运行状态实现标志化管理。软件抗干扰是计算机应用系统提高可靠性的有力措施。......
2023-10-28
if-else条件分支语句是选择结构的一种形式,是最常用的语句之一。这意味着如果if后面的表达式成立(不为0),则执行if下面的语句,否则直接向下执行。......
2023-11-07
所谓的函数调用就是在一个函数体中引用另外一个已经定义的函数,前者为主调函数,后者为被调用函数。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值。因此在以后各主调函数中不用对ann和circle函数说明,可直接调用。......
2023-11-04
相关推荐