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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 17738|回復(fù): 18
收起左側(cè)

基于51單片機(jī)的簡易電子秤設(shè)計

  [復(fù)制鏈接]
ID:175526 發(fā)表于 2017-3-20 20:14 | 顯示全部樓層 |閱讀模式
捕.PNG
#include<reg52.h>
#include<intrins.h>
#include <absacc.h>
#include <math.h>
#define uchar unsigned char
#define uint unsigned int
extern void ADC();
extern uchar Adc0832(unsigned char channel);     //AD轉(zhuǎn)換,返回結(jié)果
extern uchar bai,shi,ge;
uchar  table[]="P:000.0";
char press_data;
uint  ya;
uchar ad_data;
void data_pro1();
void qupi();
void leijia();   ///
uint t;      ////
//unsigned long temp1;  ///
uchar a1,a2,a3,a4,a5,a6;   ///
uint c,d,e;
uchar num ,s1num,s2num,s3num,s5num,s6num;
uchar code table1[]="Y:000000.00";
uchar code table2[]="M:     g";
sbit lcden=P0^5;
sbit lcdrw=P0^6;
sbit lcdrs=P0^7;
sbit cs=P0^0;
sbit s1=P3^0;
sbit s2=P3^1;
sbit s3=P3^2;
sbit s4=P3^3;
sbit s5=P3^4;
sbit s6=P3^5;
void delay(uint z)
{
    uint x,y;
    for(x=z;x>0;x--)
        for(y=110;y>0;y--);
}
void write_com(uchar com)
{
    lcdrs=0;//寫指令
    P2=com;
    delay(5);
    lcden=1;
    delay(5);
    lcden=0;
}
void write_data(uchar date)
{
    lcdrs=1;
    P2=date;
    delay(5);
    lcden=1;
    delay(5);
    lcden=0;
}
void init()
{  lcdrw=0;
    lcden=0;
    write_com(0x38);//顯示模式設(shè)置
    write_com(0x0c); //開顯示,不顯示光標(biāo),光標(biāo)不閃爍
    write_com(0x06);//當(dāng)讀或?qū)懸粋字符后地址指針加1,且光標(biāo)加1,整屏顯示不移動
write_com(0x01); //清屏
}
void display(unsigned long a,unsigned long b)
{   
   unsigned long temp;
   // uchar a1,a2,a3,a4,a5,a6;
    temp=a;
    temp=b*a;       //a*b
    a1=temp/100000;
    a2=temp%100000/10000;
    a3=temp%100000%10000/1000;
    a4=temp%100000%10000%1000/100;
    a5=temp%100000%10000%1000%100/10;
a6=temp%100000%10000%1000%100%10;
    write_com(0xc3);
    write_data('0'+a1);
     write_com(0xc4);
    write_data('0'+a2);
     write_com(0xc5);
    write_data('0'+a3);
     write_com(0xc6);
    write_data('0'+a4);
     write_com(0xc7);
    write_data('0'+a5);
write_com(0xc9);
    write_data('0'+a6);
}  
void keyscan()
{
    if(s1==0)//s1按下
    {
        delay(10);
        if(s1==0)//檢測確實按下
        {      
         {  s1num++;   //小數(shù)十分位
            while(!s1);
   if(s1num==1)
            {
                    write_com(0x86);
                    write_com(0x0c);
     write_data(0x30+s1num);
                    write_com(0x86);
            }
            else if(s1num<10)
                 {
                    write_com(0x86);
                    write_com(0x0c);
                    write_data(0x30+s1num);
                    write_com(0x86);
                 }
            else if(s1num>=10)  //個位
            {      
       s1num=0;
                   s1num=s1num%10;
       write_data(0x30+s1num);
                   write_com(0x84);
                   write_com(0x0c);
                   write_com(0x84);
            }
            }
          }  
        }
    if(s2==0)//s1按下
    {
        delay(10);
        if(s2==0)//檢測確實按下
        {   
         {  s2num++;
           while(!s2);
           if(s2num<=10)
            {
                    write_com(0x84);
                    write_com(0x0c);
                    write_data(0x30+s2num);
                    write_com(0x84);
            }
            else if(s2num>10)
            {      
       s2num=-1;
          write_data(0x30+s2num);
       s2num=s2num++;
                   write_com(0x84);
                   write_com(0x0c);
                   write_com(0x84);
            }
          }  
        }
    }
    if(s3==0)//s1按下
    {
        delay(10);
        if(s3==0)//檢測確實按下
        {   
         {  s3num++;
            while(s3==0);
   if(s3num<10)
            {
                    write_com(0x83);
                    write_com(0x0c);
                    write_data(0x30+s3num);
                    write_com(0x83);
            }
          else if(s3num>=10)
          {      
                s3num=0;
       write_data(0x30+s3num);
                write_com(0x83);
       s3num=s3num++;
                write_com(0x0c);
                write_com(0x83);
           }
          }
        }
}
/*   if(s5==0)//s1按下
    {
        delay(10);
        if(s5==0)//檢測確實按下     
         {  s5num++;
            while(s5==0);
            if(s5num==1)   
          {
      bai1=bai;
      shi1=shi;
      ge1=ge;
          }
         }
   if(s5num==2) s5num=0;

    }
    }*/
    if(s4==0)    ////
    {  delay(10);    ////////
       if(s4==0)//檢測確實按下
       { write_com(0x86);
        write_com(0x84);
        write_com(0x83);
        write_com(0x0c);
  }
     while(1)
        {
          ADC();
          write_com(0x80+10);
          write_data('0'+bai);
          write_com(0x80+11);
          write_data('0'+shi);
          write_com(0x80+12);
          write_data('0'+ge);
          //keyscan();
           display(s3num*100+s2num*10+s1num,bai*100+shi*10+ge);//顯示
          if(s4!=0)
          break;
        }
   
    }
  
}
///    // /////////去皮程序
void qupi()
{
    if(s5==0)//s1按下
    {
        delay(10);
        if(s5==0)//檢測確實按下     
         {  s5num++;
            while(s5==0);
            if(s5num==1)   
          {
      t=bai*100+shi*10+ge;
    while(!s5);
          }
      if(s5num==2)
   {   uint p;
       p=bai*100+shi*10+ge-t;
       bai=p/100;
                shi=(p%100)/10;
                ge=(p%100)%10;
    write_com(0x80+10);
    write_data('0'+bai);
    write_com(0x80+11);
    write_data('0'+shi);
    write_com(0x80+12);
    write_data('0'+ge);  
       display(s3num*10+s2num,bai*100+shi*10+ge);//顯示
        s5num=0;
    while(!s5);
   }
         }
    }
}
//////////////// 累加金額   ////    // /////////
void leijia()
{
    if(s6==0)//s6按下
    {
        delay(10);
        if(s6==0)//檢測確實按下     
         {  s6num++;
            while(s6==0);
            if(s6num==1)   
          {   c=(s3num*100+s2num*10+s1num)*(bai*100+shi*10+ge);
    a1=c/100000;
       a2=c%100000/10000;
       a3=c%100000%10000/1000;
       a4=c%100000%10000%1000/100;
       a5=c%100000%10000%1000%100/10;
    a6=c%100000%10000%1000%100%10;
       write_com(0xc3);
       write_data('0'+a1);
        write_com(0xc4);
       write_data('0'+a2);
        write_com(0xc5);
       write_data('0'+a3);
        write_com(0xc6);
       write_data('0'+a4);
        write_com(0xc7);
       write_data('0'+a5);
    write_com(0xc9);
       write_data('0'+a6);
    while(!s6);
          }
      if(s6num==2)
   {   d=(s3num*100+s2num*10+s1num)*(bai*100+shi*10+ge);
     d=d+c;
    a1=d/100000;
       a2=d%100000/10000;
       a3=d%100000%10000/1000;
       a4=d%100000%10000%1000/100;
       a5=d%100000%10000%1000%100/10;
    a6=d%100000%10000%1000%100%10;
       write_com(0xc3);
       write_data('0'+a1);
        write_com(0xc4);
       write_data('0'+a2);
        write_com(0xc5);
       write_data('0'+a3);
        write_com(0xc6);
       write_data('0'+a4);
        write_com(0xc7);
       write_data('0'+a5);
    write_com(0xc9);
       write_data('0'+a6);
    while(!s6);
   }    if(s6num==3)
   {
     e=(s3num*100+s2num*10+s1num)*(bai*100+shi*10+ge);
     e=e+d;
    a1=e/100000;
       a2=e%100000/10000;
       a3=e%100000%10000/1000;
       a4=e%100000%10000%1000/100;
       a5=e%100000%10000%1000%100/10;
    a6=e%100000%10000%1000%100%10;
       write_com(0xc3);
       write_data('0'+a1);
        write_com(0xc4);
       write_data('0'+a2);
        write_com(0xc5);
       write_data('0'+a3);
        write_com(0xc6);
       write_data('0'+a4);
        write_com(0xc7);
       write_data('0'+a5);
    write_com(0xc9);
       write_data('0'+a6);
       s6num=0;
    while(!s6);

   }
  
  
         }
    }
}
   /////////////
