基于51单片机电子钟温度计数码显示设计( proteus仿真+程序+设计报告+讲解视频)

这里写目录标题

  • ✅1.主要功能:
  • ✅讲解视频:
  • ✅2.仿真设计
  • ✅3. 程序代码
  • ✅4. 设计报告
  • ✅5. 设计资料内容清单&&下载链接
    • ✅[资料下载链接:](https://docs.qq.com/doc/DS0Nja3BaQmVtWUpZ)

基于51单片机电子钟温度检测数码显示设计( proteus仿真+程序+设计报告+讲解视频)

仿真图proteus7.8及以上

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:S0061

✅1.主要功能:

基于51单片机AT89C51/52(与AT89S51/52、AT89C51/52、STC89C51/52等51内核单片机通用)

1、设备初始化时钟为 23 时 59 分 50 秒。

2、按键 K4 定义为“时钟设置”按键,通过该按键可切换选择待调整的时、分、秒,当前选择的显示单元以 1 秒为间隔亮灭,时、分、秒的调整需注意数据边界属性。

3、按键 K2 定义为“加”按键,在“时钟设置”状态下,每次按下该按键当前选择的单元(时、分或秒)增加 1 个单位。

4、按键 K1 定义为“减”按键,在“时钟设置”状态下,每次按下该按键当前选择的单元(时、分或秒)减少 1 个单位。

5、“时钟显示”状态下,按下 K3 按键,显示温度数据,松开按键,返回“时钟显示”界面。

6、当温度超过 30 摄氏度时指示灯 D1 以 0.2 秒为间隔闪烁。

需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。

✅讲解视频:

仿真讲解+代码讲解

基于51单片机电子钟温度计数码管proteus仿真代码讲解(附下载链接

✅2.仿真设计

开始仿真

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。

imgimg

✅3. 程序代码

使用keil4或者keil5编译,代码有注释,可以结合报告理解代码含义。

img

主函数main.c代码

#include <reg51.h>
#include"temp.h"#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned longsbit L1=P2^2;//138引脚
sbit L2=P2^3;
sbit L3=P2^4;sbit k1=P3^0;	//减
sbit k2=P3^1;	//加
sbit k3=P3^2;	//切换
sbit k4=P3^3;	//设置sbit led=P2^0; //led
uchar key=0;//按键标志
uchar code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9
uchar shuma[8]={0x5b,0x4f,0x40,0x6d,0x6f,0x40,0x6d,0x3f};//时间显存
uchar wendu[3]={0x3f,0x3f,0x39};//温度显存uchar time=0,miao=50,fen=59,shi=23;	//计时
uchar wen=0;//温度
uchar time0=0,time1=0;//定时变量
uchar mode=0;//模式,设置用void delay(uint i);//函数声明void display1()	//显示温度
{uchar i;for(i=0;i<3;i++){P0=0;P2=(P2& 0xe3)+(i<<2);P0=wendu[2-i];delay(50);}
}
void display2()	//显示时间
{uchar i;for(i=0;i<8;i++){P0=0;P2=(P2& 0xe3)+(i<<2);P0=shuma[7-i];delay(50);}
}
//显示计算
void suan()
{shuma[0]=smgduan[shi/10];shuma[1]=smgduan[shi%10];shuma[3]=smgduan[fen/10];shuma[4]=smgduan[fen%10];shuma[6]=smgduan[miao/10];shuma[7]=smgduan[miao%10];wen=Ds18b20ReadTemp();//读取温度wendu[0]=smgduan[wen/10];wendu[1]=smgduan[wen%10];
}
//按键检测
void key_scan()
{if(k1 && k2 && k3 && k4) //按键标志清零key=0;if(!k4 &&(key!=4))//设置{key=4;if(mode<3)mode++;elsemode=0;}if(!k1 &&(key!=1))//减{key=1;if(mode==1){if(shi>0)shi--;elseshi=23;}if(mode==2){if(fen>0)fen--;elsefen=59;}if(mode==3){if(miao>0)miao--;elsemiao=59;}suan();}if(!k2 &&(key!=2))//加{key=2;if(mode==1){if(shi<23)shi++;elseshi=0;}if(mode==2){if(fen<59)fen++;elsefen=0;}if(mode==3){if(miao<59)miao++;elsemiao=0;}suan();}
}
//延时
void delay(uint i)
{while(i--){key_scan();}
}
//主函数
void main(void)
{ 	TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。TH0=0X3C;	//给定时器赋初值,定时50msTL0=0Xb0;	ET0=1;//打开定时器0中断允许EA=1;//打开总中断TR0=1;//打开定时器while(1){		if(mode==0){if(k3)		//显示display2();//时间显示elsedisplay1();//温度显示}else//闪烁显示{if(mode==1)//小时{if(time<11){P0=0;P2=(P2& 0xe3)+(0<<2);P0=shuma[7];delay(50);P0=0;P2=(P2& 0xe3)+(1<<2);P0=shuma[6];delay(50);P0=0;P2=(P2& 0xe3)+(2<<2);P0=shuma[5];delay(50);P0=0;P2=(P2& 0xe3)+(3<<2);P0=shuma[4];delay(50);P0=0;P2=(P2& 0xe3)+(4<<2);P0=shuma[3];delay(50);P0=0;P2=(P2& 0xe3)+(5<<2);P0=shuma[2];delay(50);}elsedisplay2();}if(mode==2)//分钟{if(time<11){P0=0;P2=(P2& 0xe3)+(0<<2);P0=shuma[7];delay(50);P0=0;P2=(P2& 0xe3)+(1<<2);P0=shuma[6];delay(50);P0=0;P2=(P2& 0xe3)+(2<<2);P0=shuma[5];delay(50);P0=0;P2=(P2& 0xe3)+(5<<2);P0=shuma[2];delay(50);P0=0;P2=(P2& 0xe3)+(6<<2);P0=shuma[1];delay(50);P0=0;P2=(P2& 0xe3)+(7<<2);P0=shuma[0];delay(50);}elsedisplay2();}if(mode==3)//秒{if(time<11){P0=0;P2=(P2& 0xe3)+(2<<2);P0=shuma[5];delay(50);P0=0;P2=(P2& 0xe3)+(3<<2);P0=shuma[4];delay(50);P0=0;P2=(P2& 0xe3)+(4<<2);P0=shuma[3];delay(50);P0=0;P2=(P2& 0xe3)+(5<<2);P0=shuma[2];delay(50);P0=0;P2=(P2& 0xe3)+(6<<2);P0=shuma[1];delay(50);P0=0;P2=(P2& 0xe3)+(7<<2);P0=shuma[0];delay(50);}elsedisplay2();}}}
}
//定时器0中断
void Timer0() interrupt 1
{if((time0<4)&&(wen>30))//led闪烁{time0=0;led=!led;}
elseled=1;
if(time<20)//计时time++;
else{time=0;if(mode==0)	//模式0正常计时{if(miao<59)miao++;else{miao=0;if(fen<59)fen++;else{fen=0;if(shi<23)shi++;else{shi=0;}}		}suan();//显示计算}}TH0=0X3C;	//给定时器赋初值,定时50msTL0=0Xb0;
}

✅4. 设计报告

5001字设计报告,内容包括硬件设计、软件设计、软硬件框图、调试、结论等

img

✅5. 设计资料内容清单&&下载链接

资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。

0、常见使用问题及解决方法–必读!!!!

1、仿真图

2、程序源码

3、功能要求

4、元器件清单

5、开题报告

6、软硬件流程框图

7、设计报告

8、讲解视频

Altium Designer 安装破解

KEIL+proteus 单片机仿真设计教程

KEIL安装破解

Proteus元器件查找

Proteus安装

Proteus简易使用教程

单片机学习资料

相关数据手册

答辩技巧

设计报告常用描述

鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url

img

资料下载链接:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/176211.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

尝试使用php给pdf添加水印

在开发中增加pdf水印的功能是很常见的&#xff0c;经过实验发现这中间还是会有很多问题的。第一种模式&#xff0c;采用生成图片的方式把需要添加的内容保存成图片&#xff0c;再将图片加到pdf中间&#xff0c;这种方法略麻烦一些&#xff0c;不过可以解决中文乱码的问题&#…

Payshield 10K是什么意思?有什么作用?

PayShield 10K是一种支付安全产品&#xff0c;由数字货币和法币混合而成的数字货币产品。它的意思是保护商家在交易过程中可能遭受的损失。这种产品的主要作用是保护数字货币支付系统的安全&#xff0c;并确保商家在交易过程中获得他们应得的收益。 PayShield 10K具有以下特点和…

《网络协议》07. 其他协议

title: 《网络协议》07. 其他协议 date: 2022-10-07 18:24:02 updated: 2023-11-15 08:00:52 categories: 学习记录&#xff1a;网络协议 excerpt: IPv6、WebSocket、WebService&#xff08;SOAP&#xff0c;WSDL&#xff09;、HTTPDNS、FTP、邮件&#xff08;SMTP&#xff0c;…

【KCC@南京】KCC南京数字经济-开源行

一场数字经济与开源的视听盛宴&#xff0c;即将于11月26日&#xff0c;在南京举办。本次参与活动的有&#xff1a; 庄表伟&#xff08;开源社理事执行长、天工开物开源基金会执行副秘书长&#xff09;、林旅强Richard&#xff08;开源社联合创始人、前华为开源专家&#xff09;…

Clickhouse学习笔记(3)—— Clickhouse表引擎

前言&#xff1a; 有关Clickhouse的前置知识详见&#xff1a; 1.ClickHouse的安装启动_clickhouse后台启动_THE WHY的博客-CSDN博客 2.ClickHouse目录结构_clickhouse 目录结构-CSDN博客 Cickhouse创建表时必须指定表引擎 表引擎&#xff08;即表的类型&#xff09;决定了&…

基于springboot实现学生选课平台管理系统项目【项目源码】

系统开发平台 在该地方废物回收机构管理系统中&#xff0c;Eclipse能给用户提供更多的方便&#xff0c;其特点一是方便学习&#xff0c;方便快捷&#xff1b;二是有非常大的信息储存量&#xff0c;主要功能是用在对数据库中查询和编程。其功能有比较灵活的数据应用&#xff0c…

Live800:客服行业的发展历程及未来前景

随着信息技术和互联网的高速发展&#xff0c;客服行业也在不断变革和发展。客服行业是一个服务型的行业&#xff0c;其发展历程也与人们对服务需求的变化密切相关。本文将介绍客服行业的发展历程和未来前景。 客服行业的发展历程 20世纪70年代&#xff0c;客服行业主要以电话服…

基于springboot实现校园医疗保险管理系统【项目源码】计算机毕业设计

基于springboot实现校园医疗保险管理系统演示 系统开发平台 在线校园医疗保险系统中&#xff0c;Eclipse能给用户提供更多的方便&#xff0c;其特点一是方便学习&#xff0c;方便快捷&#xff1b;二是有非常大的信息储存量&#xff0c;主要功能是用在对数据库中查询和编程。其…

Java的XWPFTemplate word生成列表

Java的XWPFTemplate工具类导出word.docx的使用_xwpftemplate 语法_youmdt的博客-CSDN博客 如果是表格的列表参考上面这篇文章即可&#xff0c;比较复杂的列表遍历暂时还没找到方法&#xff0c;只能手动创建表格了 上面是模板&#xff0c;非常简单&#xff0c;以为我们是要自己创…

【信息安全原理】——传输层安全(学习笔记)

&#x1f4d6; 前言&#xff1a;为保证网络应用&#xff0c;特别是应用广泛的Web应用数据传输的安全性&#xff08;机密性、完整性和真实性&#xff09;&#xff0c;可以在多个网络层次上采取安全措施。本篇主要介绍传输层提供应用数据安全传输服务的协议&#xff0c;包括&…

蓝桥杯第三场双周赛(AK)

题目非常典型&#xff0c;很适合学算法。 1111 第 3 场算法双周赛 - 蓝桥云课 双十一的祈祷 题意&#xff1a;求的个位数。 思路&#xff1a;只需要求个位数&#xff0c;因此此题等效于求 ,可用快速幂或者直接看出为1。 #include <bits/stdc.h> using namespace std; …

Linux Docker 图形化工具 Portainer远程访问

文章目录 前言1. 部署Portainer2. 本地访问Portainer3. Linux 安装cpolar4. 配置Portainer 公网访问地址5. 公网远程访问Portainer6. 固定Portainer公网地址 前言 Portainer 是一个轻量级的容器管理工具&#xff0c;可以通过 Web 界面对 Docker 容器进行管理和监控。它提供了可…