= send_data<<1;

}

}

}

/**********************************************************************

*电流有效值采集函数

*********************************************************************

unsigned int get_IRMS(unsigned char cs5460_command)

{

unsigned char buf_I[3];

unsigned char j;

float IRMS;

unsigned int II_RMS_INT;

float G=1.0/2.0,temp=0.0;

Wait_DRDY_High();

cs5460_READ(cs5460_command);

buf_I[0] = rec_data[0];

buf_I[1] = rec_data[1];

buf_I[2] = rec_data[2];

Write_DRDY_LOW();

for(j=0;j<8;j++)

{

if(buf_I[0]&0x80)

temp+=G;

G=G/2.0;

buf_I[0]<<=1;

}

IRMS = 0.0464*((float)buf_I[0])-0.0114;

II_RMS_INT=(unsigned int)(IRMS*1000.0);

//        IRMS = 11.9402*temp+0.0586;

return(II_RMS_INT);

} */

/***************************************************************

*电压有效值采集函数

**************************************************************

float get_VRMS(unsigned char cs5460_command)

{

unsigned char buf_U[3];

unsigned char j;

float VRMS;

float G=1.0/2.0,temp=0.0;

Wait_DRDY_High();

cs5460_READ(cs5460_command);

buf_U[0] = rec_data[0];

buf_U[1] = rec_data[1];

buf_U[2] = rec_data[2];

for(j=0;j<8;j++)

{

if(buf_U[0]&0x80)

temp+=G;

G=G/2.0;

buf_U[0]<<=1;

}

//VRMS = 536.59*temp+1.50;

VRMS = (22.831*temp-1.206)*44.0;

return(VRMS);

} */

/***************************************************************

*有功功率采集函数

**************************************************************

float get_PW(unsigned char cs5460_command)

{

unsigned char buf_PW[3];

unsigned char j;

float PW;

float G=1.0/2.0,temp=0.0;

Wait_DRDY_High();

cs5460_READ(cs5460_command);

buf_PW[0] = rec_data[0]&0x7f;

buf_PW[1] = rec_data[1];

buf_PW[2] = rec_data[2];

for(j=0;j<8;j++)

{

if(buf_PW[0]&0x80)

temp+=G;

G=G/2.0;

buf_PW[0]<<=1;

}

PW = 10350.0*temp+70.1383;

return(PW);

}  */

/***************************************************

*        定时器中断

****************************************************/

void timer1() interrupt 1

{

TH0        = 0x3c;

TL0        = 0xb0;

tt++;

if(tt==0x14)

{

tt=0;

Wait_DRDY_High();                                     //等待电压转换完成

cs5460_READ(0x18);                                 //上一周期电压有效值        //0 0 0 1 1 0 0 0   地址12

inode[zhilu].UU[0] = rec_data[0];

inode[zhilu].UU[1] = rec_data[1];

inode[zhilu].UU[2] = rec_data[2];

Wait_DRDY_High();                                     //等待电流转换完成

cs5460_READ(0x16);

inode[zhilu].II[0] = rec_data[0];

inode[zhilu].II[1] = rec_data[1];

inode[zhilu].II[2] = rec_data[2];

Wait_DRDY_High();                                     //等待能量转换完成

cs5460_READ(0x14);                                     //上一周期能量值                 //0 0 0 1 0 1 0 0    地址10

if((rec_data[0]&0x80)==0x80)                    //如果电能的最高位为1,则值是负数,需要对数据进行补码处理

{

inode[zhilu].PW[0] = (~rec_data[0]);        //数据进行补码处理,负数的补码是反码加1

inode[zhilu].PW[1] = (~rec_data[1]);

inode[zhilu].PW[2] = (~rec_data[2])+0x01;

if(((inode[zhilu].PW[2]&0xff)==0x00)&&(inode[zhilu].PW[1]==0xff))//加1超限了

{

inode[zhilu].PW[1] =0x00;

inode[zhilu].PW[0]=inode[zhilu].PW[0]+0x01;

}

}

else

{

inode[zhilu].PW[0] = rec_data[0];

inode[zhilu].PW[1] = rec_data[1];

inode[zhilu].PW[2] = rec_data[2];

}

time2=1;

}

}

