序
🔥 毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。
为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是:基于51单片机自动控制交通灯及时间显示的设计
一.系统组成
1.1 控制要求
⑴主、支干道交替通行,主干道每次放行30秒,支干道每次放行20秒;
⑵绿灯亮时表示可以通行,红灯亮时表示禁止通行;
⑶每次绿灯变红灯时,黄灯先亮5秒(此时另一干道上的红灯不变);
⑷十字路口要求有数字显示,作为时间提示,以便人们更直观地把握时间,具体
要求主、支干道通行时间及黄灯亮的时间均以秒为单位做减数器;
- 在黄灯亮时,原红灯按1HZ的频率闪烁;
- 当有急救车到达时,路口的信号灯全部变红,让急救车通过。假定急救车通过
时间为10s,急救车通过后,交通灯恢复先前状态。
1.2 硬件控制线路图
图1原理图
1.3 工作原理
采用单片机的I/O口P1口和P3直接和交通灯连接, 控制程序放在MCS- 51单片机如8051的ROM中, 在十字路口的四组红、黄、绿交通灯中, 受单片机P1.0~P1.7和P3.0、P3.1、P3.3、P3.7 控制, 由于交通灯为发光二极管且阳极通过限流电阻和电源正极连接, 因此I/O口输出低电平时, 与之相连的相应指示灯会亮, I/O口输出高电平时, 相应指示灯会灭。紧急车请求通过的信号由人工控制, 以中断方式输入单片机, 无紧急车通过时, 中断引脚INT0 通过电阻和电源正极连接为高电平, 不产生中断请求, 单片机执行主程序, 有紧急车通过时, 中断引脚采用人工方法接地为低电平, 产生中断请求, 单片机执行中断服务程序, 让紧急车通过, 紧急车通过后, 中断引脚变为高电平, 返回主程序。由于倒计时显示装置已普遍采用, 因此本文未引入探讨。
1.4 器件和原理
1.4.1.什么是单片机
单片机是将中央处理器(CPU)、随机存储器(RAM)、只读存储器(ROM或EPROM)、定时器芯片和一些输入/输出接口电路集成在一个芯片上的微控制器(Microcontroller)。
中央处理器包括运算器、控制器和寄存器3个主要部分,是单片机的核心。
存储器按工作方式可以分为两大类:随机存储器RAM和只读存储器ROM。RAM可被CUP随机地读写,断电后存储的内容消失;ROM中的信息只能被读取,一般用于存放固定的程序。ROM中的内容只能用编程器专用设备写入。
输入/输出接口(I/O接口)是单片机的重要组成部分。程序、数据以及现场信息需要通过输入设备送到单片机,计算结果需要通过输出设备输出到外设。常用的输入有按键、键盘、A/D等,输出设备一般有LED、电机等。
为了方便理解,我们可以将单片机和PC机进行一个比较。一台能够工作的计算机要由CPU、RAM、ROM、输入/输出设备等几个部分组成。在PC机上这些部分被分成若干块芯片,安装在主板上。而单片机相当于集成了以上所有芯片的一块集成电路芯片。有一些单片机中除了上述基本的功能,还集成了其他部分功能,如A/D、D/A等。一个标准的89C51单片机的引脚功能图如图3所示。
图2 89C51单片机及其引脚
1.AT89C51单片机性能介绍
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
2.主要特性:
1.与MCS-51 兼容
2.4K字节可编程闪烁存储器
3.寿命:1000写/擦循环
4.数据保留时间:10年
5.全静态工作:0Hz-24Hz
6.三级程序存储器锁定
7.128*8位内部RAM
8.32可编程I/O线
9.两个16位定时器/计数器
10.5个中断源
11.可编程串行通道
12.低功耗的闲置和掉电模式
13.片内振荡器和时钟电路
3.管脚说明:
——VCC:供电电压。
——GND:接地。
——P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
——P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
——P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
——P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL
门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由
于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表1-1所示:
口管脚 | 备选功能 |
P3.0 | RXD(串行输入口) |
P3.1 | TXD(串行输出口) |
P3.2 | /INT0(外部中断0) |
P3.3 | /INT1(外部中断1) |
P3.4 | T0(记时器0外部输入) |
P3.5 | T1(记时器1外部输入) |
P3.6 | /WR(外部数据存储器写选通) |
P3.7 | /RD(外部数据存储器读选通) |
P3口同时为闪烁编程和编程校验接收一些控制信号。
——RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间.
——ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
——/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
——/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
——XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
——XTAL2:来自反向振荡器的输出。
2.4.2 什么是单片机系统
单片机系统的基本结构框图如图4所示。从图中可以看出,对于一个典型的单片机系统而言,主要由单片机、晶振和复位电路、输入控制电路、输出显示电路以及外围功能器件5个部分组成。
除了上文中介绍过的单片机外,单片机系统中的其他4个部分的主要作用和器件如下。
⑴晶振和复位电路:单片机系统的必要组成部分,控制单片机的机器周期和功能复位。
⑵输入控制:是指在一定要求下,采取何种形式的控制方式来实现单片机不同功能的转换,以及控制指令以何种方式传送到单片机。常用的输入控制方法有按键、矩阵键盘、串行通信等方式。
图3 单片机系统的基本组成
⑶输出显示:是指单片机将需要显示的数据发送到LED、液晶等显示模块,并控制LED等显示模块按照一定的格式显示的功能。此外,输出对象还有电机、传感器等特殊的功能器件。
⑷外围功能器件:单片机只是控制器件,对应与一定的设计要求,需要加入特定功能的器件。例如外部存储器,单片机通过对外部存储器的读写操作,完成对数据的存储器的读写操作,完成对数据的存储和读取,从而扩展单片机的存储单元和数据。此外,常用的外围器件还有A/D、D/A、74LS07门电路以及特定功能的传感器等。
单片机的最简单系统是指单片机能正常工作所必须的外围元件,主要由单片机、晶振电路和复位电路构成。而输入/输出部分则通过单片机的I/O口实现。
1.4.3 单片机系统的应用
单片机的应用十分广泛,在工业控制领域、家电产品、智能化仪器仪表、计算机外部设备,特别是机电一体化产品中,都有重要的用途。其主要的用途可以分为以下方面。
● 显示:通过单片机控制发光二极管或是液晶,显示特定的图形和字符。
● 机电控制:用单片机控制机电产品做定时或定向的动作。
● 检测:通过单片机和传感器的联合使用,用来检测产品或者工况的意外发生。
● 通信:通过RS-232串行通信或者是USB通信,传输数据和信号。
● 科学计算:用来实现简单的算法。
那么单片机是不是解决上述应用的惟一选择呢?当然不是!目前,在自动控制中,一般有3种选择,分别是嵌入式微机、DSP和单片机,他们的性能比较如表2-2所示。
表1-2 嵌入式微机、DSP、单片机性能比较
指标 | 嵌入式微机 | DSP | 单片机 |
运算速度 | 一般 | 快 | 慢 |
信息处理量 | 大 | 大 | 小 |
体积和重量 | 大 | 小 | 小 |
系统集成度 | 高 | 一般 | 低 |
开发成本 | 适中 | 高 | 低 |
典型器件 | SUPERDX型嵌入式模块 | DSP-56800 TMS320C54X | MCS-51 MCS-98 |
单片机最明显的优点是价格便宜,从几元人民币到几十元人民币。这是因为这类芯片的生产量很大,技术也很成熟。
其次,单片机的体积也远小于其他两种方案。单片机本身一般用40脚封装,当然功能多一些的单片机也有引脚比较多的,如68引脚,功能少的只有10多个或20多个引脚,有的甚至只有8只引脚。
当然,单片机无论在速度还是容量方面都远小于其他两种方案,但是实际上工作中并不是任何需要计算机的场合都要求计算机有很高的性能。例如,控制电冰箱温度的控制器就不需要使用嵌入式系统,用一片51就可以轻松实现。所以应用的关键是看是否够用,是否有很好的性能价格比。51系列的单片机已经面世十多年,依然没有被淘汰,还在不断的发展中,这就说明是它有广阔的应用前景。
1.5 部分电路功能
1.5.1 晶振电路
简单地说,没有晶振,就没有时钟周期,没有时钟周期,就无法执行程序代码,单片机就无法工作。
单片机工作时,是一条一条地从ROM中取指令,然后一步一步地执行。单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。一个机器周期包括12个时钟周期。如果一个单片机选择了12MHz晶振,它的时钟周期是1/12us,它的一个机器周期是12*(1/12)us,也就是1us。
MCS-51单片机的所有指令中,有一些完成得比较快,只要一个机器周期就行了,有一些完成得比较慢,得要2个机器周期,还有两条指令要4个机器周期才行。为了衡量指令执行时间的长短,又引入一个新的概念:指令周期。所谓指令周期就是指执行一条指令的时间。
例如,当需要计算DJNZ指令完成所需要的时间时,首先必须要知道晶振的频率,设所用晶振为12MHZ,则一个机器周期就是1us。而DJNZ指令是双周期指令,所以执行一次要2us。如果该指令需要执行500次,正好1000us,也就是1ms。
机器周期不仅对于指令执行有着重要的意义,而且机器周期也是单片机定时器和计数器的时间基准。例如一个单片机选择了12MHz晶振,那么当定时器的数值加1时,实际经过的时间就是1us,这就是单片机的定时原理。
1、晶振的选择
晶振一般分为晶体振荡器和晶体谐振器。在单片机系统中,晶体振荡器将外围的电容集成到振荡器的内部,无需再设计晶振电路,只需要将电源加载到晶振上,晶振就可以起振,并通过两个引脚输出到单片机的晶振引脚上。
一般的,由于晶体振荡器的体积较大,价格较贵,在实际使用中,还可以选择晶体谐振器,也就是常说的立式晶振。该晶振需要外部的晶振电路才可以起振,但是由于该电路非常简单,并且使用灵活,在单片机系统中也有广泛地应用。
2、通用的晶振电路
单片机的晶振电路是一种典型电路,分为内部时钟方式和外部时钟方式两种。内部时钟方式的电路如图4所示。
图3 单片机的内部晶振电路
内部始终的晶振频率一般都选择在4MHz~12MHz之间,外接两个谐振电容。该电容的典型值为30PF,但是在实际应用时,需要根据实际起振情况选择。
如果单片机的时钟必须使用某一个外接的时钟信号,就不要外接晶振。由于此时的外接晶振引脚上没有晶振信号输入,内部的时钟电路将停振。这种方式称为外部时钟方式。图5给出了两种外部时钟的电路,可以根据不同的单片机型号选择不同的电路。
图4 单片机的外部晶振电路
3、振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
1.5.2 复位电路
简单地说,单片机的复位就和计算机的重起一样的概念。任何单片机在工作之前都要有个复位的过程,复位对单片机来说,是程序还没有开始执行,是在做准备工作。一般的复位只需要5ms的时间。
复位引脚RST/Vpd通过片内一个施密特触发器(抑制噪声作用)与片内复位电路相连,施密特触发器的输出,在每个机器周期的S5P2有复位电路采样依次。当振荡电路工作,并且在RST引脚加上一个至少保持2个机器周期的高电平时,就能使8051完成一次复位。按上面所说,时间不少于5ms。为了达到这个要求,需要在外部设计复位电路。
复位电路的实现可以有很多种方法,但是从功能上一般分为两种:一种是电源复位,即外部的复位电路在系统通上电源之后直接使单片机工作,单片机的起停通过电源控制;另一种方法是在复位电路中设计按键开关,通过按键开关触发复位电平,控制单片机的复位。
1、通用的复位电路
和晶振电路一样,复位电路也是单片机系统的典型外部电路。基本的复位电路的原理图如图6所示。
图5 单片机的复位电路
从原理上,一般采用上电复位嗲路。这种复位电路的工作原理是:通电时,电容两端相当于是短路,于是RST引脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降,降到一定程序,即为低电平,单片机开始正常工作。
2、改进型的复位电路
对于有着丰富电路设计经验的读者而言,可以根据自己的需要,定制满足实际要求的电路。这里,给出了一种根据实际需要设计的上电复位电路,如图6所示。
图6 改进型的复位电路
1.5.3 信号灯控制电路
外围器件选择的是发光二极管,发光二极管在其两端的电压差超出其导通压降时开始工作,发光二极管的导通压降一般为1.7V~1.9V。此外,工作电流要满足该二极管的工作电流。满足电流和电压的要求,发光二极管就可以发光了。单片机系统中往往是数字信号,不是5V就是0V,所以只要将二极管的正负极和电源对应上就可以了。但还需在发光二极管和单片机连接时加一个限流电阻,这个电阻的作用在于限制通过二极管的电流,从而达到减少功耗或者满足端口对最大电流的限制。
图7 信号灯控制和时间显示电路
一般二极管的点亮电流为5mA至10mA,在5V驱动时,厂家多采用470欧的限流电阻,在电路中采用了1K的电阻,电流也就3~5mA。当然为了更亮一点,可以减小电阻值,当然,二极管的电流不要超出单片机的I/O最大电流。
发光二极管的参数分成三大类:一是电参数;二是光参数;三是极限参数。
● 电参数
发光二极管的电参数主要有下列几项。
①正向电压Vf。它是指:在给发光二极管加入规定的正向电流时,发光二极管正极与负极引脚之间的电压降。
②发向耐压Vr。它是指:保证发光二极管不出现反向击穿时所允许给发光二极管加的最大反向电压。
③反向漏电流Ir。它是指:在给发光二极管加上规定的反向偏置电压时,流过发光二极管的反向电流,即从负极流向正极的电流。
④结电容Co。它是指:发光二极管PN结的结电容,一般为小于100PF,此结电容愈小愈好。
● 光参数
发光二极管的光参数主要有发光峰值波长、半峰宽度和发光强度。其中发光强度是发光二极管的一项重要光参数,它表征了发光二极管发光时的亮度。
● 极限参数
发光二极管的极限参数关系到发光二极管的安全使用,在使用过程中若超过极限参数,发光二极管将会损坏。发光二极管的极限参数主要有两项:一是极限功率Pm;二是极限工作电流Im。在小电流发光二极管中,极限电流一般小于5MA。
发光二极管的三种参数中,除光参数是它特有的外,其他两项参数的含义与普通二极管相同。
1.5.4 LED显示及显示接口
单片机应用系统中,使用的显示器主要有LED(发光二极管显示器)和LCD(液晶显示器)。这两种显示器成本低廉,配置灵活,与单片机接口放便。近年来也开始配置简易形式的CRT接口,可以较方使池进行图形显示。数码管在该电路中主要是显示单片机的输出数据、状态等,因而,作为外围典型器件,数码管显示是反映系统输出和操纵输入的有效器件。数码管具备数字接口,可以很方便地和单片机系统连接;数码管的体积小,重量轻,并且共好低,是一种理想的显示单片机数据输出内容的期间,在单片机系统中有着重要的作用。显示电路如图8所示。
1.LED显示器结构与原理
LED显示块是由发光二极管显示字段的显示器件,在单片机应用系统中通常使用的是七段LED。这种显示块有共阴极与共阳极两种,如图9所示。共阴极LED显示块的发光级管阴极共地。如图中(c)所示,当某个发光二极管的阳极为高电平时,发光二极管点亮;共阳极LED显示块的发光二极管阳极并接。如图中(b)所示。图中(a)为七段码显示器的实际外观与引脚连接图,另外两只没有标出的引脚是共阴或者共阳引脚,实际连接中接地(共阴)或者接+5伏(共阳)。
图8 LED的管脚和电路原理
通常的七段显示器(也有人称为七节显示屏)是由八个发光二极管所组成的,因此也被叫做八段显示器。其中包括七个细长条形的LED及小数点行的LED,显示器的每一段或没一划都有其名称,分别是英文小写的a到f,以及小数点dp(DECIMAL POINT)。七段显示器可以显示包括小数点的0到9数字与部分的英文字母。在近年来,由于生产器件的工艺的进步,也出现了十六段码LED显示器和点阵式单色和双色显示器,这些LED显木器被广泛应用于电梯、大屏幕LED显示器、公共汽车报站器、车站车次显示等领域,特别是点阵式双色显示器的出现,极大的方便了汉字的显示和图形显示,为其在网民经济的领域的应用拓宽了道路。
以共阳极的七段显示器为例,若想要显示数字1时,就要使b划与c划点亮,在电路上我们会把共同点接到正电源端(+5V),标示b与c的地方经过限流电阻到地,就可以显示数字1。如果是单个的数码管,七段显示器是直接点亮的,亦即用8位去推动一个七段显示器。如果有多位数字要显示时,可以用扫描的方式显示,以节省控制脚位。
七段显示块与单片机接口非常容易。只要将一个8位并行输出门与显示块的发光二极管引脚相连即可。8位并行输出门输出不同的字节数据即可获得不同的数字或字符。通常将控制发光二极管的8位字节数据称为段选码。共阳极与共阴极的段选码义为补数。
2. LED是如何显示单片机数据的
用单片机驱动LED数码管有很多种方法,按显示方式分,有静态显示和动态显示。首先介绍静态显示方法。
静态显示就是显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后就不再控制LED,直到下一次显示时再传送一次新的显示数据。静态显示的数据稳定,占用的CUP时间少。静态显示中,没一个显示器都要占用单独的具有锁存功能的I/O接口,该接口用于笔划段字形代码。这样单片机只要把显示的字形代码发送到接口电路,该字段就可以显示发送的字形。要显示新的数据时,单片机再发送新的字形码。
另一种方法是动态扫描显示。动态扫描的方法是用其接口电路把所有显示器的8个笔划段a-h同名端连在一起,而没一个显示器的公共极COM各自独立地受I/O线控制。CPU向字段输出口送出字形码时,所有显示器接口接收到相同的字形码,但究竟是哪个显示器亮,则取决于COM端,而这一端是有I/O控制的,由单片机决定何时显示哪一位了。
动态扫描用分时的方法轮流控制各个显示器的COM端,使各个显示器轮流点亮。在轮流点亮扫描过程中,没位显示器的点亮时间极为短暂,但由于人的视觉暂留现象及发光二极管的余辉效应,给人的印象就是一组稳定的显示数据。
3.静态显示和动态显示的比较
这两种显示方式各有利弊:静态显示虽然数据显示稳定,占用很少的CPU时间,但每个显示单元都需要单独的显示驱动电路,使用的电路硬件较多;动态显示需要CPU时刻对显示器进行数据刷新,显示数据有闪烁感,占用的CPU时间多,但使用的硬件少,能节省线路板空间。
在一般较为简单的系统中,为了降低成本,动态显示方案具备一定的实用性,也是目前单片机数码管显示中较为常用的一种显示方法。动态显示法是目前各种单片计算机采用的流行方法。其优点是烟碱简单。“动态”由软件实现。
二、交通信号灯软件的系统编程
2.1单片机的C语言程序设计
c语言程序设计是单片机开发、应用的重要趋势之一。目前,支持硬断点的单片机仿真器已能很好地进行c语言程序调试,为单片机编程使用c语言提供了便利条件。
编译型程序设计语言c的优点已为大家熟知:既有多种高级语言的特点,又具备汇编语言的功能:有丰富的库函数、运算速度快、编译效率高、可移植性好,而且可以实现对系统硬件的直接控制;具有完善的模块程序结构,支持广泛采用的由顶向下结构化程序设汁,为软件开发中采用模块化设计方法提供了有效支持;可以大大缩短目标系统软件的开发周期,软件的可读件明显增加,便于改进、扩充,研制规模更大、性能更完备的系统。
2.2 C语言与MCS—51
2.2.1 MCS—51酌编程语言
支持MCS—51单片机编程的语言.除了前面学过的汇编语言外,还有三种:BASIC、PL/M和C。
BASIC语言简单易学,适用于对编程效率或运行速度要求不高的场合,8052单片机片内就固化了BASIC语言解释器。但是BASIC采用浮点运算,导致程序复杂且执行时间长,即使BASIC编译器也未能解决这个问题。
PL/M可以说是“高级汇编语言”,详细控制着代码的生成。但对MCS-51系列,PL/M
不支持复杂的算术运算和浮点变量,也没有丰富的库函数。
用C语言进行单片机程序设计,编译器能自动完成变量的存储单元的分配,编程者可以专过于应用软件的设计.大大加快开发速度,可以对单片机常用的接口芯片编制通用的驱动函数,对常用的功能模块、算法等编制相应的函数,还可以很容易地进行信号处理算法和程序的移植,有利于产品中单片机的重新选型和软件设计水平的提高、与国外嵌入式系统的程序设计接轨。
与汇编语言相比,C语言程序在开发速度、软件质量、结构严谨、程序可靠性等方面有明显优势。而代码效率相对较低的缺点,对于片内ROM空间16K/32K字节以上的单片机而言,已经不很重要。目前,单片机上C语言程序未经人工优化的代码长度,已缩短到用人工方便地对时间要求比较严格的汇编语言模块和关键代码进行优化。
2.2.2 C51编译器与程序开发过程
已经开发了各种单片机的C语言编译器
对于并不以快速运算见长的MCS—51单片机来说,其C语言编译器(简称C51)的各项性能指标中,最重要的是开发便利,其次是生成代码紧凑,以及编译速度、是否有浮点库和足够的算术支持。
C51程序开发过程如图9所示:
三、系统的组装与调试
3.1制板
在明确了本设计所 要实现的功能,以及所需元器件及其参数时,便可进行原理图的设计,在PROTEL环境下,设计如图1所示原理图,在正确定义了相应的管脚封装后,创建网络表,然后在PCB界面上调用该网络表,检查无误后,EXCUTE,选择BOTTEM层进行合理的便于连线的排版,使跳线尽可能少,其PCB封装图如图4所示。之后的工作便是打印,腐蚀,焊接等工作,注:配置腐蚀液时,先放水,后放Fecl3液,且其比例为3:1;且做板是尽量在敷铜部分加松香水,以防氧化;在放置元器件时,注意电解电容的极性,集成块以及电位器其管脚的位置。印刷板图设计中应注意的事项
(1)布线方向:从焊接面看,组件的排列方位尽可能保持与原理图相一致,布线方向最好与电路图走线方向相一致,因生产过程中通常需要在焊接面进行各种参数的检测,故这样做便于生产中的检查,调试及检修(注:指在满足电路性能及整机安装与面板布局要求的前提下)。
(2)进出接线端布置 相关联的两引线端不要距离太大,一般为2~3/10英寸左右较合适。 进出线端尽可能集中在1至2个侧面,不要太过离散。
(3)各组件排列,分布要合理和均匀,力求整齐,美观,结构严谨的工艺要求。
(4)电阻、二极管的放置方式:分为平放与竖放两种:
① 平放:当电路组件数量不多,而且电路板尺寸较大的情况下,一般是采用平放较好;
② 竖放:当电路组件数较多,而且电路板尺寸不大的情况下,一般是采用竖放。
(5) IC座的放置原则:
IC座:设计印刷板图时,在使用IC座的场合下,一定要特别注意IC座上定位槽放 置的方位是否正确,并注意各个IC脚位是否正确,例如第1脚只能位于IC座的右下角线或者左上角,而且紧靠定位槽(从焊接面看)。
(6)具有严格的科学设计和工程实践,使学生逐步树立严谨的科学态度,并培
养学生在实际工作中了解理论与实际的差距。而且这次课程设计主要是以工程设计训问题的能力。它也能启发学生的创造能力
(7)设计布线图时要注意管脚排列顺序,组件脚间距要合理。
(8)在保证电路性能要求的前提下,设计时应力求走线合理,少用外接跨线,并按一定顺充要求走线,力求直观,便于安装,高度和检修。
(9)设计布线图时走线尽量少拐弯,力求线条简单明了。
(10)布线条宽窄和线条间距要适中,电容器两焊盘间距应尽可能与电容引线脚的间距相符。
(11)设计应按一定顺序方向进行,例如可以由左往右和由上而下的顺序进行
(12) 握基本电子电路的生产流程及安装,布线,焊接等基本技能。
3.2 组装及调试
3.2.1 AT89S51单片机实验及实践系统板简介
AT89S51单片机实验及实践系统板(以后简介系统板)集成多个硬件资源模块,每个模块各自可以成为独立的单元,也可以相互组合,因此,可以为不同阶层的单片机爱好者及单片机开发者提供不同的开发环境。
这里只介绍两个主要的模块:
1.程序下载模块
该模块完成源程序代码下载到AT89S51或者是AT89S52芯片中,它需要和微机上的ISP下载器软件配合使用来完成这样的功能。具体的电路原理图如图13所示:
2.动态数码显示模块
该系统中采用8位的动态数码显示,控制数码显示的数据由两部分组成,一部分为笔段亮灭控制的信号输入由“A B C D E F G H”端口输入,而控制位显示的控制信号由“S1 S2 S3 S4 S5 S6 S7 S8”端口输入,同时该动态数码显示采用共阴数码管;具体的电路原理图如图10所示:
图10
4.2.2 Keil C软件和AT89S51单片机下载器软件的使用
Keil C51软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM语言和C语言的程序设计,界面友好,易学易用。
Keil C51软件的使用方法在这里就不做过多的介绍,可以参阅有关书籍。
AT89S51单片机下载器是专门用于下载程序到单片机系统中,该软件使用方便。启动软件之后进入下面的界面(如图11所示):
图11
在上图中:
1.区域1为程序代码显示区;
2.区域2为下载芯片选择区,该软件支持多种芯片的程序在线下载,对系统板上的单片机AT89S51是其中一种,软件默认情况下为AT89S51单片机。
3.区域3为在线下载的操作区,它可以提供如下的操作
(1).初始化:启动AT89S51单片机进入ISP下载状态,点击一下,若启动成功,则操作区后的操作按钮就会变成如图16所示的状态。否则,不成功会有“初始化失败”的红色字样提示。
图12
(2).特征字:点击一下,会读出单片机的芯片的特征字,对于AT89S51单片机的特征字为:1E 51 06,出现的提示框如图13所示
如果学弟学妹们在毕设方面有任何问题,随时可以私信我咨询哦,有问必答!学长专注于单片机相关的知识,可以解决单片机设计、嵌入式系统、编程和硬件等方面的难题。
愿毕业生有力,陪迷茫着前行!