基于51单片机的多功能电子秤具有去皮、计价、累计、清除、超重声光报警等功能
自己做的,仿真、原理图、程序、报告都有,下载之后就可以用(篇幅有限,显示的程序不全,需要的话可在附件区下载)
操作说明:(1)输入单价后,按下*键,再按=,显示单个商品总价,再按+计入并存储合计
(2)按下/去皮;按下ON/C清除单价;按下-全部清除
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
原理图
程序
单片机源程序如下:
- /**********************************************************************************
- 注:质量计算函数:位于adc0804.c文件
- 价格计算函数:位于key.c文件
- 仿真:使用方法———键盘输入一个数,再输入+ - * /,最后输入等号,得到结果
- eg:4*=
- **********************************************************************************/
- #include <reg52.h>
- #include "function.h"
- #include "setting.h"
- #include "lcd.h"
- #include "key.h"
- #include "adc0804.h"
- sbit Beep=P2^6; //IO口定义
- sbit LED=P2^7; //IO口定义
- uchar quantity_analog=0; //存放物体质量数据_ADC读取的模拟量
- float quantity_digital=0; //存放物体质量数据_ADC转换后的数字量
- float price=0; //存放价格参数
- float leiji[6]; //定义第1,2组数据
- float all=0;
- char code str[] = "Wd:";
- uint t=0,s=0;
- void main(void)
- {
- Beep=1; //IO口定义
- LED=1; //IO口定
- lcd_init(); //初始化lcd
- init_interrupt(); //中断打开、选择函数
- write_com(0x80); //数据指针定位到第一行第一个字处
- write_com(0x80+8); //将光标移到 距离数字的位置
- delay_ms(100);
- // print_string_location(0,2,string); //显示Price 字符串
- print_string_location(0,2,"Total:"); //显示Price 字符串
- while(1)
- {
- key_scan(); //扫描按键函数
-
- if(key == '-')
- {
- for(t=0;t<6;t++ )
- {
- leiji[t]=0;
- }
- system_init(); //系统复位函数
- key_operator=0;
- number_count=0; //清零
- all=0;
- }
-
-
-
- if(key == ' ')
- {
- for(t=0;t<6;t++ )
- {
- number_1[t]=0;
- }
- system_init(); //系统复位函数
- key_operator=0;
- number_count=0; //清零
- }
-
-
- quantity_digital=quantity_count()-qupi; //获取物体质量———————————————浮点型(float)
- if(quantity_count()>45)
- {
- Beep=0; //IO口定义
- LED=0; //IO口定
- }
- else
- {
- Beep=1; //IO口定义
- LED=1; //IO口定
- }
-
-
- price=price_count(); //获取键盘输入,计算后的价格——浮点型(float)
- print_weight(0,1); //显示质量
-
- if(price>0) //大于0时显示价格
- {
- print_price(0,2); //显示价格
- while(1) //计算结束,等待清零键按下
- {
- key_scan();
-
-
- if(key == ' ')
- {
- for(t=0;t<6;t++ )
- {
- number_1[t]=0;
- }
- price=0;
- key_operator=0;
- number_count=0; //清零
- system_init(); //系统复位函数
- break;
- }
-
- if(key == '-')
- {
- for(t=0;t<6;t++ )
- {
- leiji[t]=0;
- }
- system_init(); //系统复位函数
- key_operator=0;
- number_count=0; //清零
- all=0;
- }
-
-
- if(key == '+')
- {
- leiji[s]=price;
- all=0;
- price=0;
- key_operator=0;
- number_count=0; //清零
- system_init(); //系统复位函数
- s++;
- if(s==5) s=0;
-
- for(t=0;t<6;t++ )
- {
- all=all+leiji[t];
- }
-
- print_all(0,2); //显示价格
-
- }
-
- }
- }
-
- if(key == ' ')
- {
- for(t=0;t<6;t++ )
- {
- number_1[t]=0;
- }
-
- price=0;
- key_operator=0;
- number_count=0; //清零
- system_init(); //系统复位函数
- }
-
- }
- }
复制代码
文档:
|