第一篇:实验五 有急救车的交通灯实验
实验五有急救车的交通灯控制实验
一、实验目的:
1.学习外部中断技术的基本使用方法。
2.学习中断处理程序的编程方法。
3.学习模拟交通灯控制的实现方法。
二、实验设备:
微机、KEIL2、Proteus 7.10
三、实验内容:
在完成交通灯亮灭规律的基础上增加允许急救车优先通过的要求。当有急救车到达时,两个方向上的红灯亮,以便让急救车通过,假定急救车通过路口的时间为5秒,急救车通过后,交通灯恢复中断前的状态。本实验以单脉冲(下降延有效)为中断申请,表示有急救车通过。
四、实验原理:
1.交通灯的燃灭规律:
要完成本实验,首先必须了解交通路灯的亮灭规律。本实验需要用到12个发光二极管,即红、黄、绿各4个。不妨将L1、L2(红)、L3、L4(黄)、L5、L6(绿)做为东西方向的指示灯,将L7、L8(红)、L9、L10(黄)、L11、L12(绿)做为南北方向的指示灯。而交通灯的亮灭规律为:初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后(约10秒),东西路口绿灯灭,黄灯开始闪烁。闪烁若干次后(约3秒),东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。闪烁若干次后,再切换到东西路口方向,重复上述过程。
2.中断处理
本实验中断处理程序的应用,最主要的地方是如何保护进入中断前的状态,使得中断程序执行完毕后能回到交通灯中断前的状态。要保护的地方,除了累加器ACC、标志寄存器PSW外,还要注意:一是主程序中的延时程序和中断处理程序中的延时程序最好不要混用,最好主程序延时用R5、R6、R7,中断延时用R2、R3、R4。第二,主程序中每执行一步经P1的端口输出数据的操作时,应先将所输出的数据保存到一个单元中。因为进入中断程序后也要执行往P1端口输出数据的操作,中断返回时如果没有恢复中断前P1端口锁存器的数据,则显示往往出错,回不到中断前的状态。
五、实验步骤:
1.设计电路:P1接发光二极管L1~L12,单脉冲输出端接INT0。
2.编写程序实现有急救车的交通灯控制。
六、实验报告要求:
1.在实验报告中请将实验中所设计电路图、编写的实验程序及程序框图附上。
第二篇:单片机实验三(急救车与交通灯)
杭州电子科技大学单片机技术与应用实验报告
单片机技术与应用
实验报告
实验名称:外部中断实验(急救车与交通灯)班
级:
11062811
学
号:
11061118
姓
名:
吕琳涛
指导老师:
谷雨
2013年 5月 20日
杭州电子科技大学单片机技术与应用实验报告
} } XBYTE[0xf200]=0x6f;delay(1000);XBYTE[0xf200]=0x09;delay(5000);
void exter0()interrupt 0
{
XBYTE[0xf200]=0x0f;
delay(10000);}
//中断服务程序,中断为外部中断0
//全红10s,急救车通过
4.心得体会
本次实验中我们做的是一个交通灯的控制与救护车通过时的一个中断问题。我想这次实验是上两次实验的结合。然后我想对于一些看似很复杂的问题,如果我们可以将其分解为一些我们学过的会做的问题的话,问题就会迎刃而解。
第三篇:实验八交通灯控制电路的设计
可编程逻辑设计 ——实验八报告
学院:物理与信息工程学院 专业:通信工程 年级:2007级 班级:二班
学号:110700221 姓名:林明明 指导老师:杨秀芝
实验八交通灯控制电路的设计
一、实验目的:
进一步学习复杂数字电路的设计方法,提高利用硬件描述语言进行电路设计的技巧和熟练程度。
二、实验要求及原理:
满足图1顺序工作流程。图中设南北方向的红、黄、绿灯分别为NSR、NSY、NSG,东西方向的红、黄、绿灯分别为EWR、EWY、EWG。它们的工作方式有些必须是并行进行的,即南北方向绿灯亮,东西方向红灯亮;南北方向黄灯亮,东西方向红灯亮;南北方向红灯亮,东西方向绿灯亮;南北方向红灯亮,东西方向黄红灯亮。图1 交通灯顺序工作流程图
应满足两个方向的工作时序:即东西方向亮红灯时间应等于南北方向亮黄、绿灯时间之和,南北方向亮红灯时间应等于东西方向亮黄、绿灯时间之和。时序流程图2所示。
图2中,假设每个单位时间为3秒,则南北、东西方向绿、黄、红灯亮时间分别15秒、3秒、18秒,一次循环为36秒。其中红灯亮的时间为绿灯、黄灯亮的时间之和。图2 交通灯时序工作流程图
十字路口要有数字显示,作为时间提示,以便人们更直观地把握时间。具体为:当某方向红灯亮时,置显示器为某值,然后以每秒减1计数方式方式工作,直至减到数为“0”,十字路口红、绿灯交换,一次工作循环结束,进入下一步某方向地工作循环。
例如:当南北方向从黄灯转换成红灯时,置南北方向数字显示为24,并使数显计数器开始减“1”计数,当减到“0”,时,此时红灯灭,而南北方向的绿灯亮;同时,东西方向的红灯亮,并置东西方向的数显为24。
三、实验内容:
1、根据实验要求及原理1、2画出交通指示灯控制电路原理框图。提示:两个方向的控制电路可以共用一个24进制计数器实现。
2、用VHDL硬件描述语言层次化设计方法进行顶层文件和各模块电路的设计。
3、用QuartusII对设计进行编译、综合、仿真,给出仿真波形和时序分析数据(不包括数码显示部分)。
4、通过QuartusII集成环境,将设计下载到实验电路上进行硬件测试。管脚锁定:
clk: clk1 43
clk1 start: PIO23 30
SW1 NSG
PIO19
LED12 NSY
PIO20
LED11 NSR
PIO21
LED10 EWG
PIO22
LED3 EWY
PIO12
LED2 EWR
LED1
5、画出完整的交通灯控制电路原理框图(含数码显示部分)。
6、修改上述内容2的设计,增加数码显示部分。
注意:两方向的计数要求分别显示在数码管1、2和数码管7、8上。
7、用MAX_plusⅡ对设计进行编译、综合、仿真,给出仿真波形和时序分析数据。
8、再次将设计下载到实验电路上进行硬件测试。新增管脚锁定:
A(6): PIO6 SEG g
A(5): PIO5 SEG f A(4): PIO4 SEG e A(3): PIO3 SEG d A(2): PIO2 SEG c A(1): PIO1 SEG b A(0): PIO0 SEG a *S(2):
*S(1):
*S(0):
四、思考题:
1、控制电路除用有限状态机实现外,还可以采用什么方法实现?
2、如果增加夜间显示(即全部黄灯闪烁),电路该怎样设计? 实验结果:
交通灯控制电路原理框图:
顶层电路的VHDL描述: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity traffic is port(clk,start:in std_logic;NSG,NSY,NSR,EWG,EWY,EWR:out std_logic;ledNS,ledEW:out std_logic_vector(7 downto 0));end;architecture behav of traffic is component NSEW port(clk,start:in std_logic;NSG,NSY,NSR,EWG,EWY,EWR:out std_logic);end component;component led7s port(clock,start:in std_logic;ledns,ledew:out std_logic_vector(7 downto 0));end component;signal clk0,clk1,clk2,clknsr,clkewr:std_logic;begin u1:NSEW port map(clk=>clk,start=>start,NSG=>NSG,NSY=>NSY,NSR=>NSR,EWG=>EWG,EWY=>EWY,EWR=>EWR);u2:led7s port map(clock=>clk,start=>start,ledns=>ledNS,ledew=>ledEW);end;各模块电路的VHDL描述: 模块clock的VHDL描述—— library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clock is port(clk,start:in std_logic;clk0,clk1,clk2:out std_logic);end clock;architecture behav of clock is begin process(clk,start)variable cql:std_logic_vector(6 downto 0);begin if clk'event and clk='1' then if start='1'then
if cql<48 then cql:=cql+1;else cql:=(others=>'0');end if;if cql<24 then clk1<='1';else clk1<='0';end if;
if cql>23 and cql<48 then clk2<='1';else clk2<='0';end if;end if;end if;end process;end;模块cnt10的VHDL描述—— LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 IS PORT(CLK,EN,LD:IN STD_LOGIC;CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);D:IN STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END CNT10;ARCHITECTURE BEHAV OF CNT10 IS BEGIN PROCESS(CLK,EN)VARIABLE CQI :STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN IF CLK'EVENT AND CLK='1' THEN IF LD='1' THEN CQI:=D;IF EN='1' THEN IF CQI>0 THEN CQI:=CQI-1;ELSE CQI:=“1001”;END IF;END IF;END IF;END IF;IF CQI=0 THEN COUT<='1';ELSE COUT<='0';END IF;CQ<=CQI;END PROCESS;END BEHAV;模块NSG的VHDL描述—— library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity NSG is port(clk,start:in std_logic;cq:out std_logic_vector(3 downto 0);oout:out std_logic);end;architecture one of NSG is begin process(clk,start)variable cqi:std_logic_vector(3 downto 0);begin if clk'event and clk='1' then if start='1' then if cqi<11 then cqi:=cqi+1;else cqi:=(others=>'0');end if;end if;if cqi<5 then oout<='1';else oout<='0';end if;end if;cq<=cqi;end process;end one;模块NSR的VHDL描述—— library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity NSR is port(clk,start:in std_logic;cq:out std_logic_vector(3 downto 0);oout:out std_logic);end;architecture one of NSR is begin process(clk,start)variable cqi:std_logic_vector(3 downto 0);begin if clk'event and clk='1' then if start='1' then if cqi<11 then cqi:=cqi+1;else cqi:=(others=>'0');end if;end if;if cqi<6 then oout<='0';else oout<='1';end if;end if;cq<=cqi;end process;end one;模块NSEW的VHDL描述—— library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity NSEW is port(clk,start:in std_logic;NSG,NSY,NSR,EWG,EWY,EWR:out std_logic);end;architecture one of NSEW is begin process(clk,start)variable cqi:std_logic_vector(5 downto 0);begin if clk'event and clk='1'and start='1' then if cqi<47 then cqi:=cqi+1;else cqi:=(others=>'0');end if;if cqi<21 then NSG<='1';else NSG<='0';end if;if cqi>20 and cqi<25 then NSY<='1';else NSY<='0';end if;if cqi<25 then EWR<='1';else EWR<='0';end if;if cqi>24 and cqi<49 then NSR<='1';else NSR<='0';end if;if cqi>24 AND cqi<45 then EWG<='1';else EWG<='0';end if;if cqi>44 AND CQI<49 then EWY<='1';else EWY<='0';end if;end if;end process;end one;模块led7s的VHDL描述: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity led7s is port(clock,start:in std_logic;ledns,ledew:out std_logic_vector(7 downto 0));end;architecture behav of led7s is
signal cqi : std_logic_vector(7 downto 0);signal cql : std_logic_vector(7 downto 0);signal cnt6: std_logic_vector(7 downto 0);signal clk : std_logic;begin clk <= clock;process(clk)begin if clk'event and clk='1' then if start='1'then
if cnt6<47 then cnt6<=cnt6+1;
else cnt6<=“00000000”;
end if;
end if;end if;end process;process(clk)begin if clk'event and clk='1' then if start='1'then if
cqi>32 then cqi<=cqi-1;elsif cqi=32 then cqi<=“00011001”;elsif cqi>16 then cqi<=cqi-1;elsif cqi=16 then cqi<=“00001001”;elsif cqi>0 then cqi<=cqi-1;elsif cqi=0 and cnt6=0 then cqi<=“00100100”;end if;if
cql>32 then cql<=cql-1;elsif cql=32 then cql<=“00011001”;elsif cql>16 then cql<=cql-1;elsif cql=16 then cql<=“00001001”;elsif cql>0 then cql<=cql-1;elsif cql=0 and cnt6=24 then cql<=“00100100”;end if;end if;end if;end process;ledew<=cqi;ledns<=cql;end;交通灯工作时序仿真波形:
测试结果及分析:
(1)东西方向亮红灯时间应等于南北方向亮黄、绿灯时间之和,南北方向亮红灯时间应等于东西方向亮黄、绿灯时间之和.(2)当某方向红灯亮时,置显示器为某值,然后以每秒减1计数方式方式工作,直至减到数为“0”,十字路口红、绿灯交换,一次工作循环结束,进入下一步某方向地工作循环。例如:当东西方向从黄灯转换成红灯时,置东西方向数字显示为24,并使数显计数器开始减“1”计数,当减到“0”,时,此时红灯灭,而东西方向的绿灯亮;同时,南北方向的红灯亮,并置南北方向的数显为24。【回答问题】
1、控制电路除用有限状态机实现外,还可以采用什么方法实现?
2、如果增加夜间显示(即全部黄灯闪烁),电路该怎样设计? 答:
还可以用进程语句实现,用一个十二进制的计数器作为控制模块,则EWR、EWG、EWY、NSR、NSG、NSY在计数器不同输出的时候有相应的输出。
第四篇:传感器实验五
传感器实验报告五
姓名 江璐 学号 1315212017 班级 电子二班 时间 2015.12.2 实验题目 CC2530基础实验
一:实验设备
1.硬件:教学实验箱、PC机。
2.软件:PC机操作系统Windows 98(2000、XP)+IAR开发环境。
二:实验
(一)光照传感器采集实验
1.实验目的
(1)掌握光照传感器的操作方法。
(2)掌握光照传感器采集程序的编程方法。
2.实验内容
在IAR集成开发环境中编写光照传感器采集程序。
3.相关电路图
4.程序
5.实验现象
(二)人体感应传感器采集实验
1.实验目的
(1)掌握人体感应传感器的操作方法。
(2)掌握人体感应传感器采集程序的编程方法。
2.实验内容
在IAR集成开发环境中编写体感应传感器采集程序。3.相关电路图
4.程序
5.实验现象
人靠近人体感应器的时候D2、D3灯闪亮,远离时灯灭。
(三)震动传感器采集实验
1.实验目的
(1)掌握震动传感器的操作方法。
(2)掌握震动传感器采集程序的编程方法。
2.实验内容
在IAR集成开发环境中编写震动传感器采集程序。
3.相关电路图
4.程序
5.实验现象
拿起通用调试母板晃动,无晃动时D2、D3灯不亮,有晃动时D2、D3灯闪亮,剧烈晃动时D2、D3灯闪亮频率加快。
(四)烟雾传感器采集实验
1.实验目的
(1)掌握烟雾传感器的操作方法。
(2)掌握烟雾传感器采集程序的编程方法。
2.实验内容
在IAR集成开发环境中编写烟雾传感器采集程序。
3.相关电路图
4.程序
5.实验现象
串口调试助手显示可燃气体传感器的输出值。
三:心得体会
震动传感器采集程序时一直没有用,后面才发现少了程序,加上后就可以正常运行了。
第五篇:实验五教案
国家二级C机试培训资料
strcpy(p,c);国家二级C机试培训资料
main()
{ char c,s[80];
攀枝花学院计算机基础教研室 国家二级C机试培训资料
fun(s, t);
printf(“nThe result is: %sn”, t);} 攀枝花学院计算机基础教研室 国家二级C机试培训资料
case('i'):
case('o'):
攀枝花学院计算机基础教研室 国家二级C机试培训资料
printf(“n”);}
攀枝花学院计算机基础教研室 国家二级C机试培训资料
c=getchar();
while(__2___)//填:c!=‟#‟
{ s[i]=c;i++;c=getchar();___3___;
//填:s[i]=‟ ‟
攀枝花学院计算机基础教研室 国家二级C机试培训资料
printf(“n Please enter the character to search :”);
c = getchar();
/**********found**********/
fun(___3___);
//填:s,c printf(“nThe result is %sn”, s);}
5、程序填空题
国家二级C机试培训资料
while(*s)
{ p=s;r=t;
国家二级C机试培训资料
main()
{ char s[100], t1[100], t2[100], w[100];
printf(“nPlease enter string S:”);scanf(“%s”, s);
printf(“nPlease enter substring t1:”);scanf(“%s”, t1);printf(“nPlease enter substring t2:”);scanf(“%s”, t2);if(strlen(t1)==strlen(t2)){ fun(s, t1, t2, w);
}
else printf(“nError : strlen(t1)!= strlen(t2)n”);printf(“nThe result is : %sn”, w);
国家二级C机试培训资料
国家二级C机试培训资料
{ char a[LEN],b[LEN];
char c;
clrscr();
printf(“Enter the string:n”);
国家二级C机试培训资料
14、程序设计题