C51单片机实验报告流水灯交通灯定时器双机交互时钟.docx

上传人:b****8 文档编号:9189694 上传时间:2023-05-17 格式:DOCX 页数:12 大小:19.62KB
下载 相关 举报
C51单片机实验报告流水灯交通灯定时器双机交互时钟.docx_第1页
第1页 / 共12页
C51单片机实验报告流水灯交通灯定时器双机交互时钟.docx_第2页
第2页 / 共12页
C51单片机实验报告流水灯交通灯定时器双机交互时钟.docx_第3页
第3页 / 共12页
C51单片机实验报告流水灯交通灯定时器双机交互时钟.docx_第4页
第4页 / 共12页
C51单片机实验报告流水灯交通灯定时器双机交互时钟.docx_第5页
第5页 / 共12页
C51单片机实验报告流水灯交通灯定时器双机交互时钟.docx_第6页
第6页 / 共12页
C51单片机实验报告流水灯交通灯定时器双机交互时钟.docx_第7页
第7页 / 共12页
C51单片机实验报告流水灯交通灯定时器双机交互时钟.docx_第8页
第8页 / 共12页
C51单片机实验报告流水灯交通灯定时器双机交互时钟.docx_第9页
第9页 / 共12页
C51单片机实验报告流水灯交通灯定时器双机交互时钟.docx_第10页
第10页 / 共12页
C51单片机实验报告流水灯交通灯定时器双机交互时钟.docx_第11页
第11页 / 共12页
C51单片机实验报告流水灯交通灯定时器双机交互时钟.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C51单片机实验报告流水灯交通灯定时器双机交互时钟.docx

《C51单片机实验报告流水灯交通灯定时器双机交互时钟.docx》由会员分享,可在线阅读,更多相关《C51单片机实验报告流水灯交通灯定时器双机交互时钟.docx(12页珍藏版)》请在冰点文库上搜索。

C51单片机实验报告流水灯交通灯定时器双机交互时钟.docx

C51单片机实验报告流水灯交通灯定时器双机交互时钟

C51单片机实验报告流水灯交通灯定时器双机交互时钟

C51单片机实验报告流水灯交通灯定时器双机交互时钟

学号:

班级:

自动化10班姓名:

张指导老师:

2019.12

单片机核心板实验要求

一、流水灯实验

、实验目的:

)简单I/O引脚的输出2)掌握软件延时编程方法3)简单按键输入捕获判断2、完成功能要求

)开机是点亮12发光二极管,闪烁三下2)按照顺时针循环依次点亮发光二极管

3)通过按键将发光二极管的显示改为顺逆时针方式

二、定时器或实时时钟实验

、实验目的)数码管动态显示技术2)定时器的应用3)按键功能定义2、完成功能要求

)通过按键可以设定定时时间,启动定时器,定时时间到,让12个发光二极管闪烁,完成定时器功能。

)实时时钟,可以设定当前时间,完成钟表功能(四位数码管分别

显示分钟和秒)。

上述二个功能至少完成一种功能。

三、双机通信实验

1、实验目的UART串行通信接口技术应用2、完成功能要求

用两片核心板之间实现串行通信,将按键信息互发到对方数码管显示。

四、交通灯实验

1、实验目的1)按键、数码管、发光二极管综合应用编程技术2)数据存储于EEPRO的技术

(也可以不使用)3)定时中断技术4)按键中断技术2、完成功能要求

)对每个路口(主干道、次干道)的绿灯时间,及黄灯时间的设定。

)设定参数掉电后不丢失(如果不使用EEPRO,此功能可以不实现)。

)紧急按键功能,当按下该键时,所有路口变成红灯,相当于交警指挥特殊车辆通过。

再按该键,恢复正常显示。

实验一流水灯实验

