单片机实验三 流水灯实验

时间:2024.5.15

电子信息工程系实验报告

课程名称:单片微型计算机与接口技术                       

实验项目名称:实验三 流水灯实验             实验时间:20##-11-21    

班级:****              姓名:****              学号:****   

                                                                                                                                             

一、实 验 目 的:

    1、进一步熟悉keil仿真软件、proteus仿真软件的使用。

2、了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。

3、掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。

二、实 验 环 境:

硬件:windows 7

软件:keil 4, Proteus 7.8

三、实验原理:

输入输出接口的作用:数据缓冲功能;信号转换功能;接受和执行CPU命令的功能。

MCS-51系列单片机有四组8位并行I/O口,记作P0、P1、P2和P3。每组I/O口内部都有8位数据输入缓冲器、8位数据输出锁存器及数据输出驱动等电路。

四组并行I/O端口即可以按字节操作,又可以按位操作。当系统没有扩展外部器件时,I/O端口用作双向输入输出口;当系统作外部扩展时,使用P0、P2口作系统地址和数据总线、P3口有第二功能,与MCS-51的内部功能器件配合使用。

以P1口为例,内部结构如下图所示:

 

                         图  P1口的位结构

                       图1    P1口的位结构

作输出时:输出0时,将0输出到内部总线上,在写锁存器信号控制下写入锁存器,锁存器的反向输出端输出1,下面的场效应管导通,输出引脚成低电平。输出1时,下面的场效应管截止,上面的上拉电阻使输出为1。作输入时:P1端口引脚信号通过一个输入三态缓冲器接入内部总线,再读引脚信号控制下,引脚电平出现在内部总线上。

    四个并行口使用的注意事项如下:

1、如果单片机内部有程序存贮器,不需要扩展外部存贮器和I/O接口,单片机的四个口均可作I/O口使用;

2、四个口在作输入口使用时,均应先对其写“1”,以避免误读;

3、P0口作I/O口使用时应外接10K的上拉电阻,其它口则可不必;

4、P2可某几根线作地址使用时,剩下的线不能作I/O口线使用;

    5、P3口的某些口线作第二功能时,剩下的口线可以单独作I/O口线使用。

四、实:

   1、建一个keil项目程序 建一个protues电路图的过程

          (1)protues电路图:一个LED灯 一个开关

                    

                                  图一 一个LED灯 一个开关protues电路图

                         (2)keil项目程序:程序1、开关控制灯亮灭

                               程序2、开关按下灯闪三下

   程序1代码如下:


 #include"reg52.h"

#define uint unsigned int

#define uchar unsigned char

sbit kg=P1^0 ;

sbit deng=P2^0;

  }

  void main()

 while(1)

 { kg=1;

   if(kg==0)

   deng=1;

   else

   deng=0;

  }

}


  程序2代码如下:


 #include"reg52.h"

#define uchar unsigned char

#define uint unsigned int

sbit kg=P1^0 ;

sbit deng=P2^0;

void delay_50ms(uint t)

{

  uint j;

  for(;t>0;t--)

   for(j=6245;j>0;j--);

}

void main()

{

  while(1)

 {

   uchar i;

   deng=0;

   kg=1;

   if(kg==0)

  

           for(i=0;i<3;i++)

           {

               deng=1;

               delay_50ms(10);

               deng=0;

               delay_50ms(10);

             

       

            }

   else

           deng=0;

  

  }

}


 

2、一个keil项目程序 建一个protues电路图

         (1) protues电路图:8个LED灯 两个开关(类型 数量自定)

           

                               图二  8个LED灯protues电路图

                           (2) keil项目程序:程序3、单向流水灯

                              程序4、双向流水灯(自选 移位)

  

程序3代码如下:                    

 


#include"reg52.h"

#include <intrins.h>

#define uint unsigned int

#define uchar unsigned char 

 void delay_50ms(uint t)

{

  uint j;

  for(;t>0;t--)

   for(j=6245;j>0;j--);

}

 void main()

{  uchar i;

       while(1)

       {

      P2=0x01;

     for(i=0;i<8;i++)

              {

               

               delay_50ms(10);

               P2=_crol_(P2,1);

                delay_50ms(10);

               }

       }

}


程序4代码如下:

 


#include"reg52.h"

#include <intrins.h>

#define uint unsigned int

#define uchar unsigned char

uchar a,b;

void delay_50ms(uint t)

{

  uint j;

  for(;t>0;t--)

   for(j=6245;j>0;j--);

}    void main()

{  uchar i;

    while(1)

    {

      a=0x01;

      b=0x80;

      P2=a|b;

     for(i=0;i<3;i++)

        {

         delay_50ms(10);

         a=_crol_(a,1);

         b=_cror_(b,1);

         P2=a|b;

          delay_50ms(10);

         }

    }

}


