C语言版交通灯课程设计

合集下载

单片机c语言课程设计交通灯

单片机c语言课程设计交通灯

交通灯的变化规律按照常规我们假设一个十字路口为东西南北走向。

初始状态为状态1,南北方向绿灯通车,东西方向红灯。

经过过一段时间(25S)转换状态2,南北方向绿灯闪几次转亮黄灯,延时5S,东西方向仍然红灯。

再转换到状态3,东西方向绿灯通车,南北方向红灯。

过一段时间(25S)转换到状态4,东西方向绿灯闪几次转亮黄等,延时5S,南北方向仍然红灯。

最后循环至南北绿灯,东西红灯。

在这些状态下,有时钟倒数计时。

四.硬件介绍基础知识交通灯控制器实例主要使用了89C51单片机的定时器/计数器,基础知识主要包括交通灯的变化规律、定时器/计数器的概念、定时器/计数器的相关寄存器、定时器/计数器的4种工作方式、以及定时器/计数器的变成。

4.1定时器/计数器定时器/计数器是单片机中最常用、最重要的功能模块之一,本节通过交通灯控制器实例来演示定时器的使用,并复习如何使用散转程序。

首先介绍交通灯以及定时器/计数器的基础知识,接着介绍本实例的硬件电路构成,然后逐步分析定时器的变成以及程序的全貌,最后总结一下本实例的技巧与注意点。

4.2定时器/计数器的概念89C51单片机有两个可编程的定时器/计数器T0、T1。

当定时器/计数器用作“定时器”时,每经过1个机器周期(12个时钟周期),计数器加1。

当定时器/计数器用作“计数器”时,计数器在对应的外部输入管脚(T0为P3.4引脚,T1为P3.5引脚)上每发生一次1到0的跳变时加1。

使用“计数器”功能时,外部输入每个机器周期被采样一次。

当某一周期管脚状态采样为高电平而下一周期采样为低电平时,计数器加1。

由于检测下降沿跳变需要两个机器周期(24个时钟周期)的时间,所以技术频率最大值只能为时钟周期的1/24。

计数器对外部输入信号的占空比并无限制,但为了保证给定的电平信号在其改变之前至少被采样一次,外部输入信号必须至少保持一个完整的机器周期。

4.3定时器/计数器的相关寄存器与定时器/计数器相关的寄存器有定时器/计数器工作方式寄存器(TMOD)、定时器/计数器控制寄存器(TCON)。

基于c语言单片机十字交通灯课程设计

基于c语言单片机十字交通灯课程设计

课程设计报告课程名称:单片机课程设计报告题目:十字路口交通灯控制学生姓名:所在学院:专业班级:学生学号:指导教师:2013年12月25 日课程设计任务书交通灯控制系统的原理框图。

它主要由控制器、定时器、译码器和秒脉冲信号发生器等部分组成。

秒脉冲发生器是该系统中定时器和控制器的标准时钟信号源,译码器输出两组信号灯的控制信号,经驱动电路后驱动信号灯工作,控制器是系统的主要部分,由它控制定时器和译码器的工作。

本系统采用单片机AT89C51为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强。

本设计就是采用单片机模拟十字路口交通灯的各种状态显示以及倒计时时间。

本设计系统由单片机I/O口扩展系统、交通灯状态显示系统、LED数码显示系统、复位电路等几大部分组成。

系统除基本的交通灯功能外,还具有倒计时等功能,较好的模拟实现了十字路口可能出现的状况。

软件上采用C51编程,主要编写了主程序,LED数码管显示程序,中断程序延时程序等。

经过整机调试,实现了对十字路口交通灯的模拟。

关键词:单片机AT89C51;运算器;控制器;译码器一、概述 (1)二、设计要求与原理器件介绍 (1)2.1、设计要求 (1)2.2、工作原理 (1)2.3、电路分析 (2)三、器件选择 (2)3.1、单片机选择 (2)3.2、编码器选择 (3)四、程序设计及总原理图 (4)4.1、程序设计 (4)4.2、总原理图 (6)五、结论与心得 (6)六、参考文献 (7)一、概述随着科学技术的发展,特别是计算机控制和电子技术以及大规模集成电路的迅速发展,使得现代电子设备得到广泛的应用。

其中,单片机作为微型计算机的一个重要的分支,受到人们的重视和关注,发展快速。

由于单片机具有抗干扰能力强,可靠性高,灵活性好,环境要求不高,价格低廉,开发容易等特点,它已经广泛地应用在工业自动化控制、自动检测、家用电器、电力电子等各个方面。

当然,在十字路口交通灯的控制系统中,也应用的非常的广泛。

单片机c语言程序设计---C51-交通灯实验报告

单片机c语言程序设计---C51-交通灯实验报告

