1、目 录一、单片机简介2二、74LS374简介6三、设计要求7四、设计方案7五、软件编程8六、实验心得8一、单片机简介1.1 MSC-51芯片简介:8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明: 图1-1 8051内部总线分配图1)中央处理器(CPU):中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度
2、整个单元系统协调的工作,完成运算和控制输入输出功能等操作。2)数据存储器(RAM)8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。3)程序存储器(ROM):8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。4)定时/计数器(ROM):8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。5)并行输入输出(I/O)口:8051共有4组8位I/O口
3、(P0、 P1、P2或P3),用于对外部数据的传输。6)全双工串行口:8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。7)中断系统8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。8)时钟电路8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存
4、储器合二为一的结构,即普林斯顿(Princeton)结构。INTEL的MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。图1-2 MCS-51系列单片机的内部结构示意图1.2 MCS-51的引脚说明 MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:如图2-1 图2-1RESET/Vpd:复位信号复用脚,当8051通电,时钟电路开
5、始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,8051的初始态。8051的复位方式可以是自动复位,也可以是手动复位,见下图2-2。此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。图2-2ALE/PROG:当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的
6、低位字节。而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。如果单片机是EPROM,在编程其间,PROG将用于输入编程脉冲。PSEN:当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。EA/Vpp:程序存储器的内外部选通线,8051和8751单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地
7、址则读取外部指令数据。如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内部无程序存储器的8031,EA端必须接地。在编程时,EA/Vpp脚还需加上21V的编程电压。单片机的特点: (1)高集成度,体积小,高可靠性 单片机将各功能部件集成在一块晶体芯片上,集成度很高,体积自然也是最小的。芯片本身是按工业测控环境要求设计的,内部布线很短,其抗工业噪音性能优于一般通用的CPU。单片机程序指令,常数及表格等固化在ROM中不易破坏,许多信号通道均在一个芯片内,故可靠性高。 (2)控制功能强 为了满足对对象的控制要求,单片机的指令系统均有极丰富的条件:分支转移能力,I/O口的逻辑操作及
8、位处理能力,非常适用于专门的控制功能。 (3)低电压,低功耗,便于生产便携式产品 为了满足广泛使用于便携式系统,许多单片机内的工作电压仅为1.8V3.6V,而工作电流仅为数百微安。 (4)易扩展 片内具有计算机正常运行所必需的部件。芯片外部有许多供扩展用的三总线及并行、串行输入/输出管脚,很容易构成各种规模的计算机应用系统。 (5)优异的性能价格比 单片机的性能极高。为了提高速度和运行效率,单片机已开始使用RISC流水线和DSP等技术。单片机的寻址能力也已突破64KB的限制,有的已可达到1MB和16MB,片内的ROM容量可达62MB,RAM容量则可达2MB。由于单片机的广泛使用,因而销量极大,
9、各大公司的商业竞争更使其价格十分低廉,其性能价格比极高。 二、74LS374简介374为具有三态输出的八 D 边沿触发器,共有 54/74S374 和 54/74LS374 两种线路结构型式,其主要电器特性的典型值如下(不同厂家具体值有差别):型号 fm PD54S374/74S374 100MHz 450mW54LS374/74LS374 50MHz 135mW374 的输出端 O0O7 可直接与总线相连。当三态允许控制端 OE 为低电平时,O0O7 为正常逻辑状态,可用来驱动负载或总线。当 OE 为高电平时,O0O7 呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响
10、。当时钟端 CP 脉冲上升沿的作用下,O 随数据 D 而变。由于 CP 端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善400mV。引出端符号:D0D7 数据输入端OE 三态允许控制端(低电平有效)CP 时钟输入端O0O7 输出端74ls374引脚管腿图:74ls374逻辑图和功能真值表:三、设计要求1.基本要求: 东西和南北方向各一组(红绿双色灯)指示灯,按一般交通规则进行循环顺序开通和断开。数码管能正常显示倒计时时间,和指示灯同步2:发挥部分: 可以增加设定红绿灯初始值,可直接用硬件调节初始值。 3.提供的原件:3片374锁存器 ,1片138译码器,8个数码管,8个电阻,4个双色
11、灯,导线,等等四、设计方案1. 因为要用到数码管计时,所以要用到定时器和中断。根据实际情况,I/O口够用,所以不用138。 2.准备工作:焊电路前,查清锁存器374和数码管的管脚排列。3.P0口对应灯管,P2口接锁存器374, 使能端接P30:duanxuan,P31:weixuan4排版布局好要焊的原件。5.交通灯变化规律:状态1:南北红灯,东西绿灯,倒计时30秒。状态2:南北红灯,东西黄灯,倒计时5秒。状态3:南北绿灯,东西红灯,倒计时30秒。状态4:南北黄灯,东西红灯,倒计时5秒。五、软件编程调用开始状态2数码管动态显示状态4状态1状态3:六、实验心得终于完成了设计,不过调试的时候却发现
12、结果和想的有所不同,通过监控和修改才得出了需要的设计。这次的设计让我们增长了实践技能,还增加了有关交通知识,这些对于我们真是受益匪浅。最后,我们觉得,不见风雨,怎么能见彩虹呢?我把体会用十个字概括:天下无难事,只怕有心人一次又一次的学习,探索,我们慢慢地在体会,研究和感悟,终于开始领会到将近成功的那一份喜悦,从查找资料,程序设计,到整理每一个次的调试,我们学会了细心和耐心,也品尝到了酸、甜、苦、辣,无数的成功与失败更加肯定了我们的研究成果。兴趣是自发形成的,而默契是慢慢培养出来的。当前的社会,科技迅速发展,知识更新速度大大加快,只有我们共同去探索,用自己的双手去征服每一片天空,用我们新的力量去
13、打造一片创新的领域。附录:相关源程序:#includereg51.hsbit XR=P03;sbit XG=P02;sbit NR=P06;sbit NG=P07;sbit DR=P04;sbit DG=P05;sbit BR=P00;sbit BG=P01;sbit weixuan=P31;sbit duanxuan=P30;unsigned code duanma=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; unsigned kk,shi,ge,cound;void delay(unsigned char );void displa
14、y(unsigned ge,unsigned shi);void zt1();void zt2();void zt3();void zt4();void main() TMOD=0x01;EA=1;ET0=1;TR0=1; NR=0;NG=0;BR=0;BG=0;DG=0; DR=0; P2=0x00; weixuan=1;duanxuan=1; delay(1); NR=1;NG=1;BR=1;BG=1;DG=1; DR=1; P2=0xff; weixuan=1;duanxuan=1;delay(1); while(1) zt1();zt2();zt3();zt4(); void dela
15、y(unsigned char z)unsigned i,j;for(i=0;iz;i+)for(j=0;j110;j+); void display(unsigned ge,unsigned shi)/段码显示 weixuan=0;P2=0x5a;/个位weixuan=1;duanxuan=0;P2=duanmage;duanxuan=1;delay(5);weixuan=0;P2=0xa5;/十位weixuan=1;duanxuan=0;P2=duanmashi;duanxuan=1;delay(5); void zt1()/南北红灯,东西绿灯,亮30秒cound=31;TMOD=0x01
16、;/定时器T0工作于方式1EA=1;ET0=1;TR0=1;while(1) NR=0;NG=1;BR=0;BG=1;DG=0; DR=1; XG=0;XR=1; if(kk=20)kk=0;cound-;if(cound=4)break; shi=cound/10;ge=cound%10;display(ge,shi);void zt2()/南北红灯,东西黄灯,亮5秒 cound=5;TMOD=0x01;EA=1;ET0=1;TR0=1;while(1) NR=0;NG=1;BR=0;BG=1;DG=0; DR=0; XG=0;XR=0;if(kk=20)kk=0; cound-;if(co
17、und=0)break; shi=cound/10;ge=cound%10;display(ge,shi);void zt3()/东西红灯,南北绿灯,亮25秒cound=26;TMOD=0x01;EA=1;ET0=1;TR0=1;while(1) NR=1;NG=0;BR=1;BG=0;DG=1; DR=0; XG=1;XR=0; if(kk=20)kk=0;cound-;if(cound=4)break; shi=cound/10;ge=cound%10;display(ge,shi);void zt4()/东西红,南北黄灯,亮5秒 cound=5;TMOD=0x01;EA=1;ET0=1;TR0=1;while(1) NR=0;NG=0;BR=0;BG=0;DG=1; DR=0; XG=1;XR=0;if(kk=20)kk=0;cound-;if(cound=0)break; shi=cound/10;ge=cound%10;display(ge,shi); void t0() interrupt 1using 0TH0=(65536-46080%256); TH0=(65536-46080/256);kk+;