历史上的今天
今天是:2024年10月16日(星期三)
2019年10月16日 | 单片机AD7705转换程序
2019-10-16 来源:51hei
#include #include #define uint unsigned int //宏定义 #define uchar unsigned char//宏定义 #define datlcd P0 sbit lcdrs = P2^0; //液晶读 sbit lcdrw = P2^1; //液晶写 sbit lcden = P2^2;//液晶选择 #define SOFT_SPI /* 定义此行表示使用GPIO模拟SPI接口 */ //#define HARD_SPI /* 定义此行表示使用CPU的硬件SPI接口 */ /* 通道1和通道2的增益,输入缓冲,极性 */ #define __CH1_GAIN_BIPOLAR_BUF (GAIN_1 | UNIPOLAR | BUF_EN) #define __CH2_GAIN_BIPOLAR_BUF (GAIN_1 | UNIPOLAR | BUF_EN) /* 接线方法: STC89C52开发板,请使用杜邦线连接。 TM7705模块 STC89C52开发板 VCC ------ 5.0V (3.3V) GND ------ GND CS ------ P1.0 RST ------ P1.1 DIN ------ P1.2 SCK ------ P1.3 DOUT ------ P1.4 DRDY ------ P1.5 */ #if !defined(SOFT_SPI) && !defined(HARD_SPI) #error "Please define SPI Interface mode : SOFT_SPI or HARD_SPI" #endif #ifdef SOFT_SPI /* 软件SPI */ /* 定义GPIO端口 */ sbit CS = P1^0; sbit RESET = P1^1; sbit DIN = P1^2; sbit SCK = P1^3; sbit DOUT = P1^4; sbit DRDY = P1^5; /* 定义口线置0和置1的宏 */ #define CS_0() CS = 0 #define CS_1() CS = 1 #define RESET_0() RESET = 0 #define RESET_1() RESET = 1 #define DI_0() DIN = 0 #define DI_1() DIN = 1 #define SCK_0() SCK = 0 #define SCK_1() SCK = 1 #define DO_IS_HIGH() (DOUT != 0) #define DRDY_IS_LOW() (DRDY == 0) #endif #ifdef HARD_SPI /* 硬件SPI */ #error "Don't surport Hard SPI Interface mode" #endif /* 通信寄存器bit定义 */ enum { /* 寄存器选择 RS2 RS1 RS0 */ REG_COMM = 0x00, /* 通信寄存器 */ REG_SETUP = 0x10, /* 设置寄存器 */ REG_CLOCK = 0x20, /* 时钟寄存器 */ REG_DATA = 0x30, /* 数据寄存器 */ REG_ZERO_CH1 = 0x60, /* CH1 偏移寄存器 */ REG_FULL_CH1 = 0x70, /* CH1 满量程寄存器 */ REG_ZERO_CH2 = 0x61, /* CH2 偏移寄存器 */ REG_FULL_CH2 = 0x71, /* CH2 满量程寄存器 */ /* 读写操作 */ WRITE = 0x00, /* 写操作 */ READ = 0x08, /* 读操作 */ /* 通道 */ CH_1 = 0, /* AIN1+ AIN1- */ CH_2 = 1, /* AIN2+ AIN2- */ CH_3 = 2, /* AIN1- AIN1- */ CH_4 = 3 /* AIN1- AIN2- */ }; /* 设置寄存器bit定义 */ enum { MD_NORMAL = (0 << 6), /* 正常模式 */ MD_CAL_SELF = (1 << 6), /* 自校准模式 */ MD_CAL_ZERO = (2 << 6), /* 校准0刻度模式 */ MD_CAL_FULL = (3 << 6), /* 校准满刻度模式 */ GAIN_1 = (0 << 3), /* 增益 */ GAIN_2 = (1 << 3), /* 增益 */ GAIN_4 = (2 << 3), /* 增益 */ GAIN_8 = (3 << 3), /* 增益 */ GAIN_16 = (4 << 3), /* 增益 */ GAIN_32 = (5 << 3), /* 增益 */ GAIN_64 = (6 << 3), /* 增益 */ GAIN_128 = (7 << 3), /* 增益 */ /* 无论双极性还是单极性都不改变任何输入信号的状态,它只改变输出数据的代码和转换函数上的校准点 */ BIPOLAR = (0 << 2), /* 双极性输入 */ UNIPOLAR = (1 << 2), /* 单极性输入 */ BUF_NO = (0 << 1), /* 输入无缓冲(内部缓冲器不启用) */ BUF_EN = (1 << 1), /* 输入有缓冲 (启用内部缓冲器) */ FSYNC_0 = 0, FSYNC_1 = 1 /* 不启用 */ }; /* 时钟寄存器bit定义 */ enum { CLKDIS_0 = 0x00, /* 时钟输出使能 (当外接晶振时,必须使能才能振荡) */ CLKDIS_1 = 0x10, /* 时钟禁止 (当外部提供时钟时,设置该位可以禁止MCK_OUT引脚输出时钟以省电 */ /* 2.4576MHz(CLKDIV=0 )或为 4.9152MHz (CLKDIV=1 ),CLK 应置 "0"。 1MHz (CLKDIV=0 )或 2MHz (CLKDIV=1 ),CLK 该位应置 "1" */ CLK_4_9152M = 0x08, CLK_2_4576M = 0x00, CLK_1M = 0x04, CLK_2M = 0x0C, FS_50HZ = 0x00, FS_60HZ = 0x01, FS_250HZ = 0x02, FS_500HZ = 0x04, /* 四十九、电子秤应用中提高TM7705 精度的方法 当使用主时钟为 2.4576MHz 时,强烈建议将时钟寄存器设为 84H,此时数据输出更新率为10Hz,即每0.1S 输出一个新数据。
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 09:17 编辑 有没有人用DDS芯片做过任意信号发生器呀……给点意见和资料呀,谢谢哈……我的邮箱676797119@qq.com … 查看全部问答> |
|
视频监控一直是安防技术应用的热点之一,以其直观、方便、信息内容丰富而被广泛应用于军队、银行、海关、机场、高速公路、商场、医院、学校、机关、社会小区、家庭等各种场合。视频监控系统的智能化水平和集成化发展速度,也直接反映了不同阶段电子 ...… 查看全部问答> |
|
用UTU2440开发板接收电脑串口发送数据,正常 用用电脑接收工作板发送过来的数据,正常 但是用UTU2440接收工作板发送过来的数据不正常,并且与波特率有一定的关系 正常数据为$L-0360,+000,00000,R-0633,+000,00000# 在波特率为4800是用UTU2440开 ...… 查看全部问答> |
|
怎么在DSP YCbCr 总线上 挂两个CMOS的传感器,小弟没这样用过,请教下大家,现在是用的TI DM644X(ARM+DSP) 平台,原来的参考设计上YCbCr是可以挂一个2路AD 的IC,并可以把2路视频同时通过YCbCr数字接口转给系统; 我现在不 ...… 查看全部问答> |
|
有人知道ADV7170/7171可以用VGA连接到电脑显示器上显示吗 我现在在做一个板子,输出的DA用的ADV7170,准备输出RGB信号通过VGA连接到电脑显示器上显示,同步信号通过FPGA产生 但是我了解到这个芯片输出的RGB好像是欧洲SCART的标准,就是隔行的,但是我知道电脑上的VGA都是逐行的信号吧,那这么做兼容吗? ...… 查看全部问答> |




