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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

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


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

三、單片機軟件設計
1、首先是系統(tǒng)初始化
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延時函數(shù)(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;
}
//****************************************************
//寫數(shù)據(jù)
//****************************************************
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個脈沖下降沿來時,轉換數(shù)據(jù)
        Delay__hx711_us();
        HX711_SCK=0;  
        return(count);
}
四、proteus仿真設計
Proteus軟件是一款應用比較廣泛的工具,它可以在沒有硬件平臺的基礎上通過自身的軟件仿真出硬件平臺的運行情況,這樣就可以通過軟件仿真來驗證我們設計的方案有沒有問題,如果有問題,可以重新選擇器件,連接器件,直到達到我們設定的目的,避免我們搭建實物的時候,如果當初選擇的方案有問題,我們器件都已經(jīng)焊接好了,再去卸載下去,再去焊接新的方案的器件,測試,這樣會浪費人力和物力,也給開發(fā)者帶來一定困惑,Proteus仿真軟件就很好的解決這個問題,我們在設計之初,就使用該軟件進行模擬仿真,測試,選擇滿足我們設計的最優(yōu)方案。最后根據(jù)測試沒問題的仿真圖紙,焊接實物,調(diào)試,最終完成本設計的作品。

評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:1115214 發(fā)表于 2024-4-2 21:28 來自觸屏版 | 只看該作者
有錯誤
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费三级网站 | 蜜桃色999| 91麻豆精品一区二区三区 | 午夜视频免费在线观看 | 欧美日视频| 91久久久久久久 | 久久人人爱 | 日韩毛片网站 | 伊人9999 | 婷婷久久久 | 香蕉成人网 | 久久国产精品99久久人人澡 | 日本a在线观看 | 中国av在线播放 | 六月激情婷婷 | 久久免费国产 | 久久小视频 | 精久久久久 | 午夜| 日韩欧美亚洲国产 | 国产不卡在线视频 | 欧美一区在线视频 | 国产一区在线视频 | 精品国产乱码一区二区三 | 日韩欧美一区二区在线观看 | 欧美日韩免费在线观看 | 欧美在线视频观看 | 国产成人在线视频 | 免费在线a | 97精品在线观看 | 久久五月婷 | 精品国产99 | 高清久久久 | 18视频在线观看男男 | 日韩国产一区 | 久草福利在线观看 | 欧美精品一区二区在线观看 | 国产成人综合视频 | 国产黄色免费网站 | 欧美黑粗大 | 欧美顶级黄色大片免费 |