久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 895|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

這個(gè)是用電能芯片測(cè)量電壓電流等數(shù)據(jù)的程序,哪個(gè)是將測(cè)量的數(shù)據(jù)送到單片機(jī)的函數(shù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:774972 發(fā)表于 2022-4-25 14:36 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include <STC12C5A60S2.H>
#define uint unsigned int
#define uchar unsigned char
#include"zm.h"
#include"1602.h"
#include"uart.h"
#include"math.h"
sbit qh=P3^6;
sbit ql=P3^7;
void init();
void display();
void lcd_ini();
uchar i,k;
uint dy,dl,yggl,pl,ydl,gy,wggl,szgl;
bit flag,key_flag,dis_flag,clr_flag,send_flag;
uchar code buf[]={0x01,0x04,0x00,0x00,0x00,0x0a,0x70,0x0d};
uchar code sz[]="0123456789:.VAHzkWhvar";
uchar code hz[]="dydlplydlygglwgglszglglys";
uchar len1,len2;
uchar idata tmp1[50],tmp2[20];
void uartInit()//串口1初始化
{
PCON &= 0x7F;                //波特率不倍速
        SCON = 0x50;                //8位數(shù)據(jù),可變波特率
        AUXR &= 0xBF;                //定時(shí)器時(shí)鐘12T模式
        AUXR &= 0xFE;                //串口1選擇定時(shí)器1為波特率發(fā)生器
        TMOD &= 0x0F;                //設(shè)置定時(shí)器模式
        TMOD |= 0x20;                //設(shè)置定時(shí)器模式
        TL1 = 0xFD;                //設(shè)置定時(shí)初始值
        TH1 = 0xFD;                //設(shè)置定時(shí)重載值
        ET1 = 0;                //禁止定時(shí)器中斷
        EA=1;
        TR1 = 1;                //定時(shí)器1開始計(jì)時(shí)
        ES=1;
}
//串口2初始化
void Uart2Init(void)                //9600bps@11.0592MHz
{
        /*AUXR &= 0xB7;                //波特率不倍速
        S2CON = 0x92;                //8位數(shù)據(jù),可變波特率
        AUXR &= 0xBF;                //獨(dú)立波特率發(fā)生器時(shí)鐘為Fosc/12,即12T
        BRT = 0xFE;                //設(shè)定獨(dú)立波特率發(fā)生器重裝值
        AUXR |= 0x10;                //啟動(dòng)獨(dú)立波特率發(fā)生器
        IE2=0x01;*/
        AUXR &= 0xF7;                //波特率不倍速
        S2CON = 0x50;                //8位數(shù)據(jù),可變波特率
        AUXR &= 0xFB;                //定時(shí)器時(shí)鐘12T模式
        BRT = 0xFD;                //設(shè)置定時(shí)重載值
        AUXR |= 0x10;                //啟動(dòng)獨(dú)立波特率發(fā)射器
        EA=1;
        IE2=0x01;//ES2=1
}
void send(uchar dat)//串口1發(fā)送1個(gè)字節(jié)
{
        SBUF=dat;
        while(!TI);
        TI=0;
}
void sendData(uchar *dat)
{
        uchar i;
        for(i=0;i<8;i++)
                send(dat[i]);
}
void send2(uchar dat)//串口2發(fā)送1個(gè)字節(jié)
{
        S2BUF=dat;
        while(!(S2CON&0x02));
        S2CON&=~0x02;
}
void send_str(uchar *str)
{
        while(*str!='\0')
                send2(*str++);
}
void uart1() interrupt 4//串口接收中斷
{
        //static uchar recData;//記錄中斷次數(shù)的變量
        if(RI)
        {
                tmp1[len1]=SBUF;
                len1++;
                if(len1==50)
                        len1=0;
                RI=0;
        }
}
void uart2() interrupt 8//串口2接收中斷
{
        //static uchar receiveData;
        if(S2CON&0x01)
        {
                S2CON &= ~0x01;
                tmp2[len2] = S2BUF;
                len2++;
                if(len2==20)
                {
                        len2=0;
                }                          
        }       
}
void main()
{
        init();
        uartInit();
        Uart2Init();
        dis_flag=1;
        while(1)
        {
                if(!qh&&!key_flag)
                {
                        flag=!flag;
                        key_flag=1;
                        clr_flag=1;
                        dis_flag=1;
                }
                if(!ql&&!key_flag)
                {
                        send(0x01);
                        send(0x42);
                        send(0x80);
                        send(0x11);
                        dis_flag=1;
                        key_flag=1;
                }
                for(i=0;i<40;i++)
                {
                                dy=tmp1[i+3]*256+tmp1[i+4];//電壓
                                dl=tmp1[i+5]*256+tmp1[i+6];//電流
                                yggl=tmp1[i+9]*256+tmp1[i+10];//有功功率
                                ydl=tmp1[i+13]*256+tmp1[i+14];//用電量
                                pl=tmp1[i+17]*256+tmp1[i+18];//頻率
                                gy=tmp1[i+19]*256+tmp1[i+20];//功率因素
                                szgl=(dy/10.0)*(dl/1000.0)*10;//視在功率
                                if(yggl>=szgl)
                                        wggl=0;
                                else
                                        wggl=sqrt((szgl/10.0)*(szgl/10.0)-(yggl/10.0*yggl/10.0));
                                dis_flag=1;
                                send_str("#dy:");
                                send2(dy/1000+0x30);
                                send2(dy%1000/100+0x30);
                                send2(dy%100/10+0x30);
                                send2('.');
                                send2(dy%10+0x30);
                                send2('V');
                                send2('*');
                               
                                send_str("#dl:");
                                send2(dl/1000+0x30);
                                send2('.');
                                send2(dl%1000/100+0x30);
                                send2(dl%100/10+0x30);                               
                                send2(dl%10+0x30);
                                send2('A');
                                send2('*');
                               
                                send_str("#pl:");
                                send2(pl/100+0x30);
                                send2(pl%100/10+0x30);
                                send2('.');
                                send2(pl%10+0x30);
                                send_str("Hz");
                                send2('*');
                               
                                send_str("#ydl:");
                                send2(ydl/1000+0x30);
                                send2('.');
                                send2(ydl%1000/100+0x30);
                                send2(ydl%100/10+0x30);                               
                                send2(ydl%10+0x30);
                                send_str("kWh");
                                send2('*');
                               
                                send_str("#yg:");
                                send2(yggl/1000+0x30);                               
                                send2(yggl%1000/100+0x30);
                                send2(yggl%100/10+0x30);
                                send2('.');                               
                                send2(yggl%10+0x30);
                                send2('W');
                                send2('*');
                               
                                send_str("#wg:");                               
                                send2(wggl/100+0x30);
                                send2(wggl%100/10+0x30);
                                send2(wggl%10+0x30);
                                send_str("var");
                                send2('*');
                               
                                send_str("#sz:");
                                send2(szgl/1000+0x30);                               
                                send2(szgl%1000/100+0x30);
                                send2(szgl%100/10+0x30);
                                send2('.');                               
                                send2(szgl%10+0x30);
                                send_str("V.A");
                                send2('*');
                               
                                send_str("#gy:");                       
                                send2(gy/100+0x30);
                                send2('.');
                                send2(gy%100/10+0x30);                                                               
                                send2(gy%10+0x30);
                                send2('!');
                                for(k=0;k<40;k++)
                                        tmp1[k]=0;
                                break;
                }
                if(clr_flag)
                {
                        lcd_ini();
                        clr_flag=0;
                }
                if(dis_flag)
                {
                        display();
                        dis_flag=0;
                }
                if(send_flag)
                {
                        send_flag=0;
                        sendData(buf);
                }
                if(qh&&ql)
                        key_flag=0;
        }
}
void init()
{
        wcmd(0xc0);
        wcmd(0x3f);
        lcd_ini();
        TMOD=0x01;
        TH0=0x3c;
        TL0=0xb0;
        EA=1;
        ET0=1;
        TR0=1;
}
void display()
{
                wcmd(0x80);
                wdat(hz[0]);
                wdat(hz[1]);
                wdat(sz[10]);
                wdat(sz[dy/1000]);
                wdat(sz[dy%1000/100]);
                wdat(sz[dy%100/10]);
                wdat(sz[11]);
                wdat(sz[dy%10]);
                wdat(sz[12]);
          wcmd(0xC0);
                wdat(hz[2]);
                wdat(hz[3]);
                wdat(sz[10]);
                wdat(sz[dl/1000]);
                wdat(sz[11]);
                wdat(sz[dl%1000/100]);
                wdat(sz[dl%100/10]);
                wdat(sz[dl%10]);
                wdat(sz[13]);
          Delay20us(50000);
                Delay20us(50000);
                Delay20us(50000);
                Delay20us(50000);
                lcd_ini();
               
                wcmd(0x80);
                wdat(hz[4]);
                wdat(hz[5]);
                wdat(sz[10]);
                wdat(sz[pl/100]);
                wdat(sz[pl%100/10]);
                wdat(sz[11]);
                wdat(sz[pl%10]);
                wdat(sz[14]);
                wdat(sz[15]);
                wcmd(0xC0);
                wdat(hz[6]);
                wdat(hz[7]);
                wdat(hz[8]);
                wdat(sz[10]);
                wdat(sz[ydl/1000]);
                wdat(sz[11]);
                wdat(sz[ydl%1000/100]);
                wdat(sz[ydl%100/10]);               
                wdat(sz[ydl%10]);
                wdat(sz[16]);
                wdat(sz[17]);
                wdat(sz[18]);
                Delay20us(50000);
                Delay20us(50000);
                Delay20us(50000);
                Delay20us(50000);
                lcd_ini();
               
                wcmd(0x80);
                wdat(hz[9]);
                wdat(hz[10]);
                wdat(hz[11]);
                wdat(hz[12]);
                wdat(sz[10]);
                wdat(sz[yggl/1000]);
                wdat(sz[yggl%1000/100]);
                wdat(sz[yggl%100/10]);
                wdat(sz[11]);
                wdat(sz[yggl%10]);
                wdat(sz[17]);
                wcmd(0xC0);
                wdat(hz[13]);
                wdat(hz[14]);
                wdat(hz[15]);
                wdat(hz[16]);
                wdat(sz[10]);
                wdat(sz[wggl/1000]);               
                wdat(sz[wggl%1000/100]);
                wdat(sz[wggl%100/10]);
                wdat(sz[11]);
                wdat(sz[wggl%10]);
                wdat(sz[19]);
                wdat(sz[20]);
                wdat(sz[21]);               
                Delay20us(50000);
                Delay20us(50000);
                Delay20us(50000);
                Delay20us(50000);
                lcd_ini();
               
                wcmd(0x80);
                wdat(hz[17]);
                wdat(hz[18]);
                wdat(hz[19]);
                wdat(hz[20]);
                wdat(sz[10]);
                wdat(sz[szgl/1000]);
                wdat(sz[szgl%1000/100]);
                wdat(sz[szgl%100/10]);
                wdat(sz[11]);
                wdat(sz[szgl%10]);
                wdat(sz[12]);
                wdat(sz[13]);
                wcmd(0xC0);
                wdat(hz[21]);
                wdat(hz[22]);
                wdat(hz[23]);
                wdat(hz[24]);
                wdat(sz[10]);
                wdat(sz[gy/100]);
                wdat(sz[11]);
                wdat(sz[gy%100/10]);
                wdat(sz[gy%10]);
                Delay20us(50000);
                Delay20us(50000);
                Delay20us(50000);
                Delay20us(50000);
                lcd_ini();
}
uchar count;
void timer()interrupt 1
{
        count++;
        if(count==20)
        {
                count=0;
                send_flag=1;
        }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:819198 發(fā)表于 2022-4-26 15:34 | 只看該作者
為什么沒人回答你,因?yàn)檫@個(gè)問題太簡(jiǎn)單了,好好看一下“電能芯片”的使用手冊(cè)就知道了。
回復(fù)

使用道具 舉報(bào)

板凳
ID:123289 發(fā)表于 2022-4-26 16:31 | 只看該作者
1、學(xué)會(huì)看芯片手冊(cè)。
2、不會(huì)是送,而是自己去取。
回復(fù)

使用道具 舉報(bào)

地板
ID:728202 發(fā)表于 2022-4-30 21:11 | 只看該作者
電能芯片是哪個(gè)?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 黄色大片免费网站 | 亚洲精品国产精品国自产在线 | 日韩免费高清视频 | 欧美久久一区二区三区 | 国产不卡视频 | 亚洲精品日本 | 美女毛片免费看 | 欧美一区二区在线观看 | 国产二区精品视频 | 久久久久久国产精品 | 在线视频 欧美日韩 | 国产精品久久av | 在线观看亚洲精品 | 亚洲黄色高清视频 | 欧美一级久久 | 亚洲精品久久嫩草网站秘色 | 黄色网毛片 | 国产91网站在线观看 | 夏同学福利网 | 亚洲免费在线 | 欧美一区二区三区在线观看 | 国产欧美在线视频 | 亚洲免费视频一区 | 女人av | av中文字幕在线播放 | 久久久av一区 | 在线播放中文字幕 | 免费一区 | 亚洲一区二区综合 | 欧美影院| 欧美日本一区二区 | 欧美日韩精品一区二区三区四区 | 久久精品久久久久久 | 成年人黄色一级毛片 | 中文字幕一区二区三区精彩视频 | 中文日韩在线 | 91精品国产乱码久久蜜臀 | 黄片毛片在线观看 | 九九成人 | 日韩在线观看一区 | 麻豆精品一区二区三区在线观看 |