51单片机的使用非常简单。它可以做很多设计,51单片机坚固耐用。我认为用51完成我的设计可以满足相关需求。毕竟,这是一种模拟设计。这是第一代。经过部分修改和改进,硬件可以实现(实物已经制作出来,效果还可以)。
接下来我简单介绍一下我的时钟。
,
文章目录
- 序言
- 一、51单片机的相关性能及操作
- 二、设计部分
- 1.设计思路
- 2.代码
- 总结
前言
事实上,51台单片机非常容易使用,操作简单,坚固可靠,51台可以满足本科阶段相当多的设计要求,不需要深刻的编码能力,只要你只是学习C语言就可以掌握。这个时钟日历的设计非常简单,不需要太多的知识,然后我将简要介绍它。
一、51单片机性能及分析
stc89c52是STC公司设计生产的8位控制器,功能8k字节的Flash,512字节的RAM,32位I/O口线,门狗定时器,内置4KBEEPROW,三个16位定时器,另外四个外部中断。还有一个单片机stc89c51.有两个定时器,三个外部中断,其他的和52没有太大区别。然而,在编程过程中,51系列单片机的代码容量很小,没有具体的参数。然而,我计划去年制作一台游戏机,但代码太长,编译失败。然后我用32做了一个,将在以后的文章中与您分享。
虽然我非常喜欢51系列单片机,但它确实有点落后,想想英雄结束的感觉,现在在一些大学比赛中,51仍然可以承担部分控制要求,但越来越少,因为近年来电子设计比赛的主题越来越困难,或变得灵活。从电压表、稳压电路、升降压装置、遥控装置的装置、遥控装置,到近年来的颜色识别、形状识别、球板平衡、杆、控制和自动化问题越来越灵活,每个电子竞争控制问题都有创新,使用新事物,大多不熟悉,但框架中的电源问题没有太多的延伸,基本上是工程学习,但精度要求越来越高,我们必须了解电路的原理和设计PID这种控制方法广泛应用于精密控制。对不起,回到正题,51确实落后了。然而,我们可以通过学习51来锻炼我们的编码能力。现阶段的编程C语言就足够了。在未来学习32的过程中,编码能力非常重要。
二、设计部分
1.设计思路
上图是电子时钟日历的模拟设计,刚刚启动,时间和日期可以通过右脚按钮校准。接下来,让我们介绍和操作它。
我们可以看到上图屏幕中的第二行,从左到右分别表示年、月、日、时、分、秒。
接下来,我们按下右下脚的第一个按钮(选择),显示屏的第一行就会出现‘*这个星号在那个数字上,说明这个数字可以调整。
现在星号在月上,说月可以调整,然后我们可以按第二个按钮和第三个按钮来调整月的大小,添加按钮,月数字添加一个,减少按钮相反,如我们调整到12月,我们可以长按添加按钮,或长按减少按钮。效果如下图所示。
接下来,我们可以继续调整日期的数量。在这里,我设置了每月、大月和小月的天数,也就是说,您日期调整的最大值不会大于实际中日期的天数。例如,2022年2月有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; int y2=yue/10; int y1=yue; int d2=day/10; int d1=day; int h2=h/10; int h1=h; int m2=min/10; int m1=min; int s2=sec/10; int s1=sec; 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)%6; 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