数码电子看板(用51单片机STC89C52编程实现智能电饭煲中的数码管时间显示功能)

Posted

篇首语:上下观古今,起伏千万途。本文由小常识网(cha138.com)小编为大家整理,主要介绍了数码电子看板(用51单片机STC89C52编程实现智能电饭煲中的数码管时间显示功能)相关的知识,希望对你有一定的参考价值。

数码电子看板(用51单片机STC89C52编程实现智能电饭煲中的数码管时间显示功能)

这一篇我们来学习带时钟显示功能的四位数码管开发应用,也就是通过四位数码管分别显示秒钟,分钟,或者小时,那么这个功能在单片机项目开发当中应用非常广泛的,比如,跑步机,桑拿设备,电饭煲,电磁炉,电子钟,微波炉,工厂产量看板,电力控制设备,还有汽车的车载时钟等等很多电子设备,其实这些设备有很多都是使用单片机内部的定时器来实现的,另外有一些使用是时钟芯片来实现,那么这些程序是如何编写的?

比如这一款电饭煲就是用四位数码管来设计的

而这一款就是用液晶显示屏来做显示的

不管用是用液晶显示屏还是数码管来设计的他们都是用来做时钟显示时间。

那么我们现在开始来进入讲解程序代码之前,我们先来了解一个非常重要的引脚,也就是数码管的LP段选引脚,指的就是数码管中间的这两个小点,也就是冒号。如果我们想让数码管的这两个小点点亮显示的话,也就是数码管的LP段选点亮显示,那么就必须在DIG2位引脚链接电源VCC,也就是高电平,然后在LP段选引脚连接电源GND,这样电路导通以后有电流流过LP段选内部的发光二级管,所以LP段也就是这个冒号才能够点亮显示。了解了数码管的LP段选引脚的功能以后,我们接着再来看它是如何跟单片机连接的。

图中LP这个段选引脚连接的网络编号是ELP,他是跟单片机的P2.6 IO口连接在一起的,那么我们想让数码管的LP段点亮显示的话,只要编写程序给ELP,也就是P2.6 IO口一个低电平0就可以,若给高电平1的话,LP段就会熄灭,再就是想让这个LP段不断的显示亮灭亮灭的一个循环过程的话,就要使用到定时器和中断函数去控制才能实现。

接着我们来看本篇的工程代码


#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

uchar num,num2,shi,ge,bai,qian,miao,fen;

sbit wei=P2^4; //声明位锁存器LE锁存端引脚

sbit duan=P2^3; //声明段锁存器LE锁存端引脚

sbit ELP=P2^6; //数码管的ELP段发光二极管

void delayms(uint ms) //延时函数

uint i,j;

for(i=ms;i>0;i--);

for(j=110;j>0;j--);

uchar code digtal[]=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; //数码管0-9数字

void Timer() //定时器0和定时器1初始化操作

TMOD=0x11; //0001 0001

TH0=(65536-50000)/256; //装初值

TL0=(65536-50000)%256;

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

EA=1; //打开总中断

ET0=1;

ET1=1;

TR0=1;

TR1=1;

void display(uchar qian,uchar bai,uchar shi,uchar ge)

wei=1; //将位锁存器的LE锁存端开关打开

P0=0x80; //把位选电平信号0000 0100传送到位锁存器输出端

wei=0; //把位选电平信号输送完成以后,将LE锁存端开关断开

duan=1; //将段锁存器的LE锁存端开关打开

P0=digtal[qian]; //转送段选电平信号,shi变量数值的变化会跟中断函数的中断次数有关

duan=0; //把段选电平信号输送完成以后,将段锁存器的LE锁存端开关断开

delayms(400); //延时

wei=1;

P0=0x40;

wei=0;

duan=1;

P0=digtal[bai];

duan=0;

delayms(400);

wei=1;

P0=0x20;

wei=0;

duan=1;

P0=digtal[shi];

duan=0;

delayms(400);

wei=1;

P0=0x10;

wei=0;

duan=1;

P0=digtal[ge];

duan=0;

delayms(400);

void main()

Timer(); //初始化定时器0和定时器1操作

while(1) //不断的对数码管动态扫描检测数字是否有变化

display(qian,bai,shi,ge); //数码管显示

void T0_Timer() interrupt 1

TH0=(65536-50000)/256; //重新初值

TL0=(65536-50000)%256;

num++;

if(num==20) //中断20次,说明到了1秒钟时间

miao++;

num=0; //把num变量重新清0,重新再计20次

if(miao==60)

fen++; //如果秒钟到了60,fen变量加1

miao=0;

if(fen==60)

fen=0; //如果fen变量到了60,fen变量清0

qian=fen/10; //将分钟的第十位数数值分离出来

bai=fen%10; //将分钟的个位数数值分离出来

shi=miao/10; //将秒钟的第十位数数值分离出来

ge=miao%10; //将秒钟的个位数数值分离出来

void T1_Timer() interrupt 3

TH1=(65536-50000)/256; //重新初值

TL1=(65536-50000)%256;

num2++;

if(num2==10) //如果这个num2值加到10次,说明500ms到了

num2=0; //num2数值清0

ELP=~ELP; //让发光二极管取反,现实亮再到灭,再亮,再灭不断循环这个过程


