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

標題: 基于單片機的智能數字電子秤proteus仿真設計 [打印本頁]

作者: bbxyliyang    時間: 2023-8-27 17:33
標題: 基于單片機的智能數字電子秤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仿真軟件就很好的解決這個問題,我們在設計之初,就使用該軟件進行模擬仿真,測試,選擇滿足我們設計的最優方案。最后根據測試沒問題的仿真圖紙,焊接實物,調試,最終完成本設計的作品。


作者: 1627178304    時間: 2024-4-2 21:28
有錯誤




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 99亚洲综合 | 欧美日韩精品综合 | 国产亚洲精品久久久久久牛牛 | 国产精品一区二区久久精品爱微奶 | 欧美日韩三级 | 免费精品国产 | 日韩中文久久 | 综合第一页 | 免费看淫片 | 日韩乱码av | 久久伊人影院 | 伊人伊成久久人综合网站 | 亚洲欧美综合精品久久成人 | www.久久艹| 男人天堂视频在线观看 | 亚洲视频欧美视频 | 欧美日韩成人在线观看 | 久久精品亚洲精品 | 中文在线日韩 | 少妇诱惑av | 亚洲精品国产综合区久久久久久久 | 久久精品综合 | 亚洲成人免费在线观看 | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 国产精品完整版 | 涩色视频在线观看 | 在线中文字幕av | 日韩一级电影免费观看 | 在线观看欧美一区 | 在线观看深夜视频 | 国产日韩欧美综合 | 天天操操 | 国产成人区 | 欧美精品导航 | 欧美精品中文字幕久久二区 | 中文字幕在线观看视频网站 | 日本三级日产三级国产三级 | 天天爽夜夜爽精品视频婷婷 | 国产精品美女久久久av超清 | 久久综合影院 | 久久精品一级 |