一、实验目的1)简单I/O引脚的输出2)掌握软件延时编程方法3)简单按键输入捕获判断二、实验实现的功能1)开机是点亮12发光二极管,闪烁三下2)按照顺时针循环依次点亮发光二极管3)通过按键将发光二极管的显示改为顺逆时针方式三、

系统硬件设计

1)如单片机核心板所示的硬件电路。

四、系统软件设计

设计思路:

1)定义数组使得调用数组可以使led灯能够顺时针和逆时针显示;2)将按键的输入端全部置零,做单独按键使用;3)利用“while”循环使得数码管可以闪烁三下;

)利用“for”循环使得小灯能够依次点亮一个周期;5)将以上思想汇总,编程,实现功能。

程序详见附录。

五、实验过程中遇到的问题及解决方法

1)刚开始不知道怎样只设置一个管脚(如POP),查阅相关资料后知道表示方法,

并学会了用“sbit”语句定义,方便多了。

2)对于C语言的很多东西都不知道,语句的用法也不清楚,重新看了C语言,用到什

么看什么很快就懂了。

)主程序中没有用延时程序和死循环导致led不能点亮,请教同学以后才知道。

4)对于按键只是不了解,看书又很模糊,看了网上“KINGST工作室”也就是“手把手教你学单片机”的视频后很清楚明了,之后好多东西也是从上边学到,就不再赘述了。

指导老师签字:

日期:

实验二定时器或实时时钟实验

一、实验目的1)数码管动态显示技术2)定时器的应用3)按键功能定义二、实验实现的功能1)通过按键可以设定定时时间,启动定时器,定时时间到,让12个发

光二极管闪烁,完成定时器功能。

2)实时时钟,可以设定当前时间,完成钟表功能(四位数码管分别显示分钟和秒)。

上述二个功能至少完成一种功能。

三、系统硬件设计

1)如单片机核心开发板所示的硬件电路。

四、系统软件设计设计思路:

1)做的是秒表定时器的实验;

)利用中断技术实现利用单片机定时器完成计时功能;

)定时器1计时中断程序每隔0.001s中断一次并当作一个计数,则1000次中断为

1秒,然后十进制进位即可;

)在程序开始计数器不工作时设定一个值,当计数器工作时将时间与设定时间比较,如果想等,计数器停止工作,小灯闪烁三下;5)将以上思想汇总,编程,实现功能。

程序详见附录。

五、实验过程中遇到的问题及解决方法

1)最开始的时钟和秒表都没有用计时器和中断,但是也达到了实验要求,最后又改用始终计时器,浪费了很多时间。

)不知道怎么使数码管显示不同数字,从网上学到用动态扫描来显示。

)认真学习了中断技术并运用之后,切实意识到中断技术是单片机的核心技术,数码管显示也变得简单和稳定了。

)子程序中的参数传递不出来,在网上搜索以后知道了全局变量和局部变量,并知道了“void”的作用。

)运用“!

”符号后不用再麻烦的写“key==0”,很实用

指导老师签字:

实验三双机通信实验

一、实验目的1)UART串行通信接口技术应用二、实验实现的功能

1)用两片核心板之间实现串行通信,将按键信息互发到对方数码管显示。

三、系统硬件设计

1)如单片机核心板所示的硬件电路。

四、系统软件设计设计思路:

1)该实验不对端口进行复杂操作,所以实验较简单;2)设定波特率并计算出“TH1”和”TL1”的值;3)对单片机进行初始化;

4)通过键盘扫面程序读出按下降的键并给予相关的编号;5)输出编号;

6)读入数过来的值;7)在数码管上显示;

8)将以上思想汇总,编程,实现功能。

程序详见附录。

五、实验过程中遇到的问题及解决方法

)对UART技术不了解,看书和视频以后有了初步了解。

)按照课本上的程序模仿之后发现可以接收不能发送,认真查询程序发现了在利用

数码管显示时将“P0=0XF7直接将按键检测端口置高,按键无效了。

3)解决问题二之

