河南理工大学单片机实验报告格式

时间:2024.4.13

 

学    号:  321308010516 

班    级:  电气本1305班

姓    名:     翟亚飞    

指导老师:     王莉      

2013.12


单片机核心板实验内容

一、  流水灯实验

1、实验目的:

1)简单I/O引脚的输出

2)掌握软件延时编程方法

3)简单按键输入捕获判断

2、完成功能要求

1)开机是点亮12发光二极管,闪烁三下

2)按照顺时针循环依次点亮发光二极管

3)通过按键将发光二极管的显示改为顺逆时针方式

二、  定时器或实时时钟实验

1、实验目的

1)数码管动态显示技术

2)定时器的应用

3)按键功能定义

2、完成功能要求

1)通过按键可以设定定时时间,启动定时器,定时时间到,让12个发光二极管闪烁,完成定时器功能。

2)实时时钟,可以设定当前时间,完成钟表功能(四位数码管分别显示分钟和秒)。

上述二个功能至少完成一种功能。

三、  双机通信实验

1、实验目的

UART 串行通信接口技术应用

2、完成功能要求

用两片核心板之间实现串行通信,将按键信息互发到对方数码管显示。

四、  交通灯实验

1、实验目的

1)按键、数码管、发光二极管综合应用编程技术

2)数据存储于EEPROM的技术(也可以不使用)

3)定时中断技术

4)按键中断技术

2、完成功能要求

1)对每个路口(主干道、次干道)的绿灯时间,及黄灯时间的设定。

2)设定参数掉电后不丢失(如果不使用EEPROM,此功能可以不实现)。

3)紧急按键功能,当按下该键时,所有路口变成红灯,相当于交警指挥特殊车辆通过。再按该键,恢复正常显示。

实验一    流水灯实验

一、实验目的

1)简单I/O引脚的输出

2)掌握软件延时编程方法

3)简单按键输入捕获判断

二、实验实现的功能

1)开机是点亮12发光二极管,闪烁三下

2)按照顺时针循环依次点亮发光二极管

3)通过按键将发光二极管的显示改为顺逆时针方式

三、系统硬件设计

1)单片机主电路

2)12个发光二极管共阳极电路

3)矩阵按键电路

注:具体硬件电路见单片机核心板

四、系统软件设计

程序详见附录

设计思路:

1)定义数组实现12个发光二极管的依次顺序和逆序运行。

2)用程序延时工具编写延时子程序。

3)按键输入端置零,每个按键都可实现正序逆序的切换。

4)每个led灯点亮之后都对按键进行依次扫描,确保按键输入有效捕捉。

5)对按键次数进行记录,为奇数逆序运行,为偶数顺序运行

6)用while循环语句实现开机点亮二极管并闪烁三下。

7)利用for语句实现每个led灯依次点亮一个周期。

五、实验过程中遇到的问题及解决方法

1)刚开始设计时,利用中断技术实现了流水灯功能,但由于没有跳线无法对电路连接进行重组,故选用查询模式。

2)对于按键怎样实现输入识别不是太清楚,通过查阅图书资料,并结合实际的设计程序,逐渐的清楚了。

3)对于延时程序刚开始设计延时时间太短,开机闪烁频率太快,视觉舒适度不高,通过合理设计延时,利用呼吸频率进行开机闪烁。

4)进行led灯顺序逆序点亮有两种方法,一个数组调用,另一个是按位移动点亮,由于自己c语言按位移动学的不是太好,以及时间所限,只好采用数组调用这个较简单的点亮方法。

                                                指导老师签字:

                                                日期:

实验二    定时器或实时时钟实验

一、实验目的

1)数码管动态显示技术

2)定时器的应用

3)按键功能定义

二、实验实现的功能

1)通过按键可以设定定时时间,启动定时器,定时时间到,让12个发光二极管闪烁,完成定时器功能。

2)实时时钟,可以设定当前时间,完成钟表功能(四位数码管分别显示分钟和秒)。

上述二个功能至少完成一种功能。

三、系统硬件设计

1)单片机主电路

2)12个发光二极管共阳极电路

3)矩阵按键电路

4)四位数码管动态显示电路

注:具体硬件电路见单片机核心板

四、系统软件设计

程序详见附录

