导航:首页 > 装置知识 > 倒计时显示装置实验

倒计时显示装置实验

发布时间:2022-09-04 16:42:00

⑴ 设计个单片机定时装置,开机显示20秒,按动秒后以0.1秒时间间隔倒计时计数,显示xx.x

#include<reg52.h> //包含单片机头文件
#include<mcu56.h> //包含56板子头文件
//#include<stdlib.h> //包含随机函数头文件
unsigned char x; //定义全局变量
unsigned int dat,i;
main() //主函数
{
TMOD = 1; //T0定时器,方式1
TH0 = 0x3c; //定时50ms
TL0 = 0xb0; //T0定时器初值
x = 2; //2*0.05s=0.1秒
EA = 1; //开中断
ET0 = 1; //开T0中断
TR0 = 1; //启动T0
while (1)
{
display56(dat); //56板显示倒计时
//显示程序根据电路板写
}
}
void t0_int()interrupt 1 //定时器T0中断函数
{
TH0 = 0x3c; //恢复初值
TL0 = 0xb0;
x--;
if(x==0)
{
x = 2; //中断2次为0.1秒
}
}

⑵ 求学电气高人解答一个课程设计,绝对给高分!题目:十字路口带倒计时显示的交通信号灯控制

这个就是用PLC来设计实现,实际电路我们接过功能实现过 设计有点难,在其他网站上求一个设计是要花钱的

⑶ 30秒倒计时器课程设计

【摘 要】篮球比赛30秒钟规则规定:进攻球队在场上控球时必须在30秒钟内投篮出手(NBA比赛为24秒,全美大学体育联合会比赛中为35秒),因此在比赛时裁判既要看比赛又要看秒表计时,而本文介绍的30秒倒计时器可以解决此问题。

【关键词】AT89C51单片机、30秒倒计时器、LED

30秒倒计时器的设计和制作有很多方法,本文介绍的30秒倒计时器以AT89C51单片机作为控制单元,采用两个数码管显示时间,用三个按键分别控制计时器的计时开始、复位和暂停。倒计时器初始状态显示“30”,当裁判员按下计时键,30秒倒计时开始,当计时器时间减到0时,计时器发出声光报警,提示裁判计时时间已到。

一、电路设计

30秒倒计时器的电路主要由电源电路、单片机最小系统、按键输入、显示驱动电路、报警电路组成,30秒倒计时器控制电路如图1所示。

图1 30秒倒计时器电路原理图

1、按键输入

“30秒倒计时器”采用了三个按键来完成计数器的启动计数、复位、暂停/继续计数等功能。

(1)K1键:启动按钮(P3.2)。

按下K1键,计数器倒计时开始,数码管显示数字从30开始每秒递减计数,当递减到到零时,报警电路发出声、光报警信号。当计数器处于暂停状态时按下K1键将回到计时状态。

(2)K2键:复位按钮(P3.3)。

按下K2键,不管计数器工作于什么状态,计数器立即复位到预置值 “30” ,在报警状态时按下K2键还可取消报警。

(3)K3键:暂停/计时切换按钮(P3.4)。

当计数器处于计时状态时按下该键计数器暂停计时,数码管显示数字保持不变;当计数器处于暂停状态按下该键计数器将回到计时状态;初始状态时该键无效。

2、显示驱动电路

“30秒倒计时器”用两个共阳数码管来显示时间,数码管显示方式为动态显示。显示驱动电路中,数码管的段码引脚通过470欧的电阻接到单片机的P1口,两个片选引脚各通过一个9012连接到正5V电源,由P3.0和P3.1控制。

4、报警电路

计时时间减到0,显示数码管显示“00”时,发光二极管D1由P3.5控制发出光报警,同时蜂鸣器由P3.7控制发出声报警。

二、软件编程思路

1、全局变量

“30秒倒计时器”动作流程主要受三个全局变量控制。首先是bit变量“act”,当“act”为“1”时倒计时开始,为“0”时倒计时停止,“act”初值为“0”,可以由按钮操作将其置“1”或清“0”。第二个全局变量是char变量“time”,存放倒计时的时间,当倒计时时间为0时,发出声光报警。变量“time”的初值为30,定时中断服务程序在“act”为1时,每1s对其进行减1操作,减到0时保持为0,按下“复位键”可将“time”复位为30。第三个全局变量是int变量“t”,记录响应定时中断0的次数。根据初始化定义,定时器0以方式1工作,每1ms发出一次中断请求。控制程序只开放了定时器0中断,因此不会有比定时器0中断更高级的中断被允许,所以每次请求都会立刻被响应。响应后在中断服务程序中将全局变量“t”加1记录响应中断次数,每响应1000次即为1秒钟。变量“t”初值为0,在中断服务程序中加1,当“t”为2000时由中断服务程序清0。在按键驱动程序中,按下启动键、复位键、暂停/启动键时将“t”清0,目的是从0ms开始计时。

