『壹』 51單片機做的秒錶
if(c==0)
{TR1=1;c++;}
else if(c==2)
{TR1=0;c++;}
else if(c==3)
怎麼直接判斷c==2 了?
如下修改?
if(c==0)
{TR1=1;c++;}
else if(c==1)
{TR1=0;c++;}
else if(c==2)
『貳』 單片機秒錶設計!!
題目:秒錶(9999秒)
(1)採用定時器...,利用開發板上的按鈕,...
--------
樓主應該給出你的開發板上的顯示電路和按鍵電路。
『叄』 51單片機完成簡易秒錶的設計
硬體電路簡單,我說下軟體部分
用一個定時器定時中斷做鍵盤掃描,數碼管用動態掃描的方法,數碼管顯示和按鍵處理都放在主程序中進行
『肆』 單片機秒錶
用定時器加數碼管做就可以了吧
『伍』 單片機 秒錶
下面是我寫的時鍾程序,你看看,再修改修改就可以了,希望對你有所幫助!
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P3^4;
sbit key2=P3^5;
sbit key3=P3^6;
sbit key4=P3^7;
sbit la=P2^6;
sbit wela=P2^7;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar num,num1,num2,num3,bq,bb,qian,,shi,ge;
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void display() //顯示六個數碼管,每兩個分別表示時,分,秒。
{
bq=num3/10;
bb=num3%10;
qian=num2/10;
=num2%10;
shi=num1/10;
ge=num1%10;
la=1;
P0=table[bq];
la=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delayms(1);
la=1;
P0=table[bb];
la=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delayms(1);
la=1;
P0=0x80;
la=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delayms(1);
la=1;
P0=table[qian];
la=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delayms(1);
la=1;
P0=table[];
la=0;
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
delayms(1);
la=1;
P0=0x80;
la=0;
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
delayms(1);
la=1;
P0=table[shi];
la=0;
P0=0xff;
wela=1;
P0=0xef;
wela=0;
delayms(1);
la=1;
P0=table[ge];
la=0;
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
delayms(1);
}
void keyscan() //四個獨立建盤控制調時
{
if(key1==0)
{
delayms(10);
num3++;
if(num3==24)
num3=0;
while(!key1) ;
}
if(key2==0)
{
delayms(10);
num2++;
if(num2==60)
num2=0;
while(!key2);
}
if(key3==0)
{
delayms(10);
if(num2==0)
num2=60;
num2--;
while(!key3);
}
if(key4==0)
{
delayms(10);
num1=0;num2=0;num3=0;
while(!key4);
}
}
void main()
{
TMOD=0X01;
EA=1;
ET0=1;
TR0=1;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
while(1)
{ keyscan();
display();
}
}
void T0_time() interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
num++;
if(num==20)
{
num=0;
num1++;
if(num1==60)
{
num1=0;
num2++;
if(num2==60)
{
num2=0;
num3++;
if(num3==24)
num3=0;
}
}
}
}
『陸』 設計一個秒錶(十秒或者三十秒)單片機編程
這是一個秒錶,有按鍵實現 啟動、暫停核清零功能。
#include <reg51.H>
sbit P3_5 =P3^5;
unsigned char code dispcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x00};
unsigned char second;
unsigned char keycnt;
unsigned int tcnt;
void main(void)
{
unsigned char i,j;
TMOD=0x02;
ET0=1;
EA=1;
second=0;
P1=dispcode[second/10];
P2=dispcode[second%10];
while(1)
{
if(P3_5==0)
{
for(i=20;i>0;i--)
for(j=248;j>0;j--);
if(P3_5==0)
{
keycnt++;
switch(keycnt)
{
case 1:
TH0=0x06;
TL0=0x06;
TR0=1;
break;
case 2:
TR0=0;
break;
case 3:
keycnt=0;
second=0;
P1=dispcode[second/10];
P2=dispcode[second%10];
break;
}
while(P3_5==0);
}
}
}
}
void t0(void) interrupt 1 using 0
{
tcnt++;
if(tcnt==4000)
{
tcnt=0;
second++;
if(second==100)
{
second=0;
}
P1=dispcode[second/10];
P2=dispcode[second%10];
}
}
『柒』 單片機秒錶
……
if (Key2 == 0) {
TR0 = 0;
while(Key2 == 0) Display();//不間斷顯示
}
TR0 = 1;
……
『捌』 用51單片機做秒錶設計
遇到懶學生了,這個不就是一個定時器加顯示嗎,有什麼難的,自己翻翻微機原理書就可以做 了,也就四五十行匯編語言就行了,用C就更加簡單,具體的方法:用定時器定時0.2ms,定時到了就給固定的一個變數加1,然後判斷這個變數是不是到了500,到了就清零然後把秒的變數加1,就是1s了,(分和時也是如此,秒為60,秒清零,分加1);主程序就只管顯示和按鍵,按鍵隨便用中斷還是查詢,我建議你查詢,因為程序簡單,顯示程序就是查個表,自己把數碼顯示的斷碼表編好就可以了,把秒的數值查表對應顯示,完了就查詢按鍵,按鍵累加,值為0是沒按,1是按1次,2是按2次,3是按3次,同時清零,很簡單的
『玖』 單片機 簡易秒錶
#include<REG51.H>
#define uchar unsigned char
#define uint unsigned int
sbit k1=P2^0;
sbit k2=P2^1;
uchar a=0;//計中斷次數
uchar second=0,minute=0;
void delayms(uint i) //1ms延時程序
{
uint j;
for(;i>0;i--)
{
for(j=0;j<125;j++)
{;}
}
}
主程序:
void main(void)
{
TMOD=0X01;
TH0=(65536-50000)/256;//定時50ms
TL0=(65536-50000)%256;
ET0=1; EA=1;
TR0=1;
while(1)
{
if(K1==0)
{
delayms(10);
if(K1==0) { TR0=!TR0;while(K1==0);}//暫停/啟動
}
if(K2==0)
{
delayms(10);
if(K2==0) { a=0;second=0;minute=0;}//清0
}
display();//顯示函數,與硬體有關
}
}
中斷程序
void timer0 ()inretrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
if(a==20)
{
a=0;
second++;
if(second==60){second=0;minute++;}
}
}
『拾』 單片機(秒錶製作)
這樣的程序和這樣的電路在模擬上面絕對沒問題,但我保證你這么照著焊接個實物出來絕對跑不起來,你再設計下晶振電路。89S51裡面沒有晶振,你不外接它就跑不起來我建議你在加個復位電路。像你用這個數碼管的話共陰的我覺得最好不要用三極體放大(第一,成本變高,我買過,一個三極體2毛左右如果你買的不多還更貴。第二,電路連接變復雜了,容易出錯),所以推薦你在段選端接上拉電阻(1K左右即可),整好8個引腳接你的八個段選口,去掉為選端的三級管然後直接與單片機相連(還有的你位選端最好不要接P3口,你看你P2口不是還留有好多嗎,接到那裡,P3主要用第二功能)還有一個就看你個人興趣了,就是電源設計,很簡單的,加一個三端穩壓管,這樣然你的工作電壓穩定在5V。哦,最後還有你的按鈕設計,幹嘛接P0口,P3口現成的外中斷就可以用啊,而且效果要更好程序就不看了,反正我匯編很爛,搞不好你對的我還說成錯的,呵呵