ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:311.88KB ,
资源ID:18821378      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18821378.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(红绿灯设计报告Word格式文档下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

红绿灯设计报告Word格式文档下载.docx

1、图3-5(3)程序设计思路,单片机资源分配以及程序流程单片机资源分配单片机 P3 口的 P3.0-P3.1 引脚用作输出,控制发光二极管的显示。在计时模块中,需要定义两个数组变量(init_sn3,init_ew3)来存储东西、南北两个方向在不同状态中倒计时的初始值,题目中每个方向的交通灯共有3种显示状态,因此数组元素个数为3。还需要定义两个变量( cnt_sn, cnt_ ew)暂存东西、南北两个方向的倒计时剩余时间。在状态的切换中,为了明确当前处于哪种状态,东西、南北方向各设置一个状态变量(state_val_sn,state_val_ew),当倒计时的剩余时间到零时,状态变量增 1,表示

2、启动下一个状态,当该变量增到3 时变为0,回到序号为 1的状态。程序设计思路在设计中,由于没有键盘功能,因此只涉及定时计数和动态扫描功能。主程序将变量初始化之后,设置单片机定时器和中断特殊功能寄存器的初始值,将定时器T1的工作方式设置为 8位自动装载模式,定时器每隔250us 产生一次溢出。在初始化变量与寄存器后,主程序进入一个循环结构,在循环中只做动态扫描的工作,根据东西、南北两向的剩余时时间进行动态扫描显示。计时以及状态的切换通过定时器的中断服务程序来实现,在中断服务程序中,每计时到一秒时,则各方向当前状态的剩余时间减1,一直减到 0时触发下一个状态的开始,改变交通灯的指示。(4)软硬件调

3、试方案软件调试方案:伟福软件中,在“文件新建文件”中,新建 C语言源程序文件,编写相程序。在“文件新建项目”的菜单中,新建项目并将 C 语言源程序文件包括在项目文件中。在 “项目编译”菜单中将 C 源文件编译,检查语法错误及逻辑错误。在编译成功后,以 “*.hex”和“*.bin” 后缀的目标文件。硬件调试方案:在设计平台中,将单片机的 P3.0-P3.5 分别与独立式键盘的相应位通过插线连接起来。在伟福中将程序文件编译成目标文件后,运行“MCU下载程序”,选择相应的 flash 数据文点击“编程”按钮,将程序文件下载到单片机的Flash 中。然后,上电重新启动单片机,检查所编写的程序是否达到

4、题目的要求,是否全面完整地完成了试题的内容。三系统硬件概述AT89S52单片机简介AT89S52为 ATMEL 所生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flsah存储器。(一)、AT89S52主要功能列举如下:1、拥有灵巧的8位CPU和在系统可编程Flash2、晶片内部具时钟振荡器(传统最高工作频率可至 12MHz)3、内部程序存储器(ROM)为 8KB4、内部数据存储器(RAM)为 256字节5、32 个可编程I/O 口线6、8 个中断向量源7、三个 16 位定时器/计数器8、三级加密程序存储器9、全双工UART串行通道(二)、AT89S52各引脚功能介绍:VCC

5、:AT89S52电源正端输入,接+5V。VSS:电源地端。XTAL1:单芯片系统时钟的反相放大器输入端。XTAL2:系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。RESET:AT89S52的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。EA/Vpp:

6、EA为英文External Access的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用 8751 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。ALE/PROG:ALE是英文Address Latch Enable的缩写,表示地址锁存器启用信号。AT89S52可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总

7、线(A0A7)锁进锁存器中,因为AT89S52是以多工的方式送出地址及数据。平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。PSEN:此为Program Store Enable的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。AT89S52可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。PO

8、RT0(P0.0P0.7):端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0A7)及数据总线(D0D7)。设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0A7,再配合端口2所送出的A8A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。PORT2(P2.0P2.7):端口2是具

9、有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在AT89S52扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8A15,这个时候P2便不能当做I/O来使用了。PORT1(P1.0P1.7):端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚

