简易电子硬币识别装置Word下载.docx
- 文档编号:1518136
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:19
- 大小:200.49KB
简易电子硬币识别装置Word下载.docx
《简易电子硬币识别装置Word下载.docx》由会员分享,可在线阅读,更多相关《简易电子硬币识别装置Word下载.docx(19页珍藏版)》请在冰点文库上搜索。
二、理论分析与计算
2.1电阻应变式重量检测原理
电阻应变式传感器内部电路图如图2-1所示
图2-2电阻应变式传感器内部结构
图中R1、R2、R3、R4为4个应变片电阻,组成了桥式测量电路,e为电源电压,V为信号电压。
当应变片受到力的变化时,电阻R1、R2、R3、R4变成R+△R1、R+△R2、R+△R3、R+△R4,电桥的输出电压变为:
V=kF。
其中V为电桥的输出电压,k为系数,F为力的大小。
2.2A/D转化器原理
由于设计的要求,我们选择设计的增益倍数为128倍。
HX711有32、64、128三种增益可供选择,但是由于传感器的输出信号较小,假设选择较小的增益可能最后精度达不到要求。
虽然增益越高带来的噪声比越大,但是HX711的特点有低噪声,影响不大。
因此选用128倍的增益。
HX711的输出数据速率有10Hz和80Hz。
由于10Hz速率的精度要高于80Hz,且本设计需要较高的精度,所以选用10Hz的数据输出速率。
同时HX711是一款专为高精度电子称而设计的24位A/D转换器芯片,其分辨率可以到达224=16777216,完全可以完成本次设计。
三、程序设计流程图
3.1任务分配
以单片机作为主要的控制器件进行任务分配。
当电阻应变式传感器检测到力的变化时,将微弱的电信号传到A/D转化器HX711,HX711通过信号放大等一系列动作,将模拟量转化成数字量送往单片机。
芯片的串口数据输出端接在单片机的外部中断0即P3.2口。
单片机的1,2,3引脚,即P1.0,P1.1,P1.2口,控制LCD液晶显示屏,分别与12864的片选信号输入,串行数据输入,使能信号相连。
单片机P2口的第四位接四个按键,用来控制模式的选择,上下移动以及确认。
3.2主程序流程图
主程序流程图如下列图3-1所示。
图3-1主程序流程图
3.3中断程序流程图
中断程序流程图如下列图3-2所示。
图3-2中断程序流程图
四、系统测试与结果分析
4.1测试环境与工具
测试在实验室进行,环境温度为26摄氏度。
测试工具有电脑、一角硬币〔新〕数枚、一角硬币〔旧〕数枚、五角硬币数枚以及一元硬币数枚。
4.2测试结果
在本此设计完成后,我们进行了大量实验来验证,对基本要求和发挥部分内的各项进行了逐一实验,并到达了满意的要求。
我们主要进行了单币种的测试试验以及多币种的测试试验。
其中多币种的测试试验包括超出设定总额时显示应退总额以及个数。
单币种测试结果如下列图表4-1所示。
币种
真实值
测量值
一元
1
2
3
五角
新版一角
旧版一角
表4-1单币种测试结果
测量显示多个单币值品种的数量和总额如下表4-2所示
旧1角
新1角
5角
1元
实际个数
5
6
准确率
100%
表4-2测量显示多个单币值品种
多币种测试结果如下表4-3所示。
设定总额为3元
实际投入金额〔元〕
4
实际投入个数(个)
10
11
测量得出金额〔元〕
测量的出个数(个)
应返还金额〔元〕
应返还个数(个)
10或1
表4-3多币种测试结果
第一次
第二次
第三次
实际值
测量混合新旧版的1角硬币。
如下表4-4所示。
表4-4测量混合新旧版的1角硬币
测量值显示
一次性放入各种多个币值的硬币,能计算出货币总额及币值种类的数量。
〔如表4-5〕
表4-5一次性放入各种多个币值的硬币
附录一整体电路图
图一整体电路图
附录二源程序
#include"
reg52.h"
#defineulongunsignedlong
#defineucharunsignedchar
12864lcd.h"
mode.h"
/*macro*/
typedefvoid(*Ptr)(ulong);
#definemeanAmount20
#defineMODIFY33
#defineEND44
#defineKeyP2
sbitDOUT=P3^2;
sbitCLK=P3^3;
sbitLED=P1^3;
/*global*/
ulongadcVal;
charmode=MODIFY;
ucharkeyVal,setValue=0;
ulongval[meanAmount]={0},pi;
ulongcodeold=14828,new=41557,five=49488,yuan=77983;
PtrptrArray[]={0,LCD_Mode1,LCD_Mode2,LCD_Mode3,LCD_Mode4,LCD_Mode5,LCD_Mode6};
externchara1,a2,a3;
externulongpreValue;
/*dec*/
voidHX711_Init();
voiddelay1ms(unsignedT);
//?
?
0us
ulongMean(ulong*Array);
ucharKeyScan();
charstable(ulong*Array);
voidmain()
{
ucharmodify[]="
Modifying..."
;
/*Configuration*/
LED=OFF;
LCD12864_Init();
delay1ms(5);
/*startModify*/
LCD12864_DisplayString(0,0,modify);
delay1ms(4000);
/*延时四秒等待稳定*/
HX711_Init();
/*开始校准*/
while(mode!
=END);
/*等待校准结束*/
/*endmodifying*/
mode=1;
while
(1)
{
if(KeyScan())
{
switch(keyVal)
{
/*clear键*/
case0x0E:
{
while((Key&
0x0F)!
=0x0F);
/*等待按键释放*/
a1=a2=a3=preValue=setValue=0;
/*清空数据*/
}break;
/*模式切换键*/
case0x07:
while((Key&
0x0F)!
LED=OFF;
//delay1ms(200);
if(mode==6)
mode=1;
else
mode++;
/*模式切换好*/
/*清屏*/
LCD12864_CleanScans();
delay1ms(10);
/*模式界面*/
switch(mode)
{
case1:
{
/*刚切换到模式1*/
a1=a2=a3=0;
preValue=0;
LCD_Show(0,0,0);
}break;
/*切到模式2*/
case2:
LCD12864_DisplayString(1,2,"
YiJiao:
00"
);
LCD12864_DisplayString(2,2,"
Value:
00.0"
/*切到模式3*/
case3:
preValue=0;
setValue=0;
LCD_ShowMode3(a3,a2,a1,setValue);
/*模式4:
区分新旧一角*/
case4:
LCD12864_DisplayString(1,3,"
Old:
0"
LCD12864_DisplayString(2,3,"
New:
/*模式5:
一次放入各种币*/
case5:
LCD_ShowMode5(0,0,0,0,0,0,0);
/*模式6:
测重*/
case6:
LCD12864_DisplayString(0,1,"
Weighing..."
00.00g"
}
/*元键*/
case0x0B:
while((Key&
=0x0F);
if(mode==3)
setValue+=10;
if(setValue>
99)
setValue-=100;
/*角键*/
case0x0D:
setValue++;
if(setValue>
}
}
}
/*HX711初始化*/
voidHX711_Init()
IE0=0;
EX0=IT0=1;
EA=1;
/*GlobalInterrupt*/
CLK=0;
/*外部中断0*/
voidEXT0_ISR()interrupt0
{
staticcnt=0;
chari;
ulongtestVal=0;
for(i=0;
i<
24;
i++)
CLK=1;
testVal<
<
=1;
CLK=0;
if(DOUT)
testVal++;
}
CLK=1;
/*ADConversionCompleted*/
val[cnt]=testVal;
if(cnt==(meanAmount-1))//测完20个
cnt=0;
if(stable(val))/*稳定了即为有效数据*/
adcVal=Mean(val);
/*假设为矫正模式不相减*/
if(mode!
=MODIFY)
if(adcVal/10000==1674)/*无盘*/
IE0=0;
return;
}
else
adcVal-=pi;
//getaValue
if(mode==MODIFY)
LCD_MODIFY(adcVal);
else
ptrArray[mode](adcVal);
else
cnt++;
//ClearITFlag
IE0=0;
ucharKeyScan()
ucharkeyValue=0;
if((Key&
=0x0F)
keyValue=Key&
0x0F;
delay1ms(20);
if(keyValue==(Key&
0x0F))/*ConfirmKeyPressing*/
keyVal=keyValue;
return1;
else
return0;
/*NoKeyPressing*/
return0;
voiddelay1ms(unsignedT)//?
unsignedchara,b;
while(T--)
for(b=39;
b>
0;
b--)
for(a=1;
a>
a--);
ulongMean(ulong*Array)
chari,j;
ulongtemp,sum=0;
for(i=0;
i<
19;
for(j=0;
j<
j++)
if(Array[j]>
Array[j+1])
temp=Array[j];
Array[j]=Array[j+1];
Array[j+1]=temp;
/*endsort*/
for(i=5;
15;
sum+=Array[i];
returnsum/10;
charstable(ulong*Array)
ulongmax=*Array,min=*Array;
20;
if(Array[i]>
max)
max=Array[i];
if(Array[i]<
min)
min=Array[i];
if(max-min<
150)
return1;
附录三元器件清单
元器件清单
名称
备注
数量
交流电线
220V
变压器
220V转9V
整流桥
DB107
稳压集成电路
7805
A/D转换芯片
HX711
100g
单片机
60S2
晶振
12M
显示屏
LCD12864
电解电容
1000uF
100uF
10uF
瓷片电容
104
8
30pF
电阻
10k
1k
表一元器件清单
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 电子 硬币 识别 装置