导航:首页 > 操作系统 > 66秒倒计时单片机

66秒倒计时单片机

发布时间:2022-06-26 07:39:26

单片机60秒倒计时程序怎么写啊!!!这个图的!!!急用啊!!!!

/*代码你可以参考一下,晶振按11.059200MHz写的。
提示一下,按你这仿真是不能做实物的,要加上限流电阻*/

#include"reg52.h"

unsignedcharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共阳数码管段选

voidmain()
{
TMOD=0x01;
TH0=0xFC;
TL0=0x66;
EA=1;
ET0=1;
TR0=1;

while(1);
}

voidTimer0Interrupt(void)interrupt1
{
staticunsignedinti=0;
staticchartime=60;

TH0=0xFC;
TL0=0x66;

P3=table[time%10];
P2=table[time/10];

i++;
if(i>=1000)
{
i=0;
time--;
if(time<0)
{
time=60;
}
}

}

⑵ 单片机 60秒倒计时

我是用汇编语言做的,如果显示的速度不理想 你改下延时程序段的数值就OK了,课堂上这个60S倒计时的课题用了很多方法做过

ORG 0000H
LJMP START
ORG 0100H

START:MOV R0, #59
MOV DPTR, #TABLE
LOOP:LCALL DISPLAY
DEC R0
CJNE R0,#0,LOOP
JMP START

DISPLAY:MOV A, R0
MOV B, #10
DIV AB
MOV R1, A
MOV R2, B
MOV R3, #50
LOOP1:MOV A, R2
LCALL CHANG
CLR P2.6
LCALL DLY10MS
SETB P2.6
MOV A, R1
LCALL CHANG
CLR P2.7
LCALL DLY10MS
SETB P2.7
DJNZ R3, LOOP1
RET

CHANG:MOVC A, @A+DPTR
MOV P0, A
RET

DLY10MS:MOV R6, #256
D1:MOV R7, #256
NOP
NOP
NOP
NOP
DJNZ R7, $
DJNZ R6, D1
RET

TABLE:DB 28H,7EH,0A4H,64H,72H,61H,21H,7CH,20H,60H

END

⑶ 单片机六十秒倒计时程序

;数码管段选接P2口,位选接P3.0和P3.1,
;采用定时器T0定时10ms,60H为1s计数单元,计数100次为1sORG 0000H ;程序从0地址开始
LJMP MAIN ;跳到MAIN处执行
ORG 000BH ;定时器T0
LJMP TIME0
ORG 0030H
MAIN:MOV TMOD,#01H ;设置T0工作在模式1
MOV TH0,#0D8H ;赋初值,定时10ms
MOV TL0,#0F0H
MOV IE,#82H ;开CPU中断,开定时器0中断
MOV R3,#60
SETB TR0 ;启动T0定时器工作
MOV 60H,#100 ;给60H单元赋初值
CLR 4FH ;清零4FH单元
DISPLAY: ;显示子程序
MOV DPTR,#TAB ;DPTR指向编码表位置
MOV A,R3 ;将R3的内容复制到A
MOV B,#10
DIV AB ;A除B,商给A,余数给B
MOVC A,@A+DPTR ;根据A的值取出编码表中的编码
MOV P2,A ;由P1口输出A的内容
CLR P3.0 ;清零P2.0
SETB P3.0 ;置位P2.0 MOV A,B
MOVC A,@A+DPTR ;根据A的值取出编码表中的编码
MOV P2,A ;由P1口输出A的内容
CLR P3.1 ;清零P2.1
SETB P3.1 ;置位P2.1
JNB 4FH,DISPLAY ;判断1秒时间是否到,没有到,则跳转到DIAPLAY处
CLR 4FH ;1秒到,清4FH
LJMP DISPLAY ;调用显示子程序 TIME0:MOV TH0,#0D8H ;赋初值
MOV TL0,#0F0H
DJNZ 60H,TT ;60H单元自减1,判断是否为0,不为0则跳转到TT处
MOV 60H,#100 ;60H单元为0,则重新给其赋值100
SETB 4FH ;同时置位4FH单元
DEC R3 ;R3自加1
CJNE R3,#00H,TT ;判断R3是否为0,否则跳转TT处
CLR TR0
TT:RETI
TAB: ;编码表
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;共阴
END ;程序结束

