欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于C52单片机的排队叫号系统程设计报告.docx

    • 资源ID:2383604       资源大小:169.07KB        全文页数:32页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于C52单片机的排队叫号系统程设计报告.docx

    1、基于C52单片机的排队叫号系统程设计报告太原科技大学课程设计报告 基于AT89C52的叫号系统 设 计 人:专 业:电子信息工程班 级:学 号:指导教师: 二零一六年一月毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使

    2、用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声

    3、明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名: 日期: 年 月 日导师签名: 日期: 年 月 日注 意 事 项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词 5)目次页(附件不统

    4、一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画3)毕业论文须用A4单面打印,论文50页以上的双面打印4

    5、)图表应绘制于无格子的页面上5)软件工程类课题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订第一章 设计目的及要求1.1设计目的在C51单片机上实现类似银行排队叫号系统的一些功能,从而熟悉单片机的硬件,如数码管,接口,蜂鸣器等。以及熟悉并用单片机C语言编程,进行仿真,并做成硬件,自己动手,学以致用。1.2设计要求1.用4位数码管实现号码的显示。2.按下“下一位”键号码加1。3.特定叫号:用“输入键”进行手动输入号码并显示。4.复位功能:为了防止操作员忘记在“特定叫号”前排到的号码,可以按“复位键”来回到之前的那个号码

    6、。5.清零:按下“清零”键来对当前屏幕进行清零。6.每按下一个键,同时发出按键声。 第二章 设计原理与方案2.1设计原理类似于银行的叫号系统,用单片机上的4位数码管来作为显示屏幕,显示当前排到的号码,用4*4矩阵键盘作为操作员的操作键盘来实现按键以及数字输入,用蜂鸣器来发出按键声及提醒声,客户看见排到自己的号时,到柜台来办理业务。2.2设计方案用C语言来编程,分别编写出数码管的显示模块,键盘的扫描模块,蜂鸣器的发声模块,软件延时模块等等。显示模块用table表存显示的数字和字母,用“动态显示法”在数码管显示出来;键盘扫描模块编写的程序中用到了按下和起手检测,把按下的键位代码反馈给程序;蜂鸣器发

    7、声模块,while循环,端口输出1、0,并延时;软件延时用的for循环的嵌套。 第三章 硬件设计本设计主要有四个部分,AT89C51单片机芯片,4*4矩阵键盘,4位共阳极数码管,蜂鸣器。由矩阵键盘获得按键信号后,经单片机芯片处理,将显示信号输送给数码管和蜂鸣器,从而显示数字和发出声音。3.1硬件系统主要组成部分设计3.1.1AT89C52芯片AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一

    8、起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。它的引脚图如图3.13.1.2键盘电路设计如下图3.2即为4*4矩阵键盘键盘P1318分别与芯片的P307相连,它一组按压式开关的集合,是微机系统不可缺少的输入设备,用于输入数据和命令。键盘的每一个按键都被赋予一个代码,称为键码。键盘系统的主要工作包括及时发现有键闭合,求闭合键的键码。根据这一过程的不同,键盘可以分为两种,即编码键盘和非编码键盘。编码键盘是通过一个编码电路来识别闭合键的键码,非编码键盘是通过软件来识别键码。由于非编码键盘的硬件电路简单,用户可以方便地增减键的数量,因此在单片机应用系统中,非编码键盘得到广泛的应用,有较

    9、好的应用价值。 3.1.3 四位数码管如下图3.3,为四位共阳极数码管,数码管的P1718与芯片的P107相连,P1614与芯片P203相连LED数码管由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。如:显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。小

    10、尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。按显示方式分,用单片机驱动LED数码管的方法有静态显示和动态(扫描)显示两种。静态显示就是显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后需要刷新,直到下一次显示内容需要更新时再传送新的数据,这种方法显示稳定,占用CP

    11、U时间少。本设计主要是用的动态显示,它的特点正好与静态显示相反,需要CPU时刻对显示器件进行数据刷新,显示数据有闪烁感,占用的CPU时间多,但动态显示所需硬件少,电路相对简单,能节省线路板空间。采用1位8段共阴极LED,P0口作为LED显示码输出端,因为只采用1位数码管,因此线选端直接接地。第四章 软件设计本程序分为五个模块,分别是主程序模块,键盘扫描模块,数码管显示模块,软件延时模块,中断定时模块。键盘扫描模块负责获得键盘按下的按键值,主模块负责处理传进来的信息,处理后发送给输出设备,显示模块实现数码管的数字显示。软件延时和中断延时应用于其他模块来实现其功能。具体流程如下图4.1主程序是wh

    12、ile循环。while语句后跟显示模块,在每次循环都显示数字在数码管上,swich语句用来将键盘扫描返回的值指向各自的功能,清零,复位,输入,下一个等功能。在输入的同时,每按一个数字,为了使显示不中断,加入数字显示模块。4.1主程序模块设计void main() TMOD=0x01;/开中断总开关 TH0=(65536-5000)/256; TL0=(65536-5000)%256;/设置初始地址,一次中断为5毫秒 EA=1; ET0=1; display2(18,1,20,20);/显示欢迎HI while(1) display(shu); /数码管显示数字 switch(keyscan()

    13、 /返回键盘扫描值 case 13: /按下“下一个”键shu加1 shu+; break; case 15: /按下“输入”键 jiyi=shu; /记住输入前的shu,赋给jiyi s=16;x=16;y=16;z=16; while(keyscan()=17) /是否开始输入数字 display1(5,17,16,16); /显示SR_ if(num9) /是否输入的是09的数字 display2(14,17,17,0); /不是数字则显示ERRO break; num1=num; s=num1;x=16;y=16;z=16; /使键盘扫描时仍显示 while(keyscan()=17)

    14、 display1(num1,16,16,16); /显示num1_ _ _ if(num9) display2(14,17,17,0);/同上 break; num2=num; s=num1;x=num2;y=16;z=16; while(keyscan()=17) display1(num1,num2,16,16); if(num9) display2(14,17,17,0); break; num3=num; s=num1;x=num2;y=num3;z=16; while(keyscan()=17) display1(num1,num2,num3,16); if(num9) displ

    15、ay2(14,17,17,0); break; num4=num; shu=num1*1000+num2*100+num3*10+num4; if(num9) display2(14,17,17,0); break; break; case 10:/复位 shu=jiyi; break; case 16:/清零 shu=0; break; 4.2键盘扫描模块num=17;/每次扫描前将num置17 P3=0xf7; temp=P3; temp=temp&0xf0; while(temp!=0xf0) delay(5); temp=P3; temp=temp&0xf0; while(temp!=

    16、0xf0)/稳手扫描 temp=P3; TR0=1;/开中断 switch(temp) case 0xe7:num=1; break; case 0xd7:num=2; break; case 0xb7:num=3; break; case 0x77:num=10; break; while(temp!=0xf0)/起手扫描 temp=P3; temp=temp&0xf0; TR0=0; 这部分需要注意,为了保证按键按下后没有多加或少加的情况,要加上稳手和起手检测。4.3数码管显示模块void display1(uint c,uint d,uint e,uint f)/xian shi P2=

    17、tablewei0;/位选表 P1=tableduanc;/段选表 delay(5);/延时 P2=tablewei1; P1=tableduand; delay(5); P2=tablewei2; P1=tableduane; delay(5); P2=tablewei3; P1=tableduanf; delay(5); 这里我写了四个显示模块,程序大致相同,只是用在不同地方,做了一些修改。比如上面这个程序,是输入与table表中对应的数字,在数码管上显示对应的符号。void display(uint numb) int qian,bai,shi,ge; qian=numb/1000;/对

    18、给出的数字进行运算 bai= numb/100%10; shi=numb%100/10; ge=numb%10; s=qian; x=bai; y=shi; z=ge; P2=tablewei0;/位选P1=tableduanqian;/段选 delay(3);P2=tablewei1; P1=tableduanbai; delay(3); P2=tablewei2; P1=tableduanshi; delay(3);P2=tablewei3; P1=tableduange; delay(3); 而这个则放在主程序while循环下,对每次循环中给出的数值进行运算,然后显示。void disp

    19、lay3(uint c,uint d,uint e,uint f),与void display1一样,只不过因为中断需要一个显示模块,而又怕用模块时与其他程序冲突,所以又加了一个。void display2只是多加了一个延时。4.4软件延时模块void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);一个循环约一毫秒4.5中断定时void exter0() interrupt 1 TH0=(65536-10000)/256; TL0=(65536-10000)%256; display3(s,x,y,z); 第五章 系统调试5.1

    20、硬件连接键盘P1318分别与芯片的P307相连,数码管的P1718与芯片的P107相连,P1614与芯片P203相连,蜂鸣器P8口与单片机的P24相连。5.2下载调试将程序通过烧写器下载到单片机上,调试各项功能。按下键盘,验证程序的各项功能是否实现,数码管是否显示正常,蜂鸣器是否正常响应。如果出现问题,先检查硬件石油有问题,如果排除硬件问题,则从编写软件中改进后再下载到单片机中进行验证。这里有值得注意的两点:1. 调试时如果发现键盘按键顺序错乱,可注意参考键盘的电路图来编写键盘扫描程序。2.本实验板上的是低电平有效,因此编程序,下载时要注意调整程序。第六章 结论分析与体会这个设计的难点并不在下

    21、一个,复位,清零的功能,而在显示上面。怎么样能在按键的时候使屏幕不闪烁,并且显示同样的值,还有怎么能让声音不影响屏幕的显示,是这个设计的关键。在这里我用了在键盘扫描的循环中加入显示一起循环来使按键时不闪烁,同时在中断中加入蜂鸣器电平高低来发出声音。这个程序还可以加入记忆和语音播报,但难度会高很多,以后可以尝试加入。还有如果用液晶显示,可能会简单一些,也可试试。课程设计需要很大的耐心,尤其是遇到困难的时候,这也是对我们的考验。在设计过程中,我们遇到问题不是感到急躁,而是耐心地寻找解决的办法,与老师、同学进行交流讨论,寻求最佳的解决办法。总之,这次单片机课程设计,让我了解了单片机的结构,功能,还有

    22、单片机C语言的编写。通过自己编写程序并硬件实现,使我对单片机产生了兴趣,在以后我还会做更多的单片机方面的设计。参考文献(1)李朝青.单片机原理及接口技术.北京航空航天大学出版社 (2)胡汉才.单片机原理及其接口技术.清华大学出版社 (3)丁明亮、唐前辉.51单片机应用设计与仿真.北京航空航天大学出版社 (4)王燕.单片机原理与应用.北京航空航天大学出版社 (5)张靖武.单片机系统的Protues设计与仿真.电子工业大学出版社 (6)夏路易.电路原理图与电路板设计教程.北京希望电子出版社 (7)周立功.增强型80C51单片机速成与实践.北京航空航天大学出版社 附录:#include #defin

    23、e uint unsigned int#define uchar unsigned charuint num,temp,shu=0,num1,num2,num3,num4,jiyi,t=1,s,x,y,z;sbit d=P24;char code tableduan=0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xf7,0x88,0x89,0xff,0x7f;/*分别是0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F, _ ,R,H,全暗,点*/char cod

    24、e tablewei=0x07,0x0b,0x0d,0x0e;/位选表char code tablewei1=0x17,0x0b,0x1d,0x0e;void delay(uint z);void display(uint numb);uchar keyscan();void display1(uint c,uint d,uint e,uint f);void display2(uint c,uint d,uint e,uint f);void display3(uint c,uint d,uint e,uint f);void main() TMOD=0x01; TH0=(65536-500

    25、0)/256; TL0=(65536-5000)%256; EA=1; ET0=1; display2(18,1,20,20); while(1) display(shu); switch(keyscan() case 13: shu+; break; case 15: jiyi=shu; s=16;x=16;y=16;z=16; while(keyscan()=17) display1(5,17,16,16);/显示SR_ if(num9) display2(14,17,17,0); break; num1=num; s=num1;x=16;y=16;z=16; while(keyscan(

    26、)=17) display1(num1,16,16,16); if(num9) display2(14,17,17,0); break; num2=num; s=num1;x=num2;y=16;z=16; while(keyscan()=17) display1(num1,num2,16,16); if(num9) display2(14,17,17,0); break; num3=num; s=num1;x=num2;y=num3;z=16; while(keyscan()=17) display1(num1,num2,num3,16); if(num9) display2(14,17,1

    27、7,0); break; num4=num; shu=num1*1000+num2*100+num3*10+num4; if(num9) display2(14,17,17,0); break; break; case 10: shu=jiyi; break; case 16: shu=0; break; break; void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);void display(uint numb) int qian,bai,shi,ge; qian=numb/1000; bai= numb/100%10;

    28、 shi=numb%100/10; ge=numb%10; s=qian,x=bai,y=shi,z=ge; P2=tablewei0;P1=tableduanqian; delay(3);P2=tablewei1; P1=tableduanbai; delay(3); P2=tablewei2; P1=tableduanshi; delay(3);P2=tablewei3; P1=tableduange; delay(3); uchar keyscan()/jianpansaomiao num=17; P3=0xf7; temp=P3; temp=temp&0xf0; while(temp!=0xf0) delay(5); temp=P3; temp=temp&0xf0; while(temp!=0xf0)


    注意事项

    本文(基于C52单片机的排队叫号系统程设计报告.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开