以AT89C51为主器件.I2C总线上连接4个PCF8591芯片,芯片地址分别为(OOOb、OlOb、020b、400b),89C51的P3.6作为SCL信号.P3.7做为SDA信号,每个芯片的模拟输入采用单端方式输入,参考电压VREF选用4.
学过C语言的人都知道,main函数是程序启动的入口函数,每一个C语言程序里有一个main函数,在程序里它是唯独一个不能被其他函数调用的特殊函数。在众多的单片机C语言编译器里对main函数的写法都没有明
我们通过对一个自动演奏延迟程序电路及配套程序的介绍,来讲解“置位”、“清位”等指令和延时程序的编制原理。 一、发声原理 由图可知,如果我们要使B2发出一定频率的声音,只要改变
该电路连接见下图所示:89C51的P31脚(TXD)与24C01的SCL脚相连,作为时钟输入端。89C51的P30脚(RXD)与24C01的SDA脚相连,作为数据读写端。两者都通过上拉电阻接5V电源。单片机其余连线照常,在此图中
该系统的程序设计主要包括两大部分,分别是USB接口部分固件程序和计算机端的CH372驱动程序。前者主要包括了单片机和CH372的初始化、读写接口程序和中断服务程序;后者包括了USB设备的驱动程序和相关
uIP其主要是为8位和16位系统设计的,程序在编写时就考虑到了移植问题。uIP的主要文件包括uip.c和uip_arp.c。 (1)移植的基本过程。 针对所用编译器的类型更改定义数据类型,底层RTL80
volatile的意思是易变的、可变的,作用是限制编译器优化某些变量。首先看一段C51程序: Keil在优化级别是为8时得到如下汇编代码(部分未列出): 可以看到,变量d的值赋给x,y,z时,只有x中
Keil C51编译器是一个完全支持ANSI标准的C语言编译器,除少数关键地方外,KEILC和标准ANSI C语言是基本类似的;但是由于51单片机结构的特殊性,KEIL C进行了一些扩展。 KEIL C51的扩展类型如
USB固件分为通用枚举配置部分和类协议部分。以利用CH375主机端协议与大容量存储设备(例如U盘等)通信为例,介绍固件编程中重要的函数及其实现方法。 主机要想识别USB设备,必须获得设备的各
FFT算法是计算离散傅里叶变换的方法,它大大地减少了运算量,缩短了运算时间,使实时分析成为可能。 按时间抽取的FFT算法通常将原始的数据倒位序存储,最后按照正常顺序输出结果X 下面是128点
单片机的一个浮点数一般在KeilC51中是以4字节形式存储的,格式严格遵循IEEE-754标准。在单片机二进制数据中,浮点数用两个部分来表示,基C为2,E为阶码,M为尾数,E的保存形式是一个0~255的8位值,
为了更好的与实际衔接,有三个方面要考虑:发送FSK信号的形式和参数,解调器的抗干扰性能,即差错率与输入信号比的关系,技术的可行性及设备成本等。从抗干扰性能上考虑我们采用相干解调法最好,但
我们可以用数字滤波方法的C语言程序代码子函数,来完成软件滤波功能。我们假定,从8位AD中读取数据,如果是更高位的AD可以定义数据类型为int,子程序定义为get_ad()。 (1)算术平均滤波程序,
串行A/D转换器转换后的结果是以串行方式输出,数字量以串行方式输出可简化系统的连线,缩小电路板的面积,节省系统的资源。下面以TLC2543为例,介绍串行A/D驱动程序的设计。 89C51单片机与T
AVR单片机问世以来,获得广泛关注。它是一种采用精简指令集、以时钟周期为机器周期的高速单片机。它采用快速寄存器文件(共有32个寄存器 R0~R31,其中R16~R31具有较强通用功能)、快速单周期指令。另外