基于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 long

sbit 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++;
			else
				mode=0;
		}
		if(!k1 &&(key!=1))//减
		{
			key=1;
			if(mode==1)
			{
				if(shi>0)
					shi--;
				else
					shi=23;
			}
			if(mode==2)
			{
				if(fen>0)
					fen--;
				else
					fen=59;
			}
			if(mode==3)
			{
				if(miao>0)
					miao--;
				else
					miao=59;
			}
			suan();
		}
		if(!k2 &&(key!=2))//加
		{
			key=2;
			if(mode==1)
			{
				if(shi<23)
					shi++;
				else
					shi=0;
			}
			if(mode==2)
			{
				if(fen<59)
					fen++;
				else
					fen=0;
			}
			if(mode==3)
			{
				if(miao<59)
					miao++;
				else
					miao=0;
			}
			suan();
		}
}
//延时
void delay(uint i)
{
	while(i--)
	{
		key_scan();
	}
}
//主函数
void main(void)
{ 	
	TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。
	TH0=0X3C;	//给定时器赋初值,定时50ms
	TL0=0Xb0;	
	ET0=1;//打开定时器0中断允许
	EA=1;//打开总中断
	TR0=1;//打开定时器
	
 	while(1)
	{		
		if(mode==0)
		{
			if(k3)		//显示
				display2();//时间显示
			else
				display1();//温度显示
		}
		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);
				}
				else
					display2();
			}
			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);
				}
				else
					display2();
			}
			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);
				}
				else
					display2();
			}
		}
		
	}
}
//定时器0中断
void Timer0() interrupt 1
{
	
if((time0<4)&&(wen>30))//led闪烁
  {
  	time0=0;
	led=!led;
  }
else
	led=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;	//给定时器赋初值,定时50ms
	TL0=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

资料下载链接:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【文件读取/包含】任意文件读取漏洞 afr_3

1.1漏洞描述 漏洞名称任意文件读取漏洞 afr_3漏洞类型文件读取/包含漏洞等级⭐⭐⭐⭐⭐漏洞环境docker攻击方式 1.2漏洞等级 高危 1.3影响版本 暂无 1.4漏洞复现 1.4.1.基础环境 靶场docker工具BurpSuite 1.4.2.环境搭建 1.创建docker-compose.yml文件 version: 3.2 servi…

VSCode配置ESP-IDF

参考其他 文章即可 如果编译时遇到问题&#xff0c;就去找环境变量&#xff0c;多半是环境变量没有配置好。根据自己安装的idf的目录重新配置 环境变量. 如果电脑上有python环境&#xff0c;但是编译时出现找不到python解释器&#xff0c;需要执行下面命令&#xff0c;另外重…

modbus-RTU是一种比较简单、可靠的协议

modbus-RTU是一种比较简单、可靠的协议 RTU, 是modbus中的一种应用层协议&#xff0c;在OSI的第七层 数据格式 应用

环境检测lims系统 环境检测行业实验室管理系统

白码环境监测实验室管理系统针对实验室管理中遇到的问题和难点&#xff0c;提供对环境监测实验室所有监测业务的全流程管理&#xff0c;实现对实验室“人、机、料、法、环”(即人员、仪器、样品、方法、环境)的全面资源管理&#xff0c;实现环境监测实验室工作的自动化和规范化…

基于springboot+vue大学生社团活动管理系统

基于springbootvue大学生社团活动管理系统 摘要 本文介绍了一种基于Spring Boot和Vue.js的大学生社团活动管理系统的设计与实现。社团活动在大学生活中扮演着重要角色&#xff0c;而有效的管理系统可以帮助提高社团活动的组织性和效率。本系统采用了前后端分离的架构&#xff0…

Javaweb之Vue的概述

2.1 Vue概述 通过我们学习的htmlcssjs已经能够开发美观的页面了&#xff0c;但是开发的效率还有待提高&#xff0c;那么如何提高呢&#xff1f;我们先来分析下页面的组成。一个完整的html页面包括了视图和数据&#xff0c;数据是通过请求 从后台获取的&#xff0c;那么意味着我…

2023年【陕西省安全员C证】最新解析及陕西省安全员C证试题及解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 陕西省安全员C证最新解析根据新陕西省安全员C证考试大纲要求&#xff0c;安全生产模拟考试一点通将陕西省安全员C证模拟考试试题进行汇编&#xff0c;组成一套陕西省安全员C证全真模拟考试试题&#xff0c;学员可通过…

SQL note2:DIsks and Files

目录 1、内存和磁盘 2、磁盘API 3、磁盘结构 4、访问磁盘页面 5、磁盘 vs SSD 5、磁盘空间管理 6、Files, Pages, Records 7、选择文件类型 8、堆文件 1&#xff09;链表实现 2&#xff09;页面目录实现 9、排序文件 10、关于计算标题页的注意事项 11、记录类型 …

网络编程TCP/UDP

1 网络通信概述 1.1 IP 和端口 所有的数据传输&#xff0c;都有三个要素 &#xff1a;源、目的、长度。 怎么表示源或者目的呢&#xff1f;请看图 所以&#xff0c;在网络传输中需要使用“IP 和端口”来表示源或目的。 1.2 网络传输中的 2 个对象&#xff1a;server 和 clie…

基于单片机的汽车安全气囊系统故障仿真设计

**单片机设计介绍&#xff0c; 基于单片机微波炉加热箱系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的汽车安全气囊系统的故障检测系统是一种用于检测安全气囊系统故障的智能化设备&#xff0c;通过单片机控…

WPF小知识

在编写WPF程序遇到一些小问题&#xff0c;所以记录起来&#xff0c;查其他方便。 Label自动换行 网上搜的都不能自动换行&#xff0c;发现使用Run 就可以。在脚本中直接调用labTip.Text进行赋值就可以了。 <Label Foreground"#FF9E9E9E" FontSize"16"…

[Android]创建TabBar

创建一个包含“首页”、“分类”和“我的”选项卡的TabBar并实现切换功能&#xff0c;通常可以通过使用TabLayout结合ViewPager或ViewPager2来完成。以下是一个基本的示例&#xff0c;展示了如何使用Kotlin和XML来实现这个功能。 1.添加依赖项到build.gradle dependencies {/…

pg_bouncer在使用中的坑勿踩

目录 简介 环境信息 问题配置 问题配置 启动pgbouncer 链接逻辑图 测试存在问题 pgadmin4 Idea JAVA调用 ​编辑 dbeaver 建议&#xff1a; 简介 前面文章说过关于pg_bouncer的安装讲解&#xff0c;这里讲一下在使用中的坑&#xff0c;在进行配置的时候需要注意。 …

Linux设备树(DTS)介绍

Dts&#xff1a;DTS即Device Tree Source&#xff0c;是一个文本形式的文件&#xff0c;用于描述硬件信息。一般都是固定信息&#xff0c;无法变更&#xff0c;无法overlay。 设备树由来 linux内核源码中&#xff0c;之前充斥着大量的平台相关&#xff08;platform Device&…

《算法通关村——位运算常用技巧》

《算法通关村——位运算常用技巧》 位运算的性质有很多&#xff0c;此处列举一些常见性质&#xff0c;假设以下出现的变量都是有符号整数。 ●幂等律&#xff1a;a &aa&#xff0c;a ∣ aa&#xff08;注意异或不满足幂等律&#xff09;&#xff1b; ●交换律&#xff1…

基于Python实现连锁咖啡店经营情况EDA分析【500010097】

导入模块 import pandas as pd import plotly.graph_objects as go from plotly.subplots import make_subplots import plotly.express as px获取数据 df pd.read_csv(r./data/coffeeshop.csv) data_exploration(df)数据缺失值情况 print(数据缺失值情况&#xff1a;) df.…

【halcon】外观检测总结之灰度操作

1 灰度操作之 滞后延时 *滞后阈值 hysteresis_threshold (ImageInvert, RegionHysteresis, 190, 220, 3)这句话的意思就是&#xff0c;逐个判断这个图片区域里像素的灰度值&#xff0c;如果这个值小于190就不考虑了pass掉&#xff0c;如果大于220就直接入选。值在190和220之间…

大型语言模型与知识图谱融合方法概述

背景意义 大型语言模型&#xff08;LLM&#xff09;已经很强了&#xff0c;但还可以更强。通过结合知识图谱&#xff0c;LLM 有望解决缺乏事实知识、幻觉和可解释性等诸多问题&#xff1b;而反过来 LLM 也能助益知识图谱&#xff0c;让其具备强大的文本和语言理解能力。而如果…

JS-项目实战-鼠标悬浮变手势(鼠标放单价上生效)

1、鼠标悬浮和离开事件.js //当页面加载完成后执行后面的匿名函数 window.onload function () {//get:获取 Element:元素 By:通过...方式//getElementById()根据id值获取某元素let fruitTbl document.getElementById("fruit_tbl");//table.rows:获取这个表格…

500报错解决了

问题&#xff1a; 如图所示&#xff0c;控制台报错找不到com.itheima.service.EmpService.page这个函数 刚开始一直以为是SQL语句写错了或者是哪里代码写漏了&#xff0c;检查了很多遍&#xff0c;还把源代码拷过来&#xff0c;执行也不对&#xff0c;于是就直接打开源项目执行…