单片机c语言程序设计---C51-交通灯实验报告课程名称:单片机c语言设计实验类型:设计型实验实验项目名称: C51-交通灯实验一、实验目的和要求1.熟悉单片机的硬件结构及其工作原理2.掌握单片机的C51编程二、实验内容和原理(1)硬件设计使用P1端口连接VD1、VD2、VD3,模拟路口东面的红、黄、绿灯;P0端口连接VD9、VD10、VD11,模拟路口西面的红、黄、绿灯;P3端口连接VD17、VD18、VD19,模拟路口南面的红、黄、绿灯;P2端口连接VD25、VD26、VD27,模拟路口北面的红、黄、绿灯。

路口红绿灯的显示规律为:①南面和北面显示红灯(即VD17和VD25为红灯)时,东面和西面显示绿灯(即VD3和VD11为绿灯)。

②南面和北面,东面和西面都变成黄灯。

③南面和北面显示绿灯,东面和西面显示红灯④南面和北面,东面和西面都变成黄灯,然后再从①进行循环(需注意:此处设置的黄灯显示时长应短于红灯或绿灯的显示时长)(2)protues仿真通过Keil编译后,利用protues软件进行仿真。

在protues ISIS 编译环境中绘制仿真电路图,将编译好的“xxx.hex”文件加入AT89C51。

启动仿真,观察仿真结果。

三、主要仪器设备四、操作方法与实验步骤1.按照硬件设计在protues上按照所给硬件设计绘制电路图。

2.在keil上进行编译后生成“xxx.hex”文件。

3.编译好的“xxx.hex”文件加入AT89C51。

启动仿真,观察仿真结果。

五、实验结果与分析void S_N(void){VD1=0;VD9=0;VD19=0;VD27=0;Delay(1000);VD1=1;VD9=1;VD19=1;VD27=1;}int main (void) {while(1){E_W();NOT();S_N();NOT();}}六、讨论和心得。

vc交通灯课程设计

vc交通灯课程设计

vc 交通灯课程设计一、课程目标知识目标:1. 学生能理解并掌握交通灯的基本原理和功能;2. 学生能运用VJC语言编写交通灯控制程序;3. 学生了解交通灯在我国交通管理中的重要性。

技能目标:1. 学生能运用已学的VJC编程知识,设计并实现交通灯的模拟控制系统;2. 学生通过实践操作,提高编程解决问题的能力;3. 学生能够运用团队协作,进行项目设计和展示。

情感态度价值观目标:1. 学生培养对编程的兴趣,激发创新精神;2. 学生认识到遵守交通规则的重要性,提高社会责任感;3. 学生在团队协作中,学会沟通、分享和尊重他人意见。

课程性质:本课程为信息技术课程,结合学生实际生活,运用VJC编程语言,设计交通灯控制系统。

学生特点:六年级学生具备一定的VJC编程基础,对实际应用场景感兴趣,喜欢动手实践。

教学要求:结合学生特点,注重实践操作,培养编程思维和团队协作能力,提高学生运用信息技术解决实际问题的能力。

通过本课程的学习,将目标分解为具体的学习成果,以便后续的教学设计和评估。

二、教学内容1. 交通灯基本原理:介绍红绿灯变换原理、黄灯闪烁功能及其在交通管理中的作用。

教材章节:《信息技术》六年级下册第五章第一节2. VJC编程基础:回顾VJC编程的基本语法、循环结构、条件语句等。

教材章节:《信息技术》六年级下册第四章3. 交通灯控制程序设计:a. 分析交通灯控制需求,明确编程目标;b. 设计程序流程图,梳理程序结构;c. 编写VJC代码,实现交通灯控制功能。

教材章节:《信息技术》六年级下册第五章第二节4. 实践操作与团队协作:a. 学生分组进行实践操作,设计并实现交通灯控制系统;b. 学生展示作品,分享编程经验;c. 团队协作,共同解决问题,优化程序。

教材章节:《信息技术》六年级下册第五章第三节5. 课程总结与评价:对学生在课程中的表现进行总结和评价,强调编程思维和团队协作的重要性。

教学内容安排和进度:第一课时:交通灯基本原理、VJC编程基础复习;第二课时:交通灯控制程序设计;第三课时:实践操作与团队协作;第四课时:课程总结与评价。

交通红绿灯单片机控制课程设计

交通红绿灯单片机控制课程设计

交通红绿灯课程设计要求:任务目标:某十字路口,南北向为主干道,东西向为支道,每个道口安装一组交通灯:红、黄、绿。

设计十字路口的交通灯控制器,使交通灯按状态1 状态2 状态3 状态4 的规律变化,循环不止。

状态1:东西向绿灯亮,南北向红灯亮,其他灯全灭,保持25 秒;状态2:东西向黄灯亮,南北向红灯亮,其他灯全灭,保持5 秒;状态3:东西向红灯亮,南北向绿灯亮,其他灯全灭,保持25秒;状态4:东西向红灯亮,南北向黄灯亮,其他灯全灭,保持5 秒。