设计思路:

1)本实验为秒表定时器设计

2)秒表计时采用定时器中断技术,每1ms中断一次,并计一次数,计数到1000次,即1s时,秒数加1,并进行十进制转换,通过数码管显示出来。

3)按键捕捉采用条件判断法,计时结束才能用按键设置下一次计时时间。

4)时间设置完毕后,当按下启动计数键,定时器工作开始计时,计时时间等于设定时间,每过一秒计时时间减一,计时时间减到0时,即计时时间到计时器停止工作,发光二极管闪烁三下。

五、实验过程中遇到的问题及解决方法

1)由于第一个流水灯实验的设计的经验的积累,本次设计比较顺利。但还存在一些问题。

2)计时时间到后,发光二极管闪烁期间,数码管显示不连续,通过分析是led闪烁占用过长时间,通过在延时程序中增加显示程序,起到较好的效果。

3)在编写程序过程中出现CANNOT DETERMINE ROOT SEGMENT警告,并出现不能烧写到单片机开发板中,进过在网上寻找解决方案,知道是中断和主函数调用了同一子程序,一旦主程序调用该程序,中断来之后又调用该程序,会出错。

                                                指导老师签字:

                                                日期:

实验三    双机通信实验

一、实验目的

1)UART 串行通信接口技术应用

二、实验实现的功能

1)用两片核心板之间实现串行通信,将按键信息互发到对方数码管显示。

三、系统硬件设计

1)两片单片机核心板

2)双机通信接口电路

3)矩阵按键输入电路

4)动态数码管电路

注:具体硬件电路见单片机核心板

四、系统软件设计

程序详见附录

设计思路:

1)  该实验电路主要运用串口通信技术,对端口操作比较简单。

2)  对串行通信进行初始化设置,并选择合适波特率,计算‘TH1’、‘TL1’的值。

3)  按键扫描,读出按下的按键,并对其进行相应的按键编号。

4)  输出相应的按键编号。

5)  读入接受到的数据,并在数码管上显示。

五、实验过程中遇到的问题及解决方法

1)对串行口的工作原理不是太了解,通过看书和运用课本上的程序进行编程,试验后才掌握其原理。

2)程序编好之后,在两单片机用跳线把通信接口连接,进行试验发现会出现按下一个键后,在另一单片机数码管上无显示,出现传送丢失现象,还有传送出错,按下第一个键时,在另一个单片机上显示‘0’,而非应该显示的‘1’。通过对问题的分析,有跳线没有插好或则焊接不良的原因。进过对单片机焊接的检查,和对双单片机通信改为单片机对自己发送的数据进行接收。没有很好的效果。

3)程序下载到单片机上之后,当按下第一个键时,在另一片单片机上显示的‘1’,不是太清晰,通过在网上查询一些资料后,才知道是因为缺少“消隐”所致。加上消隐程序之后一切正常。

4)为了避免因接触不良而导致的数据传输出错,运用了软件查错技术,若数据传输出错,数码管会显示‘E’,报错。

                                                指导老师签字:

                                                日期:

实验四    交通灯实验

一、实验目的

1)按键、数码管、发光二极管综合应用编程技术

2)数据存储于EEPROM的技术(也可以不使用)

3)定时中断技术

4)按键中断技术

二、实验实现的功能

1)对每个路口(主干道、次干道)的绿灯时间,及黄灯时间的设定。

2)设定参数掉电后不丢失(如果不使用EEPROM,此功能可以不实现)。

3)紧急按键功能,当按下该键时,所有路口变成红灯,相当于交警指挥特殊车辆通过。再按该键,恢复正常显示。

三、系统硬件设计

1)单片机主电路

2)12发光二极管共阳极电路

3)矩阵按键输入电路

注:具体硬件电路见单片机核心板

四、系统软件设计

程序详见附录

设计思路:

1)  开机设置红灯(绿灯)、黄灯定时时间。

2)  交通灯为东西通南北停----等待----南北通东西停----等待----东西通南北停,依次循环。

3)  定时器产生中断计数,并控制数码管显示交通灯转换剩余时间。

4)  在交通灯显示程序中加入紧急按键检测程序,若有紧急按键按下,执行所有路口红灯显示,数码管显示为0。

