① Mcs-51单片机9秒倒计时课程设计
定时10mS,在中断里面计数,到一秒后-1,小于零后=9,再显示
② 求用51单片机设计一个0-9999秒倒计时器,要求是数码显示,是汇编语言的
汇编,其实比C语言简单多了。
使用汇编,只要关心单片机自身的东西即可;
使用C,垃圾概念就太多了,学C,就太浪费时间了。
先看看这些:
http://hi..com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/2ece818af7a3f20bc9fc7aca.html
http://hi..com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/8dd9ee9443f40e117af480ee.html
③ 求用51单片机设计一个0-9999秒正/倒计时器
两位相同的数字所占的百分比:两位数有11-99 9个
三位数有 100-900 9个(是0重复的) 不是0重复的不含0的有C3(2)C9(1)C8(1)=216个 不是0重复的含0的有 C2(1)C9(1)=18个
四位数有 C3(2)C9(1)C8(1)=216(0重复) 不是0重复的不含0的有C4(2)C(9)A8(2)=3024 不是0重复的含0的有 C3(1)C3(2)C9(1)C8(1)=648
一共为41.31%
三位数相同的数字所占的百分比:三位数的有9个
四位数有1000-9000 9个(是0重复的) 不是0重复的不含0的有C4(3)C9(1)C8(1)=288 不是0重复的含0的有C3(1)C9(1)=27
一共为3.24%
④ 51单片机9999秒倒计时
简单而明显的错误:
unsigned char i=0;
void time0() interrupt 1
{
TH0=0x3c;
TL0=0xb0;
i++;
if (i==20)
{
if (sec==0){sec=60;min--;}
sec--;
i=0;
}
}
⑤ 如何利用C8051F310单片机设计一个九秒倒计时定时器
我猜你的难点在于不会定时1秒钟
一般来说51单片机定时大概在毫秒级,假定是50ms
那你就再加一个软件计数器譬如R7,在检测到20次定时器的中断后,再执行真正地中断程序就好了
⑥ 51单片机 倒计时99和9999的区别 其实我需要9999秒倒计时的程序!
改改程序就可以了。如果原来控制变量用的单字节,你拓展成双字节就行。
⑦ 基于51单片机控制的9999秒倒计时器的设计,程序怎样做
99秒倒数的 楼主看行不
在写 很麻烦的
#include <reg51.h>
unsigned char table[]={0x90,0x80,0xf8,0x82,0x92,0x99,0xb0,0xa4,0xf9,0xc0};
unsigned char int_time ;
unsigned char second;
void delay(void)
{
unsigned char i,j;
for(i=0;i<200;i++)
for(j=0;j<20;j++);
}
void DisplaySecond(unsigned char k)
{
P2=0xf7;
P0=table[k/10];
delay();
P2=0xfb;
P0=table[k%10];
delay();
P2=0xff;
}
void main(void)
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
int_time=0;
second=0;
while(1)
{
DisplaySecond(second);
}
}
void interserve(void ) interrupt 1
{
TR0=0;
int_time++;
if(int_time==20)
{
int_time=0;
second++;
if(second==99)
second=0;
}
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
}
⑧ 51单片机做9999秒倒计时怎么原理图怎么做啊还要程序
#include<reg51.h>
#include"intrins.h"
#include"absacc.h"
#defineucharunsignedchar
ucharcodeledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0xff};//0-9
unsignedcharsec=0,dat=0,scanled;
unsignedcharkey=0,mode,time;
unsignedchardisdat[4];
voiddischg()
{
disdat[3]=sec%10;
disdat[2]=sec%100/10;
disdat[1]=sec%1000/100;
disdat[0]=sec/1000;
}
voidext0()interrupt0
{
key++;
key%=3;
}
voidt0isr()interrupt1 //秒计时
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
dat++;
if(dat>=20)
{
dat=0;
if(sec>0)sec--;
}
dischg();
}
voidt1isr()interrupt3 //显示
{
TH1=0xec;
TL1=0x78;
P0=0xff;
switch(scanled)
{
case0:
P2=0x01;
P0=~ledtab[disdat[0]];
break;
case1:
P2=0x02;
P0=~ledtab[disdat[1]];
break;
case2:
P2=0x04;
P0=~ledtab[disdat[2]];
break;
case3:
P2=0x08;
P0=~ledtab[disdat[3]];
break;
default:break;
}
scanled++;
scanled%=4;
}
main()
{
TMOD=0x11;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TH1=0xec;
TL1=0x78;
TR1=1;
TR0=0;
ET0=1;
ET1=1;
EX0=1;
IT0=1;
EA=1;
scanled=0;
time=0;
mode=1;
dischg();
while(1)
{
switch(key)
{
case0:sec=0;dat=0;break;
case1:TR0=1;break;
case2:TR0=0;break;
}
}
}
⑨ 我想用51单片机做一个9999 9999秒的秒表(八位数码管),但是怎么计数到255就溢出归零了
你的dis函数输入变量i类型定义错了,也得定义成 long
⑩ 51单片机的9999倒计时程序,跪求
参考:
http://hi..com/do_sermon/item/17a6bff24edb11c8531c2691
http://hi..com/do_sermon/item/620ab2cadf946422e90f2e91