|
幾種電子稱程序調試集錦
0.png (313.15 KB, 下載次數: 184)
下載附件
2016-1-16 01:10 上傳
0.png (27.52 KB, 下載次數: 203)
下載附件
2016-1-16 01:11 上傳
cad 程序源碼 pcb文件 還有制作文檔都有,下載地址:
電子稱.rar
(2.74 MB, 下載次數: 169)
2015-5-24 12:08 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
下面是源碼預覽:
- #include <reg52.h>
- #include "Global.h"
- sbit BUZZER = P3^4;
- unsigned int UnitPrice;
- unsigned char ModeFlag = 0;
- //初始化外部中斷
- void Key_Init (void)
- {
- IT0 = 1;
- EX0 = 1;
- IT1 = 1;
- EX1 = 1;
- }
- //外部中斷1,清零按鍵
- void Key_ResetINT (void) interrupt 0
- {
- HX711_SetOffSet(); //設置ADC零點
- KeyBoard_Delay1mS(); //延時1mS,防抖
- }
- //外部中斷2,模式折紙按鍵
- void Key_ModeINT (void) interrupt 2
- {
- HX711_SetOffSet(); //設置ADC零點
- KeyBoard_Delay1mS(); //延時1mS,防抖
- /*
- unsigned int i;
- EX1 = 0;
- ModeFlag = ~ModeFlag;
- if (ModeFlag)
- {
- LCD_DisStr(" ",0xc0); //不顯示價格
- }
- else
- {
- LCD_DisStr("Price: ",0xc0); //顯示價格
- }
- for (i=0;i<1500;i++)
- {
- KeyBoard_Delay1mS();
- }
- EX1 = 1;
- */
- }
- //設置單價
- double SetUnitPrice (void)
- {
- unsigned char key;
- unsigned char zbits = 0;
- unsigned char xbits = 0;
- bit dotFlag = 0;
-
- UnitPrice = 0;
- HX711_UpdateCtrl(0);
- LCD_DisStr("Unit Price: ",0x80);
- LCD_DisStr(" $/g ",0xc0);
-
- LCD_WrCMD(0xc6);
- LCD_WrDAT('*');
- LCD_WrDAT('*');
- LCD_WrDAT('*');
- LCD_WrDAT('*');
- LCD_WrDAT('*');
- LCD_SetCurser(1,0xc6);
- while (1)
- {
- key = KeyBoard_GetVal();
- if (key != 0)
- {
- if (key == 1)
- {
- break;
- }
- else if (key == 9)
- {
- if (!dotFlag)
- {
- if (zbits > 0)
- {
- zbits--;
- }
- }
- else
- {
- if (xbits > 0)
- {
- xbits--;
- }
- }
- UnitPrice = UnitPrice / 10;
- LCD_WrCMD(0xc6 + zbits + xbits);
- LCD_WrDAT(' ');
- LCD_SetCurser(1,0xc6 + zbits + xbits);
- }
- else if (key == 16)
- {
- if (!dotFlag)
- {
- LCD_WrCMD(0xc6 + zbits + xbits);
- LCD_WrDAT('.');
- xbits++;
- LCD_SetCurser(1,0xc6 + zbits + xbits);
- dotFlag = 1;
- }
- }
- else if ((zbits <= 1) || (dotFlag && (xbits <= 2)))
- {
- LCD_WrCMD(0xc6 + zbits + xbits);
- LCD_SetCurser(1,0xc6 + zbits + xbits);
- switch (key)
- {
- case 4:
- LCD_WrDAT('1');
- if (!dotFlag)
- {
- zbits++;
- }
- else
- {
- xbits++;
- }
- UnitPrice = UnitPrice * 10 + 1;
- break;
- case 8:
- LCD_WrDAT('2');
- if (!dotFlag)
- {
- zbits++;
- }
- else
- {
- xbits++;
- }
- UnitPrice = UnitPrice * 10 + 2;
- break;
- case 12:
- LCD_WrDAT('3');
- if (!dotFlag)
- {
- zbits++;
- }
- else
- {
- xbits++;
- }
- UnitPrice = UnitPrice * 10 + 3;
- break;
- case 3:
- LCD_WrDAT('4');
- if (!dotFlag)
- {
- zbits++;
- }
- else
- {
- xbits++;
- }
- UnitPrice = UnitPrice * 10 + 4;
- break;
- case 7:
- LCD_WrDAT('5');
- if (!dotFlag)
- {
- zbits++;
- }
- else
- {
- xbits++;
- }
- UnitPrice = UnitPrice * 10 + 5;
- break;
- case 11:
- LCD_WrDAT('6');
- if (!dotFlag)
- {
- zbits++;
- }
- else
- {
- xbits++;
- }
- UnitPrice = UnitPrice * 10 + 6;
- break;
- case 2:
- LCD_WrDAT('7');
- if (!dotFlag)
- {
- zbits++;
- }
- else
- {
- xbits++;
- }
- UnitPrice = UnitPrice * 10 + 7;
- break;
- case 6:
- LCD_WrDAT('8');
- if (!dotFlag)
- {
- zbits++;
- }
- else
- {
- xbits++;
- }
- UnitPrice = UnitPrice * 10 + 8;
- break;
- case 10:
- LCD_WrDAT('9');
- if (!dotFlag)
- {
- zbits++;
- }
- else
- {
- xbits++;
- }
- UnitPrice = UnitPrice * 10 + 9;
- break;
- case 5:
- LCD_WrDAT('0');
- if (!dotFlag)
- {
- zbits++;
- }
- else
- {
- xbits++;
- }
- UnitPrice = UnitPrice * 10 + 0;
- break;
- default :
- break;
- }
- }
- }
- }
- LCD_DisStr("Weight: ",0x80);
- LCD_DisStr("Price: ",0xc0);
- HX711_UpdateCtrl(1);
- return UnitPrice;
- }
- void main (void)
- {
- unsigned char key;
- double UnitPrice;
-
- LCD_Init(); //初始化LCD
- LCD_DisStr("Weight:",0x80);
- LCD_DisStr("Price: ",0xc0);
- Key_Init(); //初始化按鍵
-
- HX711_SetOffSet(); //設置ADC零點
-
- HX711_UpdateInit(); //開始ADC自動定時轉換
- EA = 1; //開全局中斷
-
- while (1)
- {
-
- //if (!ModeFlag) //如果為計價模式
- //{
- key = KeyBoard_GetVal(); //掃描鍵值
- if (key != 0) //如果有鍵按下
- {
- switch (key)
- {
- case 1: //如果按下鍵為'*'鍵
- SetUnitPrice(); //設置單價
- break;
- default:
- break;
- }
- }
- //}
- }
- }
復制代碼
|
評分
-
查看全部評分
|