原理图:调试效果图:C语言运行程序:#include<reg52.h>sbit gre1=P2^0; sbit yel1=P2^1; sbit red1=P2^2; sbit gre3=P3^0; sbit yel3=P3^1; sbit red3=P3^2; sbit bi1=P3^6; sbit bi2=P3^7;void dx();void yan(int cs); void display2(); void display3(); void display31(); void display32(); void display33(); void display34(); void display35();int a,b=0;unsigned char table1[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x f8,0x80,0x90} ;void main(){P1=0X00;P0=0X00;EA=1;EX1=1;// IT0=0;while(1){dx();}}void dx(){red1=0; gre3=0; display3(); gre3=1; yel3=0; display31(); yel3=1; display32(); yel3=0; display33(); yel3=1; display34(); yel3=0; display35(); red1=1; yel3=1; gre1=0; red3=0;display2();gre1=1;yel1=0;display31();yel1=1;display32();yel1=0;display33();yel1=1;display34();yel1=0;display35();yel1=1;red3=1;}void display2(){int i;for(i=0;i<50;i++){bi1=0;bi2=1;P1=table1[0];P0=table1[5];yan(10);bi2=0;bi1=1;P1=table1[2];P0=table1[2];yan(10);}for(i=0;i<50;i++){bi1=0;P1=table1[9];P0=table1[4];yan(10);bi2=0;bi1=1;P1=table1[1];P0=table1[2];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[8];P0=table1[3];yan(10);bi2=0;P1=table1[1];P0=table1[2];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[7];P0=table1[2];yan(10);bi2=0;bi1=1;P1=table1[1];P0=table1[2];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[6];P0=table1[1];yan(10);bi2=0;bi1=1;P1=table1[1];P0=table1[2];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[5];yan(10);bi2=0;bi1=1;P1=table1[1];P0=table1[2];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[4];P0=table1[9];yan(10);bi2=0;bi1=1;P1=table1[1];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[3];P0=table1[8];yan(10);bi2=0;bi1=1;P1=table1[1];P0=table1[1];yan(10);}for(i=0;i<50;i++) {bi2=1;P1=table1[2];P0=table1[7];yan(10);bi2=0;bi1=1;P1=table1[1];P0=table1[1];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[1];P0=table1[6];yan(10);bi1=1;P1=table1[1];P0=table1[1];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[0];P0=table1[5];yan(10);bi2=0;bi1=1;P1=table1[1];P0=table1[1];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[9];P0=table1[4];yan(10);bi2=0;bi1=1;P1=table1[0];P0=table1[1];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P0=table1[3];yan(10);bi2=0;bi1=1;P1=table1[0];P0=table1[1];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[7];P0=table1[2];yan(10);bi2=0;bi1=1;P0=table1[1];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[6];P0=table1[1];yan(10);bi2=0;bi1=1;P1=table1[0];P0=table1[1];yan(10);}for(i=0;i<50;i++){bi1=0;bi2=1;P1=table1[5];P0=table1[0];yan(10);bi2=0;bi1=1;P1=table1[0];P0=table1[1];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[4];P0=table1[9];yan(10);bi2=0;bi1=1;P1=table1[0];P0=table1[0];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[3];P0=table1[8];yan(10);bi2=0;bi1=1;P1=table1[0];P0=table1[0];}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[2];P0=table1[7];yan(10);bi2=0;bi1=1;P1=table1[0];P0=table1[0];yan(10);}for(i=0;i<50;i++) {bi1=0;P1=table1[1];P0=table1[6];yan(10);bi2=0;bi1=1;P1=table1[0];P0=table1[0];yan(10);}}void display3(){int i;for(i=0;i<50;i++){bi1=0;P1=table1[5];P0=table1[0];yan(10);// bi1=1;bi2=0;bi1=1;P1=table1[2];P0=table1[2];yan(10);}for(i=0;i<50;i++){bi1=0;bi2=1;P1=table1[4];P0=table1[9];yan(10);bi1=1;P1=table1[2];P0=table1[1];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[3];P0=table1[8];yan(10);bi2=0;bi1=1;P1=table1[2];P0=table1[1];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[2];P0=table1[7];yan(10);bi2=0;bi1=1;P1=table1[2];P0=table1[1];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P0=table1[6];yan(10);bi2=0;bi1=1;P1=table1[2];P0=table1[1];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[0];P0=table1[5];yan(10);bi2=0;bi1=1;P0=table1[1];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[9];P0=table1[4];yan(10);bi2=0;bi1=1;P1=table1[1];P0=table1[1];yan(10);}for(i=0;i<50;i++){bi1=0;bi2=1;P1=table1[8];P0=table1[3];yan(10);bi2=0;bi1=1;P1=table1[1];P0=table1[1];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[7];P0=table1[2];bi2=0;bi1=1;P1=table1[1];P0=table1[1];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[6];P0=table1[1];yan(10);bi2=0;bi1=1;P1=table1[1];P0=table1[1];}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[5];P0=table1[0];yan(10);bi2=0;bi1=1;P1=table1[1];P0=table1[1];yan(10);}for(i=0;i<50;i++) {bi1=0;P1=table1[4];P0=table1[9];yan(10);bi2=0;bi1=1;P1=table1[1];P0=table1[0];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[3];P0=table1[8];yan(10);bi2=0;P1=table1[1];P0=table1[0];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[2];P0=table1[7];yan(10);bi2=0;bi1=1;P1=table1[1];P0=table1[0];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[1];P0=table1[6];yan(10);bi2=0;bi1=1;P1=table1[1];P0=table1[0];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[0];yan(10);bi2=0;bi1=1;P1=table1[1];P0=table1[0];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[9];P0=table1[4];yan(10);bi2=0;bi1=1;P1=table1[0];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[8];P0=table1[3];yan(10);bi2=0;bi1=1;P1=table1[0];P0=table1[0];yan(10);}for(i=0;i<50;i++) {bi2=1;P1=table1[7];P0=table1[2];yan(10);bi2=0;bi1=1;P1=table1[0];P0=table1[0];yan(10);}for(i=0;i<50;i++) {bi1=0;bi2=1;P1=table1[6];P0=table1[1];yan(10);bi1=1;P1=table1[0];P0=table1[0];yan(10);}}void display31(){int i;for(i=0;i<50;i++){bi1=0;bi2=1;P1=table1[5];P0=table1[5];yan(10);bi1=1;P1=table1[0];P0=table1[0];yan(10);}}void display32(){int i;for(i=0;i<50;i++){bi1=0;bi2=1;P1=table1[4];P0=table1[4];yan(10);bi2=0;P1=table1[0];P0=table1[0];yan(10);}}void display33(){int i;for(i=0;i<50;i++){bi1=0;bi2=1;P1=table1[3];P0=table1[3];yan(10);bi2=0;bi1=1;P1=table1[0];P0=table1[0];yan(10);}}void display34(){int i;for(i=0;i<50;i++){bi1=0;bi2=1;P1=table1[2];P0=table1[2];yan(10);bi2=0;bi1=1;P1=table1[0];P0=table1[0];yan(10);}}void display35(){int i;for(i=0;i<50;i++){bi1=0;bi2=1;P1=table1[1];P0=table1[1];yan(10);bi2=0;bi1=1;P1=table1[0];P0=table1[0];yan(10);}}void int1() interrupt 2 {P1=0Xff;P0=0Xff;gre1=1;yel1=1;red1=1;gre3=1;yel3=1;red3=1;while(1){}}void yan(int cs){int i,j;for(i=0;i<cs;i++){for(j=0;j<125;j++){};}}。

