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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1959|回復: 1
打印 上一主題 下一主題
收起左側

基于單片機的智能數字電子秤proteus仿真設計

[復制鏈接]
跳轉到指定樓層
樓主
一、系統方案
1、當電子稱開機時,單片機會進入一系列初始化,進入1602顯示模式設定,如開關顯示、光標有無設置、光標閃爍設置,定時器初始化,進入定時器模式,如初始值賦值。之后液晶會顯示Welcome To Use Electronic Scale,這是一個歡迎使用界面:
2、此電子秤是開機檢測托盤重量,并將托盤重量清零(即電子秤每次開機后檢測托盤重量,并程序中自動將托盤重量保存在一個變量中,稱量過程中每次都將獲得的重量減去托盤重量,而得到所要稱量物體的真正的重量),然后單片機進入等待稱重界面:WE代表貨物重量,PR代表貨物單價,MONEY代表貨物總價。
3、在支架上放上待稱重物體時,HX711會采集稱重傳感器的模量量,并將這個模擬量轉化數字量,發送給單片機,單片機通過計算,將重量顯示在1602上面,由于仿真里面沒有真實的貨物,就用兩個按鍵模量重量,連接HX711的2個按鍵就是模擬重量加減,一個按鍵按下,貨物重量加,另外一個按鍵,貨物重量就會減。
4、在支架上放上待稱重物體時,通過矩陣鍵盤設置好單價,單片機會根據重量乘以單價計算出總價。如果單價設置有錯,按清除按鍵,重新設置。如果重量有錯誤,可以按去皮按鍵清除,校準加,校準減按鍵可以對貨物重量進行微調。
5、在支架上放上待稱重物體總量超過10KG時,蜂鳴器是不停的報警,LED閃爍,1602上面顯示WE;-.---,直到重量少于10KG蜂鳴器停止報警,LED停止閃爍。


二、硬件設計
原理圖如下:

三、單片機軟件設計
1、首先是系統初始化
Init_LCD1602();                                                                        //初始化LCD1602
   EA = 0;
   Data_Init();
   Timer0_Init();
   //初中始化完成,開斷
   EA = 1;
        
//        Get_Maopi();
        LCD1602_write_com(0x80);                                                //指針設置
   LCD1602_write_word(" Welcome To Use ");        //  
   LCD1602_write_com(0x80+0x40);                                                //指針設置
   LCD1602_write_word("Wlectronic Scale");
//   Delay_ms(2000);
   Get_Maopi();
   LCD1602_write_com(0x80);                                                //指針設置
   LCD1602_write_word("WE:0.000 PR:00.0");
   LCD1602_write_com(0x80+0x40);                                //指針設置
   LCD1602_write_word("MONEY:  0.00    ");
   Display_Price();
//        Get_Maopi();                                //稱毛皮重量
2、液晶顯示程序
//****************************************************
//MS延時函數(12M晶振下測試)
//****************************************************
void LCD1602_delay_ms(unsigned int n)
{
        unsigned int  i,j;
        for(i=0;i<n;i++)
                for(j=0;j<123;j++);
}
//****************************************************
//寫指令
//****************************************************
void LCD1602_write_com(unsigned char com)
{
        LCD1602_RS = 0;
        LCD1602_delay_ms(1);
        LCD1602_EN = 1;
        LCD1602_PORT = com;
        LCD1602_delay_ms(1);
        LCD1602_EN = 0;
}
//****************************************************
//寫數據
//****************************************************
void LCD1602_write_data(unsigned char dat)
{
        LCD1602_RS = 1;
        LCD1602_delay_ms(1);        
        LCD1602_PORT = dat;
        LCD1602_EN = 1;
        LCD1602_delay_ms(1);
        LCD1602_EN = 0;
}
3、按鍵程序
  unsigned char Getkeyboard(void)
{
    unsigned char number = 0;
    unsigned char i;
        
        //行輸入低電平
    ROW1=ROW2=ROW3=ROW4=0;
        //如果列輸出不全為高,則說明有鍵按下
        if ((COL1!=1)||(COL2!=1)||(COL3!=1)||(COL4!=1))
        {
           //輸入0111
           ROW1=0;
           ROW2=ROW3=ROW4=1;
           for (i=0;i<20;i++);
           if (COL1==0) return 1;           // 7
           else if (COL2==0) return 2;        //         8
           else if (COL3==0) return 3;         //        9
           else if (COL4==0) return 10;         //         10
           //輸入1011
           ROW2=0;
           ROW1=ROW3=ROW4=1;
           for (i=0;i<20;i++);
           if (COL1==0) return 4;          //4
           else if (COL2==0) return 5; //  5
           else if (COL3==0) return 6;        // 6
           else if (COL4==0) return 11;         //        11
           //輸入1101
           ROW3=0;
           ROW1=ROW2=ROW4=1;
           for (i=0;i<20;i++);
           if (COL1==0) return 7;  //1
           else if (COL2==0) return 8;          // 2
           else if (COL3==0) return 9;          //   3
           else if (COL4==0) return 12;          //   12
           //輸入0111
           ROW4=0;
           ROW1=ROW2=ROW3=1;
           for (i=0;i<20;i++);
           if (COL1==0) return 14;
           else if (COL2==0) return 0;
           else if (COL3==0) return 15;
           else if (COL4==0) return 13;
           //沒有檢測到列低電平
           return 99;
        }
        return 99;
}
4、核心算法程序
  //****************************************************
