单片机基于89C51的设计报告书.docx

上传人:b****2 文档编号:2843817 上传时间:2023-05-04 格式:DOCX 页数:16 大小:335.31KB
下载 相关 举报
单片机基于89C51的设计报告书.docx_第1页
第1页 / 共16页
单片机基于89C51的设计报告书.docx_第2页
第2页 / 共16页
单片机基于89C51的设计报告书.docx_第3页
第3页 / 共16页
单片机基于89C51的设计报告书.docx_第4页
第4页 / 共16页
单片机基于89C51的设计报告书.docx_第5页
第5页 / 共16页
单片机基于89C51的设计报告书.docx_第6页
第6页 / 共16页
单片机基于89C51的设计报告书.docx_第7页
第7页 / 共16页
单片机基于89C51的设计报告书.docx_第8页
第8页 / 共16页
单片机基于89C51的设计报告书.docx_第9页
第9页 / 共16页
单片机基于89C51的设计报告书.docx_第10页
第10页 / 共16页
单片机基于89C51的设计报告书.docx_第11页
第11页 / 共16页
单片机基于89C51的设计报告书.docx_第12页
第12页 / 共16页
单片机基于89C51的设计报告书.docx_第13页
第13页 / 共16页
单片机基于89C51的设计报告书.docx_第14页
第14页 / 共16页
单片机基于89C51的设计报告书.docx_第15页
第15页 / 共16页
单片机基于89C51的设计报告书.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机基于89C51的设计报告书.docx

《单片机基于89C51的设计报告书.docx》由会员分享,可在线阅读,更多相关《单片机基于89C51的设计报告书.docx(16页珍藏版)》请在冰点文库上搜索。

单片机基于89C51的设计报告书.docx

单片机基于89C51的设计报告书

重庆化工职业学院

课程设计报告书

课程名称单片机

课题名称基于51单片机的电子时钟设计

专业自动化

班级

姓名

 

2011年12月20日

单片机课程设计任务书

系部

自动化工程系

专业

自动化

学生姓名

设计题目

基于51单片机的电子时钟设计

内容及要求:

1.设计电路,选择器件

2.画出原理框图

3.焊接电路,调试

4.编程,调试

5.补充完后面的论文

分工进度及安排:

(7天)

1.查资料讨论设计题目(1天):

2.设计电路画电路图(1天):

3.编程与调试(1天):

4.焊接硬件电路并调试(2天):

5.写报告(2天):

 

指导教师:

2011年12月20日

系主任:

201年12月20日

 

基于51单片机的******设计(另附页)

前言:

设计要求与方案论证

(本部分主要写本设计有什么具体要求并分析其可行性)

第一章:

系统的组成及工作原理

(本部分主要完成系统总体设计,需画出原理框图)

第二章:

系统硬件电路设计与实现

(本部分主要完成系统硬件电路部分,包括单片机最小化系统(电源电路,复位电路,晶振电路)和8段数码管电路)

第三章:

系统软件设计

(本部分主要完成系统软件的编程,用C语言编,要求首先画出软件流程图)

第四章:

系统调试

(本部分主要完成系统调试,包括硬件调试和软件调试)

第五章:

设计体会和结论

致谢

参考文献

附录一:

电路原理框图

附录二:

系统硬件电路图(可手画或打印)

附录三:

软件流程图

附录四:

元件清单

前言…………………………………………………………………5

第一章系统的组成及工作原理……..............5

1.1系统的总体设计………………………………………………….5

1.2原理框图………………………………………………………………6

1.3系统的工作原理……………………………………………………7

第二章系统硬件电路设计与实现……………………7

2.1系统硬件电路部分………………………………………….7

2.1.1系统的硬件清单列表…………………………………………8

2.1.2系统硬件的焊接………………………………………………..8

2.2各部分的功能实现……………………………………………9

第三章系统软件设计………………………………………9

3.1软件流程图………………………………………………………9

