首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

基于STC89C51单片机的智能时钟Keil工程

硬件开发 35.74KB 28 需要积分: 1
立即下载

资源介绍:

通过数码管显示年、月、日、时、分、秒;同时可以通过按键修改时间。其中包含最简单的按键消抖、简单C语言语句的运用、数码管的动态显示、74HC573数字芯片的运用、51单片机定时器中断的使用;适合新手观看,主要提供一点思路。
#include #include #define u8 unsigned char #define u16 unsigned int sbit DU = P2 ^ 6; //数码管段选 sbit WE = P2 ^ 7; //数码管位选 sbit key1 = P3 ^ 0; //切换日历和时间。 sbit key2 = P3 ^ 1; //切换位用来准备调值。 sbit key3 = P3 ^ 2; //加数器。 sbit key4 = P3 ^ 3; //切换到秒表。 u8 year = 22, month, day, h, m, s; //时间计数变量。 u8 ms, ss, us; //秒表计数变量。 u16 count, count1; //计数变量。 u8 keyvalue0, keyvalue, keyvalue1; //切换模式,调节时分秒各个位置,开关秒表。 void delay(int i)//5us延时函数。 { while(i--) _nop_(); } void time0()//设置定时器0,8位自动重装模式,定时0.2ms { TMOD = 0x02; TH0 = 0x37; TL0 = 0x37; EA = 1; ET0 = 1; TR0 = 1; } u8 code SMGduan[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; //固定数值数组。 void display(u8 a, u8 b, u8 c) //数码管显示函数。 { if(keyvalue != 2 && keyvalue != 3) { DU = 0; P0 = SMGduan[a / 10]; DU = 1; DU = 0; WE = 0; P0 = 0xFE; WE = 1; delay(100); P0 = 0xFF; WE = 0; DU = 0; P0 = SMGduan[a % 10]; DU = 1; DU = 0; WE = 0; P0 = 0xFD; WE = 1; delay(100); P0 = 0xFF; WE = 0; } DU = 0; P0 = 0x40; DU = 1; DU = 0; WE = 0; P0 = 0xFB; WE = 1; delay(100); P0 = 0xFF; WE = 0; if(keyvalue != 1 && keyvalue != 3) { DU = 0; P0 = SMGduan[b / 10]; DU = 1; DU = 0; WE = 0; P0 = 0xF7; WE = 1; delay(100); P0 = 0xFF; WE = 0; DU = 0; P0 = SMGduan[b % 10]; DU = 1; DU = 0; WE = 0; P0 = 0xEF ; WE = 1; delay(100); P0 = 0xFF; WE = 0; } DU = 0; P0 = 0x40 ; DU = 1; DU = 0; WE = 0; P0 = 0xDF; WE = 1; delay(100); P0 = 0xFF; WE = 0; if(keyvalue != 1 && keyvalue != 2) { DU = 0; P0 = SMGduan[c / 10]; DU = 1; DU = 0; WE = 0; P0 = 0xBF; WE = 1; delay(100); P0 = 0xFF; WE = 0; DU = 0; P0 = SMGduan[c % 10]; DU = 1; DU = 0; WE = 0; P0 = 0x7F ; WE = 1; delay(100); P0 = 0xFF; WE = 0; } } void keyscan()//按键扫描。 { if(key1 == 0) { delay(4000); if(key1 == 0) { keyvalue0++; if(keyvalue0 == 2) keyvalue0 = 0; } while(!key1); } if(key2 == 0) { delay(4000); if(key2 == 0) { keyvalue++; if(keyvalue == 4) keyvalue = 0; } while(!key2); } if(key4 == 0) { delay(4000); if(key4 == 0) { keyvalue1++; if(keyvalue1 == 3) { keyvalue1 = 0; ms = 0; ss = 0; us = 0; } } while(!key4); } if(keyvalue0 == 1) { if(keyvalue == 1) { if(key3 == 0) { delay(4000); if(key3 == 0) { year++; if(year == 51) year = 22; while(!key3); } } } if(keyvalue == 2) { if(key3 == 0) { delay(4000); if(key3 == 0) { month++; if(month == 13) month = 1; while(!key3); } } } if(keyvalue == 3) { if(key3 == 0) { delay(4000); if(key3 == 0) { day++; if(day == 31) day = 1; while(!key3); } } } } else { if(keyvalue == 1) { if(key3 == 0) { delay(4000); if(key3 == 0) { h++; if(h == 24) h = 0; while(!key3); } } } if(keyvalue == 2) { if(key3 == 0) { delay(4000); if(key3 == 0) { m++; if(m == 60) m = 0; while(!key3); } } } if(keyvalue == 3) { if(key3 == 0) { delay(4000); if(key3 == 0) { s++; if(s == 60) s = 0; while(!key3); } } } } } void main() { time0(); while(1) { keyscan(); if(keyvalue1) { display(ms, ss, us); } else { if(keyvalue0) display(year, month, day); else display(h, m, s); } } } void time0h() interrupt 1//定时器0中断函数。 { count++; if(count == 46) { count = 0; count1++; if(keyvalue1 == 1) //进入秒表。 { us++; if(us == 100) { us = 0; ss++; if(ss == 60) { ss = 0; ms++; } } } if(count1 == 100) //正常时间累加。 { count1 = 0; s++; if(s == 60) { s = 0; m++; if(m == 60) { m = 0; h++; if(h == 24) { h = 0; day++; if(day == 30) { day = 0; month++; if(month == 12) { month = 0; year++; } } } } } } } }