五、实析:

    protues电路图见下图:

  

    在对各个程序生成的hex文件对其进行仿真,运行后,验结果和实验预期一样。

六、实

    通过本次的实验,熟悉keil仿真软件、proteus仿真软件的使用。了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项


第二篇:单片机流水灯实验


实验二 单片机并口简单应用(流水灯)

实验目的

1、了解单片机汇编语言程序的基本结构

2、了解单片机汇编语言程序的设计和调试方法

3、掌握顺序控制程序的简单编程

实验仪器

单片机开发板、万利仿真机、稳压电源、计算机

实验原理

1、  流水灯硬件电路

如图4-1所示,流水灯硬件电路由移位寄存器74LS164、功能选择开关J502、二极管、三极管、单片机并口(P0)、限流电阻等组成。发光二极管连接成共阳极结构。发光二极管点亮的条件是:阳极接高电平、各阴极接低电平。因此,通过程序控制74LS164的Q0端。Q0端输出0,公共端阳极就接成高电平,然后再按一定规则从P0口输出数据,发光二极管就会点亮。

 

图4-1 流水灯电路图

2、  单片机流水灯程序设计

由上图可知,发光二极管要点亮,需要先把J502的2、3脚相连,三极管Q500导通,然后从P0口输出数据。

(1)控制三极管导通程序

控制三极管有两种方法,第一种:在74LS164的第8脚产生一个正脉冲,此时1脚为0,三极管就导通;为1,三极管就截止。

第二种:在单片机IO模拟74LS164时序,一次输出一个字节,只要Q0=0即可控制三极管开通。为1,三极管截止。

两种方法的程序流程如图4-2所示。

 

图4-2 流水灯位选信号控制

(2)产生流水灯效果程序

三极管导通后,就可以从P0口输出数据控制发光二极管。P0口输出数据既可以编写程序逐个输出,也可以将输出数据序列定义在存储器中,然后用读程序存储器指令逐个取出并输出到P0口。

程序流程图如图4-3所示。

 

图4-3 流水灯程序流程图

实验内容

/*********************************

功能:流水灯(间隔200ms

**********************************/

#include <reg52.h>

#include <intrins.h>

#define uchar unsigned char

#define uint  unsigned int

sbit LEDDIN=P2^3; //位声明

sbit LEDCLK=P3^4;

void delay_1ms(uchar z);//函数声明

void delay_50ms(uchar t);

void mian()

{

       uchar i;

       for(i=0;i<7;i++)//关闭数码管

       {

              LEDDIN=1;

              LEDCLK=0;

              LEDCLK=1;

       }

       LEDDIN=0;

       LEDCLK=0;

       LEDCLK=1;  //产生一个脉冲,使三极管导通

       P0=0xfe;

       delay_50ms(4);  //延时200ms

       while(1)

       {

              P0=_crol_(P0,1);        

              delay_50ms(4);    

       }

}

void delay_1ms(uchar z)//延时1ms

{

       uint x,y;

       for(x=z;x>0;x--)

              for(y=123;y>0;y--);

}

void delay_50ms(uchar t)//延时50ms

{

       uint j;

       for(;t>0;t--)

       for(j=6245;j>0;j--);

}

实验思考题

1、请把学号后两位数进转换成二进制数,然后依次点亮其中为1对应的二极管,写出输出序列。例如,60号转换成二进制后是0011 1100B,依次点亮四个1对应的二极管,输出序列是0DFH, 0EFH, 0F7H, 0FCH.(从低位到高位也可以)

答:

#include <reg52.h>

#define uchar unsigned char

#define uint  unsigned int

sbit LEDDIN=P2^3; //位声明

sbit LEDCLK=P3^4;

uchar code table[]={0xfb,0xfe,0xef,0xdf,0xbf,0x7f}//输出序列

void delay_1ms(uchar z);//函数声明

void mian()

{

uchar i;

for(i=0;i<7;i++)//关闭数码管

{

        LEDDIN=1;

        LEDCLK=0;

        LEDCLK=1;

}

LEDDIN=0;

LEDCLK=0;

LEDCLK=1;   //产生一个脉冲,使三极管导通

P0=0xff; //关闭二极管

delay_1ms(2);  //延时2ms

while(1)

{

        for(i=0;i<6;i++)

{

               P0=table[i];          

               delay_1ms(5);       

        }

}

}

void delay_1ms(uchar z)//延时1ms

{

uint x,y;

for(x=z;x>0;x--)

        for(y=123;y>0;y--);

}

2、  单片机P0口为何要加上拉电阻?

