• 学前教育
  • 小学学习
  • 初中学习
  • 高中学习
  • 语文学习
  • 数学学习
  • 英语学习
  • 作文范文
  • 文科资料
  • 理科资料
  • 文档大全
  • 当前位置: 雅意学习网 > 英语学习 > 正文

    基于PROTEUS仿真的数字电子钟设计|数字电子钟实验报告

    时间:2020-03-28 07:21:50 来源:雅意学习网 本文已影响 雅意学习网手机站

      摘要:单片机技术是现代电子工程领域一门迅速发展的技术,它的应用已经渗透到各种嵌入式系统中。随着计算机技术的普及,采用Proteus软件与Keil软件整合构建单片机虚拟实验平台。可以使教师在讲述理论的同时,利用Proteus软件进行仿真、演示,使学生消除“抽象感”增加学习的兴趣。使课堂教学更生动、直观使单片机课程中一些基本理论和基本概念更加容易理解。
      关键词:虚拟 模拟 仿真
      0 引言
      Proteus软件是英国Labcenter electronice公司开发的电路分析与实物仿真软件。它不仅具有其他EDA工具软件的仿真功能。还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件工具。该软件的特点是:①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。②支持主流单片机系统的仿真。目前支持的单片机类型有:8051系列、AVR系列、ARM系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。
      1 数字钟电路设计
      数字钟的原理框图如图1所示。它由以下几个部件组成:单片机AT89S52、电源、时分显示部件。
      时分显示采用动态扫描,可以降低对单片机I/O口数的要求,同时也降低系统的功耗。时分显示模块以及显示驱动都通过AT89S52的I/O口控制。
      电源部分:两种方法:一种是由220V的市电通过变压、整流稳压(主要用7805稳压块)来得到+5V电压,维持系统的正常工作。另一种是用USB接口取+5V电压。
      2 利用Proteus仿真软件进行电路图绘制
      如图2所示。电路的核心是单片机AT89S52。单片机的P3口八个引脚接LED显示器的段选码(a、b、c、d、e、f、g、dp)的引脚上,单片机的P1口六个引脚接LED显示器的位选码(2、3、4、5、6、7)的引脚上,在实际电路中P1口需要接1K的上拉电阻,电阻起限流作用。
      3 系统的软件构成及功能
      本系统的软件系统主要可分为主程序(图3所示)和定时器中断程序两大模块。在程序过程中,加入了抗干扰措施。中断程序(图4所示)完成时间计数,时间调整,误差消除等功能。中断采用AT89S52内部T0中断实现,定时时间为125ms,当时间到达125ms×8,即1分钟时,分计数缓冲器增加1,到达1小时,则时计数缓冲器自动增加1,并将分、时的个位、十位放入显示缓冲器。当分计数缓冲器和时计数缓冲器分别到达60min、24h时,则对它们清零,以便从新计数。在中断设计中,还通过软件实现了累计误差消除功能,使整个系统时间的精确度得到保证。
      4 Keil C与Proteus连接调试
      4.1 假若KeilC与Proteus均已正确安装在D:\Program Files的目录里。
      4.2 安装Keil C与Proteus的连接插件vdmagdi.exe。
      4.3 进入KeilC μVision2开发集成环境,创建一个新项目(Project),并为该项目选定合适的单片机CPU器件(如:Atmel公司的AT89S52)。并为该项目加入KeilC源程序。
      部分源程序如下:
      #include
      int count=0;int count2hz=0;
      int second=55,min=59,hour=23;
      int dp=0x80;int led[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}
      void main (void)
       { int b;init();
      TMOD=0x01;TH0 =(65536-50000)/256;TL0 =(65536-50000)%256;
      ET0 =1;EA=1;TR0=1;
       while (1)
       {
      display(keyscan());
      P1=0xff; //all led off
      P3=led[second%10]; //秒个位置数
       P1_7=0; //动态刷新显示开1
      for(b=0;b

    推荐访问:仿真 数字 电子钟 基于PROTEUS仿真的数字电子钟设计 基于fpga的数字电子钟设计

    • 文档大全
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章