最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

华南农业大学单片机实验报告书

来源:动视网 责编:小OO 时间:2025-09-24 14:43:56
文档

华南农业大学单片机实验报告书

第四章:实验实验一闪烁LED实验(2学时)一、实验目的1、学会使用Keil建立51单片机Project和编译程序;2、学会程序延时的方法;3、学会使用单片机I/O口实现输出。二、实验内容通过软件延时,控制一位LED按设定的时间间隔闪烁。三、实验过程与结果记录1、单片机开发试验仪相关部分原理图2、程序(自行编写,C语言与汇编均可)#includesbitled=P1^0;unsignedinti,j;voidmain(){while(1){led1=0;for(i=1000;i>0;i--)fo
推荐度:
导读第四章:实验实验一闪烁LED实验(2学时)一、实验目的1、学会使用Keil建立51单片机Project和编译程序;2、学会程序延时的方法;3、学会使用单片机I/O口实现输出。二、实验内容通过软件延时,控制一位LED按设定的时间间隔闪烁。三、实验过程与结果记录1、单片机开发试验仪相关部分原理图2、程序(自行编写,C语言与汇编均可)#includesbitled=P1^0;unsignedinti,j;voidmain(){while(1){led1=0;for(i=1000;i>0;i--)fo
第四章:实验

实验一  闪烁LED实验(2学时)

一、实验目的

1、学会使用Keil建立51单片机Project和编译程序;

2、学会程序延时的方法;

3、学会使用单片机I/O口实现输出。

二、实验内容

通过软件延时,控制一位LED按设定的时间间隔闪烁。

三、实验过程与结果记录

1、单片机开发试验仪相关部分原理图

2、程序(自行编写,C语言与汇编均可)

#include

sbit led=P1^0;

unsigned int i,j;

void main()

{    while(1)

        {led1=0;

            for(i=1000;i>0;i--)

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

            led1=1;

         for(i=1000;i>0;i--)

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

        }

}

四、思考题

1、如何改变LED闪烁的时间间隔?

通过延时函数,让CPU持续延时,使循环体内LED状态在延时的时间内保持不变。

2、如何实现更精确的闪烁时间间隔?

用汇编可以精确延时,也可以用时钟中断,精确延时。

实验二  移位LED实验(2学时)

一、实验目的

1、学会二进制移位操作和循环语句在单片机中的用法;

2、认识CY位在汇编中如何参与移位。

二、实验内容

1、1个LED从左到右循环依次点亮;

2、1个LED左右来回循环依次点亮;

3、花式流水灯,自定义样式点亮8个LED。

三、实验过程与结果记录

1、单片机开发试验仪相关部分原理图,同实验一。

2、程序(自行编写,C语言与汇编均可)

1):#include

#define uchar unsigned char

uchar a;

void delay(int time)

{int x,y;

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

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

     }

void move(int x)

{ int i; 

    if(x==1)

        {

            a=0x01;}

            else if(x==2)

            {a=0xaa;}

            else

            {a=0x80;}

        

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

        {

            P0=a;

            delay(350);

        if(x==1)

     {a=a<<1;}

        else if(x==2)

     {a=a<<1;}

        else 

         {a=a>>1;}

        }

}

void main()

{int i;

a=0x01;

    

    while(1)

    {move(1);

    move(0);

        move(2);

        move(1);

        move(1);

        move(2);

        }

}

四、思考题

1、比较RR,RL和RRC,RLC指令的异同。

2、LED共阳极接法与共阴极接法,输出I/O口时有什么不同?

IO口输出对于不同情况,要取反。

实验三  七段数码管实验(2学时)

一、实验目的

1、学习七段数码管静态显示阿拉伯数字;

2、学习查表指令的使用。

二、实验内容

采用静态显示的方法,编程实现单个七段数码管循环显示0~9,主程序中的循环语句反复将0~9的段码送至P0口,使数字0~9循环显示。

三、实验过程与结果记录

1、单片机开发试验仪相关部分原理图,其中七段数码管采用共阳极接法。

2、程序(自行编写,C语言与汇编均可)

#include

#define uchar unsigned char 

uchar a;

uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}    ;

void delay(int time)

{int x,y;

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

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

     }

        

void main()

{P0=tab[6];

    while(1)

    {P0=tab[0];

     for(a=0;a<=9;a++)

        {

        P0=tab[a];

        delay(1000); 

        }  

    }}

四、思考题

1、数码管静态显示与动态显示有何异同?请写出各自适用范围。