后还是不能发送数据,最后检查发现直接用“IF(TI)”不能有效地开通发送标志位,所以用了先将初值赋值给一个数,检测之后比较,并用比较结果进入发送允许,最后实现。

指导老师签字:

实验四交通灯试验

一、实验目的1)按键、数码管、发光二极管综合应用编程技术2)数据存储于EEPRO的技术(也可以不使用)3)定时中断技术4)按键中断技术二、实验实现的功能1)对每个路口(主干道、次干道)的绿灯时间,及黄灯时间的设定。

2)设定参

数掉电后不丢失(如果不使用EEPRO,M此功能可以不实现)。

3)紧急按键功能,当按下该键时,所有路口变成红灯,相当于交警指挥特殊车辆通过。

再按该键,恢复正常显示。

三、系统硬件设计

1)如单片机核心板所示的硬件电路。

四、系统软件设计设计思路:

)该实验较麻烦,但是有实验一和实验二做铺垫思路也是很清晰地;

)交通灯为南北通东西停——等待——东西通南北停——等待——南北通东西停,,依次循环,所以应该设计一个周期包含以上四步;

)计数器工作时比较计数器的值和所设定的置,确定范围,确定该范围内显示的灯的种类;

)对于急停的情况,应该在每秒都检测一下键盘,如果键盘有输入,中断,执行全部红灯的程序;

)关于跳出急停程序,用“while“循环和”if“语句实现;6)红绿灯和黄灯的显

示时间在程序最开始计数器未开始工作室设定两个数的值;7)将以上思想汇总,编程,

实现功能。

程序详见附录。

五、实验过程中遇到的问题及解决方法

1)该实验是一个综合性较强的实验,不过由于有实验一,实验二的铺垫,在技术上遇到的问题已经很少了,但是还是遇到一些问题。

2)最开始的时钟和秒表都没有用计时器和中断,但是也达到了实验要求,最后又改用始终计时器,浪费了很多时间。

)在急停之后如何出循环成为一个很大的困惑,最后运用了“while”循环解决了

)发现用子程序以后会使程序简明不少。

指导老师签字:

附录:

实验一流水灯实验

最终实现:

按任意键反向,只是必须等到一轮结束以后。

程序如下:

#include

#defineucharunsignedchar

sbitko仁P3W;sbitko2=P3A7;sbitki仁戸0人5;sbitki2=P0A6;sbitki3=P0A7;

tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff};

tab2[]={0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3b,0x37,0x2f,0x1f};

tab3[]={0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

tab4[]={0x1f,0x2f,0x37,0x3b,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f};

voidDelay900ms()//@11.0592MHz{unsignedchari,j,k;i=13;j=156;

k=83;do{do{while(__k);}while(__j);}while(__i);}

voidDelay10ms()//@11.0592MHz{unsignedchari,j;

i=108;

j=145;do{while(__j);

}while(__i);}

