好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

94页
  • 卖家[上传人]:工****
  • 文档编号:512836613
  • 上传时间:2022-10-03
  • 文档格式:DOCX
  • 文档大小:611.70KB
  • / 94 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 实验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,延时一段时间,再顺序点亮D2……D4,然后又是D4……D1,同时只能有一个灯亮;然后每隔一段时间一次使相邻两个灯亮,三个灯亮,四个灯亮,最后闪烁三次,接着循环变化l 基于Proteus ISIS仿真环境完成上述功能的仿真l 基于uVision2单片机集成开发环境与硬件平台完成程序的脱机运行四、实验原理图图3.1 跑马灯实验电路原理图电路原理图如上图3.1所示,AT89S52的P1.0~P1.3控制4个发光二极管,发光二极管按照一定次序发光,相邻发光二极管的发光时间间隔可以通过定时器控制,还可以通过软件延时实现。

      五、软件流程图与参考程序l 主程序流程图如下: 开 始初始化(定时器、中断、标志位设置)Flag=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;x>0;x--) for(y=200;y>0;y--);}void init()//条件初始化函数{ flag=0; speed=10;//控制跑马灯流水速度 TMOD=0x01;//中断方式 TH0=(65535-50000)/256; TL0=(65536-50000)%256;//初值 EA=1;//打开总中断 ET0=1;//打开外中断0 TR0=1;}void main(){ init();//调用初始化函数 while(1) { if(flag) { delay(2000);//调用延时函数 for(num=0;num<4;num++)//从左至右间隔一个依次闪烁 { P1=table[num]; delay(2000); } for(num=3;num>0;num--)//从左至右间隔一个依次闪烁 { P1=table[num]; delay(2000); } for(num=0;num<4;num++)//从左至右间隔两个依次闪烁 { P1=table1[num]; delay(2000); } for(num=3;num>0;num--)//从左至右间隔两个依次闪烁 { P1=table1[num]; delay(2000); } for(num=0;num<6;num++)//两个,三个,四个跑马灯依次闪烁 { P1=table2[num]; delay(2000); } for(num=0;num<5;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==speed) { aa=0; flag=1; } }六、实验思考题l 请用汇编指令完成本实验内容,深刻理解汇编语言程序设计结构。

      l 在本实验中,I/O口作为输出口使用,如果把I/O口的某些口线作为输入口使用时,如何获得输入引脚状态?请举例说明l 在画软件流图时,各种不同形式方框意义是否相同?请举例示之l 请简要叙述中断服务程序功能并画出其流程图l 在采用I/O口作为输出口时要考虑哪些因素?如果负载变化,如何设计单片机与负载之间的接口电路?实验2 交通灯实验一、实验目的l 进一步掌握Proteus ISIS和 uVision2单片机集成开发环境的使用;l 进一步掌握单片机内部定时/计数器的使用及编程方法以及中断处理程序的编写方法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个发光二极管,使发光二极管按照一定规则与次序发光与闪亮以实现模拟交通灯的功能。

      假设初始状态为:(南北通行状态)南北绿灯、东西红灯(25s);后转为过度状态:南北黄灯、东西红灯(5s);再转为东西通行状态:东西绿灯、南北红灯25(s)再转为过渡状态:东西黄灯、南北红灯(5s),然后循环往复硬件原理图如上图3.2所示由于发光二极管的导通电压为1.7V,所以在电源与二极管之间加一个电阻,目的是保护二极管;实验中利用定时计数器实现1S的定时,然后在此基础上实现所需要的定时时间五、软件流程图与参考源程序l 软件设计思想:在编程时,我们一般把一个独立的功能设计成一个子程序或者说函数对于不同的设计者而言,对软件功能的划分角度不同,对应的函数功能也存在差异开 始南北绿灯 东西红灯25南北黄灯 东西红灯5东西绿灯 南北红灯25东西黄灯 南北红灯5结 束定 时 器图3.3 软件结构图l 参考源程序如下:#include//头文件#define uint unsigned int#define uchar unsigned char//定义下方便使用sbit kong=P1^4;//位声明 数码管锁存控制端uchar code table[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};//数字0-9编码uint tt,temp=0; /************************************************ 延时函数**************************************************/ void delay(uint x){ uchar i,k; for(i=0;i30) { if(temp<=35) { display(temp-30); P2=0Xf5;//南北黄灯、东西红灯(5s) } else { display(temp-30); P2=0xdd; //南北绿灯、东西红灯(25s) } } else { if(temp<=5) { display(temp); P2=0xee; //东西黄灯、南北红灯(5s) } else { display(temp); P2=0xeb; //东西绿灯、南北红灯25(s) } } if(tt==20) //判断时间是否过。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.