单片机课程设计0.docx

上传人:b****5 文档编号:5649115 上传时间:2022-12-30 格式:DOCX 页数:19 大小:205.12KB
下载 相关 举报
单片机课程设计0.docx_第1页
第1页 / 共19页
单片机课程设计0.docx_第2页
第2页 / 共19页
单片机课程设计0.docx_第3页
第3页 / 共19页
单片机课程设计0.docx_第4页
第4页 / 共19页
单片机课程设计0.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

单片机课程设计0.docx

《单片机课程设计0.docx》由会员分享,可在线阅读,更多相关《单片机课程设计0.docx(19页珍藏版)》请在冰豆网上搜索。

单片机课程设计0.docx

单片机课程设计0

烟台南山学院

单片机课程设计

 

院(系):

计算机及电气自动化学院

专业班级:

电气自动化技术

学生姓名:

学号:

指导教师:

 

目录

第一章摘要……………………………………………….....2

第二章设计目的…………………………..………………...3

第三章总体设计………………..…………………………..4

第四章硬件电路设计……………………...……………….6

第五章主程序设计…………………………………………8

第六章源程序………………………………………………9

第七章总结………………………………………………...17

参考文献…………………………………………………….18

 

第一章摘要

课程设计是单片机课程的一个教学环节,该实验课程的目的旨在使学生能够理论联系实际,提高学生的动手能力,加深对课程的理解。

单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。

众所周知,单片机已经越来越广泛的应用于智能仪表、工业控制、日常生活等许多领域。

可以说单片机的应用已经渗透到人类生活、工作的每一个角落。

随着城市的发展,交通指挥系统越来越重要,也越来越庞大和复杂。

交通信号灯是交通管理部门设在路口,用来合理指挥调动车辆及行人交通的主要装置,对其控制的好坏直接影响到交通状况。

本课程设计一个简单的交通信号灯单片机顺序控制系统,能够实现十字路口红、黄、绿灯的定时交替转换。

近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。

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

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

那么靠什么来实现这井然秩序呢?

靠的就是交通信号灯的自动指挥系统。

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

本系统采用可编程并行I/O接口芯片89C51为中心器件来设计交通灯控制器,红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过PA口输出,显示时间直接通过8255的PC口输出至双位数码管);遇到紧急情况需要转换交通灯状态的可以通过强制将交通灯进行状态切换!

本系统实用性强、操作简单、扩展功能强。

 

关键词:

单片机交通灯紧急通行

第二章设计目的

掌握I/O口德综合应用技术;掌握延时子程序编写与使用;掌握单片机系统的仿真过程。

重点在程序,也就是指令得应用和理解!

经本次实训,提高学生的动手实践能力,并与实际相联系!

用所学的知识来解决现实中的一些问题,从而认识到知识的重要性!

1.通过试验进一步理解和消化了书本知识,分析每个语句的含义,运用所学知识进行简单的程序设计。

了解了在单片机系统中扩展简单I/O接口的方法.外部中断技术的基本使用方法,掌握了中断处理程序的编程方法。

2.通过在图书馆查阅各种单片机资料,培养了我自学和独立思考的能力。

与同学交流研究,让我懂得了更多以前不明白的知识.3.在课程设计过程中,不断调试程序和修改程序,提高了对单片机的应用能力,分析问题和解决问题的能力。

4.这样就可以实现按车流量规模给定绿灯时长,达到最大限度的有车放行,减少十字路口的车辆滞流,缓解交通拥挤、实现最优控制,从而提高了交通控制系统的效率

第三章总体设计

3.1设计任务

个十字路口交通灯控制器。

用单片机控制LED灯模拟指示。

模拟东西方向的十字路口交通信号控制情况。

东西向通行时间为25s,南北向通行时间为30s,缓冲时间为5s。

,模拟交通灯管理。

在一个交通十字路口有一条主干道(南北方向),一条从干道(东西方向),主干道的通行时间比从干道通行时间长,四个路口安装红,黄,绿,灯各一盏;

图1-1

3.2设计要求