2、控制流程

主程序主要用来检测全局变量“time”当“time”为0时发出“声光报警”。按键驱动、显示驱动和“time”操作都在定时器0中断服务程序中进行。其控制流程如图2所示。

图2 控制流程图

三、软件程序设计

1、数码管驱动程序

到计时器的两个数码管以动态显示的方式显示计时时间“time”(全局变量),LED1显示“time”的十位,LED2显示“time”的个位。

(1)定义段码数据口和片选信号

根据实际电路,在C51中定义段码的数据口为P1,两个片选信号为P3.0和P3.1。定义如下:

#define an P1

sbit wei1=P3^0;

sbit wei2=P3^1;

(2)定义字形码

LED显示数字0~9以及全灭的字形码表格放在数组zixing[]中。字形码是固定的表格,定义时加上关键字“code” 表示该表格存放在程序存储器中。

unsigned char code zixing[]=

{

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff

};

(3)定义数码管LED1和LED2的显示变量

为了增加驱动程序的可移植性,笔者为数码管LED1和LED2定义了显示变量。显示变量就是本驱动程序的对外接口,外部程序只要改变显示变量的值就可改变数码管显示的数值。定义方式如下:

unsigned char led_str[2]={10,10};

led_str[0]直接对应数码管LED1, led_str[1]直接对应数码管LED2。本项目中由专门的子程序将全局变量time计算拆分成led_str[0]和led_str[1]。

void js()

{

led_str[1]=time/10%10;

led_str[0]=time%10;

}

(4)数码管驱动程序

数码管驱动程序“void chushi(char i)”在定时中断服务程序中被调用执行。根据初始化程序的定义,定时中断服务程序每1ms被执行一次。定时中断服务程序中运用全局变量“t”记录进入该服务程序的次数,“t”计满2000由定时中断服务程序清零。

数码管驱动程序的参数“char i”是用来确定当前点亮的是LED1还是LED2,当参数为“0”时点亮LED1,参数为“1”时点亮LED2。如果我们希望偶数次进入定时中断服务程序时点亮LED1,奇数次进入定时中断服务程序时点亮LED2,我们可以用程序调用语句“chushi(t%2);”轻松实现。

进入数码管驱动程序后首先调用子函数js(),计算当前的led_str[0]和led_str[1]。接下来将两个数码管全部熄灭以防止余晖的出现。最后点亮需要点亮的数码管并送出字型码。驱动程序代码如下:

void chushi(char i)

{

js(); //计算显示变量

an=0xff; //去余晖

wei1=i; wei2=!i; //确定片选

an=zixing[led_str[i]]; //送字型码

}

2、按键驱动程序

按键驱动程序分为按键识别和按键功能执行两部分。按键功能执行可在按键按下时或按键抬起后执行,文中将其设计在按键抬起后执行。

(1)定义按键I/O地址

根据实际电路,三个按键(启动键、复位键、暂停/启动键)分别接在P3口的P3.2,P3.3和P3.4三个引脚上。为了取键值方便还将P3口定义为“iokey”,程序中可作定义如下:

#define iokey P3

sbit key1=P3^2;

sbit key2=P3^3;

sbit key3=P3^4;

(2)按键驱动流程

按键识别的通用流程为:I/O口写“1”→判断有无键按下→延时去抖→确定键值→等待按键抬起→执行按键功能。按键驱动程序中定义了两个静态变量“ts” 和“kv”,分别用来延时去抖和存放键值。

(3)延时去抖

静态变量“ts”用来延时去抖。按键驱动程序在定时中断服务程序中每1ms被执行一遍,每检测到有键按下“ts”加1,检测到无键按下“ts”清0。按键连续按下20ms,则连续20次执行按键驱动程序时都检测到有键按下,此时静态变量“ts”累加到20,可确认按键按下有效。

为防止按键一直按着不放而使“ts”累加到溢出,确认有键按下后可使“ts”的值保持为20,或大于20的某一个值如21。

(4)取键值

