① 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