/******************************************************************************

*串口中断,中断号4

*******************************************************************************/

void timer0() interrupt 4

{

//定时器计数50000溢出一次

UU_COUNT++;         //定时计数

RI=0;

buf=SBUF;

/****************************************************************************************

*                                计数23,计时大约50ms

***************************************************

if(UU_COUNT==0x2d)        //计数45,大约100ms

{

UU_COUNT=0;

UU_REC_COUNT++;//接收计数

}

/****************************************************************************************

*        计时2S时间到 将20组采集的电压有效值数据中去掉最大和最小值,剩下的取平均值

***************************************************************************************

if(UU_REC_COUNT==0x0a) //10          计时1s

{

UU_REC_COUNT=0;

Wait_DRDY_High();                                     //等待电压转换完成

cs5460_READ(0x18);                                 //上一周期电压有效值        //0 0 0 1 1 0 0 0   地址12

inode[zhilu].UU[0] = rec_data[0];

inode[zhilu].UU[1] = rec_data[1];

inode[zhilu].UU[2] = rec_data[2];

Wait_DRDY_High();                                     //等待电流转换完成

cs5460_READ(0x16);

inode[zhilu].II[0] = rec_data[0];

inode[zhilu].II[1] = rec_data[1];

inode[zhilu].II[2] = rec_data[2];

/****************************************************************************************

*                        电能采集,有功功率

****************************************************************************************

Wait_DRDY_High();                                     //等待能量转换完成

cs5460_READ(0x14);                                 //上一周期能量值                 //0 0 0 1 0 1 0 0    地址10

if((rec_data[0]&0x80)==0x80)                    //如果电能的最高位为1,则值是负数,需要对数据进行补码处理

{

inode[zhilu].PW[0] = (~rec_data[0]);        //数据进行补码处理,负数的补码是反码加1

inode[zhilu].PW[1] = (~rec_data[1]);

inode[zhilu].PW[2] = (~rec_data[2])+0x01;

if(((inode[zhilu].PW[2]&0xff)==0x00)&&(inode[zhilu].PW[1]==0xff))//加1超限了

{

inode[zhilu].PW[1] =0x00;

inode[zhilu].PW[0]=inode[zhilu].PW[0]+0x01;

}

}

else

{

inode[zhilu].PW[0] = rec_data[0];

inode[zhilu].PW[1] = rec_data[1];

inode[zhilu].PW[2] = rec_data[2];

}

} */

time=1;

}

