⑴ 利用51單片機,4個數碼管設計一個計時器,要求在數碼管上顯示的數據從0開始每1秒鍾加1。
共陽數碼管中斷程序:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]=
{
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x83,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
uint num,a;
uchar ,shi,ge;
void init();
void delay(uint);
void display(uchar,ucharshi,ucharge);
uint fb();
uint fs();
uint fg();
void main()
{
init();
while(1)
{
display(fb(),fs(),fg());
}
}
void init()
{
num=0;
a=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void display(uchar,ucharshi,ucharge)
{
P1=0xfd;
P0=table[];
delay(1);
P1=0xfb;
P0=table[shi];
delay(1);
P1=0xf7;
P0=table[ge];
delay(1);
}
void timeoff() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65526-50000)%256;
a++;
if(a%20==0)
{
num++;
if(num==999)
{
num=0;
}
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
uint fb()
{
=num/100;
return ;
}
uint fs()
{
shi=num%100/10;
return shi;
}
uint fg()
{
ge =num%100%10;
return ge;
}
(1)設計計時裝置擴展閱讀
2個可編程定時/計數器·5個中斷源,2個優先順序(52有6個)
一個全雙工串列通信口
外部數據存儲器定址空間為64kB
外部程序存儲器定址空間為64kB
邏輯操作位定址功能·雙列直插40PinDIP封裝
單一+5V電源供電
CPU:由運算和控制邏輯組成,同時還包括中斷系統和部分外部特殊功能寄存器;
RAM:用以存放可以讀寫的數據,如運算的中間結果、最終結果以及欲顯示的數據;
ROM:用以存放程序、一些原始數據和表格;
I/O口:四個8位並行I/O口,既可用作輸入,也可用作輸出
T/C:兩個定時/記數器,既可以工作在定時模式,也可以工作在記數模式;
五個中斷源的中斷控制系統;
一個全雙工UART(通用非同步接收發送器)的串列I/O口,用於實現單片機之間或單片機與微機之間的串列通信;
片內振盪器和時鍾產生電路,石英晶體和微調電容需要外接。最佳振盪頻率為6M—12M。
參考資料來源:網路-51單片機
⑵ 除了水還可以用哪些能流動的物體來製作計時工具
除了水還可以用細沙來計時,比如沙漏就是用細而均勻的顆粒。沙漏的發明也是被逼出來的:算一年、一個月、一天的時間都能算,要是算一碗水燒開的時間的標准就不知道了。當然具體是哪國人發明的已經無從考證,歷史學家的說法是:沙漏最初是作為輔助的天文儀器使用的。古時沒有玻璃,人們就用簡易的容器製作,時間是按照流沙從容器流過的數量來計算。1360年漢人詹希元創制的「五輪沙漏」甚至還有用到了齒輪的機械撥動裝置,有木人擊鼓報告時刻的花樣。
⑶ 可以計時的簡單裝置如何製作,小學五年級科學作業。謝謝!
材料:線香、秒錶、刻度尺、彩筆
方法:
1、用刻度尺測量線香的長度L1
2、點燃線香、同時按下秒錶按鈕開始計時,10s鍾熄滅線香。測量線香長度L2
3、10s線香燃燒的長度 L=L1-L2 並分成10等分,每份為1s燃燒的長度L0
4、以L0為標度,在每根線香上用彩筆標出刻度
這樣一個簡單、經濟的計時器就製成了。
⑷ 想設計一個計時電路,給電計時,斷電停止計時,並且數顯裝置能夠顯示計時時間,怎麼設計好,用到那些元器
555,4017,4511,數碼管,如用單片機則電路較簡單,但要會寫程序
⑸ 如何設計計量時間的鍾表
畢業設計設計題目 秒錶/時鍾計時器的設計設計 類型 工程設 導師姓名 席東河 1、用六位LED數碼管顯示時、分、秒; 2、使用按鍵開關可實現時分調整; 3、秒錶/時鍾功能轉換; 4、關閉顯示即省
⑹ vb怎麼設計簡單的計時器
控制項:左側序號(TextBox):p1p2p3p4p5p6p7p8
右側時間(TextBox):tt1t2t3t4t5t6t7t8
下側按鈕(Button):Button1Button2Button3
'正文---------------------------------------------------------------
PublicClassForm1
DimStartTimeAsDecimal
DimGettedTimeAsDecimal
DimTimeOfTopAsDecimal
DimStopMomentAsByte
DimFirstTimeAsDecimal
PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load
t1.Text=""
t2.Text=""
t3.Text=""
t4.Text=""
t5.Text=""
t6.Text=""
t7.Text=""
t8.Text=""
a2.Text=""
a3.Text=""
a4.Text=""
a5.Text=""
a6.Text=""
a7.Text=""
a8.Text=""
t.Text="0.0"
p1.Visible=False
p2.Visible=False
p3.Visible=False
p4.Visible=False
p5.Visible=False
p6.Visible=False
p7.Visible=False
p8.Visible=False
t1.Visible=False
t2.Visible=False
t3.Visible=False
t4.Visible=False
t5.Visible=False
t6.Visible=False
t7.Visible=False
t8.Visible=False
a2.Visible=False
a3.Visible=False
a4.Visible=False
a5.Visible=False
a6.Visible=False
a7.Visible=False
a8.Visible=False
Button1.Enabled=True
Button2.Enabled=True
Timer1.Enabled=False
Timer2.Enabled=False
Timer3.Enabled=False
Timer4.Enabled=False
Timer5.Enabled=False
Timer6.Enabled=False
Timer7.Enabled=False
Timer8.Enabled=False
a2.Left=71
a3.Left=71
a4.Left=71
a5.Left=71
a6.Left=71
a7.Left=71
a8.Left=71
EndSub
PrivateFunctionToTime(ByValTimeLengthAsDecimal)AsString
DimhAsDecimal
DimmAsDecimal
DimsAsDecimal
DimHoursAsString
DimMinutesAsString
DimSecondsAsString
DimNoHourAsBoolean
DimNoMinutesAsBoolean
IfInt(TimeLength/3600)=0Then
Hours=""
NoHour=True
Else
NoHour=False
h=Int(TimeLength/3600)
Hours=h&":"
EndIf
m=Int((TimeLength-h*3600)/60)
Ifm.ToString.Length=1Andm<>0Then
NoMinutes=False
IfNoHour=TrueThen
Minutes=m&":"
Else
Minutes="0"&m&":"
EndIf
ElseIfm=0Then
NoMinutes=True
IfNoHour=TrueThen
Minutes=""
Else
Minutes="0"&m&":"
EndIf
Else
NoMinutes=False
Minutes=m&":"
EndIf
s=TimeLength-3600*h-60*m
IfInt(s).ToString.Length=2Or(NoHour=TrueAndNoMinutes=True)Then
Seconds=s
Else
Seconds="0"&s
EndIf
IfNoHour=TrueAndNoMinutes=TrueAndInt(Seconds).ToString.Length=1Then
SelectCaseSeconds.Length
Case1
Seconds=Seconds&".000"
Case3
Seconds=Seconds&"00"
Case4
Seconds=Seconds&"0"
EndSelect
Else
SelectCaseSeconds.Length
Case2
Seconds=Seconds&".000"
Case4
Seconds=Seconds&"00"
Case5
Seconds=Seconds&"0"
EndSelect
EndIf
ToTime=Hours&Minutes&Seconds
EndFunction
PrivateSubGetTime()
GettedTime=DateDiff(DateInterval.Second,Today,Now)+My.Computer.Clock.LocalTime.Millisecond/1000
EndSub
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
GetTime()
StartTime=GettedTime
Timer1.Enabled=True
t.Text="0.0"
Button1.Enabled=False
EndSub
PrivateSubTimer1_Tick(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesTimer1.Tick
GetTime()
IfTimeOfTop+0.1<GettedTime-StartTimeThen
TimeOfTop=TimeOfTop+0.1
t.Text=ToTime(TimeOfTop).Remove(ToTime(TimeOfTop).Length-2)&""
EndIf
EndSub
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
StopMoment=StopMoment+1
SelectCaseStopMoment
Case1
GetTime()
t1.Text=ToTime(GettedTime-StartTime)
FirstTime=GettedTime
p1.Visible=True
t1.Visible=True
Case2
GetTime()
t2.Text=ToTime(GettedTime-StartTime)
a2.Text="+"&ToTime(GettedTime-FirstTime)
Timer2.Enabled=True
p2.Visible=True
t2.Visible=True
a2.Visible=True
Case3
GetTime()
t3.Text=ToTime(GettedTime-StartTime)
a3.Text="+"&ToTime(GettedTime-FirstTime)
Timer3.Enabled=True
p3.Visible=True
t3.Visible=True
a3.Visible=True
Case4
GetTime()
t4.Text=ToTime(GettedTime-StartTime)
a4.Text="+"&ToTime(GettedTime-FirstTime)
Timer4.Enabled=True
p4.Visible=True
t4.Visible=True
a4.Visible=True
Case5
GetTime()
t5.Text=ToTime(GettedTime-StartTime)
a5.Text="+"&ToTime(GettedTime-FirstTime)
Timer5.Enabled=True
p5.Visible=True
t5.Visible=True
a5.Visible=True
Case6
GetTime()
t6.Text=ToTime(GettedTime-StartTime)
a6.Text="+"&ToTime(GettedTime-FirstTime)
Timer6.Enabled=True
p6.Visible=True
t6.Visible=True
a6.Visible=True
Case7
GetTime()
t7.Text=ToTime(GettedTime-StartTime)
a7.Text="+"&ToTime(GettedTime-FirstTime)
Timer7.Enabled=True
p7.Visible=True
t7.Visible=True
a7.Visible=True
Case8
GetTime()
t8.Text=ToTime(GettedTime-StartTime)
a8.Text="+"&ToTime(GettedTime-FirstTime)
Timer8.Enabled=True
p8.Visible=True
t8.Visible=True
a8.Visible=True
Timer1.Enabled=False
t.Text=t8.Text
Button2.Enabled=False
EndSelect
EndSub
PrivateSubButton3_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesButton3.Click
StartTime=0
GettedTime=0
TimeOfTop=0
StopMoment=0
FirstTime=0
t1.Text=""
t2.Text=""
t3.Text=""
t4.Text=""
t5.Text=""
t6.Text=""
t7.Text=""
t8.Text=""
a2.Text=""
a3.Text=""
a4.Text=""
a5.Text=""
a6.Text=""
a7.Text=""
a8.Text=""
t.Text="0.0"
p1.Visible=False
p2.Visible=False
p3.Visible=False
p4.Visible=False
p5.Visible=False
p6.Visible=False
p7.Visible=False
p8.Visible=False
t1.Visible=False
t2.Visible=False
t3.Visible=False
t4.Visible=False
t5.Visible=False
t6.Visible=False
t7.Visible=False
t8.Visible=False
a2.Visible=False
a3.Visible=False
a4.Visible=False
a5.Visible=False
a6.Visible=False
a7.Visible=False
a8.Visible=False
Button1.Enabled=True
Button2.Enabled=True
Timer1.Enabled=False
Timer2.Enabled=False
Timer3.Enabled=False
Timer4.Enabled=False
Timer5.Enabled=False
Timer6.Enabled=False
Timer7.Enabled=False
Timer8.Enabled=False
a2.Left=71
a3.Left=71
a4.Left=71
a5.Left=71
a6.Left=71
a7.Left=71
a8.Left=71
EndSub
PrivateSubTimer2_Tick(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesTimer2.Tick
a2.Left=a2.Left+10
Ifa2.Left=171Then
Timer2.Enabled=False
EndIf
EndSub
PrivateSubTimer3_Tick(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesTimer3.Tick
a3.Left=a3.Left+10
Ifa3.Left=171Then
Timer3.Enabled=False
EndIf
EndSub
PrivateSubTimer4_Tick(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesTimer4.Tick
a4.Left=a4.Left+10
Ifa4.Left=171Then
Timer4.Enabled=False
EndIf
EndSub
PrivateSubTimer5_Tick(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesTimer5.Tick
a5.Left=a5.Left+10
Ifa5.Left=171Then
Timer5.Enabled=False
EndIf
EndSub
PrivateSubTimer6_Tick(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesTimer6.Tick
a6.Left=a6.Left+10
Ifa6.Left=171Then
Timer6.Enabled=False
EndIf
EndSub
PrivateSubTimer7_Tick(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesTimer7.Tick
a7.Left=a7.Left+10
Ifa7.Left=171Then
Timer7.Enabled=False
EndIf
EndSub
PrivateSubTimer8_Tick(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesTimer8.Tick
a8.Left=a8.Left+10
Ifa8.Left=171Then
Timer8.Enabled=False
EndIf
EndSub
EndClass
'正文完-------------------------------------------------------------
⑺ 利用單片機設計實現一個60秒倒計時顯示裝置,並且計時到後發出報警聲音。
#include<reg52.h>
sbitbz=P3^1;
unsignedchara[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x90};
unsignedcharn,time=60;
main()
{
P1=a[0];
P2=a[6];
TMOD=0X01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
EA=1;
ET0=1;
TR0=1;
while(1);
}
timer0()interrupt1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
if(time!=0)
{
n++;
if(n==100)
{
n=0;
time--;
P1=a[time%10];
P2=a[time/10];
}
}
elsebz=~bz;
}
⑻ 計時工具的設計運用了物體運動的什麼規律
計時工具的設計運用了物體運動周期性變化的規律。不管是在古代時候的那種日晷,包括用其他一種方式來計時,都是運用了這一規律。
例如在單擺運動中,從平衡位置處開始計時,小球向左擺,動能減小,重力勢能增加,直到最高點,從最高點處開始下落到平衡位置的過程中,動能增加,重力勢能減小。這是單擺運動的一個周期。
計時裝置漏刻介紹
早期漏刻大多使用單只漏壺,滴水速度受到壺中液位高度的影響,液位高,滴水速度較快,液位低,滴水速度較慢。為解決這一問題,古人進一步創制出多級漏刻裝置。
所謂多級漏刻,即使用多隻漏壺,上下依次串聯成為一組,每隻漏壺都依次向其下一隻漏壺中滴水。
⑼ 自製計時器的設計原理
設定一段時間如5分鍾,對滴水計時器的滴水數量進行計數為N.則滴水的時間間隔為5*60/N(秒).
⑽ 30秒倒計時電路的設計
首先要有個可以產生1秒的時鍾電路,可以通過CD4040加32768HZ的晶鎮分頻,分頻後是2HZ,還要在分一次可以用CD4013之類的雙D觸發器實現,但我一般1秒的記時喜歡使用家庭的石英鍾的電路.他的脈沖的0.5HZ也就是2秒發一次,但需要通過二極體來整出來,因為他的0.5HZ是分別發的然後對地是1赫茲. 然後就是記時電路,可以用2 個CD4028是帶有正負記時的十進制記數電路,有進位和借位(在減記數時用到借位)BCD碼輸出,通過CD4511或CD4543(我比較喜歡CD4543,因為他的6和9顯示的比較人性化,而4511顯示的6沒有最上面的橫,和b的樣子差不多,9沒有下面的一橫和q差不多)來進行數碼管驅動,而4543的好處是他可以選擇共陽極還是共陰數碼管.然後把4028設定到負計時方式(通過引腳的電平來控制)然後可以用個電子開關比如CD4066來控制設定的時間這個可以定時到99秒,但要是顯示30秒,需要預先設定到3和0十位的3需要先自己做個小脈沖發生器,來進行設定,這個自己就可以設計出電路來了吧~