3.2控制电路C语言程序………………………………………10

3.3控制电路的C语言程序……………………………………11

第四章系统的调试…………………………………………14

4.1、硬件调试………………………………………………………14

4.2、软件调试………………………………………………………15

第五章设计体会和结论…………………………………15

致谢…………………………………………………………………16

参考文献…………………………………………………………16

 

基于51单片机的数码管时钟设计

前言

单片机即单片微型计算机。

(Single-ChipMicrocomputer),是集CPU,RAM,ROM,定时,计数和多种接口于一体的微控制器。

他体积小,成本低,功能强,广泛应用于工业自动化上和智能产品。

时钟,自从它被发明的那天起,就成为了人类的好朋友,但随着时间的推移,科学技术的不断发展,时钟的应用越来越广范,人们对时间计量的精度要求也越来越高。

这就要求我们不断设计出新型的时钟,来不断满足人们的日常生活需要。

然而市场上的时钟便宜的比较笨重,简单实用的又比较昂贵。

那么,有没有一款既简单实用价格又便宜的时钟呢?

我们课程设计小组设想:

可不可以利用单片机功能集成化高,价格又便宜的特点设计一款结构既简单,价格又便宜的单片机电子时钟呢?

基于这种情况,我们课程设计小组成员多方查阅资料,反复论证设计出了这款既简单实用,又价格便宜的——单片机电子时钟。

第一章系统的组成及工作原理

本次设计时钟电路,使用了AT89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的时、分、秒,用一扬声器来进行定时提醒,同时使用C语言程序来控制整个时钟显示,使得编程变得更容易,这样通过四个模块:

按键、芯片、扬声器、显示屏即可满足设计要求。

1.1系统总体设计

此系统总体设计图如图1-1所示,此电路包括以下四个部分:

单片机,按键,闹铃电路及显示电路。

图1-1

经多方论证硬件我们小组采用AT89C51单片机和7SED六位共阳极数码管等来实现单片机电子时钟的功能

1.2原理框图

图1.2-1

1.3系统工作原理

如图1.2-1,设计采用C语言程序设计,使单片机控制数码管显示时、分、秒,当秒计数计满60时就向分进位,分计数器计满60后向时计数器进位,小时计数器按“23翻0”规律计数。

时、分、秒的计数结果经过数据处理可直接送显示器显示。

当计时发生误差的时候可以用校时电路进行校正。

设计采用的是时、分、秒显示,单片机对数据进行处理同时在数码管上显示。

第二章系统硬件电路设计与实现

2.1系统硬件电路部分

系统硬件电路:

键盘、芯片、扬声器、显示屏。

如下图2.1-1。

右边按键从上到下依次为控制“秒”,“分”,“时”,“闹铃”

图1.3-1

 

2.1.1系统硬件清单列表,如图2.1.1-1

器件

参数

个数

参考价格

单片机

STC89C51

1

单片机底座

1

排针

8位

8

排母排线

8位

8

金属丝

2.54

1

USB电源接头

1

晶振

12MHz

1

瓷片电容

30pF

2

极性电容

10μF

1

按钮开关

5

电阻

4.7K

7

电阻

1K

10

排阻

470*8

1

数码管

8位8段

3

蜂鸣器

1

三极管

9012

7

万能板

10*10

1

发光二极管

5

电源

5V

1

按键开关

点动

5

图2.1.1-1

2.1.2系统硬件的焊接

如图2.1.2-1

图2.1.2-1

2.2各部分功能实现

(1)单片机发送的信号通过程序控制最终在数码管上显示出来。

(2)单片机通过输出各种电脉冲信号来驱动控制各部分正常工作。

(3)为使时钟走时与标准时间一致,校时电路是必不可少的,按键用来校正数码管上显示的时间。

(4)单片机通过控制蜂鸣器电路来完成定时闹钟的功能。

第三章系统软件设计

3.1软件流程图