五、实验过程中遇到的问题及解决方法

1)此次软件设计对程序有较清晰的了解,但还出现了一些问题,开机设置红灯(绿灯)、黄灯时间时数码管显示闪烁,经对程序检查知,自己的延时时间过长所致,另加入一个延时子程序,才得以解决

2)紧急按键按下时出现按键不灵的现象,经分析是自己没有考虑消除松手抖动,单片机产生误动作,加上一次消除连发程序、5ms延时程序、消除二次连发程序后就再没有出现按键不灵的现象。

                                                指导老师签字:

                                                日期:

附录

实验一流水灯实验程序

程序说明:任意键按下流水灯换向。


#include<reg52.h>

#define uchar unsigned char

sbit ko1=P3^6;

sbit ko2=P3^7;

sbit ki1=P0^5;

sbit ki2=P0^6;

sbit ki3=P0^7;

tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff};

tab2[]={0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3b,0x37,0x2f,0x1f};

tab3[]={0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

tab4[]={0x1f,0x2f,0x37,0x3b,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f};

void Delay1500ms()             //@11.0592MHz

{

       unsigned char i, j, k;

       i = 32;

       j = 133;

       k = 174;

       do

       {

              do

              {

                     while (--k);

              } while (--j);

       } while (--i);

}

void Delay10ms()          //@11.0592MHz

{

       unsigned char i, j;

       i = 108;

       j = 145;

       do

{

              while (--j);

} while (--i);

}

void flicker()

{

       uchar n=0;

       while(n<=2)

              {

                     P2=0x00;

                     P3=0xc3;

                     Delay1500ms();

                     P2=0xff;

                     P3=0xff;

                     Delay1500ms();

                     n++;

               }

}

void main()

{

       uchar x=12;

       uchar y,g;

       flicker();

    while(1)

              {

                  if(y==2)

                     y=0;

                     if(y%2==1)

                     {

                           

                            for(x=12-x;x<=11;x++)

                            {

                                if(y%2==0)

                                   break;

                                   P2=tab3[x];

                                   P3=tab4[x];

                                   if(x==11)

                                   x=-1;

                                for(g=0;g<60;g++)

                                 {

                                   Delay10ms();

                                  

                                   ko1=0;

                                   ko2=0;

                                   ki1=1;

                                   ki2=1;

                                   ki3=1;

                                   if(!ki1||!ki2||!ki3)

                                       {

                                          Delay10ms();

                                          if(!ki1||!ki2||!ki3)

                                          y++;

                                          while(!ki1||!ki2||!ki3);

                                          break;

                                          }

                                  }

                            } 

                        }

       if(y%2==0)

              {

                    

                     for(x=12-x;x<=11;x++)

                  {

                     if(y%2==1)

                     break;

                     P2=tab1[x];

                     P3=tab2[x];

                     if(x==11)

                     x=-1;

                     for(g=0;g<60;g++)

                     {

                        Delay10ms();

                         ko1=0;

                         ko2=0;

                         ki1=1;

                            ki2=1;

                            ki3=1;

                            if(!ki1||!ki2||!ki3)

                            {

                                Delay10ms();                                        

                                   if(!ki1||!ki2||!ki3)

                                   y+=1;

                                 while(!ki1||!ki2||!ki3);

                                    break;

                            }

                      }       }

              }

       }

}


实验二定时器时钟实验程序

程序说明:开机设定定时时间,按3号键加1,按2号键加100,按1号键计时开始,时间到led灯闪烁三下,回到初始状态。


#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

sbit ko1=P3^6;

sbit ko2=P3^7;

sbit ki1=P0^5;

sbit ki2=P0^6;

sbit ki3=P0^7;

sfr P1M1=0x91;

sfr P1M0=0x92;

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

tab2[]={0xf7,0xfb,0xfd,0xfe};

tab3[4]={0};

uint a=0;

uint b=0;

uint c=0;

void Delay10ms()          //@11.0592MHz

{

       unsigned char i, j;

       i = 18;

       j = 235;

       do

       {

              while (--j);

       } while (--i);

}

void Delay5ms()           //@11.0592MHz

{

       unsigned char i, j;

       i = 54;

       j = 199;

       do

       {

              while (--j);

       } while (--i);

}

void Delay2ms()           //@11.0592MHz

{

       unsigned char i, j;

       i = 22;

       j = 128;

       do

       {

              while (--j);

       } while (--i);

}

void show()

{

char j;

       switch(j)

       {

              case 0:P0=tab2[j];j++;P1=tab1[tab3[0]];break;

              case 1:P0=tab2[j];j++;P1=tab1[tab3[1]];break;

              case 2:P0=tab2[j];j++;P1=tab1[tab3[2]];break;

              case 3:P0=tab2[j];j=0;P1=tab1[tab3[3]];break;

              default:break;

       }

}

void flicker()

{

       uchar d=0,i,e;

       while(d<=2)

              {

                     P2=0x00;

                     P3=0xc3;

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

                     {

                     show();

                     Delay10ms();

                     }

                     P2=0xff;

                     P3=0xff;

                     for(e=0;e<150;e++)

                     {

                     show();

                     Delay10ms();

                     }

                     d++;

               }

}

void showint()

{

char j;

       switch(j)

       {

              case 0:P0=tab2[j];j++;P1=tab1[tab3[0]];break;

              case 1:P0=tab2[j];j++;P1=tab1[tab3[1]];break;

              case 2:P0=tab2[j];j++;P1=tab1[tab3[2]];break;

              case 3:P0=tab2[j];j=0;P1=tab1[tab3[3]];break;

              default:break;

       }

}

void interrupt_timer1() interrupt 3

{

       TH1=0xfc;

       TL1=0x66;

       a++;

       if(a==1000)

       {

              b--;

              a=0;

              tab3[0]=b%10;

              tab3[1]=b/10%10;

              tab3[2]=b/100%10;

              tab3[3]=b/1000%10;

       }

       showint();

}

void main(void)

{

       uchar m,k;

       uint n=0;

       P1M1=0x00;

       P1M0=0xff;

       TMOD=0x10;

       TH1=0xfc;

       TL1=0x66;

       ET1=1;

       EA=1;

       while(1)

       {

              if(!TR1)

              {

                     k=0;

                     for(k=0;k<50;k++)

                     {

                            ko1=0;

                            ko2=0;

                            ki1=1;

                            ki2=1;

                            ki3=1;

                            if(!ki1)

                            {

                                   Delay5ms();

                                   if(!ki1)

                                          {

                                                 TR1=1;

                                                 c=1;

                                                 b=n;

                                                 tab3[0]=b%10;

                                                 tab3[1]=b/10%10;

                                                 tab3[2]=b/100%10;

                                                 tab3[3]=b/1000%10;

                                                 show();

                                                 break;

                                          }

                                          while(!ki1);

                                   }

                            if(!ki2)

                                   {

                                          Delay5ms();

                                          if(!ki2)

                                          n+=100;

                                          while(!ki2);

                                   }

                             if(!ki3)

                                   {

                                          Delay5ms();

                                          if(!ki3)

                                          n+=1;

                                          while(!ki3);

                                   }

                            tab3[0]=n%10;

                            tab3[1]=n/10%10;

                            tab3[2]=n/100%10;

                            tab3[3]=n/1000%10;

                            for(m=0;m<4;m++)

                                   {

                                   P0=tab2[m];         

                                   P1=tab1[tab3[m]];

                                   Delay2ms();

                                   P1=0;

                                   }

                             if(m==4)

                             m=0;

                      }

              }

              if(b==0&&c)

              {     c=0;

                     TR1=0;

                     n=0;

                     flicker();

              }

       }

}


实验三双机通信实验程序

程序说明:两单片机互相通信,在一个单片机上按下按键,在另一个单片机上显示相应键值,另一个单片机上按下按键,在这个单片机上显示相应键值。


#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

sfr P1M1=0x91;

sfr P1M0=0x92;

sbit ko1=P3^6;

sbit ko2=P3^7;

sbit ki1=P0^5;

sbit ki2=P0^6;

sbit ki3=P0^7;

sbit scran=P0^3;

tab1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x79};