确认有键按下后即可通过读取按键的I/O口状态来得到键值。为读取P3.2、P3.3和P3.4引脚状态,屏蔽P3口其他引脚的影响,可将读取后的数值按位或上11100011B(0xE3)再送给静态变量“kv”。

静态变量“kv”存放按键的键值,无键按下或按键抬起后kv的值为0。按下启动键key1时kv=11111011B(0xFB),按下复位键key2时kv=11110111B(0xF7),按下暂停/启动键key3时kv=11101111B(0xEF)。

(5)执行按键功能

按键抬起后第一次执行按键驱动程序时,静态变量“kv”任保持着按键按下时最后得到的键值,以该键值作为参数调用按键执行程序“actkey(kv);”即可执行按键功能。调用后kv值立刻清0,确保按一次键执行一次按键功能。驱动程序代码如下:

void key()

{

static unsigned char kv=0;

static unsigned char ts=0;

key1=1;key2=1;key3=1;

if(!(key1&key2&key3))

{

ts++;

if(ts>=20)ts=20; //有键按下

if(ts==20)

kv=iokey|0xe3; //取键值

}

else

{ //无键按下或按键已抬起

actkey(kv);

ts=0;

kv=0;

}

}

函数actkey(kv)用来根据键值“kv”执行相应操作。当“kv”等于0xFB时代表启动键key1按下,函数actkey(kv)将全局变量act赋值为“1”。当“kv”等于0xF7时代表复位键key2按下,函数actkey(kv)将全局变量“time”复位为“30”。当“kv”等于0xEF时代表暂停/启动键按下,函数actkey(kv)将全局变量act取反。每按一个按钮都有将全局变量“t”清0的操作,目的是每当复位、或启动计时时,进入定时中断的次数都从0开始计算,否则会出现第1秒计时不准确的现象。程序代码如下:

void actkey(unsigned char k)

{

switch(k)

{

case 0xfb:act=1;t=0;break;

case 0xf7:time=30;t=0; break;

case 0xef:act=~act;t=0; break;

}

}

四、结束语

本文在编程过程中以面向对象的编程思路封装了两个LED数码管和三个独立按键。当其驱动程序在定时中断服务程序中被调用,编程者只要操作其接口:数组“led_str[2]”和函数“actkey(unsigned char k)”,无需直接对硬件进行编程即可改变功能,增强了软件的通用性和可移植性。

⑷ 那位仁兄帮忙设计一个单片机控制交通灯的实验啊:要求有时间倒计时显示的

这是单片机很基础的一个实验,建议自己研究,其中的收回对你将来会很有用的。即使你将来要干电子类销售,这个也很可能会有用的。

⑸ 要设计一个方便预置的倒计时数显定时器,不知道怎么下手,望指点

两片74LS192应该可以实现吧,用减法功能。开始键就用时钟秒脉冲的开关,当计时结束,输出全为0时,蜂鸣器报警;预置就用置数法;用8段管显示时间即可;

⑹ flash倒计时器制作

具体步骤如下:
1.启动Flash,新建元件,命名为“倒计时”,行为中选择“影片剪辑”,确定后进入元件编辑窗口。
2.点击文本工具,在属性中选择“静态文本”,划出一个文本框,设置好文本框的参数,输入内容“现在离2008北京奥运开幕还有”。
3.点击文本工具,在属性中选择“动态文本”,划出一个文本框,设置好文本框的参数,变量设置为“DaoJiShiText”。
4.命名所在层为“倒计时”,在时间轴的第一帧上输入以下代码:
EndTime=new
Date(2008,7,8,20,0,0);
//定义倒计时结束时间,此处为2008北京奥运开幕日
//注意,月份参数用0-11表示1-12月
NowTime=new
Date();
//定义当前时间
zong=Math.floor((EndTime.getTime()-NowTime.getTime())/1000);
//取得当前时间与结束时间相差的总秒数
if(zong>0)
{
tian=Math.floor(zong/(60*60*24));
//取得剩余天数
zong=zong-tian*60*60*24;
shi=Math.floor(zong/(60*60));
//取得剩余小时数
zong=zong-shi*60*60;
fen=Math.floor(zong/60);
//取得剩余分钟数
zong=zong-fen*60;
miao=zong;
//取得剩余秒数
DaoJiShiText=String(tian)+"天"+String(shi)+"时"+String(fen)+"分"+String(miao)+"秒";
}
5.在时间轴的第12帧处插入关键帧,输入语句“gotoAndPlay(1);”。
6.返回主场景,把倒计时影片剪辑拖放至主场景中,测试运行,效果如图所示。
说明:以上代码以北京2008奥运会开幕为倒计时结束时间,首先计算出当前时间与结束时间相隔的总秒数,再分别转换成对应的天数、小时数、分钟数和秒数。由于Flash默认的帧频是12,代码中在第12帧处使用了“gotoAndPlay(1);”语句,用于安排倒计时代码每隔一秒运行一次,使得所显示的倒计时信息每隔一秒刷新一次。

