|
几种电子称程序调试集锦
cad 程序源码 pcb文件 还有制作文档都有,下载地址:
电子称.rar
(2.74 MB, 下载次数: 169)
下面是源码预览:
- #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;
- }
- }
- //}
- }
- }
复制代码
|
评分
-
查看全部评分
|