uchar a,b,n;

void Delay5ms()        //@11.0592MHz

{

       unsigned char i, j;

       i = 54;

       j = 199;

       do

       {

              while (--j);

       } while (--i);

}

void main()

{

       SCON=0xd0;

       TMOD=0x20;

       PCON=0x00;

       TH1=0xf4;

       TL1=0xf4;

       TR1=1;

       scran=0;

       while(1)

       {     uint c,i;

              n=a;

              ko1=0;

              ko2=1;

              ki1=1;

              ki2=1;

              ki3=1;

              if(!ki1)

                            {

                                   Delay5ms();

                                   if(!ki1)

                                   a=1;

                                   while(!ki1);

                            }

              if(!ki2)

                            {

                                   Delay5ms();

                                   if(!ki2)

                                   a=2;

                                   while(!ki2);

                            }

              if(!ki3)

                            {

                                   Delay5ms();

                                   if(!ki3)

                                   a=3;

                                   while(!ki3);

                            }

              ko1=1;

              ko2=0;

              ki1=1;

              ki2=1;

              ki3=1;

              if(!ki1)

                            {

                                   Delay5ms();

                                   if(!ki1)

                                   a=4;

                                   while(!ki1);

                            }

              if(!ki2)

                            {

                                   Delay5ms();

                                   if(!ki2)

                                   a=5;

                                   while(!ki2);

                            }

              if(!ki3)

                            {

                                   Delay5ms();

                                   if(!ki3)

                                   a=6;

                                   while(!ki3);

                            }

        

              if(a!=n)

              {

                            SBUF=a;

                            while(!TI);

                            TI=0;

               }

              if(RI)

                     {    

                            b=SBUF;

                            RI=0;

                            i=1;

                    

                           

                     }

                    

                            if(a!=n)

              {

                            SBUF=a;

                            while(!TI);

                            TI=0;

               }

              while(i)

                     {    

                     if(RI)

                     {

                            c=SBUF;

                            RI=0;

                            i=0;

                            }

                           

                     }

                      if(b!=c)

                            {

                             b=10;

                            }

             P1=0x00;

              P1=tab1[b];

       }

}