基于c语言单片机交通灯

基于c语言单片机交通灯

1设计课题设计要求及总体方案介绍1.1 设计课题任务设计一个具有特定功能的十字路口交通灯。

该交通灯上电或按键复位后能自动显示系统提示符“d.1004-16”,进入准备工作状态。

按开始键则开始工作,按结束键则返回“d.1004-16”状态。

1.2 功能要求说明要求甲车道和乙车道两条交叉道路上的车辆交替运行,甲车道为主车道,每次通车时间为60秒,乙车道为次车道,每次通车时间为30秒,要求黄灯亮3秒,并且1秒闪烁一次。

有应急车辆出现时,红灯全亮,应急车辆通车时间10秒,同时禁止其他车辆通过。

1.3 交通灯总体方案介绍及工作原理说明1.3.1 电源提供方案为使模块稳定工作,须有可靠电源,采用单片机控制模块提供电源。

此方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。

1.3.2 复位方案复位方式有两种:按键复位与软件复位。

由考虑到程序的简洁,避免冗长,本设计采用按键复位,在芯片的复位端口外接复位电路,通过按键对单片机输入一个高电平脉冲,达到复位的目的。

1.3.3 输入方案直接在IO口线上接上按键开关。

因为设计时精简和优化了电路,所以剩余的口资源还比较多,我们使用2个按键,分别是K1、K2。

由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O 口就可实现,且本身的计数器及RAM已经够用1.3.4 显示界面方案该系统要求完成倒计时、状态灯等功能。

采用数码管与点阵LED (点阵式和8段式LED)相结合的方法因为设计既要求倒计时数字输出,又要求有状态灯输出等,为方便观看并考虑到现实情况,用数码管与LED灯分别显示时间与提示信息。

这种方案既满足系统功能要求,又减少了系统实现的复杂度。

权衡利弊,第三种方案可互补一二方案的优缺,我们决定采用方案三以实现系统的显示功能。

2交通灯硬件系统的设计2.1 交通灯硬件系统各模块功能简要介绍2.1.1 设计方框图图2-12.1.2 复位电路模块复位方式有多种,本设计采用按键复位,在设定的定时时间内,89S52必须在RST引脚产生一个由高到低的电平变化,以清内部定时器。

单片机交通灯实验设计报告(C语言)

