蓝桥杯单片机省赛——第八届“基于单片机的电子钟程序设计与调试”程序部分

往期回顾

第三届蓝桥杯单片机省赛
第四届蓝桥杯单片机省赛
第五届蓝桥杯单片机省赛
第六届蓝桥杯单片机省赛
第七届蓝桥杯单片机省赛

文章目录

  • 往期回顾
  • 一、前期准备
  • 二、代码详情
    • 1.基础代码
      • 蜂鸣器/继电器/led/定时器之类的代码
    • 2.按键详解
      • 按键写法讲解
    • 3.驱动的处理
      • 驱动写法讲解
    • 4.温度/数码管部分处理
    • 5.DS1302部分处理
    • 6.总代码



在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

一、前期准备

1:本文使用的头文件是由stc生成
在这里插入图片描述
点击保存文件之后,保存至自己文件目录下方即可
在这里插入图片描述
2:本文使用的都是官方提供的底层驱动代码
在这里插入图片描述

二、代码详情

1.基础代码

蜂鸣器/继电器/led/定时器之类的代码

参考之前写的文章
第四届蓝桥杯代码讲解

2.按键详解

按键写法讲解

直接跳转以前的文章即可
多种蓝桥杯/51按键写法详解

3.驱动的处理

驱动写法讲解

直接跳转以前的文章即可
蓝桥杯驱动处理

4.温度/数码管部分处理

直接跳转以前的文章即可
蓝桥杯温度部分处理

5.DS1302部分处理

DS1302部分详解

6.总代码