实验四交通灯实验程序

程序说明:上电设置红灯(绿灯)、黄灯时间,按3号键设置红灯(绿灯)时间,按2号键设置黄灯时间,按1号键运行工作,按任意3、4、5键急停,再按任意3、4、5键重新开始工作。


#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

void led_show();

uchar m,n;

uint a=0;

uint b=0;

uchar k,c,d,f,g,r,t=0;

sfr P1M1=0x91;

sfr P1M0=0x92;

sbit ko1=P3^6;

sbit ko2=P3^7;

sbit ki1=P0^5;

sbit ki2=P0^6;

sbit ki3=P0^7;

sbit dh=P2^0;

sbit dl=P2^2;

sbit dy=P2^1;

sbit xh=P2^6;

sbit xl=P3^2;

sbit xy=P2^7;

sbit nh=P2^3;

sbit nl=P2^5;

sbit ny=P2^4;

sbit bh=P3^3;

sbit bl=P3^5;

sbit by=P3^4;

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

tab2[]={0xf7,0xfb,0xfd,0xfe};

tab3[4]={0};

void show()

{

       char j;

       switch(j)

       {

case 0:P0=tab2[j];j++;P1=tab1[tab3[0]];break;

case 1:P0=tab2[j];j++;P1=tab1[tab3[1]];break;

case 2:P0=tab2[j];j++;P1=tab1[tab3[2]];break;

case 3:P0=tab2[j];j=0;P1=tab1[tab3[3]];break;

default:break;

       }

}

void Delay5ms()        //@11.0592MHz

{

       unsigned char i, j;

       i = 54;

       j = 199;

       do

       {

              while (--j);

       } while (--i);

}

void Delay2ms()        //@11.0592MHz

{

       unsigned char i, j;

       i = 22;

       j = 128;

       do

       {

              while (--j);

       } while (--i);

}

void interrupt_timer1() interrupt 3

