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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求大神康康代碼怎么改(基于51單片機的電子秤用數碼管顯示),硬是看了一天還是不懂

[復制鏈接]
跳轉到指定樓層
樓主
求大神康康代碼怎么改(基于51單片機的電子秤用數碼管顯示),硬是看了一天還是不懂...


1.數字電子秤具備去皮、單價1輸入、單價2輸入、總價計算和刪除單價、超量程提示等相應的功能,數碼管能夠實時顯示當前輸入單價信息、稱重信息及總價信息;2.去皮即通過按鍵設置,觸發程序減去電子秤托盤的重量,放上待測物品后得到的物品的凈重,凈重測量范圍0 999,當超過999時,數碼管則顯示“- - -- --- -”,提示超量程。
3.能夠通過4x4鍵盤輸入物品的單價,能夠實現0^99.99的單價范圍內輸入,并通過按鍵實現總價的計算及刪除;
數碼管顯示格式為: XXXX- XXX,前四位顯示輸入單價,后三位顯示凈重,當按下“總價”按鈕時,則顯示當前的總價,具體顯示格式不做要求,但人機操作界面需簡單易懂及數碼管不得閃爍。

硬件(看相片);

這是代碼;(不懂怎么改了……………………)
#include "STC15W408AS.H"
#include "HT1621.H"
#include "HX711.h"
#include "math.h"
//校準參數
//因為不同的傳感器特性曲線不是很一致,因此,每一個傳感器需要矯正這里這個參數才能使測量值很準確。
//當發現測試出來的重量偏大時,增加該數值。
//如果測試出來的重量偏小時,減小改數值。
//該值可以為小數
#define GapValue 21500