void main()
{    //ad_data=0;
    init();
    write_com(0x80);
    for(num=0;num<8;num++)
    {
        write_data(table[num]);
        delay(20);
    }
    write_com(0x80+0x40);
    for(num=0;num<12;num++)
    {
        write_data(table1[num]);
        delay(20);
    }
    write_com(0x80+8);
    for(num=0;num<9;num++)
    {
        write_data(table2[num]);
        delay(20);
    }  
      delay(20);
      
       ADC();     ///////
          write_com(0x80+10);  /////////
          write_data('0'+bai);    //
          write_com(0x80+11);  //////
          write_data('0'+shi);
          write_com(0x80+12);   ////
          write_data('0'+ge);   //////////
          //keyscan();
           display(s3num*100+s2num*10+s1num,bai*100+shi*10+ge);//顯示

        while(1)
    {   ad_data =Adc0832(0);    //采樣值存儲單元初始化為0
      data_pro1();
          keyscan();
     qupi();
  leijia();
            
    }
/* if(s5==0)
{
  int c;
  c=bai*100+shi*10+ge;
  if(c<100)
  {
   ;
  }  
}  */
}
   ////////////////////
void data_pro1(void)
{
      //unsigned int;
      float  press;        
   if(0<ad_data<256)                 
   {      
      int vary=ad_data;         
   press=(0.012*(vary-7.680)*5.000);   
               
   ya=(int)(press*1000);                 //放大1000倍,便于后面的計算
                  
                 
   bai=ya/1000;         //取壓力值百位
   shi=(ya%1000)/100;       //取壓力值十位
   ge=((ya%1000)%100)/10;      //取壓力值個位
   //press_qianfen=((temp1%1000)%100)%10;   //取壓力值十分位
        }     
   
}