软件程序从开始执行,先通过初始化各个寄存器,经过扫描按键来决定是否设定参数来执行相应功能的程序,进而在数码管上显示。

如图3.1-1

图3.1-1

 

3.2程序流程图

1、主程序流程如图3.2-1所示,其中初始化加载制作者的年月日,制作者的专业、学年、学号的数据。

图3.2-1

2、秒表、计时指示程序。

秒表、调时由时钟芯片完成,其程序流程图如下图所示

3.3控制电路的C语言程序

根据流程图,经过认真分析得出控制电路的源程序如下:

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

/*七段共阴管显示定义*/

ucharcodedispcode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,

                       0xBF,0x86,0xCB,0xCF,0xEF,0xED,0xFD,0x87,0xFF,0xDF};

/*定义并初始化变量*/

ucharseconde=0;

ucharminite=0;

ucharhour=12;

ucharmstcnt=0;

sbitP1_0=P1^0;                //second调整定义

sbitP1_1=P1^1;                //minite调整定义

sbitP1_2=P1^2;                //hour调整定义

/*函数声明*/

voiddelay(uchark);     //延时子程序

voidtime_pro();   //时间处理子程序

voiddisplay();      //显示子程序

voidkeyscan();               //键盘扫描子程序

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

/*延时子程序*/

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

voiddelay(uchark)

{

ucharj;

while((k--)!

=0)

  {

   for(j=0;j<125;j++)

    {;}

  }

}    

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

/*时间处理子程序*/

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

voidtime_pro(void)

{

 if(seconde==60)                   //秒钟设为60进制

         {seconde=0;

           minite++;

          if(minite==60)             //分钟设为60进制

             {minite=0;

               hour++;

             if(hour==24)             //时钟设为24进制

                {hour=0;}

             }

         }

   

}

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

/*显示子程序*/

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

voiddisplay(void)   

{     

       P2=0xfe;

       P0=dispcode[hour/10];                //显示小时的十位

       delay(4);

       P2=0xfd;

       P0=(dispcode[(hour%10)])|0X80;       //显示小时的个位

       delay(4);

       P2=0xfb;

       P0=dispcode[minite/10];              //显示分的十位

       delay(4);

       P2=0xf7;

       P0=(dispcode[minite%10])|0X80;       //显示分的个位

       delay(4);

       P2=0xef;

       P0=dispcode[seconde/10];            //显示秒的十位

       delay(4);

       P2=0xdf;

       P0=dispcode[seconde%10];            //显示秒的个位

       delay(4);     

}

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

/*键盘扫描子程序*/

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

voidkeyscan(void)

{

   if(P1_0==0)                    //按键1秒的调整

  {

delay(30);

 if(P1_0==0)

    {

     seconde++;

    if(seconde==60)

    {seconde=0;}

       }

      }

   if(P1_1==0)                  //按键2分的调整

      {

          delay(30);

        if(P1_1==0)

          {

             minite++;

             if(minite==60)

              {minite=0;}

      }

    }

   if(P1_2==0)                  //按键3小时的调整

      {

        delay(30);

       if(P1_2==0)

    {

     hour++;

      if(hour==24)

    {hour=0;}

      }

      }

}

voidtimer0(void)interrupt1using0    //定时器0方式1,50ms中断一次

   {

    TH0=0x3c;

TMOD=0x11;

       mstcnt++;

     if(mstcnt==20)

      {

     seconde++;

     mstcnt=0;   //注意点。

对计数单元的清零十分的重要,本次调试中就是

       }              //因为忽略了这一点,给我早成了很大的被动。

      

}

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

/*主函数*/

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

voidmain(void)

{      P1=0xff;               //初始化p1口,全设为1     

TMOD=0x11;//time0为定时器,方式1

TH0=0x3c;            //预置计数初值

TL0=0xb0;

EA=1;

ET0=1;

TR0=1;

   while

(1)

{  

        keyscan();   //按键扫描

        time_pro();//时间处理

  display();//显示时间          

}

}

