p1口亮灯实验c语言代码,p1口亮灯实验报告.docx

p1口亮灯实验报告

实验一P1口亮灯实验  一、实验目的  熟悉编程和程序调试  学习P1口的使用方法;  学习延时子程序的编写。  二、实验内容  P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。  三、实验预备知识  P1口为准双向口,可定义为输入,也可定义为输出。  本实验中延时子程序采用指令循环来实现,机器周期*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。  四、程序框图  五、实验步骤  实验步骤说明:  本实验需要用到单片机最小应用系统和十六位逻辑电平显示模块。  用P1口做输出口,接十六位逻辑电平显示,程序功能使发光二极管点亮。1.使用单片机实验箱,用扁平数据线将单片机P1口与LED灯相连。~用插针连至L1~L8。  2.用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。  3.打开KeiluVision2仿真软件,首先建立本实验的项目文件,输入源程序),进行编译,直到编译无误。生成hex文件。  5.打开实验板总电源,将hex文件下载到实验板内,观察发光二极管显示情况。参考例子:  点亮板子上的第一个灯LED1  点亮板子上的LED1、LED3、LED5、LED7灯,与LED2、LED4、LED6、LED8  灯交替闪烁  流水灯:从LED1---LED8依次点亮  参考程序:  1)  #include  voidmain()  {  P1=0xfe;  }  2)  #include  #defineuintunsignedint  #defineucharunsignedchar  voiddelay();  voidmain()  {  while(1)  {  P1=0xaa;  delay();  P1=0x55;  delay();  }  }  voiddelay()  {  uintx,y;  for(x=100;x>0;x--)  for(y=600;y>0;y--)  }  3)  #include  #include>  #defineuintunsignedint  #defineucharunsignedchar  uchartemp,num;;  voiddelay(uint);  voidmain()  {  temp=0xfe;  }  voiddelay(uintz)  {  }  实验内容:  请在keil环境下编写一下程序:  1)点亮最后一个LED  2)点亮LED1、LED2、LED5、LED6这四个LED  3)让第三个LED闪烁  4)设计出流水灯程序,从LED8—LED1  注:在做完实验时记得养成一个好习惯:把相应单元的短路帽和电源开关还原到原来的位置!以下将不再重述。while(1){}for(num=0;num0;x--)for(y=110;y>0;y--);  六、思考  修改延时常数,使发光二极管闪亮时间改变。  修改程序,使发光二极管闪亮移位方向改变。  七、实验电路  实验二P1口亮灯实验  一、实验目的  (1)学习P1口的使用方法;  (2)学习延时子程序的编写。  二、实验预备知识  (1)P1口为准双向口,每一位都可独立地定义为输出线或输入线。  (2)本实验中延时子程序采用指令循环来实现,机器周期*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。  三、实验内容  P1作为输出口,接八只发光二极管,编写程序,使发光二极管循环顺序点亮。  四、程序框图  五、实验电路  六、实验步骤  ~用插针连至L1~L8,运行程序后,观察发光二极管闪亮移位情况。  七、修改程序,分别完成以下任务:  1、修改程序,使二极管闪亮时间改变。  2、修改程序,使二极管闪亮移位方向改变。  3、修改程序,循环实现二极管全亮和全灭。  4、修改程序,循环实现先一次亮4只,然后亮另外4只。  5、修改程序,循环实现先点亮奇数灯,在点亮偶数灯。  6、修改程序,循环实现先顺序点亮奇数灯,在顺序点亮偶数灯。  7、使用定时器T0实现二极管循环点亮  参考程序:  ORG0000H  AJMPSE18  ORG0790H  SE18:MOVP1,#0FFH;送P1口  LO34:MOVA,#0FEH;L1发光二极管点亮  LO33:MOVP1,A  LCALLSE19;延时  RLA;左移位  SJMPLO33;循环  SE19:MOVR6,#0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值