用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计数显示,那么这就是通过定时器功能来实现数码管时间显示的开发应用,好了,今天就交流到这里吧,我们下次再见!
多功能电饭煲方案开发,使用PY32F003单片机
电饭煲早已成为家家户户必备的烹饪工具。电饭煲的用途可不仅限于蒸饭,煲粥。其实电饭煲有很多种用途,煮粥、煲汤、蒸肉、煮柴火饭 统统不在话下。不过要说明的是电饭煲它虽然可以替代部分烹饪厨具,但制作出来的食物还是有一定差别的,和专门的烹饪工具的效果无法比较。现在市面上的电饭煲也都是多功能电饭煲了,支持定时煮饭,智能保温等,这些功能都通过单片机来进行控制。芯岭技术有着较为成熟的电饭煲单片机方案开发方案。
多功能电饭煲方案功能介绍:
多功能电饭煲方案使用了PY32F003这款单片机,可以实现以下功能:
1、定时煮饭:预约定时,自由控制煮饭时间。2、多种用途:煮粥、煲汤、加热、煮饭。3、温度控制:电饭锅自动保温模式,在低功耗的待机的情况下,保证米饭的食用温度。4、更多功能可来电咨询。芯片特性介绍:
多功能电饭煲方案使用的是PY32F003,SOP16封装这款芯片,通过主控芯片程序开发设计而成,PY32F003拥有低成本、高性能、及高性价比等显著优势。
PY32F003是M0核32位单片机,嵌入高达 32Kbytes flash 和 4Kbytes SRAM 存储器,最高工作频率 32MHz。包含多种不同封装类型多款产品。芯片集成多路 I2C、SPI、USART 等通讯外设,1 路 12bit ADC,5 个 16bit 定时器,以及 2 路比较器。
PY32F003 系列微控制器的工作温度范围为-40℃~85℃,工作电压范围 1.7V~5.5V。芯片提供 sleep 和stop 低功耗工作模式,可以满足不同的低功耗应用。利用这些资源,能够该实现电饭煲方案需要的功能。
深圳市芯岭技术有限公司是一家创新的物联网整体应用解决方案商,从事芯片代理、方案开发、物联网产品研发、生产、销售,同时为众多企业提供物联网应用解决方案服务。公司具备智能家电、智能家居、智能硬件、智能门店、智慧农业等物联网解决方案,公司一直致力于物联网技术及市场推进。
相关问答
电饭锅煮好饭后,是怎样跳闸的呢?怎样用电饭锅煮好饭?电饭锅煮饭好了是怎么跳闸的?不管多科学的电饭锅基本电路形式都离不开限温和恒温两部分。1⃣️限温是把锅内加温不超过103摄氏度、其装置安在锅中心,就是锅芯...
电饭锅传感器短路怎么回事?1、报故障代码,电饭煲不能正常工作。2、电饭煲一直处于煮饭状态,因为单片机是通过传感器元件在不同温度时的电阻变化来识别饭是否已煮熟的,不同厂家对传感器...
电饭煲 晶振频率怎么定?电饭煲晶振频率定的方法:单片机晶振频率(CPU频率)计算HZ=1/T,电脑处理速度频率也是这么来的,从硬件来看HZ代表单位时间处理任务的多少,显然HZ越高,单位时间...
电饭锅煮好饭后,是怎样跳闸的呢?怎样用电饭锅煮好饭? - 蒙蒙...有限,为了确保做熟,温度的设定需要略高,如楼上所说,一百零几度。再加上关断后的余热,这种锅做出来的饭基本都有锅巴。再加上中途一直都是...再加上...
单片机 能用于哪些行业?这个我有发言权,我就是做单片机嵌入式软件开发的。单片机作为电子制造设备用于数据信息流的采集、传输与控制的载体应用于各行各业中。医疗器械方面,医院的检...
STM32 单片机 怎么检测0-24电压和电流 - p4qG1InlW 的回答 - 懂得电压缩小到0-3.3v范围内采集,然后用32通过一定比例再计算出实际电压扩展资料:单片机应用范围电路板单片机渗透到我们生活的各个领域,几乎很难找到哪...
怎么修微电脑 控制电饭煲 -≡ 维修求助≡-家电维修联盟技…修这种电饭煲其实和修普通的也没什么大的区别,它主要是由一块控制板加一个温控组成,其控制板实际上是一个单片机里面写一些小程序来控制各种工作方式,温度的检测...
电饭煲 做饭时炸响是什么原因?电饭煲做饭时有炸响可能是电饭煲锅底水分没有擦干,电饭煲加热后遇水而发出的声音。还有就是锅内继电器工作的声音,通过锅底传感器的测温,单片机指挥继电器进行...
单片机 技术是一门即将被淘汰的技术吗?感谢邀请答题!目前来说,这十几年内是不可能淘汰的,即使面临着人工AI、大数据和云计算等技术的多方面竞争,单片机也可以说是立于不败之地!毕竟需求放在那里。...
洗衣机电脑 控制 具体是什么意思?谢谢 - 懂得通俗的讲,电脑控制指洗衣机的洗涤方式是通过单片机来实现的。工程技术人员首先将洗衣机的注水、加热、洗涤、浸泡、脱水、烘干、计时、保护等工作,...