东北林业大学单片机原理实验课程设计总结报告设计项目:电子交通灯的设计项目完成人:指导教师:学院:信息与计算机工程学院专业:电子信息工程2008级3班2011年 5月 23 日综合电子课程设计任务书摘要随着目前微电子技术的发展,技术工艺的不断提高,单片机技术也有了长足的进步。

单片机即单片微型计算机,它是微型计算机的一个分支,它是在一块芯片上集成了 CPU、 RAM 和 ROM 存储器 I/O 接口等而构成的微型计算机。

因为它主要应用于工业测控领域故又叫做微控器或嵌入式控制器。

单片机的核心是 CPU用超大规模集成技术把 CPU 集成在一块芯片上,称为微处理器。

单片机在最近几年中得到了极大的发展,目前世界范围内单片机发展的主要领域有 4 个:一是欧美,最新开发产品及主要厂商有:National semicundutor 的cop3 系列单片机,美国的 Scenix的八位单片机,荷兰 PHILIPS 的51 系列单片机,,美国 AMD公司 186 系列 16位嵌入式微机控制器, MOTOROLA 的各个系列单片机;二是日本, TOSHIBA公司开发了从 4位到 64 位多系列单片机,日立公司也有从 4 位到 32 位多系列单片机, NEC公司的 75X、78X系列微机;三是台湾地区,主要有 WINBOND的 W741/ W516,W78/W77 等系列产品微控制器;四是韩国,主要有HYUNDAI microelectrionics的GMS800、GMS30 系列微控制器。

另外还有 LG公司也生产单片机,可见单片机发展到今天可以说种类繁多、性能各异。

但目前我国的许多单片机应用单位仍停留在采用片内无 ROM等低档单片机状态。

十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。

那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。

交通信号灯控制方式很多。

本系统采用MSC-51系列单片机ATSC51和可编程并行I/O接口芯片CH451为中心器件来设计交通灯控制器,实现了能根据实际车流量通过8051芯片的P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过PA口输出,显示时间直接通过CH451的PC口输出至双位数码管);车辆闯红灯报警;绿灯时间可检测车流量并可通过双位数码管显示。

用单片机设计交通灯课设报告C语言

单片机原理及接口技术课程设计报告设计题目:人车分行交通信号指挥灯的控制学号:姓名:指导教师:信息与电气工程学院年月人车分行交通信号指挥灯的控制在生活中,我们在各个路口基本都可以看到交通信号灯,道路交通信号灯是交通安全产品中的一种类别,是为了加强道路交通管理,减少交通事故的发生,提高道路使用效率,改善交通状况的一种重要工具。

近年来,随着科技的飞速发展,电子器件也随之广泛应用,其中单片机也不断深入人民的生活当中。

本模拟交通灯系统利用单片机AT89C51作为核心元件,实现了通过信号灯对路面状况的智能控制。

系统具有结构简单、可靠性高、成本低等优点,有广泛的应用前景。

本模拟系统由单片机硬/软件系统,两位8段数码管和LED灯显示系统。

和复位电路、时钟产生电路等组成,较好的模拟了交通路面的控制,利用单片机良好的控制功能来进行设计,应用更灵活,功能更强大,也更智能化。

通过C语言编程,单片机做控制,加上8个LED灯指示交通红绿灯、8155控制数码管倒计时显示来实现基本功能,外加处理突发中断情况的的按钮来模拟儿童过马路的情况。

1.设计任务结合实际情况,基于AT89C51单片机设计一个人车分行交通信号指挥灯。

该系统应满足的功能要求为:(1)交通红绿灯显示;(2)倒计时设置;(3)儿童过马路提示。

主要硬件设备:AT89C51单片机、8个LED灯、两个数码管显示器、蜂鸣器、8155I/O口扩展芯片列写交通灯变化表表1-1 利群超市门前路口交通灯变化情况表2. 整体方案设计人车分行交通信号指挥灯以AT89C51单片机作为整个系统的控制核心,应用其强大的接口功能,构成整个人车分行交通信号指挥灯控制的硬件系统。

该系统用8个LED灯模拟东西南北红黄绿灯以及人行红绿灯,用AT89C51的P1口的8个管脚与其连接,两位数码管显示器显示各个状态的倒计时,而数码管显示器由8155的PA口和PB 口控制,PB口控制数码管的段选码,PA口控制数码管的位选码,实现动态显示,节省管脚的使用,AT89C51的管脚P3.2分别连接应对突发状况的紧急开关。

单片机C语言交通灯设计

单片机C语言交通灯设计交通灯是城市中至关重要的设施之一,它可以引导车辆和行人的行为,并维持市民的出行秩序。

单片机C语言交通灯设计项目旨在使用C语言编程语言,通过单片机的控制,实现交通灯的开关并维护路面交通秩序。

本文将介绍单片机C语言交通灯设计的背景、基本原理以及设计过程。

