当前位置:文档之家› 交通灯原理说明

交通灯原理说明

交通灯硬件原理图及说明一、实验目的1、掌握8255与显示器的接口方法和编程方法。

2、掌握数码管的工作原理及编码。

3、掌握交通灯工作原理、及电路其控制程序的设计方法。

二、实验内容与要求实验电路如图所示,交通灯套件是通过接口平台板中二十六芯插座引出来的并口实验。

PA0-2控制(G1、Y1、R1),PA3-5控制(G2、Y2、R2),PC0-2控制(G3、Y3、R3),PC5-7控制(G4、Y4、R4),所有的并口控制信号都先通过74LS04引出。

12个灯的另一端接A472J的排阻再接到地。

PB口接数码管的8个控制引脚。

PC3、PC4分别接两个数码管片选引脚(低电平有效)。

电路分析如下:PA0-5是用来控制北面和西面的交通灯(分别为红,黄,绿),PC0-2,PC5-7是用来控制南面和东面的交通灯(分别为红,黄,绿).PB口是来控制数码管.了解了原理图就可以很容易的在程序来编写,使交通灯可以正常运行.原理图如下:数码管管脚图共阴极数码管编码表实验要求实现功能如下:实现南北、东西交通车辆直行红绿灯控制。

南北两面亮起绿灯的时候,东西两面就会亮起红灯.并而这时中间的数码会以50为倒计时,当倒计时为5时,南北两的的绿灯熄灭,黄灯亮起.东西两面的红灯不变.直到倒计时为0时.东西两面亮绿灯,南北两面亮红灯.如此死循环.模拟生活中的交通灯.参考程序(C语言):#include<dos.h>#include<stdio.h>#include<conio.h>int East_west();int South_north();void main(){printf("\n **********************************************\n");printf("\n * Advert the traffic light -- Be carefull ! *\n");printf("\n **********************************************\n");outportb(0x303,0x80);do{outportb(0x300,0x24);outportb(0x302,0x21);East_west();outportb(0x300,0x09);outportb(0x302,0x84);South_north();}while(1);}int East_west(){int set[2]={0x29,0x31};int xu[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};int a,b,t,buf1,num;for(num=50;num>0;num--){a=num%10;b=num/10;buf1=xu[a];if(num>=15){for(t=0;t<2;t++){outportb(0x302,set[t]);outportb(0x301,buf1);if(t==1) delay(300);else delay(20);buf1=xu[b];}}else{outportb(0x300,0x24);outportb(0x302,0x42);int set[4]={0x4a,0x08,0x52,0x10};for(t=0;t<4;t++){outportb(0x302,set[t]);outportb(0x301,buf1);if(t==3) delay(300);else delay(20);buf1=xu[b];}}}}int South_north(){int set[2]={0x8c,0x94};int xu[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};int a,b,t,buf1,num;for(num=50;num>0;num--){a=num%10;b=num/10;buf1=xu[a];if(num>=15){for(t=0;t<2;t++){outportb(0x302,set[t]);outportb(0x301,buf1);if(t==1) delay(300);else delay(20);buf1=xu[b];}}else{outportb(0x300,0x12);delay(30);outportb(0x302,0x84);int set[2]={0x8c,0x94};for(t=0;t<2;t++){outportb(0x302,set[t]);outportb(0x300,0x00);outportb(0x301,buf1);if(t==1) delay(300);else delay(20);buf1=xu[b];}}}}汇编程序:data segmentlight db 6fh,7fh,07h,7dh,6dh,66h,4fh,5bh,06h,3fhmessage db '**********************************************',0dh,0ah db '* Advert the traffic light -- Be carefull ! *',0dh,0ahdb '**********************************************',0dh,0ah,'$' set1 db 89h,91hset2 db 2ch,34hnum db ?data endscode segmentassume cs:code,ds:codeEast_west proc nearmov si,offset lightmov cx,10jmp loplop1: inc cxdec cxjz L4mov dx,300hmov al,22hout dx,almov dx,302hmov al,8ahout dx,aljmp L3lop: mov dx,302hmov al,89hout dx,alL3: mov al,[si]mov dx,301hout dx,almov bp,01fffhmov ax,0ffffh;延时delay: dec axjnz delaydec bpjnz delaypush bppush axmov bp,01ffhmov ax,0ffffh;延时delay1:dec axjnz delay1dec bpjnz delay1pop axpop bpinc sidec cxcmp cx,4jbe lop1jnz lopL4:retEast_west endpSouth_north proc nearmov si,offset lightmov cx,10jmp lop3loop1:inc cxdec cxjz n4mov dx,300hmov al,14hout dx,almov dx,302hmov al,4chout dx,aljmp n3lop3:mov dx,302hmov al,2chout dx,aln3: mov al,[si]mov dx,301hout dx,almov bp,02fffhmov ax,0ffffh;延时delay2:dec axjnz delay2dec bpjnz delay2push bppush axmov bp,03ffhmov ax,0ffffh;延时delay3:dec axjnz delay3dec bpjnz delay3pop axpop bpinc sidec cxcmp cx,4jbe loop1jnz lop3n4: retSouth_north endpstart:mov ah,09h;显示提示信息mov dx,seg messagemov ds,dxmov dx,offset messageint21hmov dx,303hmov al,80hout dx,alh: mov dx,300hmov al,21hout dx,almov dx,302hmov al,81hout dx,alcall East_westh1: mov dx,300hmov al,0chout dx,almov dx,302hmov al,24hout dx,alcall South_northjmp hcode endsend start交通灯使用说明:1.实验箱通过26芯排线连接到MFID-6实验平台板上,接通电源。

2.调出交通灯扫描程序,进行编译3.运行该程序,并观察结果。

显示功能:交通灯的运行的结果在套件是观察就可以.不用很复杂的去理解,因为交通灯是我们生活中随处可见的,我们现在使用的套件和现实中的交通灯也是1比1的比例.所有的的运行结果只需我们在软件程序里编写.运行后不需有任何的操作.程序控制功能:通过硬件连接图我们可以知道,PA0-5是用来控制北面和西面的交通灯(分别为红,黄,绿),PC0-2,PC5-7是用来控制南面和东面的交通灯(分别为红,黄,绿).PB口是来控制数码管.了解了原理图就可以很容易的在程序来编写,使交通灯可以正常运行.参考程序运行结果:程序运行南北两面亮起绿灯的时候,东西两面就会亮起红灯.并而这时中间的数码会以50为倒计时,当倒计时为5时,南北两的的绿灯熄灭,黄灯亮起.东西两面的红灯不变.直到倒计时为0时.东西两面亮绿灯,南北两面亮红灯.如此死循环.模拟生活中的交通灯.。

相关主题