1、设计一个十字路口的交通灯控制电路,要求东西方向(主干道)车道和南北

方向(从干道)车道两条交叉道路上的车辆交替运行,时间可设置修改。

2、在绿灯转为红灯时,要求黄灯闪烁,才能变换运行车道

3、黄灯亮时,要求每秒闪亮一次。

3.3设计方案

本课程设计是基于AT89C51设计的红绿交通灯。

用AT89C51与电阻、电容、开关等组成单片机的最小系统,AT89C51单片机的P1口驱动其中三个作为驱动端口驱动红绿交通灯亮与灭。

P1口是单纯的通用8位准双向I/O端口,每位可驱动4个TTL负载。

作为通用I/O端口,与P0端口的区别在于内部具有上拉电阻,所以输出时不用外接上拉电阻。

根据设计的要求可知,系统的硬件原理框图如下图1-2所示。

图1-2系统硬件框图

单片机可选用AT89C51,它与8051系列单片机全兼容,但其内部带有4KB的FLASHROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。

南北向和东西向各采用2个数码管计时,同时需要对该方向的指示灯的点亮时间进行倒计时。

键盘系统可以根据系统的需要设置不同的键的个数,可以选择线式键盘或矩阵式键盘,若单片机的IO口不够用时,可以考虑扩展8255或8155满足系统的要求。

3.4软件方案

根据设计要求,程序框图如图所示。

软件可由汇编语言完成,也可由C语言完成。

软件设计可以分为以下几个功能模块:

主程序:

初始化及键盘监控。

计时程序模块:

为定时器的中断服务子程序,完成0.1秒(或其他时间)和1秒的时间定时。

显示程序模块:

完成12个发光二极管和2个LED数码管的显示驱动。

 

第四章硬件电路设计

4.1单片机的最小系统

ATMEL公司生产的AT89C51单片机它是硬件电路的核心部分,时钟电路晶振使用12MHz,复位电路采取按键复位方式。

具体连接图2.1和图2.2

单片机系统的时钟电路

4.2电源电路设计

电源用5V直流变压器直接供电。

4.3数码管显示电路

显示电路采用2个共阴数码管,P1口作为数码管的输入。

数码管显示电路

4.4交通信号灯单片机顺序控制系统硬件原理图如下所示:

 

第五章主程序设计

主程序设计

 

系统程序流程图

 

第六章源程序

*第一个状态:

主干道、支干道均亮红灯5S*

*第二个状态:

主干道亮绿灯27S、支干道亮红灯*

*第三个状态:

主干道黄灯闪烁、支干道红灯闪烁*

*第四个状态:

主干道亮红灯、支干道亮绿灯22S*

*第五个状态:

主干道红灯闪烁、支干道黄灯闪烁*

*返回到第二个状态*

*其中外部中断INTO、INT1分别控制主、支干道亮绿灯*

**************************************************************/

/*11.0592MHz晶振*/

#include//头文件

#include//头文件

#defineucharunsignedchar//宏定义

#defineuintunsignedint//宏定义

sbitRED_ZHU=P1^0;

sbitYELLOW_ZHU=P1^1;

sbitGREEN_ZHU=P1^2;

sbitRED_ZHI=P1^3;

sbitYELLOW_ZHI=P1^4;

sbitGREEN_ZHI=P1^5;

uintaa,bai,shi,ge,bb;

/*数码管显示0-9*/

uintcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

/*子函数声明*/

voiddelay(uintz);

voiddelay0(uintz);

voiddisplay(uintge,uintshi);

voidxtimer0();

voidcheck();

voidinit1();

voidinit2();

voidinit3();

voidinit4();

voidinit5();

voidxint0();

voidxint1();

voidGREEN_ZHU_ON();

voidGREEN_ZHI_ON();

/*********************************************************

主函数

*********************************************************/

voidmain()

{

EA=1;//开中断

EX0=1;//允许外部中断INT0中断

IT0=0;//定义INT0触发方式

PX0=1;//中断优先级高

EX1=1;//允许外部中断INT1中断

IT1=0;//定义INT1触发方式

PX1=1;//中断优先级高

check();//开机自检

init1();//第1个状态

while

(1)

{

init2();//第2个状态

init3();//第3个状态

init4();//第4个状态

init5();//第5个状态

}

}

