• 方案介紹
    • 1.? 簡介
    • 2.? 主要功能
    • 3.? 源程序(Keil5)
    • 4.? 仿真proteus8.6
    • 5.? 設計報告
    • 6.? 資料清單
    • 7.? 資料獲取鏈接
  • 附件下載
  • 相關推薦
申請入駐 產業(yè)圖譜

基于51單片機的電子秤設計(二)

04/21 09:00
483
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

單片機仿真設計合集資料獲取.pdf

共1個文件

資料清單:C程序+仿真+設計報告+使用說明+元件清單+操作視頻

仿真版本:Proteus8.6及以上版本

程序編譯:Keil5 C51

編程語言:C語言

設計編號:【P02】

1.? 簡介

? 本文提出了一種基于51單片機的電子秤設計。該設計在硬件方面主要采用AT89C51單片機作為主控核心,采用壓力傳感器對數(shù)據(jù)進行采集,電子秤專用24位AD轉換芯片HX711對傳感器采集到的模擬量進行AD轉換,轉換后的數(shù)據(jù)送到單片機進行處理顯示,數(shù)據(jù)顯示由LCD1602液晶實現(xiàn)。

2.? 主要功能

a.系統(tǒng)可實現(xiàn)電子稱基本的稱重功能(稱重范圍為0~5Kg,重量誤差0.001Kg)。

b.系統(tǒng)應具備輸入單價、去皮、刪除、計算總價、校準加減的功能。

c.系統(tǒng)超出最大測量范圍5Kg時應有報警指示功能(蜂鳴器報警提示)。

3.? 源程序(Keil5)

本設計采用keil5 C51軟件(內附安裝包)實現(xiàn)程序設計。如需用keil4打開程序,可自行通過.c和.h文件新建工程即可。

#include <reg52.h>
#include <intrins.h>
#include <string.h>

bit bdata flag_key;
#include "main.h"
#include "LCD1602.h"
#include "HX711.h"
#include "keyboard.h"
#include "eeprom52.h"

#define uchar unsigned char
#define uint  unsigned int

unsigned long HX711_Buffer = 0;
unsigned long Weight_Maopi = 0;
unsigned long Weight_Maopi_0 = 0;
unsigned int qupi=0;
long Weight_Shiwu = 0;
//鍵盤處理變量
unsigned char keycode;
unsigned char DotPos;				   //小數(shù)點標志及位置

uint GapValue,GapValue1;

unsigned long idata price;     //單價,長整型值,單位為分 
unsigned long idata danjia[8]={11,22,33,44,100,200,300,400}; 
unsigned char count_danjia; 
unsigned long idata money,total_money;     //總價,長整型值,單位為分
//定義標識
volatile bit FlagTest = 0;		//定時測試標志,每0.5秒置位,測完清0
volatile bit FlagKeyPress = 0;  //有鍵按下標志,處理完畢清0
//校準參數(shù)
//因為不同的傳感器特性曲線不是很一致,因此,每一個傳感器需要矯正這里這個參數(shù)才能使測量值很準確。
//當發(fā)現(xiàn)測試出來的重量偏大時,增加該數(shù)值。
//如果測試出來的重量偏小時,減小改數(shù)值。
//該值可以為小數(shù)
//#define GapValue 349
sbit LED=P1^1;

volatile bit ClearWeighFlag = 0; //傳感器調零標志位,清除0漂

/******************把數(shù)據(jù)保存到單片機內部eeprom中******************/
void write_eeprom()
{
	SectorErase(0x1000);
	GapValue1=GapValue&0x00ff;
	byte_write(0x2000, GapValue1);
	GapValue1=(GapValue&0xff00)>>8;
	byte_write(0x2001, GapValue1);
	byte_write(0x2060, a_a);	
}

/******************把數(shù)據(jù)從單片機內部eeprom中讀出來*****************/
void read_eeprom()
{
	GapValue   = byte_read(0x2001);
	GapValue   = (GapValue<<8)|byte_read(0x2000);
	a_a      = byte_read(0x2060);
}

/**************開機自檢eeprom初始化*****************/
void init_eeprom() 
{
	read_eeprom();		//先讀
	if(a_a != 1)		//新的單片機初始單片機內問eeprom
	{
		GapValue  = 3500;
		a_a = 1;
		write_eeprom();	   //保存數(shù)據(jù)
	}	
}
																	
//顯示單價,單位為元,四位整數(shù),兩位小數(shù)
void Display_Price()
{
            LCD1602_write_com(0x8c);
			LCD1602_write_data(price/100 + 0x30);
			LCD1602_write_data(price%100/10 + 0x30);
			LCD1602_write_data('.');
			LCD1602_write_data(price%10 + 0x30);
}

//顯示重量,單位kg,兩位整數(shù),三位小數(shù)
void Display_Weight()
{
            LCD1602_write_com(0x83);
			LCD1602_write_data(Weight_Shiwu/1000 + 0x30);
			LCD1602_write_data('.');
			LCD1602_write_data(Weight_Shiwu%1000/100 + 0x30);
			LCD1602_write_data(Weight_Shiwu%100/10 + 0x30);
			LCD1602_write_data(Weight_Shiwu%10 + 0x30);
}

4.? 仿真proteus8.6

? 本設計采用proteus8.6軟件(內附安裝包)實現(xiàn)仿真設計,如下圖所示。proteus軟件一般存在高低版本兼容問題,該仿真是通過proteus8.6導出的,所以請盡量使用proteus8.6打開文件,低于proteus8.6的版本不能夠正常使用,高于proteus8.6的版本除了proteus8.8/8.9理論上可以正常使用。

初始界面:

稱重計價:

超重報警:

5.? 設計報告

設計報告主要包括硬件電路、軟件設計、仿真調試等等,僅供參考。

6.? 資料清單

設計資料主要包括C程序+仿真+設計報告+使用說明+元件清單+操作視頻等。

7.? 資料獲取鏈接

百度網盤下載鏈接:【P02】百度網盤下載鏈接

更多單片機仿真設計合集:單片機仿真設計合集

  • 單片機仿真設計合集資料獲取.pdf
    下載

相關推薦