#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) /* 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 输出一个新数据。
上一篇:你从未见过的单片机密码锁设计(基本版)
下一篇:DS1302时钟+1602液晶,proteus电路图+程序
推荐阅读
史海拾趣
如今的电子设备中所包含的软件代码量动辄达到数百万行。用不了几年,设备软件代码量又会成倍增长。因此SQA (Software quality assurance,软件质量保证)比以往任何时候都更为关键,也更加困难。为了将设备质量缺陷消灭在萌芽状态,从而大幅降低设备 ...… 查看全部问答∨ |
|
谢谢大家对我的支持,2011我会继续努力的。 现在我在做统计的工作,在回我贴的朋友里并明确告诉我投我的,我做了下统计,把名单列出来,大家看看还有没有遗漏?有出路的话请抓紧时间跟帖告诉我,你应该排在的顺序,那个压缩包的密码我先不公布,等 ...… 查看全部问答∨ |
#include<reg52.h> typedef unsigned char uchar ; typedef unsigned int uint; uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar tt,dat; sbit button = P3^7; void delay_50us(uint t) {   ...… 查看全部问答∨ |
谁有18B20和51的正负温度控制程序。 温度设定在-30到+30之间, 采用C语言, 芯片:51. 感温:18B20。 可以发到我的信箱里:1239300456@qq.com 不胜感谢!… 查看全部问答∨ |
|
大家看过电源设计小贴士49和50后觉得怎么样? 现在将会和大家分享电源设计小贴士51:了解寄生电容器。 输出电容器的阻抗有助于提高纹波和瞬态性能。随着电源频率升高,寄生问题的影响更大、更不应忽视。在20kHz附近,铝电解电容器的ESR大到足以主 ...… 查看全部问答∨ |