给大家提供一些资料详细解释,有需要的自行提取,网盘地址我放在下面
链接:https://pan.baidu.com/s/1NigBeujDZTCFL0hdMiu7yg?pwd=syxp
提取码:syxp
1、以自动存包柜为研究对象,当顾客需要存包的时候,可以自行到存包柜前按‘开门”键,控制锁柜门的电磁阀将一空箱打开,顾客存包,并将柜门关上;
2、通过屏幕显示柜子内是否有物品存放。
3、当顾客需要取包时, 要将条码放置到条形码阅读器前方,信息读出后,顾客就可将包取出来。
4、柜门如未关闭,可通过蜂鸣器进行报警来提醒顾客关闭柜门。30s没关门蜂鸣器响。
/**********************************
**********************************/
/**********************************
包含头文件
**********************************/
#include "adc.h"
/**********************************
函数定义
**********************************/
uint Adc0832_Get_Value(uchar CH)
{
uint dat = 0x00;
uchar i,test,adval;
adval = 0x00;
test = 0x00;
//初始化
ADC_CLK = 0;
ADC_DATI = 1;
_nop_(); _nop_();
ADC_CS = 0;
_nop_();
ADC_CLK = 1;
_nop_(); _nop_();
//通道选择
if(CH == 0x00)
{
ADC_CLK = 0;
ADC_DATI = 1; //通道0的第一位
_nop_();
ADC_CLK = 1;
_nop_(); _nop_();
ADC_CLK = 0;
ADC_DATI = 0; //通道0的第二位
_nop_(); _nop_();
ADC_CLK = 1;
_nop_();
}
else
{
ADC_CLK = 0;
ADC_DATI = 1; //通道1的第一位
_nop_(); _nop_();
ADC_CLK = 1;
_nop_(); _nop_();
ADC_CLK = 0;
ADC_DATI = 1; //通道1的第二位
_nop_();
ADC_CLK = 1;
_nop_();
}
ADC_CLK = 0; _nop_();
ADC_DATI = 1;
for( i = 0;i < 8;i++ ) //读取前8位的值
{
_nop_();
adval <<= 1;
ADC_CLK = 1;
_nop_(); _nop_();
ADC_CLK = 0;
_nop_();
if (ADC_DATO)
adval |= 0x01;
else
adval |= 0x00;
}
for (i = 0; i < 8; i++) //读取后8位的值
{
test >>= 1;
if (ADC_DATO)
test |= 0x80;
else
test |= 0x00;
_nop_();
ADC_CLK = 1;
_nop_(); _nop_();
ADC_CLK = 0;
_nop_();
}
//比较前8位与后8位的值,如果不相同舍去。若一直出现显示为零,请将该行去掉
if (adval == test)
dat = test;
_nop_(); _nop_();
ADC_CS = 1; //释放ADC0832
ADC_DATO = 1;
ADC_CLK = 1;
return dat;
}
资料借鉴于此纷传
阅读全文
592