商场客流量统计系统.doc_第1页
商场客流量统计系统.doc_第2页
商场客流量统计系统.doc_第3页
商场客流量统计系统.doc_第4页
商场客流量统计系统.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

安徽机电职业技术学院电气工程系应用电子专业实习报告课题名称 商场客流量计数导购系统 姓 名 丁鹏 专 业 应用电子 班 级 3102班 指导教师 2011年 11 月 29日第一章 设计任务 (4)1.1基本要求 (4)1.2系统总体要求 (4)第二章 方案论证与比较 (4) 2.1 单片机的选择 (4) 2.2 语音芯片的选择 (4) 2.3 显示模块选择 (5)第三章 系统硬件框图设计 (6) 3.1最小系统及液晶部分设计框图 (6) 3.2驱动系统部分设计框图 (6)第四章 系统硬件设计 (7) 4.1单片机最小系统电路 .(7) 4.2驱动LCD液晶显示电路 (9) 4.3激光检测电路 (10) 4.4 WT588语音播报电路 (11)第五章 系统软件设计 (11) 5.1系统软件流程图 (10) 5.2系统软件程序说明 (10)第六章 测试与结果 (12) 6.1测试仪器和材料 (12) 6.2测试结果 (12)第七章 设计总结 (13)附录 C语音程序 (14)1.1基本要求1、设计双激光传感器检测电路,分别监测进入、走出商场的顾客;2、再设计出单片机最小系统,用来接收信号、计数处理和发出指令;3、最后设计出语音播报电路,接收单片机指令,对进出商场的顾客表示问候。1.2系统总体要求当有顾客进入商场时,系统检测出他(她)是当天的第多少位顾客,并调出相对应的播报“您是今天的第多少位顾客,祝您购物愉快”等类似语音;当有顾客出商场时,系统通过语音播报“谢谢光临,欢迎下次再来”相关语音;与此同时,当商场调研统计人员想知道当日已有多少顾客光顾商场,当前商场内还有多少人,可以通过显示直接读出。最人性化的地方设计是:当某位顾客是当天的第100位顾客时,语音播报“欢迎第多少位顾客,我们将有精美礼品送出。”当商场内的顾客较多时,语音播报“当前商场内人数较多,希望要购物的顾客在商场外等候片刻,以免发生不必要的伤害,感谢大家的理解与支持!”第二章 方案论证与比较2.1单片机的选择方案一:选择8031单片机芯片8031芯片内部无ROM,需要外扩程序存储器,由此造成电路焊接的困难,况且使用8031还需要另外购买其他的芯片,从而造成成本较高,性价比低。方案二:选择AT89C52AT89C52芯片内部有ROM,且片内ROM全部采用Flash ROM,它能于3V的超低压工作,与MCS-51系列单片机完全兼容。结合实际,选择AT89C52单片机来设计。2.2语音芯片的选择方案一:采用APR9600语音芯片台湾公司最新推出的APR9600语音录放芯片,是继美国ISD公司以后采用模拟存储技术的又一款音质好、噪音低、不怕断电、可反复录放的新型语音电路,单片电路可录放32-60秒,串行控制时可分256段以上,并行控制时最大可分8段。它较ISD系列语音芯片易于控制且价格也较便宜。方案二:选择WT588语音芯片WT588系列语音芯片是中国广州唯创科技有限公司中国台湾华邦共同研发出来的集单片机与语音电路与一体的可编辑语音芯片。可控制的语音地址位能达到220个,每个地址位里能加载可组合语音为128段,总共28160段语音,足以应对商场的巨大客流量。其特点:1、 支持2M32M的SPI-Flash内存,播放时长较大;2、 内嵌DSP高速音频处理器,处理速度快;3、 内置13Bit/DA转换器,以及12Bit/PWM输出,音质好;4、 可通过专业上位机操作软件,随意组合语音;5、 USB下载方式,支持在线下载/脱机下载,即便在WT588通电的情况下,也一样可以正常下载数据到SPI-Flash;6、 抗干扰能力强,可用于公共或者工业场合。由于本系统要求很多的语音段、高速处理和抗干扰能力强等要求,所以选择WT588作为语音播报的主控芯片。2.3显示模块选择方案一:LCD数码管液晶显示,由单片机驱动.它主要用来显示大量数据、文字、图形,能够显示的位数多,显示得清晰多样、美观。方案二:点阵显示,是由八行八列的发光二极管集成在一块电路上组成,主要用来显示汉字,同时也能显示数字和少量图象,但它的焊接较麻烦,价格高,鉴于所设计的题目要求它不切实际。所以排除此方案。方案三:LED数码管静态显示,电路容易理解且驱动的程序简单,多片七段译码器驱动显示,这不仅增加了成本,还需要占用单片机多个I/O口,也给电路的焊接带来一定的困难,因此不选用这种方案作为显示模块。方案四:采用LED数码管动态扫描显示,价格低廉,不仅减少了对I/O口的浪费,而且能够同时驱动多个数码管。其驱动程序容易编写和理解。当显示内容不太多,可以排除。经过四种方案的比较以及本系统实际,由于该系统需要显示两个内容,上述的LCD液晶显示比较妥善,我们选择性价比相对高的LCD1602液晶。第三章 系统硬件框图设计本系统采用以STC89C52系列单片机为控制中心,以及外围供电、复位、晶振、MAX232构成电平转换电路组成单片机最小系统电路,用AMS1117构成的稳压模块、WT588构成的语音模块以及双激光组成的检测模块共同组成驱动系统电路,激光检测信号传送给单片机,单片机作出计数与判断,给语音模块发出播报相应语音指令,同时让LCD1602液晶显示总人数与剩余人数。3.1最小系统及液晶部分设计框图本部分主要包括供电电路、复位电路、晶振电路、电频转换电路及单片机电路组成,框图如下:图一: 单片机最小系统设计框图3.2驱动系统部分设计框图驱动系统部分主要由双激光模块电路和稳压语音模块组成,框图如下:图二: 驱动系统设计框图第四章 系统硬件设计整个装置主要由以下电路组成:STC89C52单片机最小系统、LCD1602液晶显示驱动电路、激光检测电路、WT588语音播报电路。4.1单片机最小系统电路单片机最小系统电路主要包括供电电路、复位电路、晶振电路、MAX232电平转换电路和STC89C52单片机电路组成,如图:图三 STC89C52单片机电路图图四:电平转换电路图图五:复位电路图图六:供电电路图七:晶振电路4.2驱动LCD液晶显示电路主要由16孔排座、1.8K电阻和0欧电路组成,如图:图八: LCD1602液晶显示驱动电路图4.3激光检测电路接进出激光传感器的3孔排座2个、10K电阻2个、1K电阻2个、LED灯2个及信号输出2孔排座1个组成激光检测电路,如图:图九: 激光检测电路图4.4 WT588语音播报电路WT588语音播报电路包括:以AMS1117芯片为主控,C1、C2电容,R5电阻和LED组成的稳压供电模块;以WT588芯片为核心,J5信号输入双孔排座和J4语音信号输出双孔排座。如图:图十:WT588语音播报电路 第五章 系统软件设计5.1 系统软件流程图整个系统软件运行流程如下图:图十一:系统软件流程图5.2 系统软件程序说明首先“开始”,打开电源,初始化系统。LCD上显示欢迎语句并启动计数系统。当有顾客进入商场时,语音播报“欢迎光临,您是第多少位顾客,祝您购物愉快!”计数系统加1。当有顾客走出商场时,语音播报“谢谢您的光临,欢迎下次再来!”进入商场内的总人数及目前商场内剩余的人数显示在LCD上。顾客可以通过注意LCD上显示的人数判断当前是否适合进去商场。另外,如果商场内人数太多,也可以通过语音播报当前商场内过于拥挤,警示即将进入的顾客在场外等候,以免发生踩踏等意外事故。 第六章 测试与结果6.1 测试仪器和材料主要包括:5V输出稳压电源、激光发送端、喇叭或音响、插线及固定胶布。6.2 测试结果在PC上位机上用KEILVISION3软件建立测试工程,用C语言编写程序,通过正确设置,编译生成.HEX文件,再通过正确的COM口用STC-ISP软件将.HEX文件烧录到系统中;用胶布将对准的两对激光收发端平行固定,用5V的电源给激光发出端通电;对应正确的原理图与C程序编写情况,将各个插线插好,并仔细检查;再通电。测试初始,发现程序没问题,却不显示。经过检查发现单片机插针弯曲,有三个引脚没插入插槽。纠正之后仍然不显示,检查发现焊接时不小心将LCD显示的两个信号输入线路连接在一起了,经过清理成功显示。通电模拟:用手指模拟顾客,用两道激光模拟商场的进门和出口。用手指挡住第一道激光即为进门,计数器加1;用手指挡住第二道激光即为出门,计数器减1。剩余的人数即为进门人数减去出门人数。具体过程为:当有人模拟进入商场,语音播报“欢迎第10 顾客”,LCD显示“jrs:10 crs:0 yurenshu:10”当有人模拟离开商场,LCD显示“jrs:10 crs:1 yurenshu:9”。第七章 设计总结通过这次课程设计,让我们复习了很多学过的旧知识,同时锻炼了自己的动手能力和查阅资料能力,尤其是解决在实际中解决排查问题的能力。更重要的是通过这设计,让我们深刻体会到了团队合作的重要性!1.通过这次的设计,我们熟悉了使用Proteus的技巧,并且熟悉了如何选购使用电子元器件。2在设计中,我们学到了如何使用C语言对单片机进行编程,熟悉了使用KEIL C软件,并且加深了对单片机的编程技巧。3这次的设计使我们对模拟电子、数字电子知识加深了了解,尤其是在对电路进行调试的时候,出现了很多这些方面的问题,通过对以往知识的复习巩固,将问题解决。4.虽然时间很短,但我的指导老师姚老师的耐心教导与技术支持,给我的启迪很大。这次的实习对我的人生有很大促进,让我养成了认真思考、仔细探索的学习习惯。附录:系统C程序的源码:#include #include #define uchar unsigned char#define uint unsigned intsbit lcdrs=P22;/位定义sbit lcdrw=P21;sbit lcden=P20; sbit rst=P27;/语音sbit sda=P26;sbit s1=P35;unsigned char code table0 = welcome to suguo!;/第一次初始显示的数组unsigned char code table1 = jrs 000 crs 000;/第二次初始显示 第一行数组unsigned char code table2 = yurenshu 000;/第二次初始显示 第二行数组unsigned char code shutable =0123456789;/数字数组uint num,numjin=0,numchu=0,numyu,a1,b1,c1,a2,b2,c2,a3,b3,c3;/定义各个变量uchar bai,shi,ge,flag=0,flag1=0;void delay(uint z) / 延时1ms子程序uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void delayu(uint z)/延时0。1ms子程序 uint x,y; for(x=z;x0;x-) for(y=10;y0;y-);void send_oneline(uchar add)/语音子程序 uchar i; rst=0; delay(1); rst=1; delay(17); /*复位延时 17MS*/ rst=1; delay(6); /* delay 6ms */ sda=0; delay(5); /* delay 5ms */ for(i=0;i=1; sda=1; void write_com( uchar com )/写命令子程序lcdrs=0;/选择 命令lcdrw=0; /选择 写lcden=0; /使能 关delay(5);P1=com;/单片机把命令送到P1口delay(5);lcden=1; /使能 开delay(5);lcden=0; /使能 关void write_data( uchar date)/写数据子函数lcdrs=1; /选择 数据lcdrw=0; /选择 写lcden=0; /使能 关delay(5);P1=date; /单片机把数据送到P1口delay(5);lcden=1; /使能 开delay(5);lcden=0; /使能 关void init()/初始化 write_com(0x38);/设置为显示模式 write_com(0x0C);/设置开显示,显示光标,光标闪烁 write_com(0x06);/设置写一个字符后地址指针加1,且光标加1 write_com(0x01);/显示清屏;数据指针清零,所有显示清零 write_com(0x80);/设置数据指针的位置为第一行第一字符 EA=1; EX0=1; /开外部中断0 IT0=1; /定为 电平触发 EX1=1;/开外部中断1 IT1=1;/定电平触发 void sound()/播放语音子程序 bai=numjin/100; shi=numjin%100/10; ge=numjin%10; if(flag=1)/外部中断标志if(numjin=10)send_oneline(11);delay(1000);if(shi=1&ge=0)send_oneline(10);delay(600);if(shi=1&ge!=0)send_oneline(10);delay(600);send_oneline(ge);delay(500);if(shi=2)send_oneline(shi);delay(500);send_oneline(10);delay(600); if(ge!=0) send_oneline(ge); delay(500); send_oneline(12);delay(1000);flag=0; void main()/主函数 uchar lucky=0,lucky1=0; init();for(num=0;num17;num+)write_data(table0num);/第一次初始显示delay(10);delay(1000); write_com(0x01); write_com(0x80);for(num=0;num16;num+)write_data(table1num);/第二次初始显示 第一行delay(10);write_com(0x80+0x40+2);for(num=0;num12;num+)write_data(table2num);/第二次初始显示 第二行delay(10);while(P2_0)/随机产生幸运数字子程序lucky1+; srand(lucky1);lucky1=(uchar)rand();lucky=lucky1%10; /write_data(lucky%10+0x30); while(1)if(flag1=1)numjin+;numyu+;flag=1; a3=numyu/100;/提取剩余人数 百位b3=numyu%100/10;/提取剩余人数 十位c3=numyu%10;/提取剩余人数 个位write_com(0x80+0x40+11);/写命令(剩余人数LCD显示位置)write_data(shutablea3);/写剩余人数百位数据write_data(shutableb3);/写剩余人数十位数据write_data(shutablec3);/写剩余人数个位数据*/a1=numjin/100;/提取进口人数 百位b1=numjin%100/10;/提取进口人数 十位c1=numjin%10;/提取进口人数 个位write_com(0x80+4);/写命令(进口人数LCD显示位置)write_data(shutablea1);/写进口百位数据write_data(shutableb1);/写十位数据write_data(shutablec1);/写个位数据numchu=numjin-numyu;a2=numchu/100;/提取出口人数 百位b2=numchu%100/10;/出口人数 十位c2=numchu%10;/出口人数 个位write_com(0x80+13);/写命令(出口人数LCD显示位置)write_data(shutablea2);/写出口百位数据write_data(shutableb2);/写出口十位数据write_data(shutablec2);/写个位数据 sound();flag1=0;if(numjin=lucky)/幸运数字与顾客名次相比较 send_oneline(15);delay(1800); send_oneline(lucky); delay(1800);send_oneline(16); /幸运顾客delay(4000);if(flag1=2)numchu-;numyu-;send_oneline(13);delay(1000);a3=numyu/100;/提取剩余人数 百位b3=numyu%100/10;/提取剩余人数 十位c3=numyu%10;/提取剩余人数 个位write_com(0x80+0x40+11);/写命令(剩余人数LCD显示位置)write_data(shutablea3);/写剩余人数百位数据write_da

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论