单片机C51程序设计实验报告书(word文档良心出品)
实验一 并行输入输出口的使用
一、实验目的:学会设计proteus 7仿真电路,学习P1口的使用方法和延时子程序的编写用Keil uVision 3冬天的句子编程实现发光二极管的流水点亮。
二、实验原理:P1口为8位准双向I/O口,它的每一位都可以分别定义为输入线或输出线(作为输入时,口锁存器必须置1)。P1口作为输出,接8个发光二极管D1~D8经限流电阻分别接至8农村征地补偿标准个引脚。本实验仿真电路图、流程图如下:
三、实验代码:
#include<reg51.h>
#include<intrins.h>    //移位库函数包含于此头文件中
void delay(unsigned int d)    //定义延时子函数
{ while(--d>0);}
void main()
  { unsigned char i,sel;
    while(1)
    { sel=0xfe;
      for(i=0;i<=8;i++)
      { P1=sel;          //显示变量赋给P1
        delay(50000);    //延时
        sel=_crol_(sel,1);  //改变显示变量
      }
    }
  }
四、实验结论:while语句实现发光二极管循环流水点亮,从上到下一次点亮。
实验二 C51分支程序设计
一、实验目的:学习多分支选择结构和switch语句,了解循环的嵌套。
二、实验原理:中国的传统文化do while 循环先执行后判断是否循环,switch括号中的表达式的值与某case后的常量表达式的值相同时,就执行它后面的语句,遇到break语句则退出switch语句。本实验仿真电路图、流程图如下:
(仿真电路图)
(流程图)
三、实验代码:
#include <reg51.h>
void main()
{ char a;
  do
  { P1=0xff;
    a=P1;
    a=a&0x03;
    switch(a)
    { case 0:P2=0x0e;break;
      case 1:P2=0x0d;break;
      case 2:P2=0x0b;break;
        case 3:P2=0x07;break;
    }         
  }while(1);
}
四、实验结论:多分支选择的switch/case语句,可直接处理并行多分支选择问题,从匹配表达式的括号开始执行,不再进行判断。
实验三 外部中断实验
一、实验目的:掌握外部中断的原理以及中断处理程序的编写方法。
千里单骑打一数字
二、实验原理:外部中断0和外部中断1均为下降沿触发,当外部中断0发生时,P0端口的
电平反向,当外部中断1发生时,P1端口的电平反向,LED退伍军人考公务员状态取反,引脚P3.2P3.3是外部中断INT0INT1的输入端,本实验仿真电路图、流程图如下:
(仿真电路图)
    (主程序)                          (中断服务程序)
三、实验代码:
#include<reg51.h>
#include<stdio.h>
void ISO(void) interrupt 0
  { P0=~P0; }    //P0端口反向
void IS1(void) interrupt 2
  { P1=~P1; }    //P1端口反向
void main ()
{ P0=0x00; P1=0xFF;
  SCON=0x50;
  TMOD=0x22;
  TH1=0xF3;
  TR1=1;
  IT0=1; IT1=1;    //设置下降沿触发方式
  EX0=1; EX1=1; EA=1;  //中断允许
  while(1);
}
四、实验结论:利用外中断程序可控制LED的亮灭,P0口、P1口电平反向,LED状态取反。
实验四 定时/计数器实验
一、实验目的:学习定时计数器的使用和编写方法,进一步掌握中断处理程序的方法以及对示波器的了解。
二、实验原理:启动定时器T1延时10ms,当定时时间到产生中断,执行中断程序,LED熄灭,订火车票提前几天T1再延时10ms,点亮LED,如此循环,本实验仿真电路图、流程图如下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。