单片机整套实验及程序交通灯-跑马灯等.docx

上传人:新** 文档编号:559521138 上传时间:2024-02-16 格式:DOCX 页数:92 大小:690.51KB
返回 下载 相关 举报
单片机整套实验及程序交通灯-跑马灯等.docx_第1页
第1页 / 共92页
单片机整套实验及程序交通灯-跑马灯等.docx_第2页
第2页 / 共92页
单片机整套实验及程序交通灯-跑马灯等.docx_第3页
第3页 / 共92页
单片机整套实验及程序交通灯-跑马灯等.docx_第4页
第4页 / 共92页
单片机整套实验及程序交通灯-跑马灯等.docx_第5页
第5页 / 共92页
点击查看更多>>
资源描述

《单片机整套实验及程序交通灯-跑马灯等.docx》由会员分享,可在线阅读,更多相关《单片机整套实验及程序交通灯-跑马灯等.docx(92页珍藏版)》请在金锄头文库上搜索。

1、 实验1 跑马灯实验一、实验目的l 初步学会Proteus ISIS和 uVision2单片机集成开发环境的使用;l 初步掌握采用汇编语言与C语言开发单片机系统的程序结构;l 掌握80C51单片机通用I/O口的使用;l 掌握单片机内部定时/计数器的使用及编程方法以及中断处理程序的编写方法。二、实验设备及器件l 硬件:PC机,HNIST-1型单片机实验系统l 软件:Proteus ISIS单片机仿真环境,uVision2单片机集成开发环境三、实验内容l 编写一段程序,采用P1口作为控制端口,使与P1口相接的四个发光二极管(D1、D2、D3、D4)按照一定的方式点亮。如点亮方式为:先点亮D1,延时

2、一段时间,再顺序点亮D2D4,然后又是D4D1,同时只能有一个灯亮;然后每隔一段时间一次使相邻两个灯亮,三个灯亮,四个灯亮,最后闪烁三次,接着循环变化。l 基于Proteus ISIS仿真环境完成上述功能的仿真。l 基于uVision2单片机集成开发环境与硬件平台完成程序的脱机运行。四、实验原理图图3.1 跑马灯实验电路原理图电路原理图如上图3.1所示,AT89S52的P1.0P1.3控制4个发光二极管,发光二极管按照一定次序发光,相邻发光二极管的发光时间间隔可以通过定时器控制,还可以通过软件延时实现。五、软件流程图与参考程序l 主程序流程图如下: 开 始初始化(定时器、中断、标志位设置)Fl

3、ag=1?流水灯操作结 束YNl 参考程序#include#include#define uchar unsigned char#define uint unsigned intuchar aa,num,speed,flag;uchar code table=0x0e,0x0d,0x0b,0x07;uchar code table1=0x0a,0x05,0x09,0x06;uchar codetable2=0x0c,0x09,0x03,0x08,0x01,0x0e,0x0c,0x08,0x00;void delay(uint z)/延时函数uint x;uchar y;for(x=z;x0;x

4、-)for(y=200;y0;y-);void init()/条件初始化函数flag=0;speed=10;/控制跑马灯流水速度TMOD=0x01;/中断方式TH0=(65535-50000)/256;TL0=(65536-50000)%256;/初值EA=1;/打开总中断ET0=1;/打开外中断0TR0=1;void main()init();/调用初始化函数while(1)if(flag)delay(2000);/调用延时函数 for(num=0;num0;num-)/从左至右间隔一个依次闪烁 P1=tablenum;delay(2000); for(num=0;num0;num-)/从左