#include<stc15f2k.h>
#include<ds1302.h>
#include<onewire.h>
sbit s7=P3^0;
sbit s6=P3^1;
sbit s5=P3^2;
sbit s4=P3^3;
char ds1302_write[]={0x80,0x82,0x84};
char ds1302_read[]={0x81,0x83,0x85};
char time[]={50,59,23};
char time_1[]={0,0,0};
char clock[]={0,0,0};
char dula[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xc6};
char disdula[]={0,0,0,0,0,0,0,0};int diswela,key,ms,wei=9,sign,con;
int temp;
bit flag,light,light_1;
void renwu_2();
void buzz(bit on)
{P2=((P2&0X1F)|0XA0);if(on)P0=0X40;elseP0=0X00;P2&=0X1F;
}void led(int i)
{P2=((P2&0X1F)|0X80);P0=i;P2&=0X1F;
}void delay(int x)
{int i;while(x--)for(i=0;i<5*123;i++);
}void din()
{TMOD=0X10;TH1=(65536-11059/12)/256;TL1=(65536-11059/12)%256;EA=1;TR1=1;ET1=1;
}void display()
{if(diswela==wei&&ms>=1000)diswela=diswela+2;P2=((P2&0X1F)|0XE0);P0=0xff;P2&=0X1F;P2=((P2&0X1F)|0Xc0);P0=1<<diswela;P2&=0X1F;P2=((P2&0X1F)|0Xe0);P0=dula[disdula[diswela]];P2&=0X1F;if(++diswela>=8)diswela=0;
}void display_ds1302()
{disdula[0]=time[2]/16;disdula[1]=time[2]%16;disdula[2]=10;disdula[3]=time[1]/16;disdula[4]=time[1]%16;disdula[5]=10;disdula[6]=time[0]/16;disdula[7]=time[0]%16;
}void bcddce(bit on)
{int i;for(i=0;i<3;i++){if(on)time_1[i]=((time[i]/10)<<4)|(time[i]%10);elsetime[i]=((time_1[i]/16)*10)+time_1[i]%16;}
}void ds_write()
{int i;bcddce(1);Write_Ds1302_Byte(0x8e,0x00);for(i=0;i<3;i++){Write_Ds1302_Byte(ds1302_write[i],time_1[i]);}Write_Ds1302_Byte(0x8e,0x80);
}void ds_read()
{int i;for(i=0;i<3;i++){time[i]=Read_Ds1302_Byte(ds1302_read[i]);}
}char anjian()
{int keyscan=0;if(s4==0||s5==0||s6==0||s7==0){delay(10);if(s4==0)keyscan=4;else if(s5==0)keyscan=5;else if(s6==0)keyscan=6;else if(s7==0)keyscan=7;}while(s5==0||s6==0||s7==0);return keyscan;
}void wendu()
{int LSB,MSB;Init_DS18B20();Write_DS18B20(0xcc);Write_DS18B20(0x44);delay(100);Init_DS18B20();Write_DS18B20(0xcc);Write_DS18B20(0xbe);LSB=Read_DS18B20();MSB=Read_DS18B20();Init_DS18B20();temp=MSB;temp=(temp<<8)|LSB;if((temp&0xf800)==0x0000){temp>>=4;temp=temp*100;temp=temp+(LSB&0x0f)*6.25;}
}void display_18b20()
{disdula[0]=11;disdula[1]=11;disdula[2]=11;disdula[3]=11;disdula[4]=11;disdula[5]=temp/1000%10;disdula[6]=temp/100%10;disdula[7]=12;
}void display_clock()
{disdula[0]=clock[2]/10;disdula[1]=clock[2]%10;disdula[2]=10;disdula[3]=clock[1]/10;disdula[4]=clock[1]%10;disdula[5]=10;disdula[6]=clock[0]/10;disdula[7]=clock[0]%10;
}void jia()
{if(wei==0){clock[2]++;if(clock[2]>=24)clock[2]=0;}if(wei==3){clock[1]++;if(clock[1]>=60)clock[1]=0;}if(wei==6){clock[0]++;if(clock[0]>=60)clock[0]=0;}
}void jian()
{if(wei==0){clock[2]--;if(clock[2]<=-1)clock[2]=23;}if(wei==3){clock[1]--;if(clock[1]<=-1)clock[1]=59;}if(wei==6){clock[0]--;if(clock[0]<=-1)clock[0]=59;}while(!s4);
}void renwu_6()
{char n=0;while(1){display_clock();if(flag==1){flag=0;key=anjian();switch(key){case 4:jia();break;case 5:jian();break;case 6:renwu_2();n++;break;}}if(n>=4)break;}
}char bcdtodce(char on)
{on=((on/16)*10)+on%16;return on;
}void ledrun()
{if(light_1==1)led(0xfe);if(light_1==0)led(0xff);if(light==0)led(0xff);
}void renwu_1()
{while(1){wendu();display_18b20();if(s4==1)break;}
}void renwu_2()
{++sign;if(sign<=1)wei=0;if(sign==2)wei=3;if(sign==3)wei=6;if(sign==4){wei=9;sign=0;}
}void renwu_3()
{bcddce(0);if(wei==0){time[2]++;if(time[2]>=24)time[2]=0;}if(wei==3){time[1]++;if(time[1]>=60)time[1]=0;}if(wei==6){time[0]++;if(time[0]>=60)time[0]=0;}ds_write();
}void renwu_4()
{bcddce(0);if(wei==0){time[2]--;if(time[2]<=-1)time[2]=23;}if(wei==3){time[1]--;if(time[1]<=-1)time[1]=59;}if(wei==6){time[0]--;if(time[0]<=-1)time[0]=59;}ds_write();while(!s4);
}void main()
{int i;din();buzz(0);led(0xff);ds_write();while(1){for(i=0;i<3;i++){time_1[i]=time[i];}		if(light==1)ledrun();		display_ds1302();ds_read();		if(flag==1){flag=0;key=anjian();switch(key){case 4:if(wei==9)	renwu_1();elserenwu_4();break;case 7:renwu_2();break;case 5:renwu_3();break;	case 6:renwu_6();break;					}}		}
}void qa() interrupt 3
{TH1=(65536-11059/12)/256;TL1=(65536-11059/12)%256;ms++;if(!(ms%100))flag=1;if(ms==1500)ms=0;display();if(bcdtodce(time[2])==clock[2]&&bcdtodce(time[1])==clock[1]&&bcdtodce(time[0])==clock[0])light=1;	if(light==1)con++;if(con>=5000){con=0;light=0;led(0xff);
}if(!(con%200)){if(light_1==0)light_1=1;else light_1=0;}
}

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