cs5460a c语言程序,CS5463程序,有图有程序,大虾来看看,欢迎拍砖!相关推荐

  1. 数字电压表单片机 c语言程序,单片机数字电压表(带仿真图C程序).docx

    单片机数字电压表(带仿真图C程序) 基于51单片机数字电压表 本模块采用ADC0832模数转换芯片,LCD1602液晶显示,测量范围0-5V,精度误差0.01V 看了很多网上的课程设计或者毕业论文,得 ...

  2. 基于单片机c语言的豆浆机,基于单片机的智能豆浆机控制系统设计(附实物图,电路原理图,程序)...

    基于单片机的智能豆浆机控制系统设计(附实物图,电路原理图,程序)(任务书,开题报告,中期检查表,毕业论文11800字) 摘要 由于市面上的豆浆机不具有长时间保温的功能,打浆完成后残渣很多,而且打浆用时 ...

  3. c语言课设报告时钟vc环境,C语言课程设计报告模拟时钟转动程序

    C语言课程设计报告模拟时钟转动程序 课程设计报告题 目 课 程 名 称 结构化程序设计课程设计 院 部 名 称 专 业 班 级 学 生 姓 名 王蕾 学 号 课程设计地点 课程设计学时 指 导 教 师 ...

  4. 《C语言点滴》一第1章 程序猿 程序媛1.1 装备篇

    本节书摘来自异步社区<C语言点滴>一书中的第1章,第1.1节,作者 赵岩,更多章节内容可以访问云栖社区"异步社区"公众号查看 第1章 程序猿 && 程序 ...

  5. c语言程序设计论文背单词系统,C语言课程设计-背单词系统(含程序)

    C语言课程设计-背单词系统(含程序) 综合性程序设计报告 设计题目: 背单词系统 指导教师: XXX 班 级: 学 号: 设 计 者: XXX 成 绩: _______________ 设计时间: 年 ...

  6. C语言编程入门之--第一章初识程序

    导读:计算机程序无时不刻的影响着人类的生活,现代社会已经离不开程序,程序的作用如此巨大,那么程序到底是什么呢?本章主要讨论程序的概念,唤起读者对程序的兴趣,同时对C语言程序与其它语言程序进行比较,说明 ...

  7. c语言编程模拟机械钟表行走,C语言课程设计报告-模拟时钟转动程序

    1. 课程设计报告题 目 课 程 名 称 结构化程序设计课程设计 院 部 名 称 专 业 班 级 学 生 姓 名 王蕾 学 号 课程设计地点 课程设计学时 指 导 教 师 金陵科技学院教务处制 程序设 ...

  8. c语言课程设计作业五子棋,C语言课程设计-五子棋双人对战程序

    C语言课程设计-五子棋双人对战程序 C语言课程设计-五子棋双人对战程序|c语言程序代码编程小程序设计|c语言课程设计报告课程案例 /*      本程序在Turbo C或Borland C下编译通过  ...

  9. dll文件是什么语言写的程序_易语言图文教学:写好了程序,如何配置程序名称、图标?内详...

    引导语 通过前两篇图文,相信大家能制作出一个简单的易语言程序啦.今天是教大家怎样配置程序.说的再清楚些,就是给你的程序加个图标,改个进程名字,加上版本号,添加作者信息等等. 具体操作方法 打开一个已经 ...

  10. c语言程序在什么结束执行,c程序的执行是从什么开始到什么结束?

    C程序的入口是main函数,一般来说只要是正常运行结束的都是从main函数的第一句话开始,最后一句结束. 例如:int main()//程序开始 { printf("Hello!\n&quo ...

最新文章

  1. TCP协议的服务器与客户端的程序设计(代码注释超详细)
  2. 2018计算机职称考试题,2018年职称计算机Powerpoint考试试题及答案
  3. 编译与部署dubbo管控平台dubbo-admin
  4. AI服务器的优势有哪些?人工智能服务器产品有哪些?
  5. 大数据分析:Java 下降,华为平均月薪高达 35K,分析 89 万招聘数据有这些发现!
  6. 搬家Testing.
  7. vb6实现union数据结构_数据结构与算法——并查集(不相交集合)
  8. android 摄像头参数,获取Android设备上的详细的摄像头信息
  9. JAVA.IO字符流
  10. 十个让你变成糟糕的程序员的行为
  11. FileZilla:425 Can't open data connection for transfer of解决办法
  12. OEL修改字符集失败 -bash: /root: is a directory
  13. python分段函数输入x的值求y的值,根据以下分段函数计算y的值,要求x的值由键盘输入,...
  14. java 给word加水印_java实现word文档转pdf,并添加水印
  15. 推荐下Python的IDE:PyScripter,Spyder以及使用心得分享
  16. linux fastQC 操作命令,Linux shell合并fastq测序数据/批量fastqc小脚本|merge|multiqc
  17. 80x86 汇编语言,大写变小写,小写变大写,数字原样输出
  18. MyBatis 02
  19. UT单元测试(一)——基础流程总结篇
  20. java-php-python-ssm原创网络文学管理系统计算机毕业设计

热门文章

  1. cef js返回c++的代码_CEF3开发者系列之JS与C++交互之简单介绍
  2. oracle自定义异常长度,Oracle自定义异常收集(二)
  3. 计算机没有鼠标用英语怎么说,鼠标用英语怎么说
  4. (转)JS事件循环和宏任务和微任务
  5. matlab产生过渡矩阵,浅谈向量空间和矩阵
  6. 逆发动机模型map图制作
  7. RGB YUV XYZ HSL CIE1976L*a*b* LCH的色彩空间图 色彩空间 转换公式
  8. 分布式任务调度框架设计与实现解读(1)
  9. CSR8811A12-ICXR-R双模数据传输模块 蓝牙芯片4.2
  10. 测绘航空摄影、摄影测量与遥感资质办理