另外还有一点要特别说明的是,实验使用到的数码管LP段选引脚,刚才已经讲过了,LP段选引脚就是跟网络编号ELP连接在一起的,而ELP对应的就是单片机的P2.6 IO口,所以在使用这个引脚之前,需要对着这个引脚进行声明。

这次的实验中用到了两个定时器,也就是定时器0和定时器1,所以我们写了两个中断函数,先来看这一段代码,就是定时器0中断函数,作用就是让四位数码管显示时间的,显示分钟和秒钟。

这一段代码就是定时器1中断函数,作用就是让秒钟和分钟中间的冒号点亮或者熄灭一个循环过程。

首先我们是给定时器0定时50ms产生一次中断,当每中断一次NUM2变量就会加1,若中断函数中断了10次,说明500ms时间已经到了,这是IF语句判断num2变量的数值已经等于10,因为条件判断成立,接着就会进入括号里面执行语句,首先执行这条语句,给NUM2变量的数值重新清0,然后给ELP这个IO口引脚的电平不断的进行取反操作。


好,现在我们就把上面编写好的程序下载到单片机里面,观察四位数码管是否能正常显示时间。

当下载完成以后,四位数码管显示没有问题,并且能正常的加1计数显示,那么这就是通过定时器功能来实现数码管时间显示的开发应用,好了,今天就交流到这里吧,我们下次再见!

相关参考

数码信息历只有4个按键(51单片机四位数码管4个LED灯4个按键实现多种功能?)

任务描述:用89C51单片机实现如下功能:<初始状态为数码管显示2020,四个灯灭。1、电路有四个控制按键,四个灯,四个数码管;2、按键1,按下,,第一个数码管开始从0-9递增,同时第一个灯亮;3、按键2,按下,第二个数码...

数码管在protues里怎么找(基于51单片机的电子时钟内附开题报告模板、论文模板)

基于单片机的数字式电子时钟设计设计要求1)设计AT89S51的最小系统;2)LED显示电路及与AT89S51接口,LED数码块显示时、分、秒;3)时钟调整电路及与AT89S51接口;4)电子时钟程序设计;5)基于Proteus的电子时钟原理及仿真实现;...

烧录座怎么烧录视频(51单片机学习3-程序烧录的平台及工具)

接着上篇说到的下载电路根据单片机不同分为2个,一个是STC89C51/52,另外一个就AT89S51/52,因此程序的烧录方法也有2个。第一个STC89S51/52:下载平台STC-ICP:STC下载界面下载工具:STC下载工具第二个是AT89S51/52:下载平台AVR_fighter:AVR...

烧录座怎么烧录视频(51单片机学习3-程序烧录的平台及工具)

接着上篇说到的下载电路根据单片机不同分为2个,一个是STC89C51/52,另外一个就AT89S51/52,因此程序的烧录方法也有2个。第一个STC89S51/52:下载平台STC-ICP:STC下载界面下载工具:STC下载工具第二个是AT89S51/52:下载平台AVR_fighter:AVR...

改写储存器(单片机烧录程序的几种常见方法-道合顺大数据infinigo)

...看到一个小伙伴问了一个比较基础的问题,大概就是问:单片机烧录程序常见方法有哪些?下面就来说下常见的三种烧录程序的方法:ISP、IAP和ICP,以及它们的区别。ISPISP:InSystemPrograming,在系统编程。ISP是指可以在板级上进行...

挖坑网 f1c100s(一款深藏功与名的国产单片机——F1C100A)

说到单片机,可能首先想到的是atmel的at89c52,这多亏了大学教材的传承发扬。从我们的老师的老师,用到我们,说是大学的传家宝都不夸张。然后,就是现在大规模流行的STM32单片机,经过ST每个季度的峰会和国内的野火、正点...

数码管动态显示实验(基于51单片机的数字时钟设计(数码管和LCD显示))

...和LCD显示)两种显示方法一,针对初学者的要求1、掌握单片机定时/计数器的工作原理和控制方法。2、熟练掌握单片机定时/计数器的几种不同工作方式特点及其选择方法。3、掌握实验系统中数码管显示部分的电路结构和特点。4...

数码管电子看板(2022年中国数码喷墨印花产量、保有量、加工费及重点企业分析)

原文标题:2022年中国数码喷墨印花行业趋势,目前在卷对卷的匹布印花上仍未得到广泛推广「图」一、数码喷墨印花行业概况1、定义及对比数码喷印指运用数字化原理和喷射技术,将各种数字化图案输入电子计算机,通过电子...

智能密码锁怎么改密码(电子密码锁的安装、调试与维修教学任务)

学习目标1、知道单片机的特点及其结构。2、识读MCS—51各引脚并掌握其工作原理。。3、懂并按要求编写基本的单片机指令。4、电子密码锁元件的特点。5、懂电子密码锁原理图。6、懂电子密码锁安装图。7、懂电子密码锁的程序...

常用编程软件(单片机编程软件有哪些?)

  单片机作为现代智能电子产品的核心元器件,具备可编程的特性,产品想要实现某些功能,除了设计电路之外,还需要带有程序的单片机。单片机编程就是单片机软件开发,需要使用编程语言和编程软件。单片机编程语言我...