第四章系统调试

此时钟设计是利用protues仿真软件进行仿真,基本上实现了课程设计要求实现的功能。

4.1、硬件调试

51单片机的数码管显示时钟的电路系统较大,对于焊接方面更是不可轻视,庞大的电路系统中只要出于一处的错误,则会对检测造成很大的不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,否则会刺被带有包皮的导线,则会对电路造成短路现象。

在本成电子万年历的设计调试中遇到了很多的问题。

回想这些问题只要认真多思考都是可以避免的,应注意的问题是:

LED数码管的断码错乱,原因出于没有认真看清a、b、c等引脚信息。

硬件部分设置了的六个按键。

当按键一按下时,进入秒表显示状态,秒表开始计时,当按键六按下时,秒表暂停;当按键四按下时恢复到时间显示功能;当按键二按下时,进入调分状态,按一次,分加一,60一循环;按键三按下时,进入调时状态,按一次,时加一,60一循环;按键五按下时,进入闹铃设置功能,紧接着按下按键二和按键三进行时和分的设置,再按下按键4恢复显示时间,当显示的时间和定时设置的时间一致时,蜂鸣器发出蜂鸣声。

4.2、软件调试

51单片机的数码管显示时钟是多功能的数字型,可以看当前时间,所以对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的问题。

最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。

在软件的调试过程中主要遇到的问题是:

导入程序后,LED数码管显示闪动,而且亮度不均匀。

第五章设计体会和结论

经过一周的单片机课程设计,我组学会了单片机的一般设计过程,通常都要进行系统扩展与配置,因此,要完成一个单片机的设计工作,必须依次做到下述工作:

1、硬件电路的设计、组装与调试;2、应用软件的编写、调试;3、完整应用软件的调试、固化和脱机运行。

而在进行硬件系统设计时我们应当尽量做到:

1、尽可能的选择典型电路,并符合单片机的常规使用方法;2、在充分满足系统功能要求前提下,留余地以便于二次开发;3、硬件结构设计应与软件设计方案一并考虑;4、整个系统相关器件要力求性能的匹配;5、硬件上要有可靠性与抗干扰设计;6、充分考虑单片机的带载驱动能力。

通过这次设计使我对单片机有了更深入的了解。

培养了我的动手实践能力。

同时我组成员已基本完成课题要求。

功能上基本达标:

时钟的显示,秒表显示,定时功能,调时功能。

时钟显示功能,精确度完全可以满足日常生活显示时间的需要;秒表功能,可以满足比赛计时的需要;调时功能,方便快捷;定时功能准确可靠,还有扩展成音乐闹钟的余地。

硬件设施合乎要求,软件设计可以配合硬件实现要求功能。

另外,在本次设计的过程中,我们发现很多的问题,虽然以前没有做过这样的设计但通过这次设计我学会了很多东西,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我们觉的写好一个程序并不是一件简单的事,比如写一个程序看其功能很少认为编写程序简单,但到编的时候才发现一些细微的知识或低级错误经常犯做不到最后常常失败,所以有些东西只有学精弄懂并且要细心才行,只学习理论有些东西是很难理解的。

 

致谢

本课题在选题及进行过程中得到了罗谧老师的不少指导。

特别是在硬件电路设计当中,罗老师热情地帮我们分析思路,在软件上也是不断的引导,是我们逐一靠近了课题要求,至最后圆满完成。

同时,也感谢我们彼此的搭档,能密切配合,共同努力完成。

在此深深的表示感谢!

参考文献

[1]第二版.51系列单片机设计实例.北京航空航天大学出版社(81—89页数码管时钟电路的设计).

[2]辛友顺、胡永生、薛小玲.单片机应用系统设计与实现.福建科学技术出版社(184-186页LED显示接口,190-193页键盘接口).

[3]庆华、张永格.单片机开发与实例.电子工业出版社(127-162页数字式电子时钟的设计).

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2