voidflick(){uchard;while(d

voidmain(){ucharb,y,n;flick();while

(1){n=b;y=(n%2);if(y==1)

{ucharx;for(x=0;x

ko2=0;ki1=1;ki2=1;ki3=1;if(!

ki1||!

ki2||!

ki3){Delay10ms();if(!

ki1||!

ki2||!

ki3)b+=1;

while(!

ki1||!

ki2||!

ki3);}}

}if(y==0){ucharx;for(x=0;x

实验二定时器时钟实验

最终实现:

上电后设置定时时间,按2号键时间+1,按3号键时间+100;按1号键开始工作;时间到偶小灯闪烁3下,回到初始状{

unsignedchari,j;i=54;j=199;do{态。

程序如下:

#include

#defineucharunsignedchar#defineuintunsignedint

sbitko仁P3W;sbitko2=P3A7;sbitki仁戸0人5;sbitki2=P0A6;sbitki3=P0A7;

sfrP1M1=0x91;sfrP1M0=0x92;

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

tab2[]={0xf7,0xfb,0xfd,0xfe};tab3={0};uinta=0;uintb=0;

voidDelay100ms()//@11.0592MHz{unsignedchari,j,k;i=5;j=52;k

=195;do{do{while(__k);}while(__j);}while(__i);}

voidDelay5ms()//@11.0592MHz

while(__j);}while(__i);}

voidflick(){uchard;while(d

voidshow(){

charj;switch(j){case

0:

P0=tab2[j];j++;P1=tab1[tab3];break;case

1:

P0=tab2[j];j++;P1=tab1[tab3];break;case

2:

P0=tab2[j];j++;P1=tab1[tab3];break;case

3:

P0=tab2[j];j=0;P1=tab1[tab3];break;default:

break;}}

voidinterrupt_timer1()interrupt3

{TH1=0xfc;TL1=0x67;a++;if(a==1000){b++;a=0;tab3=b%10;

tab3=b/10%10;tab3=b/100%10;tab3=b/1000%10;}show();}

voidmain(){ucharm,k;uintn=1;P1M1=0x00;P1M0=0xff;TMOD=0x10;

TH1=0xfc;TL1=0x67;ET1=1;EA=1;while

(1){if(!

TR1){k=0;for(k=0;k

}

}

{TR1=1;break;}while(!

ki1);}if(!

ki2){Delay5ms();if(!

ki2)n+=1;

while(!

ki2);}if(!

ki3){Delay5ms();if(!

ki3)n+=100;while(!

ki3);}tab3=n%10;tab3=n/10%10;tab3=n/100%10;tab3=n/1000%10;for(m=0;m

if(b==n){TR1=0;b=0;n=1;flick();}

实验三双机通信实验

最终实现:

两机连接后按任意键可在两外的机子上显示该键编号。

程序如下:

#include

#defineucharunsignedchar#defineuintunsignedint

sfrP1M1=0x91;sfrP1M0=0x92;

sbitko仁P3W;sbitko2=P3A7;sbitki仁戸0人5;sbitki2=P0A6;sbitki3=P0A7;

sbitscran=戸0人3;

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

uchara,b,n;

voidDelay5ms()//@11.0592MHz{unsignedchari,j;i=54;j=199;do

{while(__j);}while(__i);}

voidmain(){SCON=0xd0;TMOD=0x20;PCON=0x00;TH1=0xf4;

TL1=0xf4;TR1=1;scran=0;while

(1){n=a;ko1=0;ko2=1;ki1=1;ki2=1;

ki3=1;if(!

ki1){

}if(!

ki2){}if(!

ki3){}

ko1=1;ko2=0;ki1=1;ki2=1;ki3=1;if(!

ki1){

Delay5ms();if(!

ki1)a=1;

while(!

ki1);

Delay5ms();if(!

ki2)a=2;

while(!

ki2);

Delay5ms();if(!

ki3)a=3;

while(!

ki3);

Delay5ms();if(!

ki1)a=4;

while(!

ki1);

if(!

ki2){Delay5ms();if(!

ki2)a=5;while(!

ki2);}if(!

ki3){Delay5ms();if(!

ki3)a=6;while(!

ki3);}if(a!

=n){SBUF=a;while(!

TI);TI=0;}if(RI){b=SBUF;RI=0;}

P1=tab1[b];

}

}

实验四交通灯实验

3号键增加黄灯时间,3、4、5任意键继续(从最终实现:

上电之后进行初始设置,2号键增加红绿灯时间,初始时间都为零;1号键开始工作;按3、

3号键增加黄灯时间,

3、4、5任意键继续(从

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

tab2[]={0xf7,0xfb,0xfd,0xfe};tab3={0};

第一步开始。

程序如下:

#include

#defineucharunsignedchar#defineuintunsignedint

voidled_show();

ucharm,n;uinta=0;uintb=0;

uchark,c,d,f,g;

sfrP1M1=0x91;sfrP1M0=0x92;

sbitko仁P3W;sbitko2=P3A7;sbitki仁戸0人5;sbitki2=P0A6;sbitki3=P0A7;

sbitdh=P2A2;sbitdl=P2A0;sbitdy=P2Al;

sbitxh=P3A2;sbitxl=P2A6;sbitxy=P2A7;

sbitnh=P2A5;sbitnl=P2A3;sbitny=P2A4;

sbitbh=P3A5;sbitbl=P3A3;

voidshow(){charj;switch(j){

case0:

P0=tab2[j];j++;P1=tab1[tab3];break;case1:

P0=tab2[j];j++;P1=tab1[tab3];break;case2:

P0=tab2[j];j++;P1=tab1[tab3];break;case3:

P0=tab2[j];j=0;P1=tab1[tab3];break;default:

break;}}

voidDelay5ms()//@11.0592MHz{unsignedchari,j;i=54;j=199;do

{while(__j);}while(__i);}

voidinterrupt_timer1()interrupt3{TH1=0xfc;TL1=0x67;a++;if(a==1000)

{b++;a=0;}if(b=0){tab3=(m-b)%10;

tab3=(m-b)/10%10;tab3=(m-b)/100%10;tab3=(m-b)/1000%10;}if(b=m){tab3=(d-b)%10;tab3=(d-b)/10%10;xh=0;

bh=0;while(!

ki1||!

ki2||!

ki3);while(ki1){if(!

ki1||!

ki2||!

ki3)

{while(!

ki1||!

ki2||!

ki3);tab3=(d-b)/100%10;tab3=(d-b)/1000%10;}if(b=d){tab3=(f-b)%10;tab3=(f-b)/10%10;tab3=(f-b)/100%10;tab3=(f-b)/1000%10;}if(b=f){tab3=(g-b)%10;tab3=(g-b)/10%10;tab3=(g-b)/100%10;tab3=(g-b)/1000%10;}show();}

voiddet(){ko1=1;ko2=0;ki1=1;ki2=1;ki3=1;if(!

ki1||!

ki2||!

ki3)

{Delay5ms();if(!

ki1||!

ki2||!

ki3){P2=0xdb;bl=1;by=1;

b=0;break;}}}}}

voidled_show(){while

(1){dl=1;xl=1;nl=1;bl=1;dh=1;xh=1;nh=1;

bh=1;dy=1;xy=1;ny=1;by=1;d=(m+n);f=(2*m+n);g=(2*m+2*n);if(b=0){dl=0;xl=0;nl=1;bl=1;dh=1;xh=1;nh=0;

//东西通

bh=0;dy=1;xy=1;ny=1;by=1;det();}

if(b=m){dl=1;xl=1;nl=1;bl=1;dh=1;xh=1;nh=1;bh=1;dy=0;xy=0;ny=0;by=0;det();}

if(b=d){dl=1;xl=1;nl=0;bl=0;dh=0;xh=0;nh=1;bh=1;dy=1;xy=1;ny=1;by=1;det();}

if(b=f){dl=1;xl=1;nl=1;

//黄

//南北通//黄

bl=1;

dh=1;xh=1;nh=1;bh=1;dy=0;xy=0;ny=0;by=0;det();}if(b==g)b=0;}}

voidmain(){P1M1=0x00;P1M0=0xff;TMOD=0x10;TH1=0xfc;TL1=0x67;ET1=1;EA=1;TR1=0;while

(1){if(!

TR1){k=0;for(k=0;k

led_show();}

while(!

ki1);}

if(!

ki2){Delay5ms();if(!

ki2)m+=1;while(!

ki2);}

if(!

ki3){Delay5ms();if(!

ki3)

n+=1;while(!

ki3);}tab3=m%10;tab3=m/10%10;tab3=n%10;tab3=n/10%10;for(c=0;c

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2