5、至右间隔两个依次闪烁 P1=table1num;delay(2000); for(num=0;num6;num+)/两个,三个,四个跑马灯依次闪烁 P1=table2num;delay(2000); for(num=0;num5;num+)/闪烁5次 P1=0xff;/全暗 delay(2000); P1=0X00;/全亮 delay(2000); speed=speed-3;/变速 if(speed=4)speed=10; void timer0() interrupt 1/中断函数TH0=(65535-50000)/256;TL0=(65536-50000)%256;aa+;if(aa=s

6、peed)aa=0;flag=1;六、实验思考题l 请用汇编指令完成本实验内容,深刻理解汇编语言程序设计结构。l 在本实验中,I/O口作为输出口使用,如果把I/O口的某些口线作为输入口使用时,如何获得输入引脚状态?请举例说明。l 在画软件流图时,各种不同形式方框意义是否相同?请举例示之。l 请简要叙述中断服务程序功能并画出其流程图。l 在采用I/O口作为输出口时要考虑哪些因素?如果负载变化,如何设计单片机与负载之间的接口电路?实验2 交通灯实验一、实验目的l 进一步掌握Proteus ISIS和 uVision2单片机集成开发环境的使用;l 进一步掌握单片机内部定时/计数器的使用及编程方法以及

7、中断处理程序的编写方法l 掌握单片机的I/O口编程使用。 二、实验设备及器件l 硬件:PC机,HNIST-1型单片机实验系统,USB下载线一根、连接线若干l 软件:Proteus ISIS单片机仿真环境,uVision2单片机集成开发环境三、实验内容l 编写一段程序,实现用单片机的I/O口控制12个发光二极管(四组,每组有红绿蓝三个发光二极管),使发光二极管按照一定的规则模拟交通灯功能。l 基于Proteus ISIS仿真环境完成上述功能的仿真。l 基于uVision2单片机集成开发环境与硬件平台完成程序的脱机运行。四、实验原理 图3.2 交通灯实验原理图用单片机的IO口控制4组红绿蓝共12个

8、发光二极管,使发光二极管按照一定规则与次序发光与闪亮以实现模拟交通灯的功能。假设初始状态为:(南北通行状态)南北绿灯、东西红灯(25s);后转为过度状态:南北黄灯、东西红灯(5s);再转为东西通行状态:东西绿灯、南北红灯25(s)。再转为过渡状态:东西黄灯、南北红灯(5s),然后循环往复。硬件原理图如上图3.2所示。由于发光二极管的导通电压为1.7V,所以在电源与二极管之间加一个电阻,目的是保护二极管;实验中利用定时计数器实现1S的定时,然后在此基础上实现所需要的定时时间。五、软件流程图与参考源程序l 软件设计思想:在编程时,我们一般把一个独立的功能设计成一个子程序或者说函数。对于不同的设计者

9、而言,对软件功能的划分角度不同,对应的函数功能也存在差异。开 始南北绿灯 东西红灯25南北黄灯 东西红灯5东西绿灯 南北红灯25东西黄灯 南北红灯5结 束定 时 器图3.3 软件结构图l 参考源程序如下:#include/头文件#define uint unsigned int#define uchar unsigned char/定义下方便使用sbit kong=P14;/位声明 数码管锁存控制端uchar code table=0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6;/数字0-9编码uint tt,temp=0;/* 延时函数*/

10、void delay(uint x)uchar i,k;for(i=0;ix;i+)for(k=0;k100;k+);/* 初始化函数*/void init()temp=0;tt=0;TMOD=0x01;/定时器工作方式TH0=(65536-50000)/256;TL0=(65536-50000)%256;/装初值EA=1;/开总中断ET0=1;/开定时器中断TR0=1;/启动定时器中断/* 数码管显示函数*/void display(uint x1)uchar i,c;uint cod4;cod3=x1/1000;cod2=x1%1000/100;cod1=x1%1000%100/10;cod0=x1%10 ;/求个数码管的值c=0x01;for(i=0;i4;i+)P1=c;/数码管的显示选择P0=tablecodi;/送要显示的值kong=1;/打开锁存c=c30) if(temp=35)display(temp-30);P2=0Xf5;/南北黄灯、东西红灯(5s)elsedisplay(temp-30);P2=0xdd; /南北绿灯、东西红灯(25s)else if(temp=5)display(temp);P2=0xee; /东西黄灯、南北红灯(5s)elsedisplay(temp);P2=0xeb; /东西绿灯、南北红灯25(s) if(tt=20) /判断时间是

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号