单片机8255交通灯程序
8255交通灯实验报告
8255交通灯实验报告8255交通灯实验报告一、实验目的本实验旨在通过使用8255芯片控制交通灯的亮灭,熟悉和掌握8255芯片的使用方法,并了解交通灯控制系统的基本原理。
二、实验原理交通灯控制系统是一种常见的嵌入式系统,其核心是使用微控制器或者可编程逻辑器件控制交通灯的亮灭。
在本实验中,我们使用8255芯片作为控制器,通过控制芯片的输入输出端口,实现交通灯的控制。
8255芯片是一种通用输入输出设备,具有24个可编程的输入输出引脚,可以通过编程控制这些引脚的状态。
在本实验中,我们将使用8255芯片的其中8个引脚来控制交通灯的亮灭。
三、实验材料1. 8255芯片2. 交通灯模块3. 电路连接线4. 电源四、实验步骤1. 将8255芯片插入实验板上的相应位置,并根据芯片的引脚定义连接电路。
2. 将交通灯模块连接到8255芯片的输出端口。
3. 将电源连接到电路上,确保电源正常工作。
4. 编写控制程序,通过对8255芯片的输入输出端口进行编程,控制交通灯的亮灭。
5. 运行程序,观察交通灯的亮灭情况。
五、实验结果经过实验,我们成功地使用8255芯片控制了交通灯的亮灭。
通过编程控制8255芯片的输出端口,我们可以实现交通灯的各种状态,如红灯亮、绿灯亮、黄灯亮等。
实验结果表明,8255芯片是一种可靠且灵活的控制器,适用于各种嵌入式系统。
六、实验总结通过本次实验,我们深入了解了8255芯片的使用方法,并掌握了交通灯控制系统的基本原理。
8255芯片作为一种通用输入输出设备,具有广泛的应用前景。
在实际工程中,我们可以使用8255芯片来控制各种设备,如灯光、电机等,实现更加复杂的控制功能。
然而,本实验只是对8255芯片的基本应用进行了简单的演示。
在实际项目中,我们还需要考虑更多的因素,如多任务处理、中断处理等。
因此,我们需要进一步学习和掌握更加高级的嵌入式系统开发技术,以应对更加复杂的控制需求。
总之,本次实验为我们提供了一个宝贵的学习机会,让我们更加深入地了解了8255芯片的应用和交通灯控制系统的原理。
实验二8255A并行口实验(二)——交通灯实验
实验二 8255A并行口实验(二)——交通灯实验一、实验目的掌握通过8255A并行口传输数据的方法,以控制发光二极管的亮与灭。
二、实验内容1.硬件原理图如图3.22.硬件线路连接(1)8255A片选信号8255CS插孔和译码输出插孔0F0-0FF相连。
(2)8255AC口的PC0-PC7依次和L1-L8相连,B口的PB4-PB7依次和L9-L12相连。
(3)将8255A芯片旁边短路J5连VCC端。
3.编程提示1)通过8255A控制发光二极管PB4-PB7对应黄灯,PC0-PC3对应绿灯,PC4-PC7对应红灯,以模拟交通路灯的管理。
2)要完成本实验,必须先了解交通路灯的亮灭规律,设有一个十字路口1、3为南北方向,2、4为东西方向,初始状态为四个路口的红灯全亮。
之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。
延时一段时间后,1、3路口的绿灯熄灭,而1、3路口的黄灯开始闪烁,闪烁若干次以后,1、3路口红灯亮,而同时2、4路口的绿灯亮,2、4路口方向通车,延时一段时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次以后,再切换到1、3路口方向,之后,重复上述过程。
3)程序中设定好8255A的工作模式,及三个端口均工作在方式0,并处于输出状态。
4)各发光二极管共阳极。
使其点亮应使8255A相应端口的位清0。
三、实验步骤1.按图3.2连好实验线路2.运行实验程序(l)DVCC8086-B配置:在DVCC8086-B系统显示命令提示符“-”时,按GO键,显示500 00输入F000:B400按EXEC健在DVCC8086-B且示8255---2,同时L1-L2发光二极管模拟交通灯显示。
(2)OVCC8086-E配置:正确输入实验程序。
运行实验程序G=1000↓观察L1-L12发光二极管模拟交通灯显示情况。
8255交通灯课程设计
8255交通灯课程设计一、课程目标知识目标:1. 让学生掌握8255并行接口芯片的基本工作原理和功能特点。
2. 使学生了解交通灯控制系统的工作原理,并能运用8255芯片设计简单的交通灯控制电路。
3. 帮助学生理解并行接口在微机系统中的应用,培养他们对接口技术的兴趣。
技能目标:1. 培养学生运用8255芯片进行交通灯控制电路设计、编程和调试的能力。
2. 培养学生通过查阅资料、合作讨论等途径,解决实际问题的能力。
情感态度价值观目标:1. 培养学生热爱科学,严谨求实的科学态度。
2. 培养学生的团队协作精神,增强他们在实际项目中沟通、协调的能力。
3. 提高学生面对复杂问题的自信心,培养他们勇于克服困难的意志品质。
课程性质分析:本课程为电子信息类专业的实践课程,旨在通过8255交通灯控制系统的设计,帮助学生将理论知识与实际应用相结合,提高他们的动手能力和创新能力。
学生特点分析:本课程面向高年级学生,他们已经具备了一定的电子技术和编程基础,具有较强的学习能力和独立思考能力。
教学要求:1. 确保学生掌握8255芯片的基本知识和交通灯控制原理。
2. 注重培养学生的实际操作能力,鼓励他们自主学习和创新。
3. 结合实际项目,提高学生的团队协作能力和沟通能力。
二、教学内容1. 8255并行接口芯片的基本原理和功能特点:包括8255芯片的内部结构、工作模式、控制字等。
相关教材章节:第五章第二节“并行接口与8255芯片”2. 交通灯控制系统的设计与实现:介绍交通灯控制系统的工作原理,以及如何利用8255芯片设计交通灯控制电路。
相关教材章节:第五章第三节“8255芯片的应用实例”3. 编程与调试:指导学生使用汇编语言或C语言编写交通灯控制程序,并进行调试。
相关教材章节:第五章第四节“8255芯片的编程与应用”4. 实践操作:组织学生进行交通灯控制电路的搭建、编程和调试,培养他们的动手能力。
相关教材章节:第五章实验“8255交通灯控制系统设计与实现”5. 项目总结与评价:对学生的设计作品进行展示、讨论和评价,总结项目过程中的经验教训。
82C55控制交通灯程序
82C55控制交通灯程序程序框图电路0BB67488 MOV A,#88H0BB8 F0 MO@DPTR,A;82C55初始化0BB9 90FFD8 MOV DPTR,#0FFD8HOBBC 74B6 MOV A,#0B6H0BBEF0 MO@DPTR,A0BBFA3 INC DPTR0BC0 740D MOV A,#0DH0BC2F0 MO@DPTR,A;点亮4个红灯0BC3 7A25 MOV R2,#25H;延时0BC5120233 LCALLDELY0BC8 90FFD8JOD3: MOV DPTR,#0FFD8H0BCB7475 MOV A,#75H0BCDF0 MO@DPTR,A0BCE A3 INC DPTR0BCF740D MOV A,#0DH0BD1 F0 MO@DPTR,A ;东西绿灯亮,;南北红灯亮0BD27A55 MOV R2,#55H0BD4 120233 LCALLDELY;延时0BD77F05 MOV R7,#05H;闪烁次数0BD9 90FFD8JOD1:MOV DPTR,#0FFD8H0BDC74F3 MOV A,#0F3H0BDEF0 MO@DPTR,A0BDF A3 INC DPTR0BE0740C MOV A,#0CH0BE2F0 MO@DPTR,A;东西黄灯亮,南北红灯亮 0BE37A20 MOV R2,#20H0BE5120233 LCALLDELY;延时0BE8 90FFD8 MOV DPTR,#0FFD8H0BEB74F7 MOV A, #0F7H0BED F0 MO@DPTR, A0BEE A3 INC DPTR0BEF 740D MOV A,#0DH0BF1 F0 MO@DPTR, A;南北红灯亮0BF2 7A20 MOV R2, #20H0BF4 120233 LCALLDELY;延时0BF7 DFE0 DJNZR7, JOD1;闪烁次数未到,继续 0BF9 90FFD8 MOV DPTR,#0FFD8H0BFC 74AE MOV A, #0AEH0BFE F0 MO@DPTR,A0BFF A3 INC DPTR0C00 740B MOV A, #0BH0C02 F0 MO@DPTR,A;东西红灯亮,南北绿灯亮0C03 7A55 MOV R2,#55H0C05 120233 LCALLDELY;延时0C08 7F05 MOV R7,#05H;闪烁次数0C0A 90FFD8JOD2:MOV DPTR,#0FFD8H0C0D 749E MOV A,#9EH0C0F F0 MO@DPTR,A0C10 A3 INC DPTR0C11 7407 MOV A,#07H0C13 F0 MO@DPTR,A;东西红灯亮,南北黄灯亮0C14 7A20 MOV R2,#20H0C16 120233 LCALLDELY;延时0C19 90FFD8 MOV DPTR,#0FFD8H0C1C 74BE MOV A,#0BEH0C1E F0 MO@DPTR,A0C1F A3 INC DPTR0C20 740F MOV A,#0FH0C22 F0 MO@DPTR,A;东西红灯亮0C23 7A20 MOV R2,#20H0C25120233 LACLLDELY ;延时0C28DFE0 DJN R7,JOD2 ;闪烁次数未到继续0C2A020BC8 LJMPJOD3 ;循环 ORG 0213H0213 C002 DELY:PUSH 02H0215 C002 DEL2: PUSH 02H 0217 C002 DEL3:PUSH 02H ;延时 0219 DAFE DEL4: DJNZ R2,DEL4 021B D002 POP 02H021D DAF8 DJNZ R2,DEL3021F D002 POP 02H0221 DAF2 DJNZ R2,DEL20223 D002 POP 02H0225 DAEC DJNZ R2,DELY0227 22 RETEND。
8255交通灯控制实验
交通灯控制实验计算机实验班1001 赵训201026811130交通灯控制实验:设计一个十字路口的交通灯控制,设初始状态是4个路口红灯全亮,然后,南北方向绿灯亮,延时30秒,南北方向灯灭,黄灯闪3次后,红灯亮,东西方绿灯亮,延时30秒,东西方黄灯闪3次后红灯亮。
重复上述过程。
要求:作出实验流程图。
硬件连接图。
写出汇编语言程序。
1、实验目的:分析实际的十字路口交通灯的亮灭过程,用实验箱上的8255实现交通灯的控制(红,黄,绿三色灯)。
2、实验设备及材料:微机原理和接口技术实验室的实验箱和电脑设备等。
3、理论依据:此设计是通过并行接口芯片8255A和8086计算机的硬件连接,以及通过8253延时的方法,来实现十字路口交通灯的模拟控制。
8255A是可编程的通用并行输入/输出接口芯片,因通用性强,使用灵活,可直接与CPU总线相连,应用非常广泛。
8255A芯片内部有3个8为的输入/输出端口,即A口,B口和C口。
从内部控制的角度来讲,可分为两组:A组合B组。
A 组控制模块管理A口和C口德高四位(PC7~PC4),B组控制模块管理B口和C口的低四位(PC3~PC0)。
如硬件连接图所示(在后),红灯(RLED),黄灯(YLEDD)和绿灯(GLED)分别接在8255的A,B,C口的低四位端口,PA0,PA1,PA2,PA3分别接1,2,3,4(南东北西)路口的红灯,B,C口类推。
8086工作在最小模式,低八位端口AD0~AD7接到8255和8253的D0~D7,AD8~AD15通过地址锁存器8282,接到三八译码器,译码后分别连到8255和8253的CS片选端。
8253的三个门控端接+5V,CLOCK0接由分频器产生的1MHZ的时钟脉冲,OUT0接到CLOCK1和CLOCK2,OUT1接到8086的AD18,8086通过检测此端口是否有高电平来判断是否30s定时到。
OUT2产生1MHZ方波通过或门和8255的B口共同控制黄灯的闪烁。
8255控制交通灯
专业:机电一体化班级:机电姓名:学号:设计题目:8255控制交通灯设计条件:了解8255芯片的结构及编程方法,学习模拟交通灯控制的实现方法。
用8255做输出口,控制十二个发光二极管燃灭,模拟交通灯管理。
功能说明:假设一个十字路口为东西南北走向。
交通灯的变化情况和规律如下,初始状态0为东西红灯,南北红灯。
然后转状态1东西绿灯通车,南北红灯。
过一段时间转状态2,东西绿灯灭,黄灯闪烁几次,南北仍然红灯。
再转状态3,南北绿灯通车,东西红灯。
过一段时间转状态4,南北绿灯灭,闪几次黄灯,延时几秒,东西仍然红灯。
最后循环至状态1。
设计任务:使用单片机作为控制器来模拟交通灯控制。
具体采用8255芯片做为输出口,控制十二个发光二极管燃灭,模拟交通灯管理。
要求掌握单片机的结构和功能,学会较简单单片机系统的硬件设计,并能通过汇编语言进行软件编程,完成要求的功能,同时熟练掌握8255A芯片的结构及使用。
设计报告内容包括:1)系统设计方案2)硬件电路图及硬件电路功能说明3)软件实现方法及程序流程图4)源程序及调试结果摘要自从交通灯诞生以来,其内部的电路控制系统就不断地被改进,设计方法也多种多样,从而使交通灯显得更加智能化。
由于单片机本身具有通讯联网功能,将同一条道路上的信号灯组成一局域网进行统一调度管理,可缩短车辆通行等候时间,实现科学化管理。
论文提出了一种涉及单片机的无人智能交通灯管理系统的控制方案,鉴于时间及所学知识所限,文中仅对系统中的一个节点____一个十字路口交通灯的管理进行了具体实现。
以8751芯片作为主控制器,可编程并行接口芯片8255作为扩展输出口,通过十二个发光二极管来模拟进行交通灯的燃灭管理,并详细阐述了其工作原理、基本功能框图、关键设计技术及软件工作流程,对选用芯片的特点进行了分析,并最后进行了软件实现,达到了系统要求的功能。
目录第一章绪论 (1)1.1 单片机在电子产品中的应用 (1)1.2 课题背景及设计思想 (2)第二章系统控制要求 (4)第三章交通灯总体设计方案 (5)3.1 总体设计思路 (5)3.2 设计框图 (5)第四章硬件设计 (7)4.1 主控芯片8751 (7)4.2 扩展并行I/O口8255 (10)4.3 数据缓冲器器芯片74LS244 (12)4.4 时钟振荡电路 (12)第五章软件设计 (14)5.1 交通信号灯控制流程图 (14)5.2 控制程序 (15)第六章结论 (18)参考文献 (19)致谢 (20)附:硬件电路图 (21)第一章绪论1.1 单片机在电子产品中的应用单片机又称微控制器MCU(MicroController Unit),由于用它可以很容易地将计算机嵌入到各种仪器和现场控制设备中,因此单片机也叫嵌入式微控制器(Embedded MCU)。
8255控制交通灯
专业:机电一体化班级:机电姓名:学号:设计题目:8255控制交通灯设计条件:了解8255芯片的结构及编程方法,学习模拟交通灯控制的实现方法。
用8255做输出口,控制十二个发光二极管燃灭,模拟交通灯管理。
功能说明:假设一个十字路口为东西南北走向。
交通灯的变化情况和规律如下,初始状态0为东西红灯,南北红灯。
然后转状态1东西绿灯通车,南北红灯。
过一段时间转状态2,东西绿灯灭,黄灯闪烁几次,南北仍然红灯。
再转状态3,南北绿灯通车,东西红灯。
过一段时间转状态4,南北绿灯灭,闪几次黄灯,延时几秒,东西仍然红灯。
最后循环至状态1。
设计任务:使用单片机作为控制器来模拟交通灯控制。
具体采用8255芯片做为输出口,控制十二个发光二极管燃灭,模拟交通灯管理。
要求掌握单片机的结构和功能,学会较简单单片机系统的硬件设计,并能通过汇编语言进行软件编程,完成要求的功能,同时熟练掌握8255A芯片的结构及使用。
设计报告内容包括:1)系统设计方案2)硬件电路图及硬件电路功能说明3)软件实现方法及程序流程图4)源程序及调试结果摘要自从交通灯诞生以来,其内部的电路控制系统就不断地被改进,设计方法也多种多样,从而使交通灯显得更加智能化。
由于单片机本身具有通讯联网功能,将同一条道路上的信号灯组成一局域网进行统一调度管理,可缩短车辆通行等候时间,实现科学化管理。
论文提出了一种涉及单片机的无人智能交通灯管理系统的控制方案,鉴于时间及所学知识所限,文中仅对系统中的一个节点____一个十字路口交通灯的管理进行了具体实现。
以8751芯片作为主控制器,可编程并行接口芯片8255作为扩展输出口,通过十二个发光二极管来模拟进行交通灯的燃灭管理,并详细阐述了其工作原理、基本功能框图、关键设计技术及软件工作流程,对选用芯片的特点进行了分析,并最后进行了软件实现,达到了系统要求的功能。
目录第一章绪论 (1)1.1 单片机在电子产品中的应用 (1)1.2 课题背景及设计思想 (2)第二章系统控制要求 (4)第三章交通灯总体设计方案 (5)3.1 总体设计思路 (5)3.2 设计框图 (5)第四章硬件设计 (7)4.1 主控芯片8751 (7)4.2 扩展并行I/O口8255 (10)4.3 数据缓冲器器芯片74LS244 (12)4.4 时钟振荡电路 (12)第五章软件设计 (14)5.1 交通信号灯控制流程图 (14)5.2 控制程序 (15)第六章结论 (18)参考文献 (19)致谢 (20)附:硬件电路图 (21)第一章绪论1.1 单片机在电子产品中的应用单片机又称微控制器MCU(MicroController Unit),由于用它可以很容易地将计算机嵌入到各种仪器和现场控制设备中,因此单片机也叫嵌入式微控制器(Embedded MCU)。
8255交通灯课程设计
8255交通灯课程设计一、教学目标本课程旨在让学生了解和掌握交通灯系统的基本原理和设计方法。
知识目标要求学生掌握交通灯系统的组成部分、工作原理和设计流程。
技能目标要求学生能够运用所学知识,独立设计并实现一个简单的交通灯系统。
情感态度价值观目标则是培养学生的创新意识,提高他们对交通安全的重视。
二、教学内容本课程的教学内容主要包括交通灯系统的组成、工作原理、设计方法和实施步骤。
具体包括以下几个部分:1.交通灯系统的组成:介绍交通灯系统的各个部分,如信号灯、控制器、传感器等。
2.工作原理:讲解交通灯系统各部分的工作原理及其相互作用。
3.设计方法:教授如何根据实际需求设计交通灯系统,包括硬件选型、软件编程等。
4.实施步骤:详细讲解如何将设计方案转化为实际运行的交通灯系统。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式,如讲授法、讨论法、案例分析法和实验法等。
1.讲授法:用于讲解交通灯系统的组成、工作原理和设计方法等基本知识。
2.讨论法:学生针对实际案例进行分析讨论,提高他们的解决问题的能力。
3.案例分析法:通过分析典型交通灯系统案例,使学生更好地理解交通灯系统的设计和实施。
4.实验法:让学生动手搭建和调试交通灯系统,培养他们的实际操作能力。
四、教学资源为了支持教学内容的传授和教学方法的实施,我们将准备以下教学资源:1.教材:选用权威、实用的交通灯系统设计教材,为学生提供系统性的学习资料。
2.参考书:推荐学生阅读相关的交通灯系统设计书籍,丰富他们的知识储备。
3.多媒体资料:制作精美的PPT、教学视频等,提高学生的学习兴趣。
4.实验设备:准备齐全的实验设备和器材,确保学生能够顺利进行实验操作。
五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分。
平时表现主要评估学生在课堂上的参与程度和表现,作业则是对学生学习成果的一种检验,考试则是全面考察学生对课程内容的掌握情况。
评估方式应客观、公正,能够全面反映学生的学习成果。
8255A控制交通灯
一、实验内容
用8255A做输出口,控制十二 个发光二极管燃灭,模拟交通灯管 理。
二、实验目的
了解8255A芯片的结构及编程方法 学习模拟交通灯控制的实现方法
三、实验原理
硬件连接: 8255A作为连接红绿灯的接口,8255A 工作于方式0,B口、C口的各位与红绿 灯连接(如图); 实验程序 : 建立8255A的B口和C口的状态表。
8255A状态表
四、实验步骤
单片机实验箱加电前,按图连接好电路 对照8255A状态表编写程序
输入编写好的程序,执行程序,观察交通灯
(一)硬件连接图
并行接口芯片8255A
具有3个8位的数据口(A口、B口、C口) 具有3种工作方式:方式0、方式1、方式2 可以通过编程设置和改变功能
74LS240 8位反相三态输出驱动器
有8个输入口,8个输出口 数据输出可以锁存 输入与输出之间的关系: Y=A
_
ቤተ መጻሕፍቲ ባይዱ
(二)实验程序流程图
交通灯控制程序8255
DATA SEGMENTLL DB 0F3H, 0EBH, 0FBH, 0EBH, 0FBH, 0EBH, 0FBHDB 0DEH, 0DDH, 0DFH, 0DDH, 0DFH, 0DDH, 0DFH ;交通灯的变化状态DB 0FFHDATA ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE , DS:DATASTART: MOV AX , DATAMOV DS , AXMOV DX ,8003 HMOV AL , 90HOUT DX , AL ;8255初始化,A为输入,B为输出。
MOV DX , 8001HRE_GO: MOV BX , 0GO: MOV AL , LL[BX] ;以BX作为指针,在状态表中查找状态输出 CMP AL , 0FFH ;与结束标志作比较JZ RE_GOOUT DX , AL ;输出初始工作状态——大红小绿MOV DX , 8000H ;IN AL , DX ;检测小道信号,即8255PA0口AND AL , 01HJZ GO ;小道无信号,返回GO,继续检测 MOV CX , 300 ;让大道维持3秒左右BACK: CALL DELAYDEC CXJNZ BACKMOV DX , 8001HMOV CL , 5 ;大道黄灯闪烁2次,CL为循环次数BACK2: INC BXMOV AL , LL[BX]OUT DX , ALMOV CH , 100 ;保持黄灯持续亮DEC CHJNZ BBDEC CLJNZ BACK2MOV CX , 1000 ;加入10秒左右的延迟BACK3: CALL DELAYMOV DX , 8000HIN AL , DXAND AL , 00000010B ;检测大道信号,即8255PA1口JNZ NEXTDEC CXJNZ BACK3NEXT: MOV CL , 5 ;大道到来3辆车,进入黄灯闪灭状态 MOV DX , 8001HBACK4: INC BXMOV AL , LL[BX]OUT DX , ALMOV CH , 255 ;转换状态,变为大绿小红CC: CALL DELAYDEC CHJNZ CCDEC CLJNZ BACK4JMP RE_GO ;重新GO,完成交通灯的循环MAIN ENDPDELAY PROCMOV SI , 2000HDE1: MOV DI , 9000HDE0: DEC DIJNZ DE0DEC SIJNZ DE1 ;通过双次循环完成延迟MOV AH , 06HMOV DL , 0FFHINT 21H ;调用系统功能,键盘输入给ALPOP DXJZ CON ;判断有无键盘输入,无则返回主程序 MOV DX , 8001HMOV AL , 0FFHOUT DX , AL ;若因意外退出,将全部路口置为红灯EXIT: MOV AH , 4CHINT 21H ;返回DOSCON: RETDELAY ENDPCODE ENDSEND START。
交通灯控制实验(8255)
实验二
交通灯控制实验(8255) 交通灯控制实验(8255)
一、实验目的
掌握8255方式0的工作原理及使用方法。 掌握8255方式0的工作原理及使用方法。 8255方式
二、实验内容
微机接口实验
实验二
交通灯控制实验(8255) 交通灯控制实验(8255)
一、实验目的 掌握8255方式0的工作原理及使用方法。 掌握8255方式0的工作原理及使用方法。 8255方式 二、实验内容 通过并行接口8255 通过并行接口8255实现十字路口交通 8255实现十字路口交通 灯的模拟控制。如图,L7、L6、L5作为南 灯的模拟控制。如图,L7、L6、L5作为南 北路口的交通灯与PC7 PC6、PC5相连 PC7、 相连, 北路口的交通灯与PC7、PC6、PC5相连, L2、L1、L0作为东西路口的交通灯与 作为东西路口的交通灯与PC2 L2、L1、L0作为东西路口的交通灯与PC2 PC1、PC0相连 相连。 、PC1、PC0相连。编程使六个灯按交通灯 变化规律燃灭。 变化规律燃灭。
交通灯控制
二、实验内容
通过并行接口8255 通过并行接口8255实现十字路口交通 8255实现十字路口交通 灯的模拟控制。 L7、L6、L5作为 灯的模拟控制。如下图,L7、L6、L5作为 南北路口的交通灯与PC7 PC6、PC5相连 PC7、 南北路口的交通灯与PC7、PC6、PC5相连 L2、L1、L0作为东西路口的交通灯与 ,L2、L1、L0作为东西路口的交通灯与 PC2、PC1、PC0相连 相连。 PC2、PC1、PC0相连。编程使六个灯按交 通灯变化规律燃灭。 通灯变化规律燃灭。
交通灯控制
三、实验电路
8255 地址: 地址:
控制寄存器: 控制寄存器: C口地址: 口地址: 28BH 28BH 288H 288H
8255交通灯控制设计
三、设计提示 1、十字路口交通灯的变化规律要求 (1)南北路口的绿灯,东西路口的红灯同时亮30秒左右。 (2)南北路口的黄灯闪烁若干次,同时东西路口红灯继续亮。 (3)南北路口的红灯,东西路口的绿灯同时亮30秒左右。 (4)南北路口的红灯继续亮,同时东西路口的黄灯闪烁若干次。 (5)转(1)重复。 2、清楚每个端口的输入输出操作、工作方式等正确书写控制 字。 四、实验重点或难点 1、熟悉8255并行接口芯片的数据传输特点。 2、掌握8255的控制字的定义。 3、掌握8255的接线方法,并学会如何控制端口数据的传行接口芯片8255的使用与硬件接口的方法 2、掌握通过8255A并行接口传送数据的方法,以控制LED发 光二极管的燃灭,实现十字路口交通灯模拟控制 二、实验内容 1、要完成本实验,首先必须了解交通路灯的亮灭规律;程序 中应设定好8255的工作模式,使三个端口均工作于方式0,并处 于输出状态。 2、用8255的A端口或C端口控制6个发光二极管,交通灯用两 组红、黄、绿发光二极管代表;分别作为南北路口的交通灯和 东西路口的交通灯;以摸拟交通灯管理。编程使六个灯按交通 灯变化规律燃灭。
8255控制交通灯的设计与实现
INT0: MOV MOV SETB
LOOP: JBC SJMP
LOOP1: RET
TH1,#0BH TL1,#0DCH TR1 TF1,LOOP1 LOOP
8255控制交通灯的设计与实现
——2200050231 廉海涛
课题要求:
用8255做输出口,控制十二个发光二 极管亮灭,模拟交通灯管理。十字路口东 西南北走向。初始状态0为东西红灯,南 北红灯。状态1(10s),东西绿灯通车, 南北红灯;状态2(3s),东西绿灯灭, 黄灯闪几次,南北红灯;状态3(10s), 东西红灯,南北绿灯通车;状态4(3s), 东西红灯,南北绿灯灭,黄灯闪几次。依 次循环
ZT4: MOV MOV MOVX MOV MOV
AGAIN: MOV MOVX LCALL MOV MOVX LCALL DJNZ LJMP
DPTR,#0FF7DH A,#0A0H @DPTR,A DPTR,#0FF7EH R2,#30H A,#03H @DPTR,A INT0 A,#00H @DPTR,A INT0 R2,AGAIN ZT1
软件设计:
▪ 1/4秒钟的设定
延时方法可以有两种一种是利用MCS-51内部定时器才 产生溢出中断来确定1/4秒的时间,另一种是采用软延时 的方法。 假设cpu晶振周期为12MHZ。 1.查询中断: 1/4s=250ms=250 000us=4×62 500个机器周期。 62 500=F424H=1111 0100 0010 0100B 对(1111 0100 0010 0100B)求补
MOVX LCALL MOV MOVX LCALL DJNZ ZT3: MOV MOV MOV MOV MOV MOV MOV DELAY: LCALL
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
交通灯程序/*********************************************************** 十字路口交通灯控制 C 程序***********************************************************/#include <reg51.h>#define uchar unsigned char#define uint unsigned int/*****定义控制位*******************************************/sbit Time_Show_LED2=P2^5; //Time_Show_LED2(直行时间显示)控制位sbit Time_Show_LED1=P2^4; //Time_Show_LED1(直行时间显示)控制位sbit EW_LED2=P2^3; //EW_LED2控制位sbit EW_LED1=P2^2; //EW_LED1控制位sbit SN_LED2=P2^1; //SN_LED2控制位sbit SN_LED1=P2^0; //SN_LED1控制位sbit SN_Yellow=P1^6; //SN黄灯sbit EW_Yellow=P1^2; //EW黄灯sbit EW_ManGreen=P3^0; //EW人行道绿灯sbit SN_ManGreen=P3^1; //SN人行道绿灯sbit Special_LED=P2^6; //交通特殊指示灯sbit Busy_LED=P2^7; //交通繁忙指示灯sbit Nomor_Button=P3^5; //交通正常按键sbit Busy_Btton=P3^6; //交通繁忙按键sbit Special_Btton=P3^7; //交通特殊按键sbit EW_ManRed=P3^3; //EW人行道红灯sbit SN_ManRed=P3^4; //SN人行道红灯bit Flag_SN_Yellow; //SN黄灯标志位bit Flag_EW_Yellow; //EW黄灯标志位char Time_EW; //东西方向倒计时单元char Time_SN; //南北方向倒计时单元uchar EW=60,SN=40,EWL=19,SNL=19; //程序初始化赋值,正常模式uchar EW1=60,SN1=40,EWL1=19,SNL1=19; //用于存放修改值的变量uchar codetable[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //0-9段选码uchar code S[8]={0x28,0x48,0x18,0x48,0x82,0x84,0x81,0x84};//交通信号灯控制代码/**********************延时子程序**************************/void Delay(uchar a){uchar i;i=a;while(i--){;}}/*****************显示子函数******************************/ void Display(void){uchar h,l;h=Time_EW/10;l=Time_EW%10;P0=table[l];EW_LED2=1; //点亮EW_LED2Delay(2);EW_LED2=0; //熄灭EW_LED2P0=table[h];EW_LED1=1; //点亮EW_LED1Delay(2);EW_LED1=0;h=Time_SN/10;l=Time_SN%10;P0=table[l];SN_LED2=1; //点亮SN_LED2Delay(2);SN_LED2=0;P0=table[h];SN_LED1=1; //点亮SN_LED1Delay(2);SN_LED1=0;h= EW1/10;l= EW1%10;P0=table[l];Time_Show_LED1=1; //点亮Time_Show_LED1Delay(2);Time_Show_LED1=0;P0=table[h];Time_Show_LED2=1; //点亮Time_Show_LED2Delay(2);Time_Show_LED2=0;}/**********************外部0中断服务程序******************/void INT0_srv(void)interrupt 0 using 1{EX0=0; //关中断if(Nomor_Button==0) //测试按键是否按下,按下为正常状态 {EW1=60;SN1=40;EWL1=19;SNL1=19;Busy_LED=0; //关繁忙信号灯Special_LED =0; //关特殊信号灯}if(Busy_Btton==0) //测试按键是否按下,按下为繁忙状态 {EW1=45;SN1=30;EWL1=14;SNL1=14;Special_LED=0; //关特殊信号灯Busy_LED=1; //开繁忙信号灯}if(Special_Btton==0)//测试按键是否按下,按下为特殊状态 {EW1=75;SN1=55;EWL1=19;SNL1=19;Busy_LED=0; //关繁忙信号灯Special_LED =1;//开特殊信号灯}EX0=1; //开中断}/**********************T0中断服务程序*******************/ void timer0(void)interrupt 1 using 1{static uchar count;TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;if(count==10){if(Flag_SN_Yellow==1) //测试南北黄灯标志位{SN_Yellow=~SN_Yellow;}if(Flag_EW_Yellow==1) //测试东西黄灯标志位{EW_Yellow=~EW_Yellow;}}if(count==20){Time_EW--;Time_SN--;if(Flag_SN_Yellow==1) //测试南北黄灯标志位{SN_Yellow=~SN_Yellow;}if(Flag_EW_Yellow==1) //测试东西黄灯标志位{EW_Yellow=~EW_Yellow;}count=0;}}/*********************主程序开始***********************/ void main(void){Busy_LED=0;Special_LED=0;IT0=1; //INT0负跳变触发TMOD=0x01; //定时器工作于方式1TH0=(65536-50000)/256; //定时器赋初值TL0=(65536-50000)%256;EA=1; //CPU开中断总允许ET0=1; //开定时中断EX0=1; //开外部INTO中断TR0=1; //启动定时while(1){/*******S0状态**********/SN_ManRed=0;SN_ManGreen=1; //SN人行道通行EW_ManRed=1; //EW人行道禁止EW_ManGreen=0;Flag_EW_Yellow=0; //EW关黄灯显示信号Time_EW=EW;Time_SN=SN;while(Time_SN>=5){P1=S[0]; //SN绿灯,EW红灯Display();}/*******S1状态**********/P1=0x00;while(Time_SN>=0){Flag_SN_Yellow=1; //SN开黄灯信号位P1=P1|0x08; //保持EW红灯Display();}/*******S2状态**********/SN_ManRed=1; //SN人行道禁止SN_ManGreen=0;EW_ManRed=1; //EW人行道禁止EW_ManGreen=0;Flag_SN_Yellow=0; //SN关黄灯显示信号Time_SN=SNL;while(Time_SN>=5){P1=S[2]; //SN左拐绿灯亮,EW红灯Display();}/*******S3状态**********/P1=0x00;while(Time_SN>=0){Flag_SN_Yellow=1; //SN开黄灯信号位P1=P1|0x08; //保持EW红灯Display();}/***********赋值*********/EW=EW1;SN=SN1;EWL=EWL1;SNL=SNL1;/*******S4状态**********/SN_ManRed=1; //SN人行道禁止SN_ManGreen=0;EW_ManRed=0;EW_ManGreen=1; //EW人行道通行Flag_SN_Yellow=0; //SN关黄灯显示信号Time_EW=SN;Time_SN=EW;while(Time_EW>=5){P1=S[4]; //EW通行,SN红灯Display();}/*******S5状态**********/P1=0X00;while(Time_EW>=0){Flag_EW_Yellow=1;//EW开黄灯信号位P1=P1|0x80; //保持SN红灯Display();}/*******S6状态**********/SN_ManRed=1; //SN人行道禁止SN_ManGreen=0;EW_ManRed=1; //EW人行道禁止EW_ManGreen=0;Flag_EW_Yellow=0;//EW关黄灯显示信号Time_EW=EWL;while(Time_EW>=5){P1=S[6]; //EW左拐绿灯亮,SN红灯Display();}/*******S7状态**********/P1=0X00;while(Time_EW>=0){Flag_EW_Yellow=1; //EN开黄灯信号位P1=P1|0x80; //保持SN红灯Display();}/***********赋值********/EW=EW1;SN=SN1;EWL=EWL1;SNL=SNL1;}}。