評分

參與人數(shù) 2黑幣 +5 收起 理由
673745472 + 1 回帖助人的獎勵!
高字揚(yáng) + 4

查看全部評分

回復(fù)

使用道具 舉報

ID:157057 發(fā)表于 2017-3-20 21:10 | 顯示全部樓層
感謝分享。。
回復(fù)

使用道具 舉報

ID:171060 發(fā)表于 2017-3-21 17:40 來自手機(jī) | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報

ID:188658 發(fā)表于 2017-4-11 22:30 | 顯示全部樓層
很棒,正在找這個。
回復(fù)

使用道具 舉報

ID:184237 發(fā)表于 2017-4-16 16:59 | 顯示全部樓層
新手請教 這里面的ad驅(qū)動程序不需要嗎
回復(fù)

使用道具 舉報

ID:175526 發(fā)表于 2017-4-29 20:52 | 顯示全部樓層
小伙賊TMD的帥 發(fā)表于 2017-4-16 16:59
新手請教 這里面的ad驅(qū)動程序不需要嗎

就在里面吧,adc()后面的
回復(fù)

使用道具 舉報

ID:200661 發(fā)表于 2017-6-16 12:35 | 顯示全部樓層
YOUXIAOYUE 發(fā)表于 2017-4-11 22:30
很棒,正在找這個。


