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

標(biāo)題: 基于單片機(jī)的數(shù)字式電能表 [打印本頁(yè)]

作者: a994287609    時(shí)間: 2018-4-14 17:29
標(biāo)題: 基于單片機(jī)的數(shù)字式電能表


//////////////////////////////////////////////
#include<REG52.H>
#define uchar unsigned char
#define uint unsigned int
unsigned char code command[6][7]={
                                 0xB0,0xC0,0xA8,0x01,0x01,0x00,0x1A,//讀取電壓值
                                 0xB1,0xC0,0xA8,0x01,0x01,0x00,0x1B,//讀取電流值
                                 0xB3,0xC0,0xA8,0x01,0x01,0x00,0x1D,//讀取電量值
                                 0x7e,0x05,0x41,0x00,0x04,0x40,0xef,
                                 0x7e,0x05,0x41,0x00,0x05,0x41,0xef,
                                 0x7e,0x05,0x41,0x00,0x06,0x42,0xef

                                };//串口控制音樂(lè)指令
uchar shuju[8];
uchar jishu=0;
uchar CRC=0;
uchar j=0;

long  AA=0;
uint BB=0;
uint CC;
//******************LCD1602****************************//
sbit lcden=P1^2;
sbit lcdrw=P1^1;
sbit lcdrs=P1^0;

//////////////LCD1602///////////////////////////////////////
void delay1(uint z)
{
    uint x,y;
    for(x=z;x>0;x--)
        for(y=110;y>0;y--);
}
void write_com(uchar com)
{
    lcdrs=0;
    P0=com;
    delay1(5);
    lcden=1;
    delay1(5);
    lcden=0;
}

void write_data(uchar date)
{
    lcdrs=1;
    P0=date;
    delay1(5);
    lcden=1;
    delay1(5);
    lcden=0;
}
void init1602()
{
    lcden=0;
    write_com(0x38);
    write_com(0x0c);//    write_com(0x0e);
    write_com(0x06);
    write_com(0x01);
    write_com(0x80+2);
}
///////////////LCD1602   
void SendASC(uchar d)    //串口發(fā)送字符
{
   
    SBUF=d;                //數(shù)據(jù)賦值到緩沖區(qū)
    while(!TI);            //發(fā)送完

    TI=0;                //清零
}
void deal(void)
{
  //電壓讀取
           jishu=0;
           for(j=0;j<7;j++)
            {    shuju[j]=0;
                  SendASC(command[0][j]);   
            }
            delay1(200);
            delay1(20);
            if(jishu>0)
              {      CRC=0;
                  for(j=0;j<6;j++)
                    {   
                       CRC=CRC+shuju[j];

                    }
                  if((CRC==shuju[6])&&(shuju[0]==0xa0))
                      {
                          AA=shuju[1]*256+shuju[2];
                          write_com(0x80+0x40);
                          if(AA>=100)
                               write_data(AA/100+0x30);
                          else write_data(' ');
                          delay1(20);
                          write_data(AA%100/10+0x30);
                          delay1(20);
                          write_data(AA%10+0x30);
                          delay1(20);
                          write_data('.');
                          delay1(20);
                          write_data(shuju[3]+0x30);
                          delay1(20);
                          write_data('V');
                          delay1(20);
                      }
              }
   //電流讀取
           jishu=0;
           for(j=0;j<7;j++)
            {    shuju[j]=0;
                  SendASC(command[1][j]);   
            }
            delay1(200);
            if(jishu>0)
              {      CRC=0;
                  for(j=0;j<6;j++)
                    {   
                       CRC=CRC+shuju[j];

                    }
                  if((CRC==shuju[6])&&(shuju[0]==0xa1))
                      {
                          AA=shuju[2];
                          write_com(0x80+0x40+9);
                          if(AA>=100)
                               write_data(AA/100+0x30);
                          else write_data(' ');
                          delay1(20);
                          write_data(AA%100/10+0x30);
                          delay1(20);
                          write_data(AA%10+0x30);
                          delay1(20);
                          write_data('.');
                          delay1(20);
                          write_data(shuju[3]/10+0x30);
                          delay1(20);
                          write_data(shuju[3]%10+0x30);
                          delay1(20);
                          write_data('A');
                          delay1(20);
                      }
              }
    //電量讀取
           jishu=0;
           for(j=0;j<7;j++)
            {    shuju[j]=0;
                  SendASC(command[2][j]);   
            }
            delay1(200);
            if(jishu>0)
              {      CRC=0;
                  for(j=0;j<6;j++)
                    {   
                       CRC=CRC+shuju[j];

                    }
                  if((CRC==shuju[6])&&(shuju[0]==0xa3))
                      {
                        
                          AA=shuju[1];
                          AA=AA<<16;
                          AA=AA+shuju[2]*256;
                          AA=AA+shuju[3];
                          write_com(0x80);
                          if(AA>=1000000)
                               write_data(AA/1000000+0x30);
                          else write_data(' ');
                          delay1(20);
                          if(AA>=100000)
                               write_data(AA%1000000/100000+0x30);
                          else write_data(' ');
                          delay1(20);
                          if(AA>=10000)
                               write_data(AA%100000/10000+0x30);
                          else write_data(' ');
                          delay1(20);
                          if(AA>=1000)
                               write_data(AA%10000/1000+0x30);
                          else write_data(' ');
                          delay1(20);
                          if(AA>=100)
                               write_data(AA%1000/100+0x30);
                          else write_data(' ');
                          delay1(20);
                          if(AA>=10)
                               write_data(AA%100/10+0x30);
                          else write_data(' ');
                          delay1(20);
                          write_data(AA%10+0x30);
                          delay1(20);

                          write_data('W');
                          delay1(20);
                          write_data('H');
                          delay1(20);
                      }
              }

}
void main(void)
{

  lcdrw=0;
  init1602();
  //串口通信
   TMOD=0x21;//?????0?????1
   TH1=0Xfd;
   TL1=0Xfd;        //9600波特率
   TR1=1;             // 定時(shí)器1啟動(dòng)  
   SM0=0;        // 設(shè)置串口的工作模式
   SM1=1;         //方式1
   REN=1;          // 允許串口接收數(shù)據(jù)      
   ES=1;          // 串口中斷應(yīng)許
   EA=1;
  while(1)
        {  
        
            deal();
         

        }
}