voidinit1()//第一个状态:

主干道、支干道均亮红灯5S

{

inttemp;

temp=6;//变量赋初值

TMOD=0x01;//定时器T0工作于方式1

TH0=0x4c;

TL0=0x00;//定时器赋初值

EA=1;//开中断

ET0=1;//开定时中断

TR0=1;//开定时器T0

while

(1)

{

RED_ZHU=0;

RED_ZHI=0;

GREEN_ZHU=1;

GREEN_ZHI=1;

YELLOW_ZHU=1;

YELLOW_ZHI=1;

if(aa==20)//定时20*50MS=1S

{

aa=0;//定时完成一次后清0

temp--;//变量自减

if(temp<0)

{

break;

}

shi=temp%100/10;//显示十位

ge=temp%10;//显示个位

}

display(ge,shi);

}

}

voidinit2()//第二个状态:

主干道亮绿灯27S、支干道亮红灯

{

inttemp;

temp=31;//变量赋初值

TMOD=0x01;//定时器T0工作于方式1

TH0=0x4c;

TL0=0x00;//定时器赋初值

EA=1;//开中断

ET0=1;//开定时中断

TR0=1;//开定时器T0

while

(1)

{

RED_ZHU=1;

RED_ZHI=0;

GREEN_ZHU=0;

GREEN_ZHI=1;

YELLOW_ZHU=1;

YELLOW_ZHI=1;

if(aa==20)//定时20*50MS=1S

{

aa=0;//定时完成一次后清0

temp--;//变量自减

if(temp==3)

{

break;

}

shi=temp%100/10;//显示十位

ge=temp%10;//显示个位

}

display(ge,shi);

}

}

voidinit3()//第三个状态:

主干道黄灯闪烁、支干道红灯闪烁

{

inttemp;

temp=4;//变量赋初值

TMOD=0x01;//定时器T0工作于方式1

TH0=0x4c;

TL0=0x00;//定时器赋初值

EA=1;//开中断

ET0=1;//开定时中断

TR0=1;//开定时器T0

while

(1)

{

GREEN_ZHU=1;

if(aa==20)//定时20*50MS=1S

{

aa=0;//定时完成一次后清0

temp--;//变量自减

YELLOW_ZHU=~YELLOW_ZHU;

RED_ZHI=~RED_ZHI;

if(temp<0)

{

break;

}

shi=temp%100/10;//显示十位

ge=temp%10;//显示个位

}

display(ge,shi);;

}

}

voidinit4()//第四个状态:

主干道亮红灯、支干道亮绿灯22S

{

inttemp;

temp=26;//变量赋初值

TMOD=0x01;//定时器T0工作于方式1

TH0=0x4c;

TL0=0x00;//定时器赋初值

EA=1;//开中断

ET0=1;//开定时中断

TR0=1;//开定时器T0

while

(1)

{

RED_ZHU=0;

RED_ZHI=1;

YELLOW_ZHU=1;

GREEN_ZHI=0;

if(aa==20)//定时20*50MS=1S

{

aa=0;//定时完成一次后清0

temp--;//变量自减

if(temp==3)

{

break;

}

shi=temp%100/10;//显示十位

ge=temp%10;//显示个位

}

display(ge,shi);

}

}

voidinit5()//第五个状态:

主干道红灯闪烁、支干道黄灯闪烁

{

inttemp;

temp=4;//变量赋初值

TMOD=0x01;//定时器T0工作于方式1

TH0=0x4c;

TL0=0x00;//定时器赋初值

EA=1;//开中断

ET0=1;//开定时中断

TR0=1;//开定时器T0

while

(1)

{

RED_ZHI=1;

GREEN_ZHU=1;

GREEN_ZHI=1;

if(aa==20)//定时20*50MS=1S

{

aa=0;//定时完成一次后清0

temp--;//变量自减

YELLOW_ZHI=~YELLOW_ZHI;

RED_ZHU=~RED_ZHU;

if(temp<0)

{

break;

}

shi=temp%100/10;//显示十位

ge=temp%10;//显示个位

}

display(ge,shi);

}

}