静态显示就是一直都是那个输出,动态显示是在人眼不能分辨的情况下,快速变换输出。使用的io口比较少的时候,用动态显示。

2、数码管的共阳极接法与共阴极接法,输出字表有什么不同?

跟二极管类似,也是取反。

实验四  按键实验(2学时)

一、实验目的

1、学习按键的使用;

2、学习矩阵键盘的使用。

二、实验内容

判断按键输入(8位),当按下按键后,一位数码管显示对应的键值;

三、实验过程与结果记录

1、单片机开发试验仪相关部分原理图,其中LED与数码管部分同前述实验,按键部分原理图如下:

2、程序(自行编写,C语言与汇编均可)

#include    

#define uchar unsigned char

uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}    ;

//uchar code tab[]={0x90,0x80,0x82,0x92,0x99,0xb0,0xa4,0xf9,0xc0}    ;

sbit key0=P1^0;

sbit key1=P1^1;

sbit key2=P1^2;

sbit key3=P1^3;

sbit key4=P1^4;

sbit key5=P1^5;

sbit key6=P1^6;

sbit key7=P1^7;

int a,x,y;

void delay(int z)

{

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

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

}

void main()

{

    P0=tab[9];

    while(1)

    {

        if(key1==0)

        {

            delay(10);

            if(key1==0)

            {

               P0=tab[1];

            }

            while(!key1);

        }

         if(key2==0)

        {

            delay(10);

            if(key2==0)

            {

               P0=tab[2];

            }

            while(!key2);

        }

         if(key3==0)

        {

            delay(10);

            if(key3==0)

            {

               P0=tab[3];

            }

            while(!key3);

        }

        if(key4==0)

        {

            delay(10);

            if(key4==0)

            {

               P0=tab[4];

            }

            while(!key4);

        }

          if(key5==0)

        {

            delay(10);

            if(key5==0)

            {

               P0=tab[5];

            }

            while(!key5);

        }

           if(key6==0)

        {

            delay(10);

            if(key6==0)

            {

               P0=tab[6];

            }

            while(!key6);

        }

             if(key7==0)

        {

            delay(10);

            if(key7==0)

            {

               P0=tab[7];

            }

            while(!key7);

        }

    }         

}

四、思考题

1、为什么需要按键防抖?如何实现软件去抖?

因为机械按键按下的瞬间,会在1和0之间抖动数次,不去抖,会多次输入,产生干扰。

先判断是否按下按键,再延时10ms,进入第二重判断,在判断里面进行按键响应的对应操作,延时直到按键松开,退出第一重判断

实验五  串口通信实验(2学时)

一、实验目的

1、学习单片机与PC之间的串口通信;

二、实验内容

1、通过一位按键,每按一次,数字(从0开始)加一发送到PC调试软件上显示。

三、实验过程与结果记录

1、单片机开发试验仪相关部分原理图,其中按键部分同前述,串口部分通过下载程序的USB(CH340-USB to TTL)实现。

2、程序(自行编写,C语言与汇编均可)

#include

#include

//11.0592Mhz

sbit key=P2^7;

void Uart_Init()                                     

{

    TH1 = 0xFD;     //晶振11.0592mhz 波特率设为9600

    TL1 = TH1;

    TMOD |= 0x20;     //定时器1方式2

    SCON = 0x50;     //串口接收使能

    ES = 1;             //串口中断使能

    TR1 = 1;         //定时器1使能

    TI = 1;             //发送中断标记位,必须设置

}

void delay_ms(unsigned int n)

{

    unsigned int  i,j;

for(i=0;i     for(j=0;j<123;j++);

}

void main()

{

    int i = 0;

    Uart_Init();

    delay_ms(10);

    while(1)

    {

            if(key==0)

         {

            delay_ms(10);

            if(key==0)

            {

                  while(!key);

                     printf("num=%d\\r\\n",i);

                  i++;

            }

         }

        

    }

}

四、思考题

1、单片机串行口通信需要注意什么?从硬件电平,软件设置(波特率,停止位……)等方面描述。

文档

华南农业大学单片机实验报告书

第四章:实验实验一闪烁LED实验(2学时)一、实验目的1、学会使用Keil建立51单片机Project和编译程序;2、学会程序延时的方法;3、学会使用单片机I/O口实现输出。二、实验内容通过软件延时,控制一位LED按设定的时间间隔闪烁。三、实验过程与结果记录1、单片机开发试验仪相关部分原理图2、程序(自行编写,C语言与汇编均可)#includesbitled=P1^0;unsignedinti,j;voidmain(){while(1){led1=0;for(i=1000;i>0;i--)fo
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top