一、背景随着城市化的快速发展,交通流量急剧增加,城市中交通拥堵、交通安全等问题越来越严重。

为了能够有效维护交通秩序,交通灯成为城市交通管理中必不可缺的部分。

为了更好地控制交通灯的开关,我们需要借助单片机这个高效的控制设备。

二、基本原理单片机指的是集成了中央处理器、存储器、输入输出端口、定时器/计数器、中断控制器等模块的芯片。

通过单片机的控制,可以对交通灯的开关进行精准控制,并实现不同路段之间的时序交替配合。

具体实现过程如下:1. 单片机需要连接交通灯的各个灯组,包括红灯、黄灯、绿灯等。

2. 设计好程序后,单片机开始运作,不断循环,按照预定的时间间隔实现各种信号灯的交替亮起。

3. 单片机可以根据交通灯的需求,设定不同的工作模式。

例如,可以在繁忙路段长亮绿灯,而在交通流量较少的路段则可以将绿灯调整为短亮,以节约能源。

4. 当有行人或车辆通过交通灯时,单片机可以自动检测,即时调整信号灯的亮灭状态,以避免事故发生。

三、设计过程实现单片机C语言交通灯设计,需要进行以下步骤:1. 确定交通灯需要工作的时间,例如绿灯需要亮的时间、红灯需要亮的时间等。

2. 编写程序,使用C语言完成程序设计。

可以通过调用预先定义好的控制函数,实现对单片机的控制。

3. 程序编写完成后,将程序通过编译器编译,并将二进制代码下载到单片机中,以实现程序运行。

4. 调试程序,确保程序可以正常运行,交通灯的不同信号灯可以按照预定时间间隔交替亮灭。

5. 根据实际情况进行程序优化,例如可以增加灯光亮度控制、检测模块和声音提示器等功能,以提高交通灯的安全性和可靠性。

四、总结在现代城市中,交通灯成为了城市交通管理不可或缺的部分。

c语言交通灯课程设计

c语言交通灯课程设计一、课程目标知识目标:1. 学生能理解并掌握C语言中基本的数据类型、变量声明及运算符使用。

2. 学生能运用C语言控制结构,如if条件语句、循环语句,实现对交通灯控制逻辑的编程。

3. 学生能通过编程实现交通灯的定时切换,理解并运用C语言中的延时函数。

技能目标:1. 学生能够独立设计并编写简单的C语言程序,完成交通灯控制流程的编码。

2. 学生通过课程实践,培养问题分析、程序设计、调试程序的能力。

3. 学生能够运用所学知识,解决实际生活中的简单控制问题,具备一定的编程应用能力。

情感态度价值观目标:1. 学生通过课程学习,增强对计算机编程的兴趣和热情,培养积极的学习态度。

2. 学生在小组合作中学会互相帮助、交流讨论,培养团队协作精神和解决问题的能力。

3. 学生通过课程学习,认识到编程在生活中的应用,体会科技对社会发展的作用,增强社会责任感。

课程性质分析:本课程为信息技术课程,旨在通过C语言编程实践,提高学生的逻辑思维能力和编程技能。

学生特点分析:考虑到学生所在年级,已有一定的计算机基础和逻辑思维能力,对编程有初步的认识,但需进一步培养编程技巧和实际应用能力。

教学要求:结合课程性质和学生特点,注重理论与实践相结合,鼓励学生动手实践,培养编程兴趣,提高解决实际问题的能力。

通过分解课程目标为具体学习成果,便于教学设计和评估。

二、教学内容1. C语言基础知识回顾:数据类型、变量声明、运算符、简单输入输出。

- 教材章节:第一章至第三章- 内容列举:整型、浮点型、字符型数据类型;变量的定义与赋值;算术运算符、关系运算符、逻辑运算符;printf、scanf函数的使用。

2. C语言控制结构:if条件语句、循环语句(for、while、do-while)。

- 教材章节:第四章至第五章- 内容列举:if语句及其嵌套;for循环、while循环、do-while循环的用法;break和continue语句。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机控制课程设计报告课程名称基于C语言单片机交通灯学生姓名张万双学号51102022004专业班级电子信息科学与技术2班指导老师2013年12月5日目录一.前言 (3)二.功能概述 (3)三.设计思路 (4)四.硬件介绍 (4)五.软件程序设计 (9)六.电路图及仿真实现 (12)七.总结 (14)八.源程序 (15)九.参考文献 (18)一.前言近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。

在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。

十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。

那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。

交通信号灯控制方式很多,在学习了单片机的有关知识之后,运用相关知识来设计完成交通信号灯。

二.功能概述2.1 设计任务:交通灯的硬件和软件设计2.2 设计目的1.进一步熟悉和掌握单片机的结构和工作原理。

2.掌握单片机的接口技术及相关外围芯片的外特性,控制方法。

3.通过课程设计,掌握以单片机为核心的电路设计的基本方法和技术,了解有关电路参数的计算方法。

4.通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。

