技术文档

单片机倒计时课程设计 单片机的顺计时倒计时定时控制器系统设计和制作过程介绍

小编 2025-09-28 技术文档 23 0

单片机的顺计时倒计时定时控制器系统设计和制作过程介绍

一、单片机的定时控制器小制作简介

系统硬件的部分主要包含主控电路模块、LCD液晶显示模块、按键处理模块、时钟电路模块、报警模块的设计,软件编程主要采用C语言,虽然程序条数比较多,但是设计起来比较方便,可通过Keils软件进行调试。做此设计,必须熟悉Protel软件、proteus仿真软件和KEIL程序编写软件,因为要用Protel软件画出原理图和制作电路板。

单片机的定时控制器小制作 整体效果

二、单片机的定时控制器小制作功能简介

1、有一个主电源开关,按下主电源开关系统通电,按出主电源开关系统断电;有一个上电指示灯,系统通电指示灯亮起,系统断电指示灯熄灭。

2、系统有三个按键,按键1、按键2、按键3,开机默认时间为00:00;在时间为00:00(倒计时完后必须解除报警的前提),按键1按下,进入设置状态,在设置状态,按键2为分加一,按键3为秒加一,设置好之后,再按下按键1确认保存数据;

3、在暂停状态和未进入设置状态时,按下按键2,清除时间(时间变成00:00);在开机之后或设置好和清除时间之后,第一次按下按键

4、自动识别是顺计时或倒计时(时间>00:00,倒计时,等于00:00,顺计时),之后再按按键3,只切换开始和暂停;

5、液晶显示屏的第一行显示的是顺计时和倒计时的计时时间,左边为分的显示,右边为秒的显示;第二行左边显示开始/暂停的状态,中间显示顺计时还是倒计时暂停,右边显示的是设置状态;

6、顺计时开始时,计时时间以每秒加一递增,当计时时间大于99:59时,计时时间清零重新开始计时,计时不暂停;

7、倒计时开始时,计时时间以每秒加一递减,当计时时间等于00:00时,计时暂停,同时控制蜂鸣器报警60秒,中途可通过任意按键中断报警。

单片机的定时控制器小制作焊接图

三、单片机的定时控制器小制作结构框图

单片机设计的定时控制器系统结构框图

四、单片机的定时控制器小制作电路图

单片机的定时控制器小制作仿真图

单片机的定时控制器小制作PCB图

单片机的定时控制器小制作原理图

面向单片机编程(五)- 多位数码管倒计时

标签: 单片机 C51 数码管 倒计时

在之前的文章中我们学习了单片机是如何实现一位数码管显示数字,一位数码管只能显示个位数让我们观察到,那如何显示十位数、百位数,甚至更大的数字呢。其实也并不复杂,我们可以选用多位数码管来进行显示数字,当每一个0到来的时候下一个十位的数码管再开始工作就可以了。

功能概述

上一章节我们介绍了一位数码管的功能,下面介绍多位数码管与一位数码管的共同点和不同点。每位数码管都分为段码线和位码线以此来控制数码管的工作,多位数码管并不是很多很多个一位数码管组成的,实际上他们的8根段码线是共用的,而对每个数码管进行控制的线叫做选位线,共阴数码管哪个选位线是低电平,哪个数码管就会显示,反之共阳数码管也是一样的。

显示原理

多位数码管也是由LED灯组和成的,它的段同样也是a,b,c,d,e,f,g,dp,但是多位数码管比一位数码管多了一个选位线,因此我们需要对这个选位线的引脚也进行定义。

电路连接

所使用的单片机为AT89C52,数码管为共阳的数码管,开始全部P0设置为低电平,开始运行后发生变化。

程序设计

设计的程序首先根据我们连接好的电路图来进行,首先我们明确我们需要让我们的两位的共阳数码管显示59倒计时到0,对多位数码管上的引脚和单片机上的IO口进行定义,当我们在写这个程序时有两种思路,一种是利用循环和延时的方式来实现数字的倒数,而另一种方式需要用到新的知识定时器的方式,定时器是C51单片机一个专门用来计数的模块,但是其定义也需要我们去记忆,因此本章我们选用循环来进行倒计时。

