基于51单片机的可调式电子仿真日历(时钟)
51单片机的使用十分简单,用它可以来做很多设计,而且51单片机结实耐造,我觉得用51来完成我的这个设计就可以满足相关的需求了。毕竟是仿真设计,这个是初代,经过一部分修改和提升,就可以在硬件上实现了(实物已经做出来了,效果还行)。
接下来我就简单介绍以下我的时钟。
,
文章目录
- 序言
- 一、51单片机的相关性能和操作
- 二、设计部分
- 1.设计思路
- 2.代码
- 总结
前言
其实51单片机挺好用的,操作简单,结实可靠,51可以满足本科阶段的相当部分的设计要求,而且还不需要什么高深的编码能力,只要简单学过c语言就可以掌握。这个时钟日历的设计十分的简单,不需要太多的知识,接下来我就简单介绍一下。
一、51单片机的性能和分析
stc89c52是STC公司设计和生产的一款8位的控制器,功能;8k字节的Flash,512字节的RAM,32位I/O口线,看门狗定时器,内置4KBEEPROW,3个16位定时器,另外还有4个外部中断。还有一款单片机是stc89c51,有两个定时器,3个外部中断,其他与52没有多大的差异。不过51系列的单片机在编程时代码容量不大,没有具体的参数,不过我去年打算做一个游戏机,不过代码太长,最终编译失败,然后我就用32做了一个,在以后的文章中会给大家分享的。
尽管我很喜欢51系列的单片机,不过它确实有些落后了,想想还是有点英雄落幕的感觉,现在在大学的一些比赛中,51还是可以承担一部分主控要求的,不过越来越少了,因为近些年来电子设计类比赛的题目越来越难了,或者说变得灵活了。从最开始的设计制作电压表、稳压电路、升降压装置、遥控类装置,到近些年的颜色识别、形状识别、球板平衡、立杆不倒,控制和自动化类的题目越来越灵活,每一届电赛在控制题上都有创新,要用到新的东西,大部分都用的不太熟悉,不过电源题在框架上没有太多的延申,基本都是工程上学过的东西,不过对于精度的要求越来越高,一定要对电路原理和设计有所了解,也要掌握PID控制的方法,这个在精密控制的应用上十分广泛。抱歉扯远了,回归正题,51确实落后了,不过,我们可以通过学习51来锻炼我们的编码能力,现阶段的编程c语言就足够了,在以后学习32的过程中,编码能力显得十分重要。
二、设计部分
1.设计思路
上图就是电子时钟日历的仿真设计,这个是刚开机的状态,可以通过右下脚的按钮来校准时间和日期。接下来我们就来介绍并操作一下。
我们可以看到上图屏幕中的第二行,从左到右分别表示年、月、日、时、分、秒。
接下来我们按右下脚的第一个按钮(选择),显示屏的第一行就会出现一个‘*”号,这个星号在那个数字上面,就表示这个数字可以调整了。
现在星号在月份的上面,就表示月份可以调整,这时我们可以通过按第二个按钮和第三个按钮来调整月份的大小,“加”键表示按下去后,月份数字加一,“减”键相反,比如我们把调整为12月,我们可以通过长按“加“键,或长按减键。效果如下图所示。
接下来,我们可以可以继续调整日期的数字,这里我设置了每个月,大月,小月的天数,也就是说,你的日期输调整的最大值,即不会大于现实中日期的天数。比如说,2022年的二月,有28 天,所以当日期数字加到28 时,再加的话就会变成1.
最下面的那两个键,基本没有什么作用,我就不一一介绍了。这个日历的时间还算精准,一个小时会差一秒,有时快一秒,有时慢一秒,所以一天下来的话,会差10-25秒,这个是我测出来的,因为51的定时器是16位的,所以调整的范围有限,对了,这个调时和数字可以长按加减键,效果其实都是一样的,所以我们仅用三个键就可以完成对时钟日历的校准。本人技术有限,写的不太完整请谅解。
实物展示;这个要电池才行,我电池去做别的项目了。
2.代码
部分代码:
下面的代码是显示相关数字的函数
void lcdprint(unsigned int nia,unsigned int yue,unsigned int day,unsigned int h,unsigned int min,unsigned int sec)
{int n2=nia/10;int n1=nia%10;int y2=yue/10;int y1=yue%10;int d2=day/10;int d1=day%10;int h2=h/10;int h1=h%10;int m2=min/10;int m1=min%10;int s2=sec/10;int s1=sec%10;lcdstation(0,1);年份数字wc51ddr(n2+0x30);lcdstation(1,1);wc51ddr(n1+0x30);lcdstation(3,1);wc51ddr(y2+0x30);月份数字lcdstation(4,1);wc51ddr(y1+0x30);lcdstation(6,1);wc51ddr(d2+0x30);日期数字lcdstation(7,1);wc51ddr(d1+0x30);lcdstation(9,1);wc51ddr(h2+0x30);小时数lcdstation(10,1);wc51ddr(h1+0x30);lcdstation(12,1);wc51ddr(m2+0x30);分lcdstation(13,1);wc51ddr(m1+0x30);lcdstation(14,1);wc51ddr(s2+0x30);秒lcdstation(15,1);wc51ddr(s1+0x30);}
void timer1_int (void) interrupt 3
{
TH1=(65536-9960)/256;
TL1=(65536-9960)%256;
ms++;
if(ms==80){
ms=0;
sec++;
if(sec==60){
sec=0;
min++;
if(min==60){
min=0;
h++;
if(h==24){
h=0;
day++;
if(yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12){
if(day>31){
day=1,yue++;
if(yue>12){
yue=1;
nia++;
if(nia==100){nia=0;}
}
}
}
这个是中断中应该设置的函数(部分)。
总结
这个日历时钟是不是有一定的作用,我觉得不算难,可以尝试动手做一下,可以给我留言。
要完整资料的可以加我QQ,2649191761
基于51单片机的可调式电子仿真日历(时钟)相关推荐
- 基于单片机超声波视力保护系统设计-基于51单片机8音键电子琴仿真设计-基于8086八路模拟信号采集均值显示系统设计-基于8086八路数据电压温度采集系统-基于8086波形发生器仿真设计【毕设课设分享】
539基于单片机超声波视力保护系统设计-设计资料 硬件构成:单片机+最小系统+LCD1602液晶显示模块+超声波模块+DS18B20温度采集模块+光线检测模块+ADC0832模块+蜂鸣器模块+LED指 ...
- 基于51单片机的废气检测I2Cproteus仿真
目录 文章目录 前言 二.设计步骤 1.proteus设计 2.keil5代码编程设计 总结 前言 前段时间高中同学让我帮忙给她做一个数电课设,反正也没事做就随便做了做,现在总结一下,话不多说直接上效 ...
- 【019】基于51单片机的交通灯Proteus仿真设计
一.资料内容 (1).基于51单片机的交通灯proteus仿真设计一份: (2).基于51单片机的交通灯proteus仿真设计keli源代码一份: (3).基于51单片机的交通灯proteus仿真设计 ...
- 【034】基于51单片机的HX711电子秤Proteus仿真设计
一.压缩包资料内容 (1).基于51单片机的HX711电子秤proteus仿真设计一份: (2).基于51单片机的HX711电子秤proteus仿真设计keli源代码一份: (3).基于51单片机的H ...
- 基于51单片机的烟雾火灾报警器proteus仿真设计
基于51单片机的烟雾火灾报警器proteus仿真设计 1 开发环境 仿真图:proteus8.9以上 程序代码:KEIL4/KEIL5 原理图:AD 设计编号:A0004 代码讲解+仿真讲解+仿真演示 ...
- 【008】【毕业设计】基于51单片机的烟雾报警系统proteus仿真与实物设计
一.压缩包资料内容(私信获取) (1).基于51单片机的烟雾报警系统proteus仿真设计一份: (2).基于51单片机的烟雾报警系统proteus仿真设计keli源代码一份: (3).基于51单片 ...
- 【013】【毕业设计】基于51单片机的节能路灯proteus仿真设计
一.资料内容(私信) (1).基于51单片机的节能路灯proteus仿真设计一份: (2).基于51单片机的节能路灯proteus仿真设计keli源代码一份: (3).基于51单片机的节能路灯pro ...
- 基于51单片机多路温度检测proteus仿真 ds18b20
本设计是基于51单片机多路温度检测proteus仿真_ds18b20(仿真+程序+原理图) 仿真图proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:C0042 ...
- 【039】基于51单片机的简易门铃Proteus仿真设计
一.压缩包资料内容 (1).基于51单片机的简易门铃proteus仿真设计一份: (2).基于51单片机的简易门铃proteus仿真设计keli源代码一份: (3).基于51单片机的简易门铃prote ...
最新文章
- Global.asax中Application_Error无法执行
- 用JS解决图片太大,把网站撑变形的问题
- python 怎么在一行获取多个数字
- 论文浅尝 | Iterative Cross-Lingual Entity Alignment Based on TransC
- https open api_Web上的分享(Share)API
- CCNA training notes
- 了解招聘中的这些潜台词,找工作少走弯路
- mybatis中存储过程的调用
- China’s movie heroes 《红海行动》展现中国英雄本色
- 2018 C语言大作业--21_Ekko制作教程
- LAV Filter 源代码分析 2: LAV Splitter
- arm裸板驱动总结(makefile+lds链接脚本+裸板调试)
- Atitit spring原理 反射 ioc 与注解api 目录 1. 反射的使用	1 1.1. 使用jdk原生反射api	1 1.2. 使用apache 工具包 commons-beanutil
- 《哲学与人生》的读书札记
- 南邮80c51汇编语言编程实验,实验三 查表 多分支(80C51单片机汇编语言编程)
- 夏令营导师自荐信计算机专业,北大夏令营的自荐信
- 代码的坏味道之十三 :Speculative Generality(夸夸其谈未来性)
- 计算机均价的公式,【转】二手笔记本电脑的价格计算方法和举例
- 计算机科学引论试题,内工大计算机科学引论在线测试题.pdf
- AutoJs学习-实现悬浮窗动画和滑动