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语言)

单片机交通灯实验设计报告(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语言

用单片机设计交通灯课设报告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语言编程语言,通过单片机的控制,实现交通灯的开关并维护路面交通秩序。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

c语言交通灯课程设计

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语句。

交通灯c语言课程设计

交通灯c语言课程设计

交通灯c语言课程设计一、教学目标本课程的目标是让学生掌握C语言的基本语法和编程思想,通过编写交通灯控制程序,培养学生运用C语言解决实际问题的能力。

具体目标如下:1.知识目标:a.掌握C语言的基本语法和数据类型;b.熟悉控制结构和函数的定义及使用;c.了解交通灯控制系统的原理和工作流程。

2.技能目标:a.能够使用C语言编写简单的程序;b.学会使用调试工具,分析程序运行过程中的问题;c.能够独立完成交通灯控制程序的编写和调试。

3.情感态度价值观目标:a.培养学生对编程语言的兴趣和好奇心;b.培养学生解决问题的自信心和耐心;c.培养学生团队协作和互相帮助的精神。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、控制结构、函数等,以及交通灯控制系统的原理和工作流程。

具体安排如下:1.C语言的基本语法和数据类型;2.控制结构:顺序结构、分支结构、循环结构;3.函数的定义和调用:用户自定义函数、系统函数;4.交通灯控制系统的原理和工作流程;5.交通灯控制程序的编写和调试。

三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法,以激发学生的学习兴趣和主动性。

具体方法如下:1.讲授法:用于讲解C语言的基本语法、数据类型、控制结构、函数等知识点;2.案例分析法:通过分析交通灯控制系统的实例,使学生理解并掌握C语言编程的方法;3.实验法:让学生动手编写和调试交通灯控制程序,培养实际操作能力。

四、教学资源本课程所需的教学资源包括教材、参考书、多媒体资料和实验设备。

具体资源如下:1.教材:《C语言程序设计教程》;2.参考书:《C语言编程实例解析》;3.多媒体资料:交通灯控制系统的视频资料;4.实验设备:计算机、编程器、调试工具等。

五、教学评估本课程的评估方式包括平时表现、作业、考试等,以全面客观地评价学生的学习成果。

具体评估方式如下:1.平时表现:通过课堂参与、提问、讨论等方式,评估学生在课堂上的学习态度和表现,占总评的20%;2.作业:布置适量的课后作业,评估学生的编程能力和理解力,占总评的30%;3.考试:进行期中考试和期末考试,测试学生对C语言知识的掌握程度和应用能力,占总评的50%。

交通灯课程设计c语言

交通灯课程设计c语言

交通灯课程设计c语言一、教学目标本课程的目标是让学生掌握C语言的基本知识,学会使用C语言进行简单的程序设计,培养学生的逻辑思维能力和编程能力。

具体的学习目标包括:1.知识目标:学生能够理解C语言的基本语法、数据类型、运算符、控制结构等基本知识;2.技能目标:学生能够使用C语言编写简单的程序,解决实际问题;3.情感态度价值观目标:学生能够体验编程的乐趣,培养对计算机科学的兴趣。

二、教学内容根据课程目标,本课程的教学内容主要包括:1.C语言的基本语法和数据类型;2.运算符和控制结构;3.函数和数组;4.指针和引用;5.文件操作;6.编程实践。

三、教学方法为了达到课程目标,本课程将采用以下教学方法:1.讲授法:讲解C语言的基本语法、数据类型、运算符、控制结构等基本知识;2.案例分析法:通过分析实际案例,让学生学会使用C语言解决实际问题;3.实验法:让学生动手编写C语言程序,培养学生的编程能力。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:《C程序设计语言》;2.参考书:《C Primer Plus》、《C和指针》;3.多媒体资料:教学PPT、视频教程;4.实验设备:计算机、编程环境。

五、教学评估为了全面、客观地评估学生的学习成果,本课程将采用以下评估方式:1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性;2.作业:布置课后编程作业,评估学生的编程能力和理解程度;3.考试:进行期中、期末考试,考察学生对C语言知识的掌握程度和编程能力。

六、教学安排本课程的教学安排如下:1.教学进度:按照教材的章节顺序进行教学,确保学生系统地掌握C语言知识;2.教学时间:每周安排2课时,共16周,保证有足够的时间进行教学和练习;3.教学地点:计算机实验室,方便学生进行编程实践。

七、差异化教学为了满足不同学生的学习需求,本课程将采取以下差异化教学措施:1.针对学习困难的学生,提供额外的辅导和练习机会;2.对于编程能力较强的学生,提供进阶的编程项目和挑战;3.鼓励学生根据自己的兴趣选择编程项目,激发学习热情。

C语言红绿灯课程设计

C语言红绿灯课程设计

C语言红绿灯课程设计一、课程目标知识目标:1. 让学生理解并掌握C语言中条件语句的使用,特别是if-else结构;2. 使学生能够运用循环语句(如for循环)编写程序;3. 帮助学生掌握C语言中函数的定义和调用方法;4. 让学生了解并使用C语言中的常用库函数进行程序设计。

技能目标:1. 培养学生运用C语言解决实际问题的能力,如模拟红绿灯控制系统;2. 培养学生分析问题、设计算法、编写程序、调试程序的能力;3. 提高学生团队协作和沟通能力,通过小组讨论和分享,优化程序设计。

情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习积极性,树立自信心;2. 培养学生勇于尝试、不断实践的精神,养成遇到问题积极解决的良好习惯;3. 引导学生认识到编程在生活中的应用,体会科技对生活的改变,培养社会责任感。

课程性质:本课程为实践性较强的课程,结合实际生活中的红绿灯控制系统,使学生将所学知识应用于实际项目中。

学生特点:学生具备一定的C语言基础,对编程有一定了解,但实践经验不足。

教学要求:结合学生特点,采用案例教学、任务驱动等方法,引导学生通过实践掌握C语言编程技能。

教学过程中注重培养学生的问题分析能力、团队协作能力和创新能力。

通过课程学习,使学生达到预期的学习成果。

二、教学内容1. C语言基础知识回顾:变量、数据类型、运算符、表达式。

2. 条件语句:if-else结构,switch-case结构,条件表达式的使用。

3. 循环语句:for循环,while循环,do-while循环,循环控制语句(break,continue)。

4. 函数:函数的定义,函数的调用,局部变量和全局变量,递归函数。

5. 常用库函数:stdio.h中的输入输出函数,stdlib.h中的系统调用函数。

6. 红绿灯控制系统设计:分析红绿灯工作原理,设计程序流程图,编写程序代码。

7. 程序调试与优化:学习使用调试工具,分析程序运行过程中的错误,优化程序性能。

c语言交通灯课程设计

c语言交通灯课程设计

c语言交通灯课程设计一、教学目标本课程的教学目标是使学生掌握C语言编程基础,能够运用C语言设计简单的交通灯控制系统。

具体目标如下:1.知识目标:•了解C语言的基本语法和数据类型。

•掌握条件语句、循环语句等控制结构。

•理解交通灯系统的工作原理和设计思路。

2.技能目标:•能够使用C语言编写简单的程序。

•能够运用条件语句和循环语句实现交通灯的控制逻辑。

•能够独立设计并实现一个简单的交通灯控制系统。

3.情感态度价值观目标:•培养学生的编程兴趣和自信心。

•培养学生的团队合作意识和解决问题的能力。

•培养学生的创新思维和勇于尝试的精神。

二、教学内容本课程的教学内容主要包括C语言的基本语法和数据类型、条件语句和循环语句等控制结构,以及交通灯系统的设计和实现。

具体内容如下:1.C语言的基本语法和数据类型:•变量和常量的声明和使用。

•数据类型的定义和转换。

•运算符的使用和运算规则。

2.条件语句和循环语句:•if语句和switch语句的条件判断。

•for循环、while循环和do-while循环的循环控制。

3.交通灯系统的设计和实现:•交通灯系统的工作原理和设计思路。

•交通灯控制逻辑的编写和调试。

•交通灯控制系统的测试和优化。

三、教学方法本课程的教学方法采用讲授法、案例分析法和实验法相结合的方式,以激发学生的学习兴趣和主动性。

具体方法如下:1.讲授法:通过讲解C语言的基本语法和数据类型、条件语句和循环语句等控制结构,使学生掌握基础知识。

2.案例分析法:通过分析交通灯系统的设计案例,引导学生理解交通灯系统的工作原理和设计思路。

3.实验法:通过编写和调试交通灯控制程序,培养学生的实际操作能力和编程技巧。

四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。

具体资源如下:1.教材:选用权威出版的C语言编程教材,为学生提供系统性的知识学习。

2.参考书:提供相关的编程参考书籍,丰富学生的学习资料。

3.多媒体资料:制作课件和教学视频,以图文并茂的方式讲解知识点。

c语言课程设计交通

c语言课程设计交通

c语言课程设计交通一、课程目标知识目标:1. 掌握C语言基础语法,如变量定义、数据类型、运算符和表达式;2. 学会使用C语言控制结构,包括顺序、选择和循环结构;3. 了解C语言数组、函数和指针的基本概念及应用;4. 能够利用C语言编写简单的交通模拟程序。

技能目标:1. 能够运用所学知识,分析交通问题的需求,提出解决方案;2. 培养编程思维,掌握程序设计的步骤,具备独立编写C程序的能力;3. 提高问题解决能力,通过编写程序解决交通模拟中的实际问题;4. 学会使用调试工具,分析并解决程序中的错误。

情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习积极性,树立自信心;2. 培养学生的团队合作意识,学会与他人共同解决问题;3. 增强学生的社会责任感,关注交通问题,意识到编程在解决现实问题中的应用价值;4. 培养学生严谨、细致的学习态度,养成良好的编程习惯。

本课程针对高年级学生,课程性质为实践性较强的学科。

根据学生特点,课程目标注重培养学生的实际操作能力和问题解决能力。

在教学过程中,要求教师关注学生的个体差异,提供有针对性的指导,确保学生能够达到预期的学习成果。

通过本章节的学习,学生将能够运用C语言知识,设计出符合实际交通需求的程序,提高编程能力和实际问题解决能力。

二、教学内容1. C语言基础语法:- 变量定义、数据类型及转换;- 运算符和表达式;- 控制结构:顺序、选择(if-else)、循环(for、while)。

教学内容关联教材:第一章至第三章。

2. 数组与函数:- 一维数组、二维数组;- 函数定义、声明与调用;- 递归函数。

教学内容关联教材:第四章、第五章。

3. 指针:- 指针的定义与使用;- 指针与数组;- 指针与函数。

教学内容关联教材:第六章。

4. 交通模拟程序设计:- 分析交通问题,提出解决方案;- 编写程序实现交通信号灯控制;- 编写程序模拟车辆行驶。

教学内容关联教材:实践项目章节。

C语言实训——交通灯程序

C语言实训——交通灯程序
MOV TL1,#0B0H
DJNZ R3,LP1
RET
END
C语言编程如下:
#include <REG51.H>
unsigned char t0,t1;//定义全局变量,用来保存延时时间循环次数
//函数名:delay0_5s1
//函数功能:用T1的方式1编制0.5秒延时程序,假定系统采用12MHz晶振,定
22pF
2
电阻
300
12
发光二极管
12
跟我做3——制作电路板
采用万能板焊接电路元器件,制作电路板。
跟我做4——编写交通灯控制程序
程序设计的思路为:由主程序负责向P1口发送交通灯显示数据,
用寄存器R2存放调用0.5s延时子程序的次数,只要修改调用次数就可获得不同的延时时间。延时子程序采用定时器T1,工作方式1实现50ms定时,用寄存器R3存放循环次数,循环10次便可获得0.5s的延时。主程序流程图如图1.8.3所示。
DJNZ R2,YEL1
MOV P1,#0KEH
MOV R2,#32H
DISP2: ACALL DELAY_500MS
DJNZ R2,DISP2
MOV R2,#06H
WARN2: CPL P1.0
ACALL DELAY_500MS
DJNZ R2,WARN2
MOV P1,#0DDH
MOV R2,#04H
i=P1;//保护现场,暂存P1口、t0、t1、TH1、TH0
j=t0;
k=t1;
l=TH1;
m=TH0;
EA=1;//开中断
P1=0xf3;// A道放行
delay_t1(10);//延时5秒
EA=0;//关中断

C语言单片机交通灯毕业设计

C语言单片机交通灯毕业设计

目录摘要 (1)一、设计目的 (2)二、设计任务和要求 (2)三、设计原理分析 (2)四、硬件模块及功能 (3)1、个模块功能 (3)2、材料清单 (4)3、硬件图 (5)五、软件模块及功能 (6)1、个模块功能原理 (6)2、程序清单 (6)3、程序流程图 (9)六、调试运行 (10)1、程序编译链接 (10)2、观察模拟仿真 (11)七、心得体会 (12)参考文献 (12)致谢 (13)摘要:单片微型计算机(单片机)自问世以来,因其小巧灵活、成本低、控制能力强、易于产品化等优势,在社会各领域中得到广泛的应用。

根据89C52单片机的特点及交通灯在实际控制中的特点,本文提出一种利用单片机自动控制交通灯及时间倒计时显示的方法,将整个系统缩小在一块小小的单片机上,大大提高了产品的经济性和轻便性。

设计过程包括硬件电路设计和程序设计两大步骤。

硬件电路其结构比较简单,主要包括核心器件单片机、12只二极管组成的模拟交通灯、复位电路、振荡电路、显示数码管模块。

单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。

机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。

Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。

本文就用Keil编程,相比硬件设计程序设计较为复杂,必需同时考虑灯控制、时间显示、紧急开关等问题,并且具有一定的C语言基础和一定的思维能力及逻辑能力。

交通灯控制器课程设计报告 c语言

交通灯控制器课程设计报告  c语言

目录目录 (1)摘要 (4)关键词 (4)Abstract (4)Keywords (4)1、引言 (5)2、设计方案论证 (5)2.1主控芯片选择方案 (5)2.2电源模块选择方案 (5)2.3显示模块选择方案 (5)2.4数码管显示模块选择方案 (5)2.5键盘接口模块选择方案 (5)3、简介 (6)3.1调试软件keil (6)3.2硬件仿真Proteus (6)4、课题描述与分析 (6)4.1系统需求描述与分析 (6)4.2系统工作流程 (7)5、课题设计 (8)5.1总体设计 (8)5.2硬件设计 (10)5.2.1单片机最小系统 (10)5.2.2 电源模块电路模块 (10)5.2.3时钟和复位电路模块 (11)5.2.4数码管显示电路模块 (11)5.2.5 LED灯显示模块 (12)5.2.6键盘接口电路模块 (13)5.2.7串行通信接口电路 (14)5.3软件设计 (14)5.3.1整体流程图 (14)5.3.2主程序模块 (15)5.3.3数码管显示模块 (15)5.3.4键盘扫描程序模块 (16)5.3.5闪烁显示程序模块 (17)5.3.6按键处理程序模块 (18)5.3.7定时器0和定时器1中断模块 (18)6、系统测试 (19)6.1硬件调试 (19)6.1.1 电源模块调试 (19)6.1.2 单片机最小系统模块调试 (20)6.1.3 MAX232下载模块检测 (21)6.14 红绿灯显示检测 (21)6.1.5 数码管显示检测 (21)6.2整体电路测 (22)6.3软件调试 (22)7、结论 (22)参考文献 (23)附录 (24)谢辞 (43)摘要本文介绍了交通灯系统的设计。

本系统硬件部分基于STC12C5410AD单片机,由键盘接口模块,稳压电源模块,串行通信接口模块和数码管、交通灯显示接口模块组成。

本系统的软件部分基于KeilC51软件系统。

本系统利用单片机的定时器产生秒信号,控制十字路口的红绿黄灯交替点亮和熄灭,并且用4只数码管显示十字路口两个方向的剩余时间。

  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,南北红灯不变;如此循环,从而实现交通灯的作用。

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

相关文档
最新文档