多位数码管59倒计时到0显示,功能实现代码如下:

#include<reg52.h>

#define uchar unsigned char#define uint unsigned intuchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};uchar code LED_W[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};void delay(uint i){uint x,j;for(j=0;j<128;j++);for(x=0;x<=148;x++);}void display(uint temp){P0=0;P2=0xfb;P0=table[temp/100];delay(2);P0=0;P2=0xfd;P0=table[temp%100/10];P0=P0 | 0x80;delay(2);P0=0;P2=0xfe;P0=table[temp%10];delay(2);}void main(){uint i=100,j;while(1){ if(i!=0){for(j=0;j<10;j++){display(i);}i--;}else{while(1){ uint i;for(i=0;i<10;i++){P2=0xfe;P0=0x3f;delay(2);P2=0xfd;P0=0x3f;delay(2);P2=0xfb;P0=0x3f;delay(2);}P2=0xff;delay(200);}}}}

总结

多位数码管的学习和一位数码管类似,只不过需要对选位线来进行编写,不同的多位数码管也都是需要用逻辑的方式改变选位线引脚的电平来控制属于哪个的数码管显示。共阴数码管和共阳数码管是不一样的字码,这需要大家对其进行区分。接下来我们将学习如何使用数码管实现时间的计时。

相关问答

51 单片机 汇编语言 倒计时 60秒循环程序?

可以在SJMP$这里改成判断R2是不是为0,如是就重新载入60…如果不是就跳回重新判断R2可以在SJMP$这里改成判断R2是不是为0,如是就重新载入60…如果不是就跳回...

想用51 单片机 编个 倒计时 的c程序,要求用两位数码管显示分钟的?

并用一个按键啥?51单片机我没设计过电路,用的学习板是现成的,对着电路图。那个学习板上没有锁存器啥的,只能靠扫描来显示2个数字(就是两个数码管轮流显示...

单片机 40秒 倒计时 怎么设置?

您好,要实现单片机的40秒倒计时,可以通过以下步骤设置:1.首先需要确定单片机的时钟频率,例如使用晶振12MHz。2.将时钟频率分频,得到1秒的计数器值。例如...

单片机 定时器 倒计时 60秒程序中CJNER2?

就是到0时再减就是#0FFH了作用就是R2到0,返回到LOOP1,重新从60开始。就是到0时再减就是#0FFH了作用就是R2到0,返回到LOOP1,重新从60开始。

51 单片机 30秒 倒计时 ,用数码管显示的,c程序,元件只有at89c51和数码管,没有其他的?

数码管一般是电流驱动,跟电压关系不大,但是电压在数码管灭了时候会加到IO口上(即此时电压和IO口电压一致或略高),而IO口是不能提供10V电压的,可以找找双电...

100秒 倒计时 怎么做?

简单说两句,这个也不是很难,有很多种方案,说一个吧,首先是两位数码管的驱动,可以选择单片机带max7219然后外扩两个led数码管,硬件连接既简单也成熟,并且单...

怎样51 单片机 调用两个子程序 - nCqfmaGy 的回答 - 懂得

这就是单任务的缺点,你的意思是要倒计时和洗涤2个任务同时进行,最好用操作系统不然只能用中断,执行一会洗涤在执行一会倒计时宏观上看也是2个任...

什么是 单片机 的中断?

单片机中断是指CPU在正常执行程序的过程中,由于计算机内部或外部发生了另一事件(如定时时间到,超压报警等),请求CPU迅速去处理,CPU暂时停止当前程序的运行,...

通电后开始计时,并在指定时间后开始动作的电路或设备叫什么?

模电和...他们说的时间继电器我用过的器件级别的大概延时时间最长为2S.一般磁保持继电器会做成延时类型的。延时电路的类型很多模电和数电都可以做成延时电路...

厨房定时器拆解- 一起装修网

[回答]挺好的*。有大用处。单片机的厨房*器有电路程序论文。看你买的是哪种,有静音式的,也有滴答声的。一是简单,二是时间准确如果视力没什么问题,*上...

猜你喜欢