5.通过完成一个包括电路设计和程序开发的完整过程,为我们今后从事相应工作打下基础。

三.设计思路交通灯的变化规律按照常规我们假设一个十字路口为东西南北走向。

初始状态为状态1,南北方向绿灯通车,东西方向红灯。

经过过一段时间(25S)转换状态2,南北方向绿灯闪几次转亮黄灯,延时5S,东西方向仍然红灯。

再转换到状态3,东西方向绿灯通车,南北方向红灯。

过一段时间(25S)转换到状态4,东西方向绿灯闪几次转亮黄等,延时5S,南北方向仍然红灯。

最后循环至南北绿灯,东西红灯。

在这些状态下,有时钟倒数计时。

四.硬件介绍基础知识交通灯控制器实例主要使用了89C51 单片机的定时器/计数器,基础知识主要包括交通灯的变化规律、定时器/计数器的概念、定时器/计数器的相关寄存器、定时器/计数器的4 种工作方式、以及定时器/计数器的变成。

4.1 定时器/计数器定时器/计数器是单片机中最常用、最重要的功能模块之一,本节通过交通灯控制器实例来演示定时器的使用,并复习如何使用散转程序。

首先介绍交通灯以及定时器/计数器的基础知识,接着介绍本实例的硬件电路构成,然后逐步分析定时器的变成以及程序的全貌,最后总结一下本实例的技巧与注意点。

4.2 定时器/计数器的概念89C51 单片机内有两个可编程的定时器/计数器T0、T1。

当定时器/计数器用作“定时器”时,每经过 1 个机器周期(12 个时钟周期),计数器加1。

当定时器/计数器用作“计数器”时,计数器在对应的外部输入管脚(T0 为P3.4 引脚,T1 为P3.5 引脚)上每发生一次 1 到0 的跳变时加1。

使用“计数器”功能时,外部输入每个机器周期被采样一次。

当某一周期管脚状态采样为高电平而下一周期采样为低电平时,计数器加1。

由于检测下降沿跳变需要两个机器周期(24个时钟周期)的时间,所以技术频率最大值只能为时钟周期的1/24。

计数器对外部输入信号的占空比并无限制,但为了保证给定的电平信号在其改变之前至少被采样一次,外部输入信号必须至少保持一个完整的机器周期。

4.3 定时器/计数器的相关寄存器与定时器/计数器相关的寄存器有定时器/计数器工作方式寄存器(TMOD)、定时器/计数器控制寄存器(TCON)。

TCON 已经在 2.5 节受控输出实例中介绍过,因此,在本例中主要介绍TMOD 寄存器。

定时器/计数器工作方式寄存器(TMOD),字节地址89H,不可进行位寻址。

定时器/计数器工作方式寄存器(TMOD)的8 位分为两组,高 4 位控制T1,低 4 位控制T0。

TMOD 每一位的功能如下:GATE:门控位。

GATE=0,仅由运行控制位TRX(X=0,1)=1 来启动定时器/计数器运行;GATE=1,由运行控制位TRX(X=0,1)=1 和外部中断引脚上的高电平共同来启动定时器/计数器运行。

C/T:定时器模式和计数器模式选择位。

C/T=0,为定时器模式;C/T=1,为计数器模式。

M1、M0:工作方式选择位。

M1、M0 的 4 中编码对应 4 种工作方式,对应关系见表2-10。

4.5 定时器/计数器的 4 种工作方式定时器/计数器的 4 种工作方式下的逻辑结构如表所示。

M1 M2 工作方式0 0 方式0,为13 位定时器/计数器0 1 方式1,为16 位定时器/计数器1 0 方式2,为初值自动重装的8 位定时器/计数器1 1方式3,仅T0 有效,将T0 分为两个8 位定时器/计数器(1)方式0。

定时器/计数器的工作方式0 称为13 位定时器/计数器的。

它由TLX 的低 5 位和TLX 的8 位构成13 位的计数器,此时TLX 的高 3 位未使用。

改工作方式是为了和48 系列单片机兼容而设计的一种工作方式,一般情况不使用方式0 进行定时/计数。

方式0 的控制方式与方式 1 完全相同,下面重点介绍方式 1 的控制方式。

(2)方式 1定时器/计数器的工作方式 1 称为16 位定时器/计数器。

它由TLX 和THX 构成,TLX 计数溢出向THX 进位,THX 计数溢出置位TCON 中溢出标志位TFX。

GATE 位的状态定时器/计数器运行控制取决于TRX 一个条件还是TRX 和INTX 引脚这两个条件。

当GATE=0 时,则只要TRX 被置为1,定时器/计数器即被允许计数(定时器/计数器的计数控制仅由TRX 的状态确定,TRX=1 计数,TRX=0 停止计数)。

当GATE=1 时,定时器/计数器是否计数由INTX 输入的电平和TRX 的状态共同确定:当TRX=1,且INTX=1 时,才允许定时器/计数器计数(定时器/计数器的计数控制由TRX 和INTX 两个条件控制)。