/*显示子函数*/

voiddisplay(uintge,uintshi)

{

P0=0xfd;

P2=table[shi];//显示十位

delay0(5);

P0=0xfe;

P2=table[ge];//显示个位

delay0(5);

}

voidxint0()interrupt0//外部中断INT0

{

GREEN_ZHU_ON();

}

voidxint1()interrupt2//外部中断INT1

{

GREEN_ZHI_ON();

}

voidGREEN_ZHU_ON()//外部中断INT0显示子程序

{

RED_ZHI=0;

RED_ZHU=1;

GREEN_ZHI=1;

GREEN_ZHU=0;

YELLOW_ZHI=1;

YELLOW_ZHU=1;

P0=0x00;

P2=0Xff;

delay0(1000);

return;

}

voidGREEN_ZHI_ON()//外部中断INT1显示子程序

{

RED_ZHI=1;

RED_ZHU=0;

GREEN_ZHI=0;

GREEN_ZHU=1;

YELLOW_ZHI=1;

YELLOW_ZHU=1;

P0=0x00;

P2=0xff;

delay0(1000);

return;

}

voidcheck()//开机自检子程序

{

RED_ZHI=0;

RED_ZHU=0;

GREEN_ZHI=0;

GREEN_ZHU=0;

YELLOW_ZHI=0;

YELLOW_ZHU=0;

P0=0x00;

P2=0Xff;

delay

(2);

RED_ZHI=1;

RED_ZHU=1;

GREEN_ZHI=1;

GREEN_ZHU=1;

YELLOW_ZHI=1;

YELLOW_ZHU=1;

P0=0xff;

P2=0xff;

}

/*定时中断子函数*/

voidxtimer0()interrupt1

{

TH0=0x4c;

TL0=0x00;

aa++;

}

/*延时子函数*/

voiddelay0(uintz)

{

uinti,j;

for(i=0;i

for(j=0;j<110;j++);

}

/*********************************************************

500ms延时函数

晶振:

11.0592MHz

*********************************************************/

voiddelay(ucharj)

{

uchark;

uinti;

for(;j>0;j--)

{

for(i=1250;i>0;i--)

{

for(k=180;k>0;k--);

}

}

}

 

第七章总结

单片机是微型计算机的一个重要的分支。

随着计算机技术的发展,单片机的应用领域也越来越广泛,它在工业控制、数据采集以及仪器仪表自动化等许多领域都起着十分重要的作用。

通过做基于单片机的交通灯顺序控制设计,不断查阅资料,我对单片机的体系及它在各个领域的应用有了一定的了解,对它的软件系统也有了一定的认识,并且增强了我对编程及编程环境的了解。

在总体上对单片机学习有了一定的提高,收获颇丰。

本系统采用AT-89系列单片机89C51和可编程并行I/O接口芯片8255A为中心器件来设计交通灯控制器,实现了能根据实际车流量通过AT89C51芯片的P3口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过P3口输出,显示时间直接通过8255的P0、P2口输出至双位数码管)。

系统不足之处不能控制车的左、右转、以及自动根据车流改变红绿灯时间等。

这是由于本身地理位子以及车流量情况所定,如果有需要可以设计扩充原系统来实现。

通过这次课程设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。

使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。

 

参考文献

【1】李军等,51系列单片机高级实例开发指南,北京航空航天大学出版社,2004.6

【2】何立民,单片机应用技术选编9【M】,北京航空航天大学出版社,2004.1

【3】王幸之等,AT89系列单片机原理与接口技术,北京航空航天大学出版社,

2004.5

【5】李朝青,单片机原理及接口技术,北京航空航天大学出版社,1999.3

【6】谢维成等,单片机原理与应用及C51程序设计,清华大学出版社,2006.8

【7】边海龙等,单片机开发与典型工程项目,电子工业出版社,2008.10

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1