很棒,正在找這個。
回復(fù)

使用道具 舉報

ID:220720 發(fā)表于 2017-7-24 10:07 | 顯示全部樓層
extern void ADC();
extern uchar Adc0832(unsigned char channel);     //AD轉(zhuǎn)換,返回結(jié)果
extern uchar bai,shi,ge;
這個的程序看不到,文件燒不了求解答
回復(fù)

使用道具 舉報

ID:239821 發(fā)表于 2017-10-17 16:03 | 顯示全部樓層
有沒有以MCS51單片機(jī)為核心器件設(shè)計一款集身高、體重及體型判斷于一體的多功能電子秤分享呀
回復(fù)

使用道具 舉報

ID:380287 發(fā)表于 2018-7-28 19:27 | 顯示全部樓層
這個用的什么顯示屏
1602?還是其他
回復(fù)

使用道具 舉報

ID:447268 發(fā)表于 2018-12-16 16:26 | 顯示全部樓層
怎么仿真時顯示屏一直在閃
回復(fù)

使用道具 舉報

ID:503358 發(fā)表于 2019-4-4 10:44 | 顯示全部樓層
不需要放大電路嗎
回復(fù)

使用道具 舉報

ID:503358 發(fā)表于 2019-4-4 14:44 | 顯示全部樓層
太棒了,謝謝
回復(fù)

使用道具 舉報

ID:542129 發(fā)表于 2019-5-19 15:58 | 顯示全部樓層
這個怎么連
真萌新
回復(fù)

使用道具 舉報

ID:572891 發(fā)表于 2019-6-26 20:19 來自手機(jī) | 顯示全部樓層
Ohio_yes 發(fā)表于 2019-4-4 10:44
不需要放大電路嗎

你好,,,,,
回復(fù)

使用道具 舉報

ID:572998 發(fā)表于 2019-6-27 08:47 | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報

ID:572998 發(fā)表于 2019-6-27 08:48 | 顯示全部樓層
太棒了
回復(fù)

使用道具 舉報

ID:572991 發(fā)表于 2019-6-27 09:37 | 顯示全部樓層
挺好非常適合
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩视频在线免费观看 | 亚洲第一av| 国产精品日产欧美久久久久 | 亚洲成人av在线播放 | 精久久久 | 日韩激情在线 | 国产乱码精品一区二三赶尸艳谈 | 成人av高清 | 中文字幕亚洲欧美 | 一区二区成人 | 精品国产31久久久久久 | 久久成人一区二区三区 | 秋霞电影一区二区三区 | 婷婷综合色 | 久久久91精品国产一区二区精品 | 日韩精品久久久 | 日韩精品一 | 久久69精品久久久久久久电影好 | 欧美天堂在线观看 | 午夜一级大片 | 国产高清av免费观看 | 久久久妇女国产精品影视 | 亚洲一区二区免费视频 | 懂色中文一区二区三区在线视频 | 国产一极毛片 | 日韩一区二区三区在线观看 | 小早川怜子xxxxaⅴ在线 | 人人人人干 | 亚洲精品久 | 天天干干 | 黄色日批视频 | 成人一区二区电影 | 日本一区二区三区精品视频 | 国产精品免费大片 | 精品婷婷| 亚洲视频二区 | 在线观看日韩精品视频 | 亚洲欧美日韩在线不卡 | 国产激情一区二区三区 | 国产综合精品一区二区三区 | 中文字幕亚洲视频 |