《单片机实验二_3.docx》由会员分享,可在线阅读,更多相关《单片机实验二_3.docx(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机实验二一、实验目的1熟悉和把握AT89C51单片机的并口工作原理;2了解和把握单片机的并口输入输出应用。3把握数码管的使用方法。二、实验内容一、LED模拟交通灯讲明:东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮,红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁5此后变红灯,东西向变绿灯,如此重复。Proteus设计的仿真电路如下图。1运行下述程序,并在电路上验证。2假如要求黄灯闪烁3次后红灯亮,应该怎么该写程序?#include#defineucharunsignedchar#defineuintunsignedintsbitRED_A=P00;/东西向灯sbitYELLOW_A=P0
2、1;sbitGREEN_A=P02;sbitRED_B=P03;/南北向灯sbitYELLOW_B=P04;sbitGREEN_B=P05;ucharFlash_Count=0,Operation_Type=1;/闪烁次数,操作类型变量/延时voidDelayMS(uintx)uchari;while(x-)for(i=0;i#include#defineucharunsignedchar#defineuintunsignedintsbitRED_A=P00;/东西向灯sbitYELLOW_A=P01;sbitGREEN_A=P02;sbitRED_B=P03;/南北向灯sbitYELLOW_
3、B=P04;sbitGREEN_B=P05;ucharFlash_Count=0,Operation_Type=1;/闪烁次数,操作类型变量/延时voidDelayMS(uintx)uchari;while(x-)for(i=0;iFlash_Count=0;Operation_Type=1;/主程序voidmain()while(1)Traffic_Light();2、开关控制用AT89C51单片机控制四个按键K1到K4和四个发光二极管D1到D4,要求当按下K1或K2键时D1或D2点亮,松开时对应的发光二极管熄灭,当按下K3或K4后,D3或D4不停地闪烁。Proteus仿真电路如下列图。1验
4、证程序实现所要求的功能。若K3、K4同时按下时,D3和D4同时不停地闪烁,怎样改写程序?#include#defineucharunsignedchar#defineuintunsignedintsbitD1=P10;sbitD2=P11;sbitD3=P12;sbitD4=P13;sbitK1=P34;sbitK2=P35;sbitK3=P36;sbitK4=P37;voidDelayMS(uintx)/延时子程序uchart;while(x-)for(t=120;t0;t-);voidmain()/主程序P1=0xff;/四个二极管暗while(1)D1=K1;/D1反映K1开关的状态D2
5、=K2;/D2反映K2开关的状态if(K3=0)/K3按下时,D3的状态不停地变反while(K3=0)D3=D3;DelayMS(10);if(K4=0)/K4按下时,D4的状态不停地变反while(K4=0)D4=D4;DelayMS(10);修改:#include#defineucharunsignedchar#defineuintunsignedintsbitD1=P10;sbitD2=P11;sbitD3=P12;sbitD4=P13;sbitK1=P34;sbitK2=P35;sbitK3=P36;sbitK4=P37;voidDelayMS(uintx)/延时子程序uchart;
6、while(x-)for(t=120;t0;t-);voidmain()/主程序P1=0xff;/四个二极管暗while(1)D1=K1;/D1反映K1开关的状态D2=K2;/D2反映K2开关的状态if(K3=0&K4=0)/K3按下时,D3的状态不停地变反while(K3=0&K4=0)D3=D3;D4=D4;DelayMS(10);D3=1;D4=1;3、设计题目用AT89C52单片机驱动1个数码管,电路如下图,开场时显示0;以后每过1s,显示内容加1,显示内容从09不断循环,即实现1位秒表的功能。#include#defineucharunsignedchar#defineuintunsignedintucharcodeDSY_CODE=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;voidDelayMS(uintxms)uinti,j;for(i=xms;i0;i-)for(j=110;j0;j-);voidmain()uchari=0;P0=0x00;while(1)P0=DSY_CODEi;i=(i+1)%10;DelayMS(880);