2103|0

639

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

LPC54100 + 点点滴滴的进步(软件部分) [复制链接]

            软件部分:
            主要流程,流程图喜欢用手画今天本子在公司,就口述咯。

            1:初始化,对各个模块进行初始化。

            2:通过串口接收充放电设定值。

            3:根据串口接收的设定值经行设定DA模块的输出。

            4:产生组号、位号。等各种数字信号。(用于设定采集哪一个点位的电压电流)

            5:通过AD采集电池电压与电流。并进行运算通过串口发送。

            然后就是4产生下一个点位的信号5采集下一个点位。

            部分代码

            char  mask1[] = "00. DY.0000mV DL.00000mA  ";   //用于串口发送给电脑的字符数组。

             zuhao = (char) k ;

            dymask =(char) D[0]*5000/256 ;                          //AD采样的电压值

            dlmask1 =(char) D[1]*10000/256 ;                       //AD采样的电流值    进行运算得出真是电压电流值

             for(x=0;x<5;x++)                                                 //将十六进制数转化为字符存于字符数组通过串口发送

            {  

                if(x < 2)

                {       

                  mask1[1-x] = (uint16_t)zuhao%10+48;               

                  zuhao=(uint16_t)zuhao/10;

                }

                if(x < 4)

                {

                mask1[10-x] = (uint16_t)dymask%10+48;

                dymask=(uint16_t)dymask/10;

                }

                mask1[21-x] = (uint16_t)dlmask1%10+48;

                dlmask1=(uint16_t)dlmask1/10;                         

         }



          串口发送         

         ROM_UART_Send(hUART,mask1, sizeof(mask1)-1);       

        数字信号的代码主要产生的就是高低电平不做解释:附件上传了本人写的模拟IIC代码的源码,不知为啥找不到.C.H文件都改成TXT格式了。官方的IIC代码不知怎么回事怎么也调不成。所以只能自己模拟咯,



    以下为PCF8591的代码至于PCF8591的芯片手册自己百度吧

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

DAC 控制DA输出电压           

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

int DACconversion(unsigned char sla,unsigned char c,  unsigned char Val)

{

   I2C_Start();              //????

   I2C_Send_Byte(sla);            //??????

   if(I2C_Wait_Ack()==1)return(0);

   I2C_Send_Byte(c);              //??????

   if(I2C_Wait_Ack()==1)return(0);

   I2C_Send_Byte(Val);            //??DAC???  

   if(I2C_Wait_Ack()==1)return(0);

   I2C_Stop();               //????

   return(1);

}



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

选择要采集那一路的电压共四路              

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

int ISendByte(unsigned char sla,unsigned char c)

{

   I2C_Start();              //????

   I2C_Send_Byte(sla);            //??????

   if(I2C_Wait_Ack()==1)return(0);

   I2C_Send_Byte(c);              //????

   if(I2C_Wait_Ack()==1)return(0);

   I2C_Stop();               //????

   return(1);

}



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

读AD采样值           

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

unsigned char IRcvByte(unsigned char sla)

{  unsigned char c;



   I2C_Start();           //????

   I2C_Send_Byte(sla+1);      //??????

   if(I2C_Wait_Ack()==1)return(0);

   c= I2C_Read_Byte();          //????0



   I2C_Ack();           //??????

   I2C_Stop();            //????

   return(c);

}




I2C.txt

8.22 KB, 下载次数: 0

I2C.txt

1.85 KB, 下载次数: 0

此帖出自NXP MCU论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表