948、基于51单片机的计时器秒表(闹钟,数码管,按键,报警,秒表)(程序+Proteus仿真+原理图+流程图+元器件清单+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未

目录

方案选择

单片机的选择

一、设计功能

二、Proteus仿真图

单片机模块设计

三、原理图

四、程序源码

资料包括:

需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。


方案选择

单片机的选择

方案一:STM32系列单片机控制,该型号单片机为LQFP44封装,内部资源足够用于本次设计。STM32F103系列芯片最高工作频率可达72MHZ,在存储器的01等等待周期仿真时可达到1.25Mip/MHZ(Dhrystone2.1)。内部128k字节的闪存程序存储器,也就是说代码量可以写到128k字节,本次设计足够,内部高达20K字节的SRAM。
 

方案二:51单片机STC89C52系列的指令系统和AT89C52系列的完全兼容,但实际操作起来却存在很多问题:

(1)AT89C52不带ISP下载,要用下载器才行,STC89C52可以用你的USB转串口下载,下载软件可以到STC厂家网上去下。

(2)STC单片机执行指令的速度很快,大约是AT的3-30倍,尽管快是好事,但这样一来,你在AT上好使的程序在STC上不一定好用,最典型的例子就是那些对时序有严格要求的模块,用STC时注意得加长延时,大约是AT的10—30倍就差不多,这一点自己调试就知道了。

(3)STC单片机对工作环境的要求比较低,电压低于5伏时仍然正常工作,甚至3伏到4伏之间都还可以工作,然而这样的环境下AT肯定不行了,所以当一个系统用STC单片机好用,但用AT的单片机不工作时,直接查最小系统,看单片机的供电是否正常。

比较这两种方案,由于在学校期间学过数字电路、单片机原理、C语言程序设计,综合考虑单片机的各部分资源和作为学生能够获得的资源,还有STM32价钱比较贵方面。经过对比此次设计要求,我选择用51单片机中的STC系列芯片完成。而且学校也提供了相应的硬件操作平台,实际操作起来比较方便,故STC为更合理的选择。本系统选择STC89C52单片机作为主控芯片。足够本设计运行,且价格便宜,下载程序方便。

一、设计功能

1、单片机型号:STC89C52/51、AT89C52/51、AT89S52/51都可通用。

2、具有计时器、秒表、闹钟功能;

3、可通过按钮校准时间、设置闹钟、控制秒表;

4、使用数码管显示时间。

5、闹钟到时,蜂鸣器响。

二、Proteus仿真图

单片机模块设计

单片微型计算机是随着微型计算机的发展而产生和发展的。自从1975 年美国德克萨斯仪器公司的第一台单片微型计算机( 简称单片机)TMS-1000 问世以来,迄今为止,单片机技术已成为计算机技术的一个独特分支,单片机的应用领域也越来越广泛,特别是在工业控制中经常遇到对某些物理量进行定时采样与控制的问题,在仪器仪表智能化中也扮演着极其重要的角色。

如果将8位单片机的推出作为起点,那么单片机的发展历史大致可以分为以下几个阶段:

第一阶段(1976—1978):单片机的探索阶段。以Intel公司的MCS-48为代表。MCS-48的推出是在工控领域的探索,参与这一探索的公司还有Motorola、Zilog等。都取得了满意的效果。这就是SCM的诞生年代,“单片机”一词即由此而来。

第二阶段(1978—1982):单片机的完善阶段。Intel公司在MCS-48基础上推出了完善的、典型的单片机系列MCS-51。它在以下几个方面奠定了典型的通用总线型单片机体系结构。

(1)完善的外部总线。MCS-51设置了经典的8位单片机的总线结构,包括8位数据总线、16位地址总线、控制总线及具有多机通信功能的串行通信接口。

(2)CPU外围功能单元的集中管理模式。

(3)体现工控特性的地址空间及位操作方式。

(4)指令系统趋于丰富和完善,并且增加了许多突出控制功能的指令。

第三阶段(1982—1990):8位单片机的巩固发展及16位单片机的推出阶段,也是单片机向微控制器发展的阶段。Intel公司推出的MCS-96系列单片机,将一些用于测控系统的模数转换器、程序运行监视器、脉宽调制器等纳入片中,体现了单片机的微控制器特征。

第四阶段(1990—):微控制器的全面发展阶段。随着单片机在各个领域全面、深入地发展和应用,出现了高速、大寻址范围、强运算能力的8位/16位/32位通用型单片机,以及小型廉价的专用型单片机。

单片机是在集成电路芯片上集成了各种元件的微型计算机,这些元件包括中央处理器CPU、数据存储器RAM、程序存储器ROM、定时/计数器、中断系统、时钟部件的集成和I/O接口电路。由于单片机具有体积小、价格低、可靠性高、开发应用方便等特点,因此在现代电子技术和工业领域应用较为广泛,在智能仪表中单片机是应用最多、最活跃的领域之一。在控制领域中,现如今人们更注意计算机的底成本、小体积、运行的可靠性和控制的灵活性。在各类仪器、仪表中引入单片机,使仪器仪表智能化,提高测试的自动化程度和精度,提高计算机的运算速度,简化仪器仪表的硬件结构,提高其性能价格比。


 

三、原理图

在本设计做的过程中,硬件和软件方面都遇到了许多问题,但是相比于软件,在硬件方面还是比较快解决的方面,因为硬件是比较容易检查出来错误的,软件比较晦涩难懂,还是有一定难度。
在硬件调试问题上,首先焊接好了元器件实物板后,先用万用表测量这个工业板子的电源方面,电源方面是最重要的问题,应该是特别需要检查的地方,以防止电源的短路和正负极的错误。然后在仔细检查电路的连接是否有问题,或者有没有虚焊或者没有焊接到的地方,然后核对一下元器件的安装是否有问题,安装上去是否符合规定,由于已经是大学四年都是做过了很多实训过来了,对于这些还是游刃有余的,但是在上机调试后还是发现了很多的问题。

四、程序源码

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

资料包括:


需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是一个简单的计算器C语言程序,可以在51单片机上实现,同时也可以在Proteus仿真中运行: ```c #include <reg51.h> // 51单片机头文件 sbit ADD=P3^0; // 加法按键 sbit SUB=P3^1; // 减法按键 sbit MUL=P3^2; // 乘法按键 sbit DIV=P3^3; // 除法按键 sbit CLR=P3^4; // 清零按键 sbit OK=P3^5; // 确认按键 unsigned char num1,num2; // 两个操作数 unsigned char op; // 操作符 unsigned char result; // 运算结果 void delay(unsigned int i) // 延时函数 { unsigned int j,k; for(j=i;j>0;j--) { for(k=110;k>0;k--); } } void display(unsigned char dat) // 数码管显示函数 { P2=dat; // 将数码管的值赋给P2口 delay(5); // 延时一段时间,使数码管显示刷新 } void main() { while(1) { if(ADD==0) // 加法按键按下 { op='+'; delay(10); // 延时去抖 while(ADD==0); // 等待按键释放 } else if(SUB==0) // 减法按键按下 { op='-'; delay(10); // 延时去抖 while(SUB==0); // 等待按键释放 } else if(MUL==0) // 乘法按键按下 { op='*'; delay(10); // 延时去抖 while(MUL==0); // 等待按键释放 } else if(DIV==0) // 除法按键按下 { op='/'; delay(10); // 延时去抖 while(DIV==0); // 等待按键释放 } else if(CLR==0) // 清零按键按下 { num1=0; num2=0; op=0; result=0; display(0xff); // 数码管全灭 delay(10); // 延时去抖 while(CLR==0); // 等待按键释放 } else if(OK==0) // 确认按键按下 { switch(op) // 根据操作符进行运算 { case '+': result=num1+num2; break; case '-': result=num1-num2; break; case '*': result=num1*num2; break; case '/': result=num1/num2; break; } num1=0; num2=0; op=0; display(result); // 显示运算结果 delay(10); // 延时去抖 while(OK==0); // 等待按键释放 } else // 数字键按下 { if(op==0) // 如果操作符为0,表示正在输入第一个操作数 { num1=num1*10+P1; // 将输入的数字累加到num1中 display(num1); // 显示num1 delay(10); // 延时去抖 while(P1!=0xff); // 等待按键释放 } else // 否则表示正在输入第二个操作数 { num2=num2*10+P1; // 将输入的数字累加到num2中 display(num2); // 显示num2 delay(10); // 延时去抖 while(P1!=0xff); // 等待按键释放 } } } } ``` 这个程序实现了简单的加减乘除计算,同时也有清零和确认功能。在程序中,通过检测按键的状态来进行相应的操作。同时,也使用了延时函数和数码管显示函数来实现计算器的基本功能。 在Proteus仿真中,可以使用51单片机模拟器来运行这个程序。将程序烧录到单片机中,然后将数码管按键连接到相应的引脚上即可。在仿真中,可以通过按下按键来模拟输入数字和操作符,然后观察数码管的显示结果来验证计算器的正确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ENGLISH_HHZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值