{

       TH1=0xfc;

       TL1=0x66;

       a++;

       if(a==1000)

       {

              b++;

              a=0;

       }

       if(t==0)

       {

       if(b<=m&&b>=0)

       {

       tab3[0]=(m-b)%10;

       tab3[1]=(m-b)/10%10;

       tab3[2]=(m-b)%10;

       tab3[3]=(m-b)/10%10;

       }

       if(b<=d&&b>m)

       {

       tab3[0]=(d-b)%10;

       tab3[1]=(d-b)/10%10;

       tab3[2]=(d-b)%10;

       tab3[3]=(d-b)/10%10;

       }

       if(b<=f&&b>d)

       {

       tab3[0]=(f-b)%10;

       tab3[1]=(f-b)/10%10;

       tab3[2]=(f-b)%10;

       tab3[3]=(f-b)/10%10;

       }

       if(b<=g&&b>f)

       {

       tab3[0]=(g-b)%10;

       tab3[1]=(g-b)/10%10;

       tab3[2]=(g-b)%10;

       tab3[3]=(g-b)/10%10;

       }

       }

       else

       {

             

       tab3[0]=0;

       tab3[1]=0;

       tab3[2]=0;

       tab3[3]=0;

       }

       show();

}

void det()

{                r=0;

               for(;r<50;r++)

               {   ko1=1;

                     ko2=0;

                     ki1=1;

                     ki2=1;

                     ki3=1;

                     if(!ki1||!ki2||!ki3)

                            {

                                   Delay5ms();

                                   if(!ki1||!ki2||!ki3)

                                          {

                                                 P2=0xb6;

                                                 bl=1;

                                                 by=1;

                                                 xl=1;

                                                 bh=0;

                                                t=1;

                                              while(!ki1||!ki2||!ki3);

                                                 Delay5ms();

                                                 while(!ki1||!ki2||!ki3);

                                  while(1)

                                                        {                                                     

                                                               if(!ki1||!ki2||!ki3)                     

                                                                      {                                

                                                                             while(!ki1||!ki2||!ki3);

                                                                             b=0;

                                                                             t=0;

                                                                             break;

                                                       }

                                         }

                          }

                   }

        }  

 }

void led_show()

{

       while(1)

       {

              dl=1;

              xl=1;

              nl=1;

              bl=1;

              dh=1;

              xh=1;

              nh=1;

              bh=1;

              dy=1;

              xy=1;

              ny=1;

              by=1;

              d=(m+n);

              f=(2*m+n);

              g=(2*m+2*n);

              if(b<m&&b>=0)        //东西通

              {

                     dl=0;

                     xl=0;

                     nl=1;

                     bl=1;

                     dh=1;

                     xh=1;

                     nh=0;

                     bh=0;

                     dy=1;

                     xy=1;

                     ny=1;

                     by=1;

                     det();

              }

              if(b<d&&b>=m)        //黄

              {

                     dl=1;

                     xl=1;

                     nl=1;

                     bl=1;

                     dh=1;

                     xh=1;

                     nh=1;

                     bh=1;

                     dy=0;

                     xy=0;

                     ny=0;

                     by=0;

                     det();

              }

              if(b<f&&b>=d)          //南北通

              {

                     dl=1;

                     xl=1;

                     nl=0;

                     bl=0;

                     dh=0;

                     xh=0;

                     nh=1;

                     bh=1;

                     dy=1;

                     xy=1;

                     ny=1;

                     by=1;

                     det();

              }

              if(b<g&&b>=f)          //黄

              {

                     dl=1;

                     xl=1;

                     nl=1;

                     bl=1;

                     dh=1;

                     xh=1;

                     nh=1;

                     bh=1;

                     dy=0;

                     xy=0;

                     ny=0;

                     by=0;

                     det();

              }

           if(b==g)

              b=0;

              }

}

void main()

{

       P1M1=0x00;

       P1M0=0xff;

       TMOD=0x10;

       TH1=0xfc;

       TL1=0x67;

       ET1=1;

       EA=1;

       TR1=0;

       while(1)

       {

              if(!TR1)

              {

                     k=0;

                     for(k=0;k<50;k++)

                     {

                            ko1=0;

                            ko2=1;

                            ki1=1;

                            ki2=1;

                            ki3=1;

                            if(!ki1)

                                   {

                                          Delay5ms();

                                          if(!ki1)

                                          {

                                                 TR1=1;

                                                 led_show();

                        }

                        while(!ki1);

                     }

                            if(!ki2)

                                    {

                                          Delay5ms();

                                          if(!ki2)

                                          n+=1;

                                          if(n==99)

                                          n=0;

                                          while(!ki2);

                                    }

                           if(!ki3)

                                   {

                                          Delay5ms();

                                          if(!ki3)

                                      m+=1;

                                          if(m==99)

                                          m=0;

                                          while(!ki3);

                                   }

                            tab3[0]=m%10;

                            tab3[1]=m/10%10;

                            tab3[2]=n%10;

                            tab3[3]=n/10%10;

                            for(c=0;c<4;c++)

                            {

                                   P0=tab2[c];

                                   P1=tab1[tab3[c]];

                                   Delay2ms();

                            }

                       if(m==4)

                            c=0;

                    }

              }

       }

}