//讀取HX711
//****************************************************
unsigned long HX711_Read(void)        //增益128
{
        unsigned long count;
        unsigned char i;
          HX711_DOUT=1;
        Delay__hx711_us();
          HX711_SCK=0;
          count=0;
          while(HX711_DOUT);
          for(i=0;i<24;i++)
        {
                  HX711_SCK=1;
                  count=count<<1;
                HX711_SCK=0;
                  if(HX711_DOUT)
                        count++;
        }
        HX711_SCK=1;
    count=count^0x800000;//第25個脈沖下降沿來時,轉換數據
        Delay__hx711_us();
        HX711_SCK=0;  
        return(count);
}
四、proteus仿真設計
Proteus軟件是一款應用比較廣泛的工具,它可以在沒有硬件平臺的基礎上通過自身的軟件仿真出硬件平臺的運行情況,這樣就可以通過軟件仿真來驗證我們設計的方案有沒有問題,如果有問題,可以重新選擇器件,連接器件,直到達到我們設定的目的,避免我們搭建實物的時候,如果當初選擇的方案有問題,我們器件都已經焊接好了,再去卸載下去,再去焊接新的方案的器件,測試,這樣會浪費人力和物力,也給開發者帶來一定困惑,Proteus仿真軟件就很好的解決這個問題,我們在設計之初,就使用該軟件進行模擬仿真,測試,選擇滿足我們設計的最優方案。最后根據測試沒問題的仿真圖紙,焊接實物,調試,最終完成本設計的作品。

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:1115214 發表于 2024-4-2 21:28 來自手機 | 只看該作者
有錯誤
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区三区在线视频 | 亚洲视频精品 | 成人福利电影 | 欧美一区二 | 色婷婷综合久久久中字幕精品久久 | 在线婷婷 | 成人精品一区二区三区四区 | 久久综合一区 | 欧美一级特黄aaa大片在线观看 | 一区二区三区在线免费观看 | 欧美1区2区 | 免费看啪啪网站 | 免费在线毛片 | 久久一区二区三区四区 | 欧美日韩久久精品 | 久久久精品网 | 成年人网站免费视频 | 日韩精品久久久久 | 亚洲成人精品在线 | 亚洲天堂av在线 | 国产精品99久 | 精品视频久久久 | 麻豆hd | 一区二区中文字幕 | 久久美女网 | 色噜噜狠狠色综合中国 | 久久99精品国产自在现线小黄鸭 | 亚洲国产精品99久久久久久久久 | 国产成人精品亚洲日本在线观看 | 久久网国产 | av黄色免费 | 在线欧美一区二区 | 日日日视频 | 99爱在线视频 | 国产日韩欧美 | 国产精品高潮呻吟久久 | 亚洲va在线va天堂va狼色在线 | 二区国产| 亚洲一区久久 | 一区二区三区中文字幕 | 日韩欧美三级 |