unsigned char wei[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char duan[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7f,0x6F,0x00};
sbit wei_a  = P2^6;
sbit duan_b = P2^7;      //數碼管顯示


sbit key1 = P3^2;        //按鍵
sbit cxyg=P5^5;          //定義場效應管
float Weight;            //重量
float Weight_Maopi;      //毛皮
unsigned char q=0;
#define FOSC 11059200    //jingzhen 晶振
#define T1MS (65536-FOSC/12/1000) //12T模式


sbit  INT0=P3^2;
void Get_Maopi();
//-----------------------------------------
//中斷服務程序
void exint0() interrupt 0        //INT0中斷入口
{
        Get_Maopi();
        cxyg=0;
        write_com(LCDON);             //打開LCD偏壓
        //P32 = !P32;                 //將測試口取反
        while(P32==0);
        q=0;         
}
//****************************************************
//MS延時函數(12M晶振下測試)
//****************************************************
void delay_ms(unsigned int n)
{
        unsigned int  i,j;
        for(i=0;i<n;i++)
                for(j=0;j<123;j++);
}


//void delay_ms(unsigned int ms)  //延時函數防抖
//{
//        unsigned char i, j;
//        while(ms--)
//        {
//          i = 2;
//          j = 199;
//          do
//         {
//                 while (--j);
//         } while (--i);
//        
//        }
//}
//****************************************************
//獲取毛皮重量
//****************************************************
void Get_Maopi()
{        
        unsigned long Weight_Maopi_0=0,Weight_Maopi_1=0;//毛皮臨時變量
        float Weight_Maopi_temp0=0,Weight_Maopi_temp1=0;//計算毛皮臨時變量
    mm:Weight_Maopi_0=HX711_Read();                                        //第一次讀取毛皮數據
        delay_ms(1000);                                                                        //延時一段時間
        Weight_Maopi_1=HX711_Read();                                        //第二次讀取毛皮數據
        Weight_Maopi_temp0=Weight_Maopi_0/GapValue;                //換算第一次讀取毛皮重量
        Weight_Maopi_temp1=Weight_Maopi_1/GapValue;                //換算第二次讀取毛皮重量
        if(fabs(Weight_Maopi_temp1-Weight_Maopi_temp0)>0.1)//當兩次讀取毛皮重量絕對值大于0.1以上時重新測量
        goto mm;
        Weight_Maopi=Weight_Maopi_1;                                        //讀取成功則返回第一次讀取值
}
//****************************************************
//稱重
//****************************************************
void Get_Weight()
{               
        unsigned long HX711_Buffer = 0;
        HX711_Buffer=HX711_Read();//讀取重量
        if(HX711_Buffer>Weight_Maopi)
        {
                Weight=(float)((HX711_Buffer-Weight_Maopi)/GapValue);
        }


}


void Timer1Init(void)                //50毫秒@11.0592MHz
{
        AUXR &= 0xBF;        //定時器時鐘12T模式
        TMOD &= 0x0F;        //設置定時器模式
        TL1 = 0x00;                //設置定時初值
        TH1 = 0x4C;                //設置定時初值
        TF1 = 0;                //清除TF1標志
        TR1 = 1;                //定時器1開始計時
        ET1=1;
}


void main()
{
        cxyg=0;//低電平導通
        port_mode();         //IO口初始化
        init_HT1621();   //初始化液晶屏
        screen_clear();  //清空整屏顯示內容
        delay_nms(1000);
        Get_Maopi();
        IT0 = 0;                  
//    IT0 = 1;                  
        Timer1Init();
//         IT1 = 1;
//         EX1 = 1;  
        EX0 = 1;                  
        EA = 1;
        AUXR |= 0x40;           //定時器1為1T模式


        


        LCD_display_float(Weight);//顯示浮點數
        while(1)
        {


                        
                        Get_Weight();//稱重
                        LCD_display_float(Weight);//顯示浮點數
                        if(Weight>0.5)q=0;//如果稱重數據大于兩克,定時器等于0
                        q++;
                        if(q>100)
                        {
                                        write_com(TONEON); //打開聲音
                                                delay_nms(1000);   //延時一下
                                                write_com(TONEOFF);//關閉聲音
                                                write_com(LCDOFF); //關閉LCD偏壓
                                                cxyg=1;
                                            PCON = 0x02;            //MCU掉電模式
//                                                _nop_();                //掉電模式被喚醒后,首先執行此語句,然后再進入中斷服務程序
//                                                _nop_();
                        }                                


        }
}
void tm1_isr() interrupt 3 using 1
{
        unsigned char i;
    TL1 = 0x00;         //初始化計時值
    TH1 =0x4C >> 8;     //1s
        if(i++==100)                // 20*50=1000ms
        {
          i=0;
          q+=1;                    //將測試口取反


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

使用道具 舉報

沙發
ID:827243 發表于 2020-11-18 18:30 | 只看該作者
問題要說清楚,原來功能是什么,你想改成什么.
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费a级毛片在线播放 | 99热视 | 中文字幕91av | 日操操夜操操 | 粉嫩一区二区三区性色av | 久久综合久久综合久久 | 欧美日韩在线不卡 | 国产美女久久 | 日韩视频精品 | 欧美在线成人影院 | 三级视频国产 | 99国产视频 | 一区二区三区四区av | 一区二区三区免费网站 | 欧美一级毛片久久99精品蜜桃 | 国产精品毛片无码 | 91国产在线播放 | 日本三级做a全过程在线观看 | 亚洲视频在线播放 | 久久国产精品无码网站 | 久久精品国产久精国产 | 久久6视频 | 国产精品自产av一区二区三区 | 久久se精品一区精品二区 | 欧美啊v在线观看 | 免费在线观看一区二区三区 | 国产激情免费视频 | 天天干天天操 | 中文在线一区二区 | 99久久国产 | 天天操网 | 亚洲精品国产区 | 伊人啪啪网 | 欧美在线不卡 | 免费一区二区 | 黄色大片免费网站 | 成人免费视频观看 | 玖玖精品视频 | 亚洲毛片 | 国产真实乱对白精彩久久小说 | 成人动慢 |