10、位。PORT3(P3.0P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。其引脚分配如下: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,外部数据存储器的读取信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期

11、的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PS

12、EN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。来自反向振荡器的输出。74HC244简介74HC244芯片的功能 如果输入的数据可以保持比较长的时间(比如键盘),简单输入接口扩展通常使用的典型芯片为74HC244,由该芯片可构成三态数据缓冲器。7

13、4HC244芯片的引脚排列如图1所示。74HC244芯片内部共有两个四位三态缓冲器,使用时可分别以1C和2G作为它们的选通工作信号。当1C和2G都为低电平时,输出端Y和输入端A状态相同;当1G和2G都为高电平时,输出呈高阻态。八同相三态缓冲器/线驱动器74HC244芯片的功能 74HC244芯片的引脚当1/OE和2/OE都为低电平时,输出端Y和输入端A状态相同;当1/OE和2/OE都为高电平时,输出呈高阻态。数码管简介 内部的四个数码管共用adp这8根数据线,为人们的使用提供了方便,因为里面有四个数码管,所以它有四个公共端,加上adp,共有12个引脚,下面便是一个共阴的四位数码管的内部结构图(

14、共阳的与之相反)。引脚排列依然是从左下角的那个脚(1脚)开始,以逆时针方向依次为112脚,下图中的数字与之一一对应。四程序设计/晶振:11.0592M T1-250微秒溢出一次/*变量的定义:show_val_sn,show_val_ew: 显示的值0-59state_val_sn,state_val_ew: 状态值 南北方向0-绿灯亮;1-黄灯亮;2-红灯亮T1_cnt: 定时器计数溢出数cnt_sn,cnt_ew: 倒计时的数值init_sn3,init_ew3 倒计时led_seg_code:数码管7 段码*/#include reg51.hsbit SN_green=P32 ;/南北方

15、向绿灯sbit SN_yellow=P31 ;/南北方向黄灯sbit SN_red=P30 ;/南北方向红灯sbit EW_green=P35 ;/东西方向绿灯sbit EW_yellow=P34 ;/东西方向黄灯sbit EW_red=P33 ;/东西方向红灯unsigned char data cnt_sn,cnt_ew;unsigned int data T1_cnt;unsigned char data state_val_sn,state_val_ew;char code led_seg_code10=0x3f,0x06,0x05b,0x04f,0x66,0x6d,0x7d,0x07

16、,0x7f,0x6f;char code init_sn3=24,4,29;char code init_ew3=29,24,4;/-void delay(unsigned int i)/延时while(-i); void led_show(unsigned int u,unsigned int v)unsigned char i;i=u%10; /暂存个位P0=led_seg_codei;P2=0xbf; delay(100); /延时i=u%100/10; /暂存十位P2=0x7f;delay(100);i=v%10;P2=0xfe;i=v%100/10;P2=0xfd;/-void ti

17、mer1() interrupt 3 /T1中断 T1_cnt+;if(T1_cnt3999) /如果计数3999, 计时1s T1_cnt=0;if (cnt_sn!=0) /南北方向计时 cnt_sn-;elsestate_val_sn+;if (state_val_sn2) state_val_sn=0;cnt_sn=init_snstate_val_sn;switch (state_val_sn) /根据状态值,刷新各信号灯的状态case 0: SN_green=0 ;SN_yellow=1 ;SN_red=1 ;break;case 1: SN_green=1 ;SN_yellow=

18、0 ;case 2:SN_green=1 ;SN_red=0 ;if (cnt_ew!=0) /东西方向计时cnt_ew-;state_val_ew+;if (state_val_ew2) state_val_ew=0;cnt_ew=init_ewstate_val_ew;switch (state_val_ew) /根据状态值,刷新各信号灯的状态 EW_green=1 ;EW_yellow=1;EW_red=0 ; EW_green=0 ;EW_yellow=1 ;EW_red=1 ;EW_yellow=0 ;main()/初始化各变量cnt_sn=init_sn0;cnt_ew=init_

19、ew0;T1_cnt=0;state_val_sn=0; /启动后,默认工作在序号为1 的状态state_val_ew=0;/初始化各灯的状态SN_green=0 ;/南北方向绿灯亮/南北方向黄灯灭/南北方向红灯灭EW_green=1 ;/东西方向绿灯灭/东西方向黄灯灭/东西方向红灯亮/初始化51的寄存器TMOD=0x20;/用T1计时 8位自动装载定时模式TH1=0x19;/0x4b; /500微秒溢出一次; 250=(256-x)*12/11.0592 - x= 230.4TL1=0x19;EA=1; /开中断ET1=1;TR1=1; /开定时器T1while(1) led_show(cnt_sn,cnt_ew);/主程序结束

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1