单片机实训报告模板

《单片机实训》设计报告

题目:可调电子时钟的设计

学   院:交通信息学院

专   业:电气自动化技术

班   级:电气091

姓   名:

学   号:(长号)

指导老师:


一、实验内容

   利用CPU的定时器和实验仪上提供的数码显示电路,设计一个可调电子时钟。显示格式如下:XX XX XX  ,由左向右分别为:时、分、秒。同时还可以通过键盘(开关)对电子时钟的时间进行加减,达到可调。

二、实验内目的

1、掌握定时器的使用和编程方法;

2、掌握中断处理程序的编程方法;

3、掌握数码显示电路的驱动程序编程方法;

4、掌握键盘电路的程序编程方法;

5、掌握模块子程序的编程方法;

6、掌握硬件的线路的设计及连线方法。

三、实验说明

设计定时器每50ms中断一次,在中断服务程序中,对中断次数进行计数,50ms计数20次,就是1秒,然后再对秒计数得到分的值,对分计数得到小时的值,分别将各值送到相应的段地址端口和位地址端口,通过数码管显示结果,达到电子时钟的效果。在电子时钟的基础上,程序增加了键盘程序,对电子时钟进行可调(对秒/分/时进行加/减,此功能的增加使电子时钟功能更强、更实用。

四、硬件电路设计原理图

图1 总电路图

图2 键盘控制电路

五、软件设计

(一) 程序设计框图

流程图: 可选过程: 开始

流程图: 可选过程: 开始

流程图: 可选过程: 开始

(二)实验程序设计

步骤   1、用定时器编写延迟子程序;

2、编写学号显示子程序;

3、编写从0~9秒用数码管显示子程序;

4、据时分秒的要求,编写定时器0中断服务子程序;

5、结合以上子程序,与主程序相组合成电子时钟程序;

6、编写键盘控制加子程序;

7、组合以上子程序,与主程序相组合成可调电子时钟程序;

#include<reg51.h>

/ /程序定义

typedef  unsigned char   uchar;

unsigned  int  number;

void delay(unsigned char);

void  display();

void    key();

void init();

uchar   ledsbuf[8];

uchar   ledsbuf1[8];

  sbit    p10=P1^0;

  sbit    p11=P1^1;

  sbit    p12=P1^2;

  sbit    p13=P1^3;

  sbit    p14=P1^4;

  sbit    p15=P1^5;

uchar  a[4];

uchar  b[4];

void chbcd();    

//计时器

void init();        //开始

unsigned  int  number;

void time() interrupt 1

{

      if(--number==0) //number=0   1秒钟到

     {

       number=4000;

         if((++a[3])==60)

          {

             a[3]=0;

             if((++a[2])==60)

              {

                 a[2]=0;

                 if((++a[1])==24)

                  {

                    a[1]=0;

                     if((++b[3])==32)

                      {

                        b[3]=01;

                        if((++b[2])==12)

                         {

                            b[2]=01;

                            if(b[1]++==99)

                            {

                            b[1]=0;b[0]++;

                            }

                          }

                       }

                   }

                }

           }

      }

}

//控制显示数字

code unsigned char ledtab[]={  0x3f, 0x06, 0x5b, 0x4f, 0x66,

                               0x6d, 0x7d, 0x07,0x7f, 0x6f,

                               0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71,0x40};

void main()

{

   uchar  i;

   a[0]=00,a[1]=23,a[2]=59,a[3]=50;

   b[0]=20,b[1]=11,b[2]=03,b[3]=30;

   number=4000 ;

   init();

   chbcd();

   while(1)

    {

        chbcd();

        display();

        key();

     }

}  

//控制显示位

void  chbcd()

{

        uchar i;

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

      {

        ledsbuf[i*2]=ledtab[a[i]/10];

        ledsbuf[i/2]=ledtab[a[0]=16];

        ledsbuf[i*2+1]=ledtab[a[i]%10];

        ledsbuf1[i*2]=ledtab[b[i]/10];

        ledsbuf1[i*2+1]=ledtab[b[i]%10];

      }

}  

void  delay(char  n)

{

        uchar i;

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

}

//计时器

void  init()

{

       TMOD=0x02;

       TH0=0x08;

       TL0=0x08;

       EA=1;

       ET0=1;

       TR0=1;

}

void display ()

{

       uchar  i;

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

    {

       P2=~ledsbuf[i];

       P0=~ledsbuf1[i];

       P3=(0x01<<i);

       delay(10);

       P3=0x00 ;

    }

}

//调整

void key()

{

    //

      if(p10==0)

    {

         while(p10==0)

       {

         display();

        }

         a[2]++;

         for(;a[2]==60;a[2]=0)

          {

             if((++a[1])==24)

             a[1]=0;

             if((++b[3])==32)

            {

             b[3]=0;

            }

          }

     }

    //

     if(p11==0)

   {

     while(p11==0)

     {

       display();

     }

       a[1]++;

       for(;a[1]==24;a[1]=0)

      {

         if((++b[3])==32)

         b[3]=0;

      }

   }

 //

     if(p12==0)

   {

     while(p12==0)

     {

       display();

     }

       b[3]++;

       for(;b[3]==32;b[3]=0)

     {

       if((++b[2])==13)

       b[2]=0;

       ++b[1];

     }

   }

 //

  if(p13==0)

  {

   while(p13==0)

    {

     display();

    }

      if( ++b[2]==13)

    {

      b[2]=01;

      if(b[1]++==99)

      {

        b[1]=0;b[0]++;

      }

    }

  }

//

    if(p14==0)

     {

       while(p14==0)

     {

       display();

     }

       b[1]++;

       for(;b[1]==99;b[1]=0)

     {

       b[1]=01;

       b[0]++;

     }

   }

//复位

    if(p15==0)

   {

      while(p15==0)

      {

        display();

       }

     a[0]=a[1]=a[2]=a[3]=0;

     b[0]=20;b[1]=11;b[2]=03;b[3]=22;

    }

}

四实验结果分析

调试过程的问题及解决方法

五、实验体会

1、编写程序时,知识结构混乱,无从下手。应该加深对书本基本知识的了解,即可解决。

2、脑海没有形成编写程序的思想,像显示子程序、延时程序等,都只是参考课本上的程序,没有个人创作。

3、指导老师够认真、负责,指导到位。

六、建议

学校的硬件设备跟不上,实训过程中由于硬件设备不行而不得不停止实训,而且经常因为病毒破坏程序,导致多次失败告终,大量的浪费了我们的时间。

七参考文献:单片机C语言指导书

 

第二篇:单片机实训报告模板

桂林电子科技大学职业技术学院

单片机实训I报告

抢答器

学院(系):    电子信息工程系   

专    业:                     

学    号:      10XXXXXXXX      

学生姓名:        XXXX          

指导教师:         XXX         


 

摘  要...................................................................1

1 绪论...................................................................2

2 课题背景...............................................................3

XXXXXXXX................................... .............................4


 

在电子工程、通信工程、自动控制、遥测控制、测量仪器、仪表和计算机等技术领域,经常需要用到各种各样的信号发生器。随着集成电路的迅速发展,用集成电路可很方便地构成各种信号波形发生器。…………

关键词 :信号发生器;方波;三角波;正弦波


1 绪论

信号发生器是信号源的一种,它是具有信号源所具有的特点,更因它高的性能优势而倍受人们青睐。信号源主要给被测电路提供所需要的已知信号(各种波形),然后用其它仪表测量感兴趣的参数。…………

2 课题背景

在高新技术日新月异的今天,科学技术已经成为整个社会发展的源动力,电子领域的发展更是令人目不暇接,在其推动下,现代电子产品几乎渗透了社会的各个领域,遍迹了千家万户,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。…………

2.1设计任务与要求

本设计主要能够完成对制定波形的形成,可以通过电位器来改变幅度。此信号发生器可以很好的运用于有需要的场合。

2.2设计目的

通过该毕业设计对单片机系统要有一个全面的了解、掌握常规芯片的使用方法、掌握简单单片机应用系统软硬件的设计方法,进一步锻炼在单片机应用方面的实际动手能力。…………

2.2.1 设计题目的概述

信号发生器是基于单片机的信号发生电路,数模转换电路和I/V转换电路组合而成。利用89S51单片机外接数模转换器和I/V转换电路,由用户通过按键选择输出实验中经常使用到的几种基本波形:方波、三角波、正弦波。…………

3 总体设计方案

3.1 设计思想

由于要求达到模拟信号波形发生,因此要由D/A转换芯片来完成此项任务,由基准电路来实现输出波形的幅度可调,通过电位器调节波形的变化。经过数模转换电路输出的信号为电流形式,因此需要加电流电压转换电路来改变输出信号的形式。

3.2方案选择与论证

函数信号发生器的实现方法通常有以下几种:

方案一:  用分立元件组成的函数发生器,通常是单函数发生器且频率不高,其工不稳定,不易调试。

方案二:  可以由晶体管、运放IC等通用器件制作,更多的则是用专门的函数信号发生器IC产生。早期的函数信号发生器IC,如L8038、BA205、XR2207/2209等,它们的功能较少,精度不高,频率上限只有300kHz,无法产生更高频率的信号,调节方式也不够灵活,频率和占空比不能独立调节,二者互相影响。…………

4 硬件设计

4.1信号发生器的总体硬件结构及原理

信号发生器的硬件结构主要由AT89C51、复位电路、时钟电路、数模转换电路DAC0832及运算放大器4558六部分构成。…………

4.2硬件原理框图

图4.2.1 硬件原理框图


4.3 芯片及作用

4.3.1 单片机

单片机内部设置两个16位可编程的定时器/计数器T0和T1,它们具有计数器方式和定时器方式两种工作方式及4种工作模式。在波形发生器中,将其作定时器使用。用它来精确地确定波形的两个采样点输出之间的延迟时间。…………

5结论

此电路基本可以完成任务要求的各个功能,具有波形选择功能,电压幅度可调的功能。能产生比较稳定、失真度较小的低频信号,频率和幅值都能较好的满足题目的要求。并且能够较准确的测出输出波形的频率以及幅值。…………


参考文献

[1] 童诗白,华成英.模拟电子技术基础〔M〕.北京:高等教育出版社,2003.345-362

[2] 潘永雄,沙河,刘向阳.电子线路CAD实用教程〔M〕.西安:西安电子科技大学出版社,2001.13-118.

[3] 张毅刚,彭喜源,谭晓昀,曲春波.MCS-51单片机应用设计[M].哈尔滨:哈

尔滨工业大学出版社,1997.53-61.

[4] 刘 骋,高频电子技术,北京:人民邮电出版社,2005

[5] 谭浩强,C程序设计教程,北京:清华大学出版社,2007

[6] 苏士美,模拟电子技术,北京:人民邮电出版社,2005


 

回顾起此次设计过程,我仍然感慨颇多,…………

20##年  XX 月  XX 日 


附件

原理图

PCB图

相关推荐