单片机课程设计1文档格式.docx

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

单片机课程设计1文档格式.docx

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

单片机课程设计1文档格式.docx

2.1设计任务:

交通灯的硬件和软件设计

2.2设计目的

1.进一步熟悉和掌握单片机的结构和工作原理。

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

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

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

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

三.设计思路

交通灯的变化规律

按照常规我们假设一个十字路口为东西南北走向。

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

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

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

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

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

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

表一交通灯变化流程

25S

5S

东西道

红灯亮

绿灯亮

黄灯闪烁

南北道

四.硬件介绍

基础知识

交通灯控制器实例主要使用了89C51单片机的定时器,基础知识主要包括交通灯的变化规律、定时器概念和工作方式、以及数码管的动态显示方式。

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.4定时器/计数器的4种工作方式

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

表2定时器/计数器工作方式

M1

M2

工作方式

方式0,为13位定时器/计数器

1

方式1,为16位定时器/计数器

方式2,为初值自动重装的8位定时器/计数器

方式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次。

下面计算定时器的初值。

定时器初值TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

5.2定时器中断服务程序

voidtime()interrupt1

{

TH0=(65536-50000)/256;

i++;

if(i==10)

{

i=0;

num++;

if(num==2*max)

{

num=0;

flag=~flag;

}

}

}

每0.5ms定时器中断发生,num+1,程序跳转到中断服务程序T0-INT开始执行。

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

六.电路图及仿真设计

6.1手动调时

图1

6.2设计完成原理图如下

在电路连接完成后,将写好的程序放入单片机,运行。

图2电路原理图

6.2在初始状态南北绿灯,东西红灯,持续时间为25s

图3初始状态

6.3南北跳转到黄灯5s,东西仍为红灯

图4转为状态2

6.3在南北转换为红灯的同时,东西灯转换到绿灯持续25s。

图5转为状态3

6.4东西转换为黄灯持续5s,南北红灯不变;

如此循环,从而实现交通灯的作用。

图6状态4

七.总结

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

同时不仅巩固了以前所学过的知识,而且还学到了很多在书本上所没有学到过的知识。

在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。

一切问题必须要靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的提升。

对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计中的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。

因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。

通过这次课程设计我发现单片机原理应用行很强,只有老师的讲解不行,只看也不中,只有自己动手去做才会发现自己确实有太多的不足,许多的原理,程序看似简单,真正去做才知道知识并没有自己想象的那样扎实。

从而懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。

而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。

参考文献:

【1】单片机的C语言应用程序设计马忠梅籍顺心航空航天大学2007

【2】51单片机应用开发案例精选王为青邱文勋人民邮电2007

【3】51系列单片机设计实例楼然苗广飞航空航天大学2003

【4】单片机原理与接口技术胡汉才清华大学2006

【5】单片机原理与应用丁元杰机械工业2007

附程序:

#include<

reg52.h>

#defineucharunsignedchar

#defineuintunsignedint

sbitkai=P3^0;

sbitjia=P3^1;

sbitjian=P3^2;

bitguan=1,flag=0,ci=0;

ucharcodetable[]={

0xc0,0xf9,0xa4,0xb0,0x99,

0x92,0x82,0xf8,0x80,0x90};

uchari,num;

ucharmax=30;

voiddelay(ucharz)

ucharx,y;

for(x=0;

x<

z;

x++)

for(y=0;

y<

110;

y++);

voidkey()

while(!

kai)

delay(10);

if(!

kai)guan=~guan;

while(!

kai);

voidtiao()

bitsub,add;

if((bit)(P3&

0x02)==0)

delay(5);

if((bit)(P3&

{

add=(bit)(P3&

0x02);

max++;

if(max>

30)

max=30;

while(!

add)

{

}

}

}

if((bit)(P3&

0x04)==0)

sub=(bit)(P3&

0x04);

max--;

if(max<

6)

max=6;

sub)

voidmain()

TMOD=0x01;

EA=1;

while

(1)

key();

if(guan)

ET0=1;

TR0=1;

if(!

flag)

{

if(num<

2*(max-5))

P2=0xde;

P0=0XF2;

P1=table[(max-num/2)/10];

delay

(1);

P1=0xff;

P0=0xf1;

P1=table[(max-num/2)%10];

elseif(num<

2*max)

if(num%2)P2=0x2e;

elseP2=0x3e;

P0=0XF1;

}

if(flag)

P2=0xf3;

if(num%2)P2=0x35;

elseP2=0x37;

}

else

TR0=0;

tiao();

P0=0XF2;

P1=table[max/10];

delay

(1);

P1=0xff;

P0=0xF1;

P1=table[max%10];

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

当前位置:首页 > 解决方案 > 工作计划

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

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