由于找不到mfc140u.dll,无法继续执行的多种解决方法

在我们日常与计算机的密切互动中&#xff0c;或许不少用户都曾遇到过这样一个棘手的问题&#xff1a;系统突然弹出一个提示窗口&#xff0c;告知我们“找不到mfc140u.dll文件”。这个文件是Microsoft Foundation Class&#xff08;MFC&#xff09;库的一部分&#xff0c;用于支…

导数之光:探寻机器学习中的微变奥秘

在当今这个数据驱动的时代&#xff0c;机器学习以其强大的学习和预测能力&#xff0c;成为了推动科技进步的重要力量。而在机器学习的背后&#xff0c;数学原理&#xff0c;尤其是导数的应用&#xff0c;为其提供了坚实的理论支撑。本文将详细探讨导数在机器学习中的体现&#…

AgentScope: A Flexible yet Robust Multi-Agent Platform

# 文章推荐 # 文章名称&#xff1a;AgentScope: A Flexible yet Robust Multi-Agent Platform 文章链接&#xff1a;https://arxiv.org/pdf/2402.14034.pdf github链接&#xff1a;https://github.com/modelscope/agentscope 概述 这篇文章介绍了在多智能体系统中所面临的…

抖音小店运营实战班,全新升级 从零到进阶精通 分享月销百万小店核心秘密

课程内容&#xff1a; 1 2024抖音电商发展趋势及抖店运营策略(直播2024 0412).mp4 2 1-1抖音小店入驻流程(直播2024 04 12),mp4 3 1-2个体店铺VS企业店铺有什么区别(直播20240412).mp4 4 1-3抖音小店店铺搭建(直播2024 04 12).mp4 5 2-1-如何避免违禁词(附违禁词大全)(直播…

OpenHarmony实战开发-使用通用事件、触屏事件

触屏事件指当手指/手写笔在组件上按下、滑动、抬起时触发的回调事件。包括点击事件、拖拽事件和触摸事件。 图1 触摸事件原理 点击事件 点击事件是指通过手指或手写笔做出一次完整的按下和抬起动作。当发生点击事件时&#xff0c;会触发以下回调函数&#xff1a; onClick(ev…

智能消费记账|基于SSM+vue的大学生智能消费记账系统(源码+数据库+文档)

智能消费记账目录 基于SSMvue的大学生智能消费记账系统 一、前言 二、系统设计 三、系统功能设计 1 用户列表 2 预算信息管理 3 预算类型管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1…

【深耕 Python】Data Science with Python 数据科学(19)书402页练习题:模型准确率对比研究、KMeans算法的一点探讨

写在前面 关于数据科学环境的建立&#xff0c;可以参考我的博客&#xff1a; 【深耕 Python】Data Science with Python 数据科学&#xff08;1&#xff09;环境搭建 往期数据科学博文一览&#xff1a; 【深耕 Python】Data Science with Python 数据科学&#xff08;2&…

Ant Design助力:实现用户列表的优雅展示与管理

文章目录 概要前端讲解登录组件注册组件用户列表组件 后端讲解连接数据库db.js路由routes.jsexpress应用app.js 启动项目小结 概要 在上一篇博客&#x1f6aa;中&#xff0c;我们已经成功实现了登录注册系统的基本功能。现在&#xff0c;我们将进一步完善系统&#xff0c;实现…

【Schrödinger薛定谔软件使用实战】- 4lyw蛋白实战

文章目录 软件选择1 pretein preparation1.1 import and process注意1.1.1 preprocess可能遇到的问题 1.2 review and modify1.3 refine1.3.1 optimize优化氢键网络1.3.2 minimize 氢原子会进行能量最小化 2 ligand prepare3 生成对接盒子-receptor grid generation3.1 recepto…

Unity SteamVR入门

概述 VR项目现在在当前已经是非常热门的技术&#xff0c;可以给玩家身临其境的感觉&#xff0c;接下来让我们学习这部分的内容吧&#xff01; SteamVR Input SteamVR绑定流程&#xff0c;在Windows窗口的点击SteamVR-input&#xff0c;图1&#xff0c;在这里可以选择你需要绑定…

