历史上的今天
返回首页

历史上的今天

今天是: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 输出一个新数据。

推荐阅读

史海拾趣

DAYA公司的发展小趣事

在环保意识日益增强的今天,大雅智能积极响应国家节能减排政策,推动绿色环保生产。通过采用环保材料和节能技术,大雅智能有效降低了产品生产和使用过程中的能耗和排放。同时,大雅智能还积极参与环保公益活动,倡导绿色消费理念。这些举措不仅提高了大雅智能的社会责任感形象,也为其可持续发展奠定了坚实基础。

以上五个故事均基于虚构的DAYA公司(大雅智能)在电子行业中的发展经历,旨在展示一个电子科技公司可能面临的市场挑战、机遇以及发展策略。这些故事虽然并非真实事件,但其中蕴含的商业逻辑和发展趋势对于电子行业的其他公司也具有一定的借鉴意义。

EUDYNA公司的发展小趣事

在电子行业,产品质量是企业生存和发展的基石。EUDYNA深知这一点,因此对每一件产品都进行严格的测试和检验。公司建立了完善的质量管理体系,从原材料采购到生产过程中的每一个环节都进行严格把控。这种对质量的坚守不仅赢得了客户的信赖和好评,也为EUDYNA赢得了良好的口碑和声誉。

Broadband公司的发展小趣事

随着技术的不断进步和市场需求的日益增长,EUDYNA开始实施全球化战略。公司不仅在全球范围内建立了多个研发中心和生产基地,还积极拓展海外市场,与众多国际知名企业建立了紧密的合作关系。EUDYNA的全球化战略不仅为公司带来了更广阔的市场空间,也进一步提升了其品牌影响力和竞争力。

Eagle Plastic Devices公司的发展小趣事

进入21世纪后,随着信息化和智能化技术的快速发展,Eagle Plastic Devices公司开始积极推动数字化转型和智能制造。公司引入了先进的信息化管理系统和智能生产设备,实现了生产过程的自动化和智能化。这不仅提高了生产效率和产品质量,还降低了生产成本和人力资源投入。同时,公司还利用大数据和人工智能技术优化供应链管理、市场营销等方面的工作,进一步提升了公司的综合竞争力。

Cal Crystal Lab Inc / Comclok Inc公司的发展小趣事

随着电子行业的快速发展,技术创新和合作成为了企业发展的重要驱动力。Cal Crystal Lab Inc深知这一点,积极寻求与其他企业的技术合作。通过与国内外知名高校和研究机构的深入合作,公司不断引进新技术、新工艺,提升了产品的技术含量和附加值。同时,Cal Crystal Lab Inc还与其他企业建立了战略合作关系,共同开发新产品、拓展新市场,实现了共赢发展。

EQCOLOGIC公司的发展小趣事

随着环保意识的日益增强,电子行业对环保的要求也越来越高。EQCOLOGIC公司积极响应环保号召,将环保理念贯穿于产品研发、生产和销售的各个环节。公司采用环保的生产工艺和材料,减少污染物的排放;同时,还开展了一系列环保宣传活动,提高员工和消费者的环保意识。这些举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了基础。

问答坊 | AI 解惑

基于MSP430 的AD9852任意信号发生器

本帖最后由 paulhyde 于 2014-9-15 09:17 编辑 有没有人用DDS芯片做过任意信号发生器呀……给点意见和资料呀,谢谢哈……我的邮箱676797119@qq.com  …

查看全部问答>

基于S52的超声波测距仪

基于S52的超声波测距仪…

查看全部问答>

浅谈电视监控系统智能化和集约化方案

视频监控一直是安防技术应用的热点之一,以其直观、方便、信息内容丰富而被广泛应用于军队、银行、海关、机场、高速公路、商场、医院、学校、机关、社会小区、家庭等各种场合。视频监控系统的智能化水平和集成化发展速度,也直接反映了不同阶段电子 ...…

查看全部问答>

串口通讯问题,十分奇怪

用UTU2440开发板接收电脑串口发送数据,正常 用用电脑接收工作板发送过来的数据,正常 但是用UTU2440接收工作板发送过来的数据不正常,并且与波特率有一定的关系 正常数据为$L-0360,+000,00000,R-0633,+000,00000# 在波特率为4800是用UTU2440开 ...…

查看全部问答>

vs2008下安装sqlce

1.安装哪个版本的sqlce? 2.如何配置 3.基本增删查改和SQL Server是否一致?…

查看全部问答>

怎么在DSP YCbCr 总线上 挂两个CMOS的传感器

    怎么在DSP YCbCr 总线上 挂两个CMOS的传感器,小弟没这样用过,请教下大家,现在是用的TI DM644X(ARM+DSP) 平台,原来的参考设计上YCbCr是可以挂一个2路AD 的IC,并可以把2路视频同时通过YCbCr数字接口转给系统;     我现在不 ...…

查看全部问答>

买个无线网卡,却无法上网!

每次拨号连接网络都提示“设置系统参数失败”!! 前几天还好好的,刚出现的这个毛病。…

查看全部问答>

有人知道ADV7170/7171可以用VGA连接到电脑显示器上显示吗

我现在在做一个板子,输出的DA用的ADV7170,准备输出RGB信号通过VGA连接到电脑显示器上显示,同步信号通过FPGA产生 但是我了解到这个芯片输出的RGB好像是欧洲SCART的标准,就是隔行的,但是我知道电脑上的VGA都是逐行的信号吧,那这么做兼容吗? ...…

查看全部问答>

有谁用过CS5460a这个芯片?

我在用CS5460a做一个功率表,遇到一些问题,有谁以前用过这块芯片吗?可以加个QQ交流一下吗…

查看全部问答>