答:

        由于51单片机P0口设计成开漏极的结构:

         1.一般51单片机的P0口在作为地址/数据复用时不接上拉电阻;

         2.作为一般的I/O口时用时,由于内部没有上拉电阻,故要接上上拉电阻;

         3.当p0口用来驱动PNP管子的时候,就不需要上拉电阻,因为此时的低电平有效;

         4.当P0口用来驱动NPN管子的时候,就需要上拉电阻的,因为此时只有当P0为

           1时候,才能够使后级端导通。

实验调试与心得

              本次实验第一次由我们自己写程序自己调试,在调试的过程中发现关闭数码时,产生脉冲中加一个延时后数码管就没办法全部关闭。调试了很久还是没找去原因所在,只好把延时去掉。我在调试时将延时程序延时误差精确到4us。通过本次实验使我掌握了51单片机I/O并口的简单应用,并且也了解到74LS164的工作原理。

更多相关推荐:
单片机实验报告——流水灯

电子信息工程学系实验报告课程名称:单片机原理及接口实验项目名称:实验2流水灯实验时间:20xx-10-21班级:电信092姓名:蔡**学号:*********一、实验目的:进一步熟悉keil仿真软件、prote…

51单片机流水灯实验报告

51单片机流水灯试验一实验目的1了解51单片机的引脚结构2根据所学汇编语言编写代码实现LED灯的流水功能3利用开发板下载hex文件后验证功能二实验器材个人电脑80c51单片机开发板三实验原理单片机流水的实质是单...

单片机流水灯实验报告

单片机流水灯实验报告一实验目的1熟练掌握AT89S52型开发板的使用方法和注意事项2了解简单单片机应用系统的设计方法3掌握应用KEIL软件编辑编译源汇编程序的操作方法4掌握应用USBISP烧录软件的操作方法5帮...

单片机并口简单应用(流水灯)实验报告

实验一单片机并口简单应用流水灯一实验目的1了解单片机汇编语言程序的基本结构2了解单片机汇编语言程序的设计和调试方法3掌握顺序控制程序的简单编程二实验仪器单片机开发板万利仿真机稳压电源计算机三实验原理1流水灯硬件...

单片机花样流水灯设计实验报告

**大学物理学院单片机花样流水灯设计实验课题:花样流水灯设计班级:物理***姓名:***学号:【摘要】当今时代的智能控制电子技术,给人们的生活带来了方便和舒适,而每到晚上五颜六色的霓虹灯则把我们的城市点缀得格外…

单片机实验报告花样流水灯

电子工艺学考试作品报告作品名称花样流水灯姓名专业班级学号中南大学物理与电子学院1目录第一章系统整体概述第二章第三章第四章第五章硬件设计软件设计调试与分析制作感受2摘要当今时代的智能控制电子技术给人们的生活带来了...

单片机流水灯实验报告 (2)

流水灯实验报告一实验目的1熟练掌握AT89S52开发板的使用方法和注意事项2了解简单单片机应用系统的设计方法3掌握应用KEIL软件编辑编译源汇编程序的操作方法4掌握应用AVRFIGHT烧录软件的操作方法二实验内...

利用uPD78F0485单片机流水灯实验报告

大学单片机实验报告题目流水灯设计姓名XX学号学院计算机与信息技术学院专业软件工程指导教师20xx年6月3日灯舞设计思路程序开始运行音乐开始播放播放完成后小灯开始跳舞按下key1键屏幕LCD显示数字1表示第一式红...

单片机流水灯实验报告

实验报告一流水灯实验报告计12122张震一实验目的了解流水灯实验二实验器材韦福Lab8000系列通用为控制器实验系统二实验内容代码Org0000HMovA01HLoopmovp1ACalldelayR1ALjm...

单片机流水灯实验

实验二单片机并口简单应用流水灯实验目的1了解单片机汇编语言程序的基本结构2了解单片机汇编语言程序的设计和调试方法3掌握顺序控制程序的简单编程实验仪器单片机开发板万利仿真机稳压电源计算机实验原理1流水灯硬件电路如...

单片机流水灯实验报告

流水灯实习报告一实验原理单片机通过P0口连接锁存器74ls273P0同时作为低八位地址实验板内P2口连接74ls138任意一个输出连接74ls273片选再将74ls273接八个LED灯通过软件控制对74ls27...

嵌入式系统与单片机 流水灯 实验报告

中南大学嵌入式系统与单片机实验报告学生姓名学号专业班级指导教师学院信息科学与工程学院完成时间20xx年5月实验名称单片机流水灯实验目的进一步熟悉keil仿真软件伟福仿真器和实验板的使用了解并熟悉实验板上单片机I...

单片机流水灯实验心得(21篇)