还剩5页未读,继续阅读
文本内容:
单片机原理及应用课程设计姓名纪乐学号12013241906专业通信工程班级2013级1班指导老师陈潮红学院物理电气信息学院完成日期2015年12月10日电梯楼层显示电路设计前言近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善本次设计通过了解单片机的基本知识,简单的扩展外围电路,完成基本的功能摘要AT89C51单片机电梯楼层Proteus仿真一.设计任务
1、掌握51单片机的基本结构及相关知识,掌握Keil和Protues软件的使用和两者的关系,并能更好的用两种软件来做单片机实验的仿真利用51单片机、数码管显示器设计一个单片机显示系统,要求在液晶上显示楼层“12345678”
2、按照设计任务在ProteusProfessional中绘制电路原理图;
3、了解电梯楼层显示电路的编程方法和相关知识,根据设计任务的要求编写程序,画出程序流程图,并在Proteus下进行仿真,实现相应功能
4、培养学生自主学习、正确分析和解决问题的能力二.实验原理电梯楼层显示电路是由单片机控制的,主要的部件有51单片机、开关控制和数码显示管组成通过数码管显示楼层,开关控制
1.AT89C51的基本概述AT89C5l单片机,是一种低功耗、高性能的、片内含有4KBFlashROM的8位CMOS单片机,工作电压范围为
2.7~6V实际使用+5V供电,8位数据总线它有—个可编程的全双工串行通信接口,能同时进行串行发送和接收AT89C51具有4K并行可编程的非易失性FLASH程序存储器,可实现对器件串行在系统编程ISP和在应用中编程IAP在系统编程ISP(In-SystemProgramming)当MCU安装在用户板上时允许用户下载新的代码在应用中编程IAP(In-ApplicationProgramming)MCU可以在系统中获取新代码并对自己重新编程,这种方法允许通过调制解调器连接进行远程编程片内ROM中固化的默认的串行加载程序BootLoader允许ISP通过UART将程序代码装入Flash存储器,而Flash代码中则不需要加载程序对于IAP用户程序通过使用片内ROM中的标准程序对Flash存储器进行擦除和重新编程引脚功能说明VCC电源电压GND接地P0口一组8位漏极开路型双向I/O口,也即地址/数据总线复用口作为输出口时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用在Flash编程中,P0口接收指令字节;在校验时,输出指令字节,校验时,要求外接上拉电阻P1口一个带内部上拉电阻的8位双向I/O口,P1口的输出缓冲级可驱动4个TTL逻辑门电路P2口一个带有内部上拉电阻的8位双向I/O口,P2口的输出缓冲级可驱动4个TTL逻辑门电路P3口一组带有内部上拉电阻的8位双向I/O口,P3口的输出缓冲级可驱动4个TTL逻辑门电路第二功能如1所示RST复位输入在振荡器工作时,该引脚出现两个机器周期以上的高电平将使单片机复位PSEN程序储存允许输出是读通信号当AT89C51由外部程序存储器取指令(数据)时,每个机器周期两次PSEN有效EA/VPP外部访问允许要使CPU仅仅访问外部程序存储器,EA端必须保持低电平如果EA端为高电平,接Vcc端,CPU则执行内部程序存储器中的指令XTAL1振荡器反向放大器及内部时钟发生器的输入端XTAL2振荡器反向放大器输入端
2.数码管显示原理我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮而共阳极就是将八个LED的阳极连在一起其原理图如下其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即abcdefgdp)连在一起,而各自的公共端称为位选线显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000,即0xc0可以看出两个编码的各位正好相反
3.Proteush仿真软件介绍Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件它是目前最好的仿真单片机及外围器件的工具虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐Proteus是世界上著名的EDA工具仿真软件,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器
8051、HC
11、PIC10/12/16/18/24/30/DsPIC
33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型在编译方面,它也支持IAR、Keil和MPLAB等多种编译器该软件的特点a.全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势b.具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS一232动态仿真、1C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等c.目前支持的单片机类型有68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片d.支持大量的存储器和外围芯片总之该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大,可仿真
51、AVR、PIC三.实验方案四.实验源程序#includereg
51.h#defineucharunsignedchar#defineuintunsignedintsbitled=P2;sbitsw1=P1^0;sbitsw2=P1^1;sbitsw3=P1^2;sbitsw4=P1^3;sbitsw5=P1^4;sbitsw6=P1^5;sbitsw7=P1^6;sbitsw8=P1^7;charcodetable
[10]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x67};voiddelayintn{inti;whilen--{fori=0;i10000;i++{;}}}voidmain{intcount=1;P2=0x06;while1{ifsw1==0{ifcount==1{P2=table[count];delay10;}else{do{count--;P2=table[count];delay10;}whilecount-10;}}ifsw2==0{ifcount2{do{count++;P2=table[count];delay10;}while2-count0;}elseifcount2{do{count--;P2=table[count];delay10;}whilecount-20;}else{P2=table[count];delay10;}}ifsw3==0{ifcount==3{P2=table[count];delay10;}elseifcount3{do{count--;P2=table[count];delay10;}whilecount-30;}else{do{count++;P2=table[count];delay10;}while3-count0;}}ifsw4==0{ifcount==4{P2=table[count];delay10;}elseifcount4{do{count--;P2=table[count];delay10;}whilecount-40;}else{do{count++;P2=table[count];delay10;}while4-count0;}}ifsw5==0{ifcount==5{P2=table[count];delay10;}elseifcount5{do{count--;P2=table[count];delay10;}whilecount-50;}else{do{count++;P2=table[count];delay10;}while5-count0;}}ifsw6==0{ifcount==6{P2=table[count];delay10;}elseifcount6{do{count--;P2=table[count];delay10;}whilecount-60;}else{do{count++;P2=table[count];delay10;}while6-count0;}}ifsw7==0{ifcount==7{P2=table[count];delay10;}elseifcount7{do{count--;P2=table[count];delay10;}whilecount-70;}else{do{count++;P2=table[count];delay10;}while7-count0;}}ifsw8==0{ifcount==8{P2=table[count];delay10;}else{do{count++;P2=table[count];delay10;}while8-count0;}}}}五.实验步骤
1、打开Protues软件,画出实验电路仿真图如下
2、打开keil软件,project—newuvisionproject—输入工程名loucengxianshi,保存然后新建Text输入上面的C语言程序(见附页),编译保存成后缀名为.C的文件然后左击左面栏里的sourcegroup1—Addfiletosourcegroup1选择刚刚保存的.C文件,点确定然后Flash—ConfigureFlashtools—output—Creathexfile—确定系统提示hex文件创建成功
3、打开第一步画好的原理图,双击AT89c51—programfile,找到在Keil里面生成的hex文件,确定
4、点击仿真按钮进行仿真六.实验结果数字就是显示的楼层,如图所示七.实验心得通过这次课程设计,让我在学习单片机理论知识的基础上,增强了的实践动手能力在参考了许多相关资料后,充分理解了八层电梯的设计要求,基本上完成了设计的功能要求,但本代码中可能仍存在一些不能解决的实际问题,许多工程实际问题不能完全用理论知识去解决,需要不断吸取现场经验,寻找解决问题方法虽然能完成设计的基本功能,但仍有可拓展的空间,比如超载报警、多层电梯等,都是可以继续研究以满足更多的功能要求,但以我现在对单片机知识的了解,可能不太容易完成,希望以后有机会再深入地学习单片机,设计出更符合实际功能需求的代码。