守护数据安全: 零信任视角下的勒索病毒防范之道

前言 就在近日&#xff0c;鸿海集团旗下半导体设备大厂——京鼎精密科技股份有限公司&#xff08;以下简称“京鼎”&#xff09;遭到了黑客的入侵。黑客在京鼎官网公布信息直接威胁京鼎客户与员工&#xff0c;如果京鼎不支付赎金&#xff0c;客户资料将会被公开&#xff0c;员…

【项目纪实】某国有航空公司人力资源系统诊断咨询项目

公司的人力资源管理问题一直都比较严重&#xff0c;比如人员冗余、员工工作积极性差等问题&#xff0c;虽然经过多次的管理尝试&#xff0c;存在的问题仍然没有缓解。华恒智信人力资源咨询公司的老师特别专业&#xff0c;帮我们系统、全面的诊断了人力资源管理上存在的问题&…

BSP视频教程第30期:UDS ISO14229统一诊断服务CAN总线专题,常用诊断执行流程精讲,干货分享,图文并茂(2024-04-30)

视频教程汇总帖&#xff1a;【学以致用&#xff0c;授人以渔】2024视频教程汇总&#xff0c;DSP第12期&#xff0c;ThreadX第9期&#xff0c;BSP驱动第30期&#xff0c;USB实战第5期&#xff0c;GUI实战第3期&#xff08;2024-04-30&#xff09; - STM32F429 - 硬汉嵌入式论坛 …

目标检测发展概述

前言 本篇文章只是简单介绍一下目标检测这一计算机视觉方向的发展历史&#xff0c;因此重点在于介绍而不是完整阐述各个时期的代表算法&#xff0c;只要能够简单了解到目标检测的发展历史那么本文的目的就达到了。 目标检测的任务 从上图不难看出&#xff0c;目标检测是计算机…

71.网络游戏逆向分析与漏洞攻防-角色与怪物信息的更新-分析并利用角色与怪物创建的数据包

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果 现在的代码都是依据数据包来写的&#xff0c;如果看不懂代码&#xff0c;就说明没看懂数据包…

Kubernetes - Dashboard 配置用户名密码方式登录

Kubernetes - Dashboard 配置用户名密码方式登录 前言&#xff1a; 为了 K8s 集群安全&#xff0c;默认情况下 Dashboard 以 Token的形式登录的&#xff0c;那如果我们想以用户名/密码的方式登录该怎么操作呢&#xff1f;其实只需要我们创建用户并进行 ClusterRoleBinding绑定即…

网站页面设计方案

网站页面设计方案是指对网站首页、频道页、文章页等页面的设计和布局进行统筹规划和实际操作的一系列方案。好的网站设计方案不仅要能够满足用户的使用需求&#xff0c;还要具有视觉美感和品牌形象的凸显。本文将从如何制定网站设计方案方面进行探讨。 1.确定网站定位和目标用户…

Flutter笔记:谈Material状态属性-为什么FlatButton等旧版按钮就废弃了

Flutter笔记 谈Material状态属性-为什么FlatButton等旧版按钮就废弃了 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this artic…

cmake的使用方法: 多个源文件的编译

一. 简介 前面一篇文章学习了针对只有一个 .c源文件&#xff0c;如何编写 CMakeLists.txt内容&#xff0c;从而使用 cmake工具如何编译工程。文章如下&#xff1a; cmake的使用方法: 单个源文件的编译-CSDN博客 本文学习针对 多个 .c源文件&#xff0c; CMakeLists.txt文件如…

2000-2021年各省产业集聚度/就业密度数据(含原始数据+计算结果)

2000-2021年各省产业集聚度/就业密度数据 1、时间&#xff1a;2000-2021年 2、来源&#xff1a;人口就业统计年鉴、各省年鉴 3、指标&#xff1a;就业人数、行政区划面积、产业集聚度/就业密度 4、范围&#xff1a;31省 5、计算说明&#xff1a;产业集聚度/就业密度就业人…