(3)方式 2定时器/计数器的工作方式0 和方式 1 再计数溢出后,计数器的值为0,需要通过程序重新装入计数初值。

定时器/计数器的工作方式 1 称为初值自动重装的8 位定时器/计数器。

在该工作方式下,TLX 作为计数器,当TLX 计数溢出时,在置 1 溢出标志TFX 的同时,还自动的将THX 中的常数送至TLX,使TLX 从该常数开始重新计数。

这种工作方式可以省去用户软件中重装常数的程序,简化定时常数的计算方法(确定计数初值),可以相当精确地确定定时时间。

(4)方式3工作方式 3 仅对定时器/计数器0 有效,在该工作方式之下,定时器/计数器的0 被拆成 2 个独立的定时器/计数器:TL0、TF1。

TL0 使用T0 的状态控制C/T、GATE、TR0、INT0,而TH0 被固定位一个8 位定时器(不能作外部计数方式),并使用定时器/计数器 1 的状态控制位TR1、和TF1,同时占用定时器T1 的中断源。

此时,定时器/计数器 1 可设定为方式0、方式 1 和方式2,作为串行口的波特率发生器。

4.5 定时器/计数器的编程(1)初始化定时器/计数器的初始化编程包括以下几个部分。

根据要求给定时器/计数器方式寄存器(TMOD)送一个方式控制字,以设定定时器/计数器的工作方式。

根据需要给TH 和TL 寄存器送初值,以确定需要的定时时间或计数的初值。

根据需要给中断允许寄存器(IE)送中断控制字,以开放相应的中断和设定中断优先级。

给TCON 寄存器送命令字以启动或禁止定时/计数器的运行。

(2)定时器/计数器初值的计算。

计数器初值:设计算器的模值位M,所需的计数值为C,计数初值设定为TC,则TC=M-C (M 等于 2 的13 次方,16 次方,8 次方)。

定时器初值:设定时器的模值为M,需要的定时时间为T,定时器的初值设定为TC,则TC=M-T/t (M 等于 2 的13 次方,16 次方,8 次方)。

五.软件程序设计交通灯控制器实例使用了89C51 单片机的定时器/计数器,首先分定时器初始化,定时器中断服务程序两个部分介绍定时器计数器的软件编程,其次在画出程序流程图的基础上编写软件程序,并给出完整的交通灯控制器程序实例。

5.1 定时器初始化为了使定时器时间准确,避免因为定时器重装而引起的累计误差,应将定时器设置为初值自动装置的8 位定时器/计数器,即定时器工作在工作方式 2.在12MHz 晶振条件下,8 位定时器的最长定时时间是0.256ms,为了方便计算取定时时间为0.25ms,所以,定时0.5s 需要定时器中断2000 次。

下面计算定时器的初值。

定时器初值TC=M-T/t=256-250/1=6 ,因此TH0=06H,TL0=06H.定时器初始化程序如下,定时器T0 设定为工作方式2,初始值为06H,自动重装入值为06H。

T0 -INIT;MOV TMOD,#00000010B ; 定时器T0 工作方式 2MOV TL0,#06H ; 设定时器T0 的初始值MOV TH0,#06H ; 设定时器T0 的自动重装值MOV TCON,#00010000B ; 定时器T0 的使能SETB EA ;中断允许总控制位使能SETB ET0;T0 中断使能RET5.2 定时器中断服务程序T0 -INIT;DJNZ TIME-COUNT0,T0-INT-EXITMOV TIME-COUNT0,#250DJNZ TIME-COUNT1, T0-INT-EXITMOV TIME-COUNT1,#8SETB SECOND-FLAG ;T0-INT-EXIT;RETI每0.25ms 定时器中断发生,程序跳转到中断服务程序T0-INT 开始执行。

中断服务程序每次将定时器中断计数变量减1,但定时器中断计数变量为0 时,0.5s 定时时间到,将位变量SECOND-FLAG 置为 1.定时器中断服务程序通过RETI 指令返回,程序将跳转到进入中断前的断点继续执行。

5.3 程序流程图程序较为简单,可以直接进行程序的编写,但本实例的程序流程比较复杂,在编写程序前,应当先画出程序流程图。

程序流程图是描述程序运行流程的一种图表。

它不仅描绘程序从头到尾的运行顺序,也描述程序运行过程中的所有可能发生的状况。

六.电路图及仿真设计6.1 设计完成原理图如下在电路连接完成后,将写好的程序放入单片机,运行。

6.2 在初始状态南北绿灯,东西红灯,持续时间为25s6.3 南北跳转到黄灯5s,东西仍为红灯在南北转换为红灯的同时,东西灯转换到绿灯持续25s;东西转换为黄灯持续5s,南北红灯不变;如此循环,从而实现交通灯的作用。

七.总结回顾起此次单片机课程设计,我仍感慨颇多,学到了很多的东西。

相关文档
最新文档