版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计单片机系统课程设计成绩评定表设计课题学院名称设计课题学院名称:专业班级:学生姓名:学 号:指导教师:设计地点:31-505设计时间: 2012-12-17~2012-12-28指导教师意见:指导教师意见:成绩:签名:年月日课程设计目录引言 2总体方案设计 2硬件组成 2方案论证 3总体方案 3硬件电路设计 4单片机及外围电路 4显示电路 5按键电路 6蜂鸣器电路 7系统软件设计 8主程序设计 8子程序液晶LCD1602显示处理程序 9子程序按键检测程序 11系统调试与总结 125.1调试 125.2总结 14参考文献 14附录A: 15附录B 161课程设计引言后挤、杂乱无章地排队等候,有时一站就是一个多小时,这已是司空见惯的现本文基于单片机的排队叫号系统,由客户端和主机终端组成,有LCD大屏幕显示信息,让客户知道自己的队号,并有叫号提示音提醒客户,方便快捷,可以满足日常的服务行业排队叫号,所以非常有意义。总体方案设计硬件组成AT89C51抽号部分和叫号部分采用一块LCD液晶显示器,这样显示数据直观,便于顾2课程设计两个叫号键,系统采用自动清零,无需人工操作。方案论证控制器的确定,对于排队叫号系统,控制器的可选方案有以下两种:采用单片机。单片机采用半导体工艺,使其具有很多显著的优点和特价格比。2集成度甚高,体积小,有很高的可靠性,可以在恶劣环境下工作。控制能力强。45采用PLCPLC是一种专门为在工业环境下的应用而设计的专用计算机PLC构成的控制系统的工作量小,维护方便,适合于野外使用,但价格昂贵]系统具有较好的性价比,经上述分析比较,确定采用单片机作为控制器。输入通道故确定使用独立式按键。控制输出通道排队叫号系统的执行机构是1602显示器和蜂鸣器使得系统输出简单明了。总体方案2.3。设备上电后,显示器屏亮,无信息显示。当客户按键201,程序进行信息处理,在屏幕上显示“几号客户到几号窗口3课程设计客户客户取号1206液晶显ATM89C51单片机窗口叫号叫号提示音图2.3 总体方案框图硬件电路设计单片机及外围电路AT89C51AT89C51ATMELMCS-51CMOS8,MCS-51流品种。AT89C51的内部资源主要包括:·MCS--518CPU;·8K字节可重复编程的Flash存储器;·256字节的SRAM;·4832I/O·316/计数器;·6个中断源,2个中断优先级的中断系统;·一个全双工的串行口;·内部振荡器。AT89C51Timer)3.14课程设计VCC
S1SW-PBC1
U11 P102 P113 P124 P135 P146 P157 P168 P179 REST
VCCP00P01P02P03P04P05P06P07
VCC403938373635343332VCCR1RES2C1
15u 10111213141516
P30P31P32P33P34P35P36
EA 31ALE 30PSEN 29P27 28P26 27P25 2622PFC222PF
X112M
17 P37X2X1GNDAT89C51
P24 25P23 24P22 23P21 22P20 21显示电路
图3.1单片机外围电路多数的应用系统,都要配输出外设,LEDLCDLCD1602LCD16128ASCIII/O引脚功能介绍如下:VSS(1VDD(2VO(3:对比度调节端3 4RS(4:数据/命令选择端R/W(5:读写选择端(H/L)E(6:使能信号D0~D7(引脚7~14)数据口53 4课程设计BLA(15)BLK(16)1602显示屏连接单片机的P0口,电路连接图如下VCC
R1POT2VCC
SCD1GNDVCCRS 4R/W 5E 678910111213141516RP?12345678
VLRSRWEND0D1D2D3D4D5D6D7BL+BL-LCD1602161514131211109
vccRESPACK4按键电路
图3.3按键控制电路中,单片机的P13按键;P3.1P3.23.362S1W1W2蜂鸣器电路
SW-PBSW-PBSW-PB图3.3
课程设计5VP1.5P1.5三极管导通,这样蜂鸣器的电流形成回路,放出声音。用户可以通过程序控制P1.5VCCQ1NPNLS1SPEAKER7课程设计系统软件设计B开始开始变量赋初值液晶初始化信息显示YESS1是否按下NOYESW2是否按下NOYESW2NO信息显示图4.1主程序流程图8课程设计LCD1602液晶LCD1602显示处理程序/***************************************LCD1602*显示屏命令写入函数*****************************************/voidLCD_write_com(ucharcom){e=0;rs=0; P0=com;delay(1000);e=1;delay(1000);e=0;}/*****************************************LCD1602*显示屏数据写入函数******************************************/voidLCD_write_data(uchardat){e=0;rs=1;rw=0;P0=dat;delay(1000);e=1;delay(1000);e=0;9课程设计}/*****************************************LCD1602*显示屏数据写入数据******************************************/voidLCD_clear(void){LCD_write_com(0x01);delay(1000);}/*****************************************LCD1602显示屏初始化函数*****************************************/voidLCD_init(void){LCD_write_com(0x38); /*显示模式设置delay(100);LCD_write_com(0x38);delay(100);LCD_write_com(0x38);delay(100);LCD_write_com(0x38);LCD_write_com(0x08); /*显示关闭*/LCD_write_com(0x01); /*显示清屏*/LCD_write_com(0x06); /*显示光标移动设置delay(100);LCD_write_com(0x0C); /*显示开及光标设置*/}程序具体流程图如图10课程设计开始开始开启1602使能端设置液晶16*2显示8位数据口设置液晶开始时光标是否显示设置液晶写一个字符后地址指针加一显示清零指针归零结束这几个是16021602程序处理,能够把需要显示的内容显示出来,是比较简单的显示设备。子程序按键检测程序/*获取键值函数*/uintsweep_key(){uintjianzhi;if(key1==0){delay(1000);11课程设计if(key1==0)jianzhi=1;RankFlag=1;}if(key2==0||key3==0){ if(key2==0)jianzhi=2;if(key3==0)jianzhi=3;ClearNumFlag=1;}return(jianzhi);}本设计只有两个叫号窗口,相对来说比较简单,通过按键检测程序来分辨是哪个按键按下了。窗口依据实际需要可以增加,程序有很大的扩展性。系统调试与总结调试按下客户端取号按键现号码如上图。12课程设计13课程设计按下服务叫号键出现提示如下图总结LCD1602我学到很多,对没用掌握的知识有了一定的理解。参考文献单片机微型计算机原理、应用、及接口技术(第二版国防科技大学出版社出版。14课程设计B [3]MCS-51CD工业大学出版社。MCS—51(C。机械工业出版社。一种基于单片机的排队叫号系统设计。欧志刚。计算机光盘软件与应用。1附录A:系统原理图SPEAKER
LS1
N1
VCC 2CAP C2 CAP C1CRYSTAL
R0RES2
S0C0
VCC
W2W1S1SW-PBSW-PSW-PSW-PB201918
1716151413121110
8765
4321STC8G1X29C51
U1RESTP17P16P15P14P13P12P11P103P20P21P22P23P24P25P26P27
PSLEEA
P07P06P05P04P03P02P01P00VCC2122232425262728
293031
VCC
323334353637383940VCCPT1876
54321
ER/RS
VCC4RESPACK4
RP?
161514131211109
876
54321910111213141516
LCD160
SCD1B-+7D6D5D4D3D2D1D0ERRSVVND2vcc2061DCL15 5课程设计附录B程序#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitrs=P2^6;sbitrw=P2^5;sbite=P2^7;sbitkey1=P1^0;sbitkey2=P1^1;sbitkey3=P1^2;sbitsounder=P1^5;ucharprompt1[]="YourNo.is00!";ucharprompt2[]="No.00GoToWin.0";ucharprompt3[]="Queueisfull";ucharprompt4[]="Queueisempty!";uintnum_count=0;//排队叫的号码uintrank_number[20]={0};//排队叫号存储的数组uintnum=0;//窗口消的号码intRankFlag=0; //叫号的标志intClearNumFlag=0; //消号的标志uintLengthFlag=0; //队列长度叫一次号时-1/*延时函数*/voiddelay(uintn){while(n--);16课程设计}/*****************************************LCD1602*显示屏命令写入函数******************************************/voidLCD_write_com(ucharcom){e=0;rs=0;rw=0;P0=delay(1000);e=1;delay(1000);e=0;}/*****************************************LCD1602*显示屏数据写入函数******************************************/voidLCD_write_data(uchardat){e=0;rs=1;rw=0;P0=dat;delay(1000);e=1;delay(1000);e=0;}17课程设计/*****************************************LCD1602*显示屏清空显示******************************************/voidLCD_clear(void){LCD_write_com(0x01);delay(1000);}/*****************************************LCD1602显示屏初始化函数*****************************************/voidLCD_init(void){LCD_write_com(0x38); /*显示模式设置delay(100);LCD_write_com(0x38);delay(100);LCD_write_com(0x38);delay(100);LCD_write_com(0x38);LCD_write_com(0x08); /*显示关闭*/LCD_write_com(0x01); /*显示清屏*/LCD_write_com(0x06); /*显示光标移动设置delay(100);LCD_write_com(0x0C); /*显示开及光标设置*/}/*简单的蜂鸣器提示音*/voidsound(){uinta;18课程设计for(a=0;a<500;a++){sounder=0;delay(61);sounder=1;}}/*获取键值函数*/uintsweep_key(){uintjianzhi;if(key1==0){delay(1000);if(key1==0)jianzhi=1;RankFlag=1;}if(key2==0||key3==0){ if(key2==0)jianzhi=2;if(key3==0)jianzhi=3;ClearNumFlag=1;}return(jianzhi);}/*****************************************+1,2019课程设计*****************************************/voidQueueNumProcess(){if(RankFlag==1) //判断叫号标志是否有效{if(LengthFlag<20){num_count++;rank_number[LengthFlag]=num_count;}LengthFlag++;}}/*****************************************窗口消号处理函数*****************************************/voidClearNumProcess(){uinti;if(ClearNumFlag==1) //判断消号标志是否有效{num=rank_number[0]; //把消的号赋给全局变量numfor(i=0;i<19;i++) //让数组整体左移一个存储单元即把消得号除{rank_number[i]=rank_number[i+1];}LengthFlag--;}20课程设计}/*****************************************检测到按键后,检测函数处理及LCD显示处理*****************************************/voidCheckButtonProcess(uintm){uintjz,i;jz=m;if((jz==1)&&(RankFlag==1)){//20//Queueisfullif(LengthFlag>=20){LCD_clear();LCD_write_com(0x80+0x02);delay(100);for(i=0;i<16;i++){}else{
LCD_write_data(prompt3[i]);delay(100);}QueueNumProcess();prompt1[11]=(num_count)/10+'0';prompt1[12]=(num_count)%10+'0';LCD_clear();21课程设计LCD_write_com(0x80+02);delay(100);for(i=0;i<15;i++){LCD_write_data(prompt1[i]); //"YourNo.isde
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 喉部阻塞感的健康宣教
- JJF(陕) 080-2021 连续式路面平整度测定仪(非激光型)校准规范
- JJF(陕) 032-2020 混凝土坍落度仪校准规范
- 《收集需求》课件
- 年度班级活动安排与总结计划
- 【小学课件】学生安全教育主题班会
- 2024-2025学年年九年级数学人教版下册专题整合复习卷第28章 锐角三角函数 解答题练习及答案
- 秋季学期家校合作计划
- 双酚A相关项目投资计划书范本
- 中心静脉导管相关项目投资计划书范本
- 《学前教育科学研究方法》全套课件(完整版)
- MATLAB二分法和牛顿迭代法实验报告
- 初二物理速度计算题及答案
- 心电图机操作(课堂PPT)
- 财产清查课件
- 广告牌拆除施工方案
- 某机械厂降压变电所电气初步设计
- 2014附件3杆塔高处作业防坠技术措施0825
- 建筑工程挂靠协议书范本3篇
- 细胞信号传导
- 工程设计变更管理台账
评论
0/150
提交评论