毕业设计 单片机蓝牙电子秤设计与实现(源码+硬件+论文)


0 前言

🔥
这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

🚩 毕业设计 单片机蓝牙电子秤设计与实现(源码+硬件+论文)

🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:3分
  • 工作量:3分
  • 创新点:4分

🧿 项目分享:

https://gitee.com/sinonfin/sharing

在这里插入图片描述

1 主要功能

  • (1)LCD1602显示屏显示当前的重量,单位是g。
  • (2)有去皮功能,有微调校准重量功能。
  • (3)最大称重9.999kgo
  • (4)AD采用24位AD模块HX711。

在这里插入图片描述

2 硬件设计(原理图)

原理图

在这里插入图片描述

仿真效果
在这里插入图片描述

3 核心软件设计

单片机完成初始化程序后进入主程序,主程序主要完成对存储参数的读取,对检测到的数据进行数据处理,键处理,显示处理等。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

篇幅有限,不过多复述详细设计细节,详细的设计分享在论文中。。。

关键代码

uint max_weight;//最大称量
uchar dsel;//分度值
uchar dp;//小数点

float beilv;//倍率
ulong zero_save;//传感器零位值
}bdf;

uint  code num_ten[4]={1,10,100,1000};
uchar code adcount2[4]={2,4,5};//数据处理进平均次数

uchar code tab_dsel[4]={1,2,5,10};//分度值表
//0 , 1  , 2 ,  3 ,   4 ,  5 ,  6 ,  7  , 8 ,  9
uchar code tab[]={0xB7,0x03,0xD6,0xC7,0x63,0xE5,0xF5,0x83,0xF7,0xE7,

//A ,  b , C ,  d ,  E ,  F ,  暗,  - ,  t ,  P
0xF3,0x75,0xB4,0x57,0xF4,0xF0,0x00,0x40,0x74,0xF2,

//H , L ,  o ,  J  , r ,  n  , U,   =,   -    i
0x73,0x34,0x55,0x07,0x50,0x51,0x37,0x44,0x04,0x01};
//显示位码表

//0,  1,   2,   3,   4,   5,   6
uchar code digit[]={0xfe,0xdf,0xef,0xfd,0xfb,0xbf,0xF7};//显示位码表

sbit P_OE    =P2^1;//显示控制
sbit P_LE	  =P2^0;

sbit buz0     =P3^6;//蜂鸣器
sbit buz1     =P3^7;
/******************************************************/
bit b_follow;//启动零位跟踪标记
bit b_serial;//串口发送完标记
bit b_followdelay;//第一次不进行零位跟踪
bit b_steady;//稳定标记
/******************************************************/
void (* data task)(void);//函数指针变量,接受下一步要做的任务

uint idata fendushu;//分度数

uchar weight_led[6] ;//重量窗显示缓存
uchar idata temp_var;
uchar weight_dp;//小数点位数
uchar fu_number;//负号显示位置
uchar wdcount;//稳定计数
uchar adup_count;//异常值计数
uchar addcount3;//累加次数
/******************************************************/
extern void key_scan(void);//按键扫描
extern void weight_disp(void);//重量计算,超载报警
extern void start_set(void);//单片机初始化设置
extern void adc (void);//读取AD值
extern void ad_processor(void);//AD数据滤波处理
extern void fun_weight(void);//正常称重状态
extern void bd_start(void);//重量或电压标定选择
extern void dy_disp(void);//电压显示
extern void led_disp(ulong temp,uchar num);
extern uchar get_jiaoyan(uchar *address,uchar num);//计算校验字
extern void neima(void);

void delay60ms(uchar time);//40ms延时
void fendu_val(void);//分度数运算
void check_canshu(void);//读参数,并校验是否正确
void ver_disp(void);//显示版本号
void seg_check(void);//笔画检测
/******************************************/
void main (void)
{

start_set();           //单片机初始化
beep_time=3;           //开机鸣叫
flash_num=6;           //没有闪烁位
spi_sys();             //ad芯片初始化
check_canshu();        //读参数,并校验是否正确
if(bdf.shuduval>2)     //若是异常值,用默认值
bdf.shuduval=1;
addcount3=4;
bdf_dp_temp=bdf.dp;    //保存小数点(标定修改参数时用)
bdf_dsel_temp=bdf.dsel;//保存分度值(标定修改参数时用)
key_scan();            //标定按键扫描

switch(key_temp)       //功能键处理函数
{
case 0xc0:b_biaoding=1;task=bd_start ; break;//

default:
bdf.dp=0;
ver_disp();//显示版本号
seg_check();//笔画检测
fendu_val();//分度数运算
zero_current=ad_steady;//保存当前零位值
task=fun_weight;
break;
}

do
{  //主循环程序
adc();         //A/D采样
ad_processor();//数据处理
zero_follow(); //零位跟踪程序
neima();        //内码计算
weight_disp(); //重量显示
key_scan();    //按键扫描
(* task)();	 //任务切换函数

}
while(1);



}
/*****************************************************************/
void fendu_val(void)//分度数运算

{    uchar i;
ulong temp;

temp=(ulong)bdf.max_weight*num_ten[bdf_dp_temp];
fendushu=temp/bdf.dsel;

i=fendushu/3000;
if (i==0)
i=1;
half_sel_bound=5/bdf.beilv;//半个分度的原始码
follow_bound=i*half_sel_bound;//计算零位跟踪时的原始码,按3000分度
time_weight=200;

}
/*****************************************************************/
void ver_disp(void)//显示版本号及最大量程
{
weight_led[0]=7;//  7
weight_led[1]=1;//  1
weight_led[2]=2;//  2
weight_led[3]=17;// -
weight_led[4]=0;//  0
weight_led[5]=5;//  5
fun_led=0xff;
delay60ms(15);//40ms延时
beep_time=3;
led_disp(bdf.max_weight,5);//显示最大量程
weight_led[0]=15;// F
delay60ms(20);//40ms延时

4 实现效果

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

5 最后

包含内容

在这里插入图片描述

🧿 项目分享:

https://gitee.com/sinonfin/sharing

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
51单片机是一种非常常用的微控制器,被广泛应用于各种电子设备中。蓝牙技术是一种无线通信技术,可以实现设备之间的数据传输和通信。电子秤是一种根据物体重量进行测量的设备,可以应用于各种场合,例如超市、医院等。LCD1602是一种常见的液晶显示器,可以用来显示各种信息。 基于以上硬件的基础上,毕业设计可以考虑将51单片机蓝牙模块、电子秤和LCD1602组合在一起,实现一个蓝牙电子秤系统。 首先,通过51单片机和LCD1602,可以实现电子秤测量的重量信息显示在LCD1602上,方便用户观察。同时,通过三个按键,用户可以进行操作,例如切换不同的显示模式、调节显示亮度等。 其次,通过蓝牙模块,可以实现电子秤测量的重量数据通过蓝牙传输给其他设备,例如手机、电脑等。这样,用户可以通过手机等设备接收和查看电子秤的重量信息,实现无线传输和远程监控。 毕业设计的关键是编写合适的程序代码,实现数据的采集、处理、显示和传输等功能。同时还需要进行硬件的连接和布局,确保各个模块之间的正常通信和工作。 总的来说,51单片机蓝牙电子秤LCD1602三按键蓝牙毕业设计,是一个结合了51单片机蓝牙技术、电子秤和LCD1602的系统,能够实现电子秤重量的显示、远程传输和控制等功能。通过该设计,可以提高电子秤的使用便利性和智能化水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值