⑷ 如何用单片机做一个简单的倒计时器

51单片机实现数码管99秒倒计时,其实很简单,就是使用定时器中断来实现。目的就是学习怎样用单片机实现倒计时,从而实现一些延时控制类的东西,99秒只是一个例子,你完全可以做出任意倒计时如10秒倒计时程序。定时器定时时间计算公式:初值X=M(最大计时)-计数值。
初值,换算成十六进制,高位给TH0,低位给TL0,如果用定时器0的话。
M(最大计时)如果是16位的,就是2的16次方,最大定时,65535 微秒,实现1秒定时,可以通过定时10毫秒,然后100次改变一次秒值即可。10*100毫秒=1S
计数值:你要定时多长时间,如果定时1毫秒,就是1000微秒,(单位为微秒),如果定时10毫秒,就是10000(微秒),当然,最大定时被定时器本身位数限制了,最大2的16次方(16位定时计数器),只能定时65.535毫秒。定时1S当然不可能1S定时器中断。
下面为实现99秒倒计时C语言源程序
/*了解定时器,这样的话,就可以做一些基本的实验了,如定时炸弹~~,10秒后打开关闭继电器*/
/*数码管,12M晶振*/
#include <reg52.h>
#define uchar unsigned char
sbit p11=P1^1; //连的是继电器。。
code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar shiwei;
uchar gewei;
void delay(unsigned int cnt)
{
while(--cnt);
}
void main()
{
TMOD|=0x01; /*定时器0 16位定时器 X=65535-10000(10毫秒)=55535=D8F0(十六进制)定时10ms
*/
TH0=0xd8;
TL0=0xf0;
IE=0x82; //这里是中断优先级控制EA=1(开总中断),ET0=1(定时器0允许中断),这里用定时器0来定时
TR0=1; //开定时器0
while(1)
{
P0=shiwei; //99的十位
P2=0; //99的个位,
delay(300); //动态扫描数码管延时
P0=gewei;
P2=1;
delay(300);
}
}
void tim(void) interrupt 1 using 1 //定时器0中断
{
static uchar second=99,count; //99只是一个数,可以任意改,因为这里只学习怎样实现倒计时
TH0=0xd8; //定时10毫秒
TL0=0xf0;
count++;
if(count==100) //10毫秒定时,10*100=1000(毫秒)=1秒
{
count=0;
second--;
if(second==0)
{
p11=0; //这里让继电器动作,当然动作之后,要复位才能等下次倒定时再动作。
second=99; //回到99再循环来,当然,可以做其他的控制,
}
shiwei=tab[second/10]; //数码管10位
gewei=tab[second%10]; //数码管个位
}

阅读全文

与66秒倒计时单片机相关的资料

热点内容
oraclelinux安装目录 浏览:133
安卓系统可以安装编译器吗 浏览:570
javajson实体类 浏览:690
板加密钢筋是否取代原钢筋 浏览:66
学习编程的思路 浏览:230
app易语言post怎么学 浏览:965
地梁的箍筋加密区位置 浏览:302
二分法排序程序及编译结果 浏览:679
日语命令形和禁止型 浏览:285
安装软件用管理员解压 浏览:505
编译原理代码块 浏览:400
小孩可以用压缩面膜吗 浏览:14
锥形倒角怎么计算法 浏览:882
java合并链表 浏览:508
pic单片机编译器 浏览:805
丽水四轴加工中心编程 浏览:691
国产系统怎么解压 浏览:552
战双程序员 浏览:483
him触摸编程软件 浏览:931
植物大战僵尸存档怎么转移安卓 浏览:852