更多相关推荐:
单片机实验报告

单片机实验报告学生姓名学号专业指导教师学院信息与电气工程学院20xx年11月单片机实验报告实验一MCS51指令系统实验数据排序1实验目的熟悉MCS51指令系统掌握程序设计方法加深对内部存储器读写的认识熟悉仿真开...

单片机实验报告

通信与信息工程学院20xx20xx学年第二学期实验报告课程名称单片机原理及应用专业班级学号学生姓名指导教师日期20xx年4月15日1实验一单片机汇编语言程序设计一实验目的1学习MedWin或Keilc51仿真软...

单片机实验报告

题目单片机组成原理实验报告学院计算机科学与工程学院专业信息安全姓名学号20xx年12月8日实验一输入输出接口编程一实验目的1掌握Keil软件的基本使用12掌握单片机汇编语言基本编程二实验内容1学习用Keil软件...

51单片机课程设计实验报告

51单片机课程设计报告学院:专业班级:姓名:指导教师:设计时间:51单片机课程设计一、设计任务与要求1.任务:制作并调试51单片机学习板2.要求:(1)了解并能识别学习板上的各种元器件,会读元器件标示;(2)会…

单片机实验报告

海南大学届单片机实验报告4份论文题目学生姓名学号所在院系专业班级授课教师完成时间蜂鸣器实验实验目的1熟悉实验板中蜂鸣器工作原理掌握汇编编程控制蜂鸣器播放音乐2掌握单片机编程控制蜂鸣器发出不同频率声音的方法3了解...

单片机实验报告

单片机课程设计报告实验五系别物理与电子工程学院年级专业班级学号学生姓名指导教师设计时间常熟理工学院课程设计报告目录1题目22实验要求221实验目的222实验内容23总体设计231硬件设计232软件设计44运行结...

51单片机实验报告

08424020xx单片微型计算机原理学院班级学号姓名指导教师成绩120xx年6月08424020xx硬件实验实验一定时器中断实验实验内容fosc110592MHzT0方式2产生定时中断实现秒表功能数码管后两位...

单片机实验报告

单片机实验报告实验二并行口输入输出实验循环彩灯控制任务一1实现的功能P1口接8个开关P0口接8个灯每个开关对应一个灯实时读取开关状态开关闭合时灯亮开关断开时灯灭2硬件原理图3流程图4程序ORG0000H程序入口...

单片机实验报告

一实验目的1熟练单片机的结构组成及原理2软硬兼施采用硬件电路的焊接搭建和软件的设计调试下载亲自动手对硬件系统加深了解的同时软件编程也能得心应手3了解如何从硬件和软件上分析问题排除故障二实验内容MCS51MCS5...

单片机最小系统实验报告

单片机原理及应用技术设计课题系别专业学号姓名指导老师课程设计报告20xx年6月单片机最小系统流水灯的设计一单片机简介由于单片机技术在各个领域正得到越来越广泛的应用世界上许多记成电路生产家相继推出各种类型的单片机...

单片机实验报告

单片机原理及应用一实验目的实验报告实验要求二实验电路及汇编源程序程序要加注释三仿真结果或硬件调试结果分析实验一存储器读写一实验目的1掌握寄存器存储器读写等汇编指令2掌握编程软件编辑编译调试等基本操作二实验内容1...

单片机实验报告

单片机实验报告四姓名学号时间周一11-13地点计708指导老师:实验题目C51单片机片上资源开发实验一.实验目的与要求?学习单片机片上资源开发技术?研究用片上资源实现自动控制的方案二:实验环境在KeiluVis…

单片机实验报告(42篇)