⑺ 红绿灯倒计时仿真实验中的定时计数器如何工作

从代码看,数码管是共阳极的,即七段码数据(P0口数据)低电平有效(即低电平的位对应的笔划会亮),同时 P2.0、P2.1作为两个数码管的选择位,高电平有效(即由此给数码管加入电源)。那么 P2.0高电平时,左边数码管会亮,P2.1高电平时,右边数码管会亮;

另外,采用延时程序进行延时是不精确的,应该通过定时器来获得延时;

在自己未能充分理解的情况下,不要乱抄人家的代码。

至于定时器怎么工作,简单如下:

void Timer0_init() // 系统晶振为 12MHz 时,定时器的计数脉冲周期即为 1uS;

{ TMOD |=0x01; //方式1,T0 16位定时

TH0 = (65536-1000)/256; // 计数器初值为 1000,即为 1mS

TL0 = (65536-1000)%256; // 结果就是 TH0=0xfc,TL0=0x18

EA=1; ET0=1; TR0=1;

}

如果你能采纳的话,可以给你正确的代码;

⑻ 单片机设计制作9S倒计时器~

1.显示。2.启动/停止。3.重置30秒
中的第一个和第三个功能有的,至于第2个,程序里是一直倒计时,结束了
就再重置30,继续倒计时。
如果你需要键盘按键的话,只需要按键将中断关了或者开了,就可以。

#include <reg52.h>

code unsigned char tab[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//共阳数码管 0-9

unsigned char Dis_Shiwei;//定义十位
unsigned char Dis_Gewei; //定义个位
void delay(unsigned int cnt)
{
while(--cnt);
}

main()
{

TMOD |=0x01;//定时器设置 10ms in 12M crystal
TH0=0xd8; // 初值55536,计数10000次,每次1us,总计10ms
TL0=0xf0;
IE= 0x82; //打开中断
TR0=1; //启动计数器TR0

while(1)
{
P0=Dis_Shiwei;//显示十位
P2=0xFD; // P2=1111 1101
delay(300);//短暂延时
P0=Dis_Gewei; //显示个位
P2=0xFE; // P2=1111 1110
delay(300);
}

}
/********************************/
/* 定时中断 */
/********************************/
void tim(void) interrupt 1 using 1 //前1为定时中断TR0
{
static unsigned char second=30,count; //初值30
TH0=0xd8;//重新赋值
TL0=0xf0;
count++;
if (count==100)
{
count=0;
second--;//秒减1
if(second==0)
{ //这里添加定时到0的代码 ,可以是灯电路,继电器吸合等,或者执行一个程序
second=30; //减到0是重新赋值99
}
Dis_Shiwei=tab[second/10];//十位显示值处理
Dis_Gewei=tab[second%10]; //个位显示处理

}
}

⑼ LCD显示的高考倒计时装置设计这个该如何着手设计

主体部分其实就是单片机控制LCD显示。
(另外需要的话,可能要加几个按键做时间修改吧。)

阅读全文

与倒计时显示装置实验相关的资料

热点内容
steam令牌换设备了怎么办 浏览:246
新生测听力仪器怎么看结果 浏览:224
化学试验排水集气法的实验装置 浏览:156
家用水泵轴承位置漏水怎么回事 浏览:131
羊水镜设备多少钱一台 浏览:125
机械制图里型钢如何表示 浏览:19
测定空气中氧气含量实验装置如图所示 浏览:718
超声波换能器等级怎么分 浏览:800
3万轴承是什么意思 浏览:110
鑫旺五金制品厂 浏览:861
苏州四通阀制冷配件一般加多少 浏览:153
江北全套健身器材哪里有 浏览:106
水表阀门不开怎么办 浏览:109
花冠仪表盘怎么显示时速 浏览:106
洗砂机多少钱一台18沃力机械 浏览:489
超声波碎石用什么材料 浏览:607
组装实验室制取二氧化碳的简易装置的方法 浏览:165
怎么知道天然气充不了阀门关闭 浏览:902
公司卖旧设备挂什么科目 浏览:544
尚叶五金机电 浏览:59