void ser() interrupt 4
{
    if(RI)
       {
        RI=0;
        shuju[jishu++]=SBUF;
        if(jishu>7)
            jishu=0;
       }
   
}  


作者: 靜凈    時(shí)間: 2018-4-25 17:25
小白在做設(shè)計(jì),有沒(méi)有仿真圖啊
作者: xiaogu333    時(shí)間: 2024-4-10 14:05
靜凈 發(fā)表于 2018-4-25 17:25
小白在做設(shè)計(jì),有沒(méi)有仿真圖啊

哥給看看仿真圖,我現(xiàn)在才做DIY小玩意,遇到難點(diǎn)了




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 天堂va在线 | 一区视频在线免费观看 | 天天色天天射天天干 | 国产日韩精品一区 | 一区二区免费 | 中文字幕免费在线 | 亚洲一区二区三区四区av | 本道综合精品 | 国产精久久久久久久 | 国产精品久久久久久久久免费软件 | 亚洲a在线观看 | 爱综合| 欧美电影免费观看高清 | 成人在线a | 日日夜夜精品视频 | 巨大荫蒂视频欧美另类大 | 色视频在线免费观看 | 日韩精品久久一区二区三区 | 人人草人人干 | 国产黄色av网站 | 国产精品成人在线 | 日本一区二区三区视频在线 | 日韩色图在线观看 | 天天操夜夜操 | 国产一区二区精品在线观看 | 久久国产精品久久久久久久久久 | 亚洲第一区国产精品 | www.亚洲成人网 | 国产精品一区二区三区四区 | www.精品国产 | 亚洲欧洲av在线 | 精品国产91乱码一区二区三区 | 久久机热 | 一本色道精品久久一区二区三区 | 国产综合网站 | 国产女人叫床高潮大片免费 | 亚洲精品中文字幕在线观看 | 亚洲a在线观看 | 蜜臀网 | 精品欧美二区 | 国产精品国产成人国产三级 |