资源文件列表:

智能时钟.zip 大约有17个文件
  1. 智能时钟/clock.c 6.88KB
  2. 智能时钟/debug.log 99B
  3. 智能时钟/Listings/
  4. 智能时钟/Listings/clock.lst 21.21KB
  5. 智能时钟/Listings/STARTUP.lst 13.83KB
  6. 智能时钟/Listings/智能时钟.m51 15.61KB
  7. 智能时钟/Objects/
  8. 智能时钟/Objects/clock.obj 11.03KB
  9. 智能时钟/Objects/STARTUP.obj 819B
  10. 智能时钟/Objects/智能时钟 10.2KB
  11. 智能时钟/Objects/智能时钟.build_log.htm 1023B
  12. 智能时钟/Objects/智能时钟.hex 2.61KB
  13. 智能时钟/Objects/智能时钟.lnp 108B
  14. 智能时钟/STARTUP.A51 6.23KB
  15. 智能时钟/智能时钟.uvgui.liang 89.44KB
  16. 智能时钟/智能时钟.uvopt 5.98KB
  17. 智能时钟/智能时钟.uvproj 14.27KB
0评论
提交 加载更多评论
其他资源 Smart系统-题库及试卷管理模块的设计与开发.zip
Smart系统-题库及试卷管理模块的设计与开发.zip
基于Springboot技术的实验室管理系统
介绍 基于Springboot技术的实验室管理系统,旨在通过信息化手段提升实验室管理的效率和质量。系统主要服务于高校和科研机构,具备完善的实验室预约、设备管理、课程管理等功能,为管理员、教师和学生提供便捷、高效的实验室使用和管理平台。系统设计了三种角色:管理端、教师端和学生端,每个角色对应不同的功能模块,满足各自的管理和使用需求。 技术栈 后端技术栈:Springboot+Mysql+Maven 前端技术栈:Vue+Html+Css+Javascript+ElementUI 开发工具:Idea+Vscode+Navicate 系统功能介绍 管理端功能模块 个人中心:管理员可以管理个人信息,包括修改密码、更新联系方式等。 学生管理:管理员可以添加、修改、删除和查看学生信息,管理学生的实验室使用记录和预约情况。 教师管理:管理员可以添加、修改、删除和查看教师信息,管理教师的实验课程和实验室使用记录。 公告信息管理:管理员可以发布和管理公告信息,确保重要通知和信息及时传达到教师和学生。 知识库管理:管理员可以管理实验知识库,包括添加、修改
高校实验室管理系统的实现
高校实验室管理系统的实现涉及多个关键方面,包括设备管理、资源预约、安全监控、数据分析等。以下是一些主要的实现步骤和功能要点: 1. 设备管理 1.设备信息管理: 记录每个实验室中的设备清单、型号、状态和维护记录。 2.设备预约与借用: 学生或教职工可以通过系统预约或借用设备,确保资源的有效利用。 2. 资源预约 3.实验室预约: 提供学生和教职工预约实验室的功能,避免时间冲突和资源浪费。 4.设备使用预约: 针对特定设备的使用预约,确保设备的有效利用和安全操作。 3. 安全管理 5.安全监控: 实验室内设备的安全使用监控,如实时视频监控或传感器监测,防止意外事件发生。 6.安全规范与教育: 提供安全操作规范和培训,确保实验室安全意识和操作规范。 4. 数据管理与分析 7.实验数据记录: 对实验过程中产生的数据进行记录和存储,确保数据的安全和可查性。 8.数据分析与报告: 分析实验结果数据,生成报告或图表,支持科研成果的整理和展示。 5. 用户管理与权限控制 9.用户账号管理: 管理学生、教职工等用户的账号和权限,确保不同角色的合适权限。 10.权限控制: 设定不同用户
基于SSM的健身房管理系统
1. 系统架构与技术选型 Spring框架: 提供依赖注入和控制反转(IoC / DI)功能,管理Java对象的生命周期和配置。 Spring MVC: 基于MVC模式,处理用户请求并将响应返回给客户端。 MyBatis: ORM框架,用于简化数据库操作,提供SQL映射和执行。 2. 数据库设计与实体类定义 数据库设计: 设计健身房管理系统的数据库结构,包括会员信息、健身设备、健身课程、员工信息等表结构。 实体类定义: 使用Java对象映射数据库表,定义会员、设备、课程、员工等实体类,利用注解或XML配置与数据库表的映射关系。 3. 后端业务逻辑实现 业务层(Service): 实现健身房管理系统的核心业务逻辑,如会员管理、设备管理、课程管理、员工管理等功能。 数据访问层(DAO): 使用MyBatis进行数据库操作,定义接口并编写SQL语句,实现数据的CRUD(增删改查)功能。 4. 前端界面设计与开发 使用HTML、CSS、JavaScript等技术开发前端页面: 设计用户界面,包括会员注册、课程预约、设备租借等功能的页面。 整合前端与后端: 使用Spring MVC的控制器处理前
FreeRTOS-互斥量.zip
FreeRTOS_互斥量 西西菜鸟
TortoiseSVN 1.14.7
TortoiseSVN 1.14.7
nvm 安装包,v1.1.12版本
nvm 安装包,v1.1.12版本
windows redis5 可用
windows redis5 可用