微机实验报告 - 图文(4)

2019-01-10 12:59

delay(5); TR0=1; num=20; D2=0; D3=1; D4=1; D6=1; D7=1; D8=0; }

if(K2==0) { delay(5); flag=1; TR0=1; num=40; D2=1; D3=1; D4=0; D6=0; D7=1; D8=1; }

if(K6==0) {delay(5); flag=2; TR0=1; num=50; D2=0; D3=1; D4=1; D6=1; D7=1; D8=0; }

if(K7==0) {delay(5); flag=3; TR0=1; num=30; D2=1; D3=1; D4=0; D6=0;

D7=1; D8=1; } display(num); } }

void time0(void) interrupt 1 using 1 {

TH0=0x3c; TL0=0xb0; aa++;

if(aa == 20)

{ //如果到了1s aa = 0; num--; if(num<=3) { D3 =0; D7=0;delay(100);}

D3 =1; D7=1;

if(num == 0) {

D2=~D2; D4=~D4;

D6=~D6;

D8=~D8;

if(flag==1) num=40; if(flag==2) num=50; if(flag==3) num=30;

else num=20; } } }

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

* * * 延时程序 *

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

void delay(unsigned int i) {

char j;

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

for(j = 200; j > 0; j--); }

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

* * * 外部中断0程序 *

****************************************************************************/ 外外部中断

void ewstop0(void) interrupt 0 using 0

{ if((num>=5)&&(D2==0)) {;}

if((num<5)&&(D2==0)) { D2=0; D4=1; D6=1; D8=0; num=5;

display(num); }

if(D4==0) { D2=0; D4=1; D6=1; D8=0; num=5;

display(num); }

}

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

* * * 外部中断1程序 *

****************************************************************************/ 外外部中断

void nsstop1(void) interrupt 2 using 2 {

if((num>=5)&&(D6==0)) {;}

if((num<5)&&(D6==0)) { D6=0; D8=1; D2=1; D4=0; num=5;

display(num); }

if(D8==0)

{ D6=0; D8=1; num=5; D4=0; D2=1;

display(num); } }

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

* * * 数码管显示程序 *

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

void display(x) { unsigned char i;

{

LedOut[0]=Disp_Tab[x/10]; LedOut[1]=Disp_Tab[x]; LedOut[3]=Disp_Tab[x/10]; LedOut[4]=Disp_Tab[x];

for( i=0; i<5; i++) //实现5位数码管动态扫描循环 {

P0 = LedOut[i]; //将字模送到P0口显示

switch(i) //使用switch 语句控制位选 也可以是用查表的方式 学员可以试着自己修改 {

case 0:LS138A=0; LS138B=0; LS138C=0; break; case 1:LS138A=1; LS138B=0; LS138C=0; break; case 3:LS138A=1; LS138B=1; LS138C=0; break; case 4:LS138A=0; LS138B=0; LS138C=1; break; }

delay(10); } }

}

5.5实验结果分析:

实验现象:

(1)平峰时段东西绿灯亮,南北绿灯亮20s(早高峰时段亮40s,午高峰时段亮

50s,夜间时段亮30s)。

(2)当东西方向绿灯亮且显示的时间大于5秒时亮灯状态按原来的规律变化即

紧急车辆通过。

(3)当显示的时间小于5秒时绿灯亮的时间延时至5秒让紧急车辆顺利通过。(4)当东西方向为红灯亮时,此时若紧急车辆到来则红灯亮转为绿灯亮且倒计 时5秒让紧急车辆顺利通过。

(5)5秒倒计时到0时转为原来的红灯亮且时间与上次中断事件相衔接。 由以上分析可知,该试验能实现紧急车辆优先功

6.1文献参考

1、李广弟,朱月秀,王秀山编著《.单片机基础》. 北京:北京航空航天大学出版社,2001

2、马忠梅编著《单片机的C语言应用程序额设计》北京:北京航空航天大学出版社,2001

3、张志良.单片机原理与控制技术 机械工业出版社

4、王守中.51单片机开发入门与典型实例 人民邮电出版社

5、刘守义.《单片机应用技术》,西安电子科技大学出版社 6、余锡存.《单片机原理与接口技术》,西安电子科技大学出版社

6.2心得体会:

这个课题刚开始看到后,无从下手。因为自己的编程基础差,再说单片

机实验开发仪也没怎么搞懂内部的结构,后来看了看例程便有了一些思路。于是就顺着这个思路走下去,本设计是围绕单片机而设计的,需要用到数电、模电、电路设计、C语言等方方面面的知识。在老师的指导下,同学的帮助下,加上个人的努力,本设计才能顺利完成。虽然实现的功能有些简单,但这是自己用心去做的,挺欣慰的。经过本次实验,我们熟悉了十字路口交通灯的工作方式,熟悉了单片机的C语言编程,使我们对自己的编程更有信心,通过了本次实验我们进一步了解了定时器/计数器中断的含义,对我们以后灵活运用定时计数器/计数器作好了铺垫。其实,在整个过程中我们翻阅大量的有关c51单片机编程的书籍,观看了大量的视频学习。其中有《新编单片机原理及应用》、《零基础学习c51单片机编程》、《c51编程及实例应用》等书籍。基本掌握了实验板的使用方法和工作原理;掌握了单片机定时器的使用和编程方法;掌握外部中断服务程序的基本编程方法。最后还要特别感谢我们的指导老师苏诗林和司莉云,他们给了我们很多宝贵指导,衷心得谢谢你们!在本次设计论文完成之际,首先要向我的指导老师苏诗林、司丽云老师表示真挚的谢意。本设计是围绕单片机而设计的,需要用到数电、模电、电路设计、C语言等方方面面的知识。在老师的指导下,同学的帮助下,加上个人的努力,本设计才能顺利完成。

由于学识有限,设计中、论文中难免有错,欢迎各位老师对本设计提出宝贵的意见。


微机实验报告 - 图文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:文科周练2017届高三文科数学测试卷(一)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: