打鈴程序源碼
『壹』 自控程序打鈴器怎麼設置時間
1、首先一步就是要進行打開電腦的計劃任務程序。
『貳』 求C++高手看一下這個我設計的鬧鍾類Alarm 設計是否良好 (回答者免費獲得Alarm軟體和源代碼)
lz你好,看了你的代碼,覺得你確實有一些c++的基礎,或是學習能力比較強,懂得將代碼分成多個文件來實現。但給你加點建議。
1. cpp文件和.h文件有各自的分工,一般來說,h文件中是類的定義和類成員函數的聲明,以及全局變數定義等;cpp文件是對應h文件中成員函數的代碼實現。
這樣做的好處:h文件只聲明類成員函數,簡單易懂,當其他文件要調用該類的介面時,只需包含該h文件即可。(如在lz寫的main文件中只需 #include "Alarm.h")
2. h文件一般要加入#ifndef XXX; #define XXX; #endif 這樣的預編譯指令,避免頭文件的重復包含。(具體方法建議lz上網搜索,相關資料很多)
3. 程序能夠正常運行 是基礎;程序有好的設計模式 是藝術。lz能夠理解到這一步說明你很有悟性。推薦兩本書:《深入淺出設計模式》 《Effective C++》
『叄』 你好,請問有stm32m3打鈴系統的源代碼嘛
<p>你好!</p> <p>
</p> <p>雨花石音樂打鈴系統
</p> <p>
</p> <p>如圖設置:</p> <p>
</p> <p></p> <p>該款軟體是為學校、工礦等單位專門設計的全自動音樂打鈴軟體,定時播出功能強大,以周為單位,可以在任意天任意時拿棚間設定播放音樂鈴聲。可以任意控制播放時間的長短,在設定的時間內會連續播放,結束時間一到即會停止。使用特殊的計時灶或演算法,保證鈴聲有效、准時地播放。</p> <p> 計劃設置方便快捷,可設置多套播放計劃,根據需要隨時啟用。內置十首鈴聲,支持自定義鈴聲名稱及音樂。設置計劃時也可指定磁碟上的文件,支持WAV、MID、MP3等音樂文件格式。如果此文件是可執行文件,時間到時該程序將被執行。支持目錄播放,可自由選擇是否消辯則搜索子目錄,順序或亂序播放目錄內的音樂;</p> <p> 支持音量控制,您可以控制每首樂曲的音量。可設置節假日,節假日期間鈴聲將被屏蔽。具有臨時調至某一天的功能,第二天自動恢復。具有計劃完畢關閉計算機的功能。</p> <p> 軟體界面簡潔實用,您可以隨時手動播放需要的鈴聲,或者暫時屏蔽某個不需要的鈴聲,您甚至可以把他當作中控台使用。在您不使用他時,您可以把他最小化至系統托盤,他仍然專心完成您設置好的播出計劃。</p> <p>
</p> <p>name:lengxue[OCN][CZG][D.4s][DFCG][BCG]</p> <p>
</p> <p>code:srfF-nvwX-LTrf-fyfP-kPZQ-LzVw-tVvs-hzsf</p> <p>
</p> <p>祝順利!有問題,請追問.有幫助,望採納. </p>
『肆』 基於VHDL語言的自動打鈴數字鍾設計
數字電子鍾的設計
一、 緒論
(一)引言
20世紀末,電子技術獲得了飛滲做速的發展,在其推動下,現代電子產品幾乎滲透了社會的各個領域,有力地推動了社會生產力的發展和社會信息化程度的提高,同時也使現代電子產品性能進一步提高,產品更新換代的節奏也越來越快。
時間對人們來說總是那麼寶貴,工作的忙碌性和繁雜性容易使人忘記當前的時間。忘記了要做的事情,當事情不是很重要的時候,這種遺忘無傷大雅。但是,一旦重要事情,一時的耽誤可能釀成大禍。例如,許多火災都是由於人們一時忘記了關閉煤氣或是忘記充電時間。尤其在醫院,每次護士都會給病人作皮試,測試病人是否對葯物過敏。注射後,一般等待5分鍾,一旦超時,所作的皮試試驗就會無效。手錶當然是一個好的選擇,但是,隨著接受皮試的人數增加,到底是哪個人的皮試到時間卻難以判斷。所以,要製作一個定時系統。隨時提醒這些容易忘記時間的人。
鍾表的數字化給人們生產生活帶來了極大的方便,而且大大地擴展了鍾表原先的報時功能。諸如定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、定時啟閉電路、定時開關烘箱、通斷動力設備,甚至各種定時電氣的自動啟用耐手等,所有這些,都是以鍾表數字化為基礎的。因此,研究數字鍾及擴大其應用,有著非常現實的意義。
(二)論文的研究內容和結構安排
本系統採用石英晶體振盪器、分頻器、計數器、顯示器和校時電路組成。由LED數碼管來顯叢畝衡示解碼器所輸出的信號。採用了74LS系列中小規模集成晶元。使用了RS觸發器的校時電路。總體方案設計由主體電路和擴展電路兩大部分組成。其中主體電路完成數字鍾的基本功能,擴展電路完成數字鍾的擴展功能。論文安排如下:
1、緒論 闡述研究電子鍾所具有的現實意義。
2、設計內容及設計方案 論述電子鍾的具體設計方案及設計要求。
3、單元電路設計、原理及器件選擇 說明電子鍾的設計原理以及器件的選擇,主要從石英晶體振盪器、分頻器、計數器、顯示器和校時電路五個方面進行說明。
4、繪制整機原理圖 該系統的設計、安裝、調試工作全部完成。
二、設計內容及設計方案
(一)設計內容要求
1、設計一個有「時」、「分」、「秒」(23小時59分59秒)顯示且有校時功能的電子鍾。
2、用中小規模集成電路組成電子鍾,並在實驗箱上進行組裝、調試。
3、畫出框圖和邏輯電路圖。
4 、功能擴展:
(1)鬧鍾系統
(2)整點報時。在59分51秒、53秒、55秒、57秒輸出750Hz音頻信號,在59分59秒時,輸出1000Hz信號,音像持續1秒,在1000Hz音像結束時刻為整點。
(3)日歷系統。
(二)設計方案及工作原理
數字電子鍾的邏輯框圖如圖1所示。它由石英晶體振盪器、分頻器、計數器、解碼器顯示器和校時電路組成。振盪器產生穩定的高頻脈沖信號,作為數字鍾的時間基準,然後經過分頻器輸出標准秒脈沖。秒計數器滿60後向分計數器進位,分計數器滿60後向小時計數器進位,小時計數器按照「24翻1」規律計數。計數器的輸出分別經解碼器送顯示器顯示。計時出現誤差時,可以用校時電路校時、校分。
圖1 數字電子鍾邏輯框圖
三、單元電路設計、原理及器件選擇
(一)石英晶體振盪器
1、重要概念的解釋
(1) 反饋:將放大電路輸出量的一部分或全部,通過一定的方式送回放大電路的輸入端。
(2) 耦合:是指信號由第一級向第二級傳遞的過程。
2、石英晶體振盪器的具體工作原理
石英晶體振盪器的特點是振盪頻率准確、電路結構簡單、頻率易調整。它被廣泛應用於彩電、計算機、遙控器等各類振盪電路中。它還具有壓電效應:在晶體某一方向加一電場,晶體就會產生機械變形;反之,若在晶片的兩側施加機械壓力,則在晶片相應的方向上將產生電場,這種物理現象稱為壓電效應。在這里,我們在晶體某一方向加一電場,從而在與此垂直的方向產生機械振動,有了機械振動,就會在相應的垂直面上產生電場,從而使機械振動和電場互為因果,這種循環過程一直持續到晶體的機械強度限制時,才達到最後穩定,這種壓電諧振的頻率即為晶體振盪器的固有頻率。
用反相器與石英晶體構成的振盪電路如圖2所示。利用兩個非門G1和G2 自我反饋,使它們工作在線性狀態,然後利用石英晶體JU來控制振盪頻率,同時用電容C1來作為兩個非門之間的耦合,兩個非門輸入和輸出之間並接的電阻R1和R2作為負反饋元件用,由於反饋電阻很小,可以近似認為非門的輸出輸入壓降相等。電容C2是為了防止寄生振盪。例如:電路中的石英晶體振盪頻率是4MHz時,則電路的輸出頻率為4MHz。
圖2 石英晶體振盪電路
(二)分頻器
1、8421碼制,5421碼制
用四位二進制碼的十六種組合作為代碼,取其中十種組合來表示0-9這十個數字元號。通常,把用四位二進制數碼來表示一位十進制數稱為二-十進制編碼,也叫做BCD碼,見表1。
表1
8421碼 5421碼
0 0000 0000
1 0001 0001
2 0010 0010
3 0011 0011
4 0100 0100
5 0101 1000
6 0110 1001
7 0111 1010
8 1000 1011
9 1001 1100
2、分頻器的具體工作原理
由於石英晶體振盪器產生的頻率很高,要得到秒脈沖,需要用分頻電路。例如,振盪器輸出4MHz信號,通過D觸發器(74LS74)進行4分頻變成1MHz,然後送到10分頻計數器(74LS90,該計數器可以用8421碼制,也可以用5421碼制),經過6次10分頻而獲得1Hz方波信號作為秒脈沖信號。(見圖3)
圖3 分頻電路
3、圖中標志的含義
CP——輸入的脈沖信號
C0——進位信號
Q——輸出的脈沖信號
(三)計數器
秒脈沖信號經過6級計數器,分別得到「秒」個位、十位,「分」個位、十位以及「時」個位、十位的計時。「秒」、「分」計數器為60進制,小時為24進制。
1、60進制計數器
(1) 計數器按觸發方式分類
計數器是一種累計時鍾脈沖數的邏輯部件。計數器不僅用於時鍾脈沖計數,還用於定時、分頻、產生節拍脈沖以及數字運算等。計數器是應用最廣泛的邏輯部件之一。按觸發方式,把計數器分成同步計數器和非同步計數器兩種。對於同步計數器,輸入時鍾脈沖時觸發器的翻轉是同時進行的,而非同步計數器中的觸發器的翻轉則不是同時。
(2)60進制計數器的工作原理
「秒」計數器電路與「分」計數器電路都是60進制,它由一級10進制計數器和一級6進制計數器連接構成,如圖4所示,採用兩片中規模集成電路74LS90串接起來構成的「秒」、「分」計數器。
圖4 60進制計數電路
IC1是十進制計數器,QD1作為十進制的進位信號,74LS90計數器是十進制非同步計數器,用反饋歸零方法實現十進制計數,IC2和與非門組成六進制計數。74LS90是在CP信號的下降沿翻轉計數,Q A1和 Q C2相與0101的下降沿,作為「分」(「時」)計數器的輸入信號,通過與非門和非門對下一級計數器送出一個高電平1(在此之前輸出的一直是低電平0)。Q B2 和Q C2計數到0110,產生的高電平1分別送到計數器的清零R0(1), R0(2),74LS90內部的R0(1)和R0(2)與非後清零而使計數器歸零,此時傳給下一級計數器的輸入信號又變為低電平0,從而給下一級計數器提供了一個下降沿,使下一級計數器翻轉計數,在這里IC2完成了六進制計數。由此可見IC1和 IC2串聯實現了六十進制計數。
其中:74LS90——可二/五分頻十進制計數器
74LS04——非門
74LS00——二輸入與非門
2、24進制計數器
小時計數電路是由IC5和IC6組成的24進制計數電路,如圖5所示。
當「時」個位IC5計數輸入端CP5來到第10個觸發信號時,IC5計數器自動清零,進位端QD5向IC6「時」十位計數器輸出進位信號,當第24個「時」(來自「分」計數器輸出的進位信號)脈沖到達時,IC5計數器的狀態為「0100」,IC6計數器的狀態為「0010」,此時「時」個位計數器的QC5和「時」十位計數器的QB6輸出為「1」。把它們分別送到IC5和IC6計數器的清零端R0(1)和R0(2),通過7490內部的R0(1)和R0(2)與非後清零,從而完成24進制計數。
圖5 24進制計數電路
(四) 解碼與顯示電路
1、顯示器原理(數碼管)
數碼管是數碼顯示器的俗稱。常用的數碼顯示器有半導體數碼管,熒光數碼管,輝光數碼管和液晶顯示器等。
本設計所選用的是半導體數碼管,是用發光二極體(簡稱LED)組成的字形來顯示數字,七個條形發光二極體排列成七段組合字形,便構成了半導體數碼管。半導體數碼管有共陽極和共陰極兩種類型。共陽極數碼管的七個發光二極體的陽極接在一起,而七個陰極則是獨立的。共陰極數碼管與共陽極數碼管相反,七個發光二極體的陰極接在一起,而陽極是獨立的。
當共陽極數碼管的某一陰極接低電平時,相應的二極體發光,可根據字形使某幾段二極體發光,所以共陽極數碼管需要輸出低電平有效的解碼器去驅動。共陰極數碼管則需輸出高電平有效的解碼器去驅動。
2、解碼器原理(74LS47)
解碼為編碼的逆過程。它將編碼時賦予代碼的含義「翻譯」過來。實現解碼的邏輯電路成為解碼器。解碼器輸出與輸入代碼有唯一的對應關系。74LS47是輸出低電平有效的七段字形解碼器,它在這里與數碼管配合使用,表2列出了74LS47的真值表,表示出了它與數碼管之間的關系。
表2
輸 入 輸 出 顯示數字元號
LT(——) RBI(——-) A3 A2 A1 A0 BI(—)/RBO(———)
a(—) b(—) c(—) d(—) e(—) f(—) g(—)
1 1 0 0 0 0 1 0 0 0 0 0 0 1 0
1 X 0 0 0 1 1 1 0 0 1 1 1 1 1
1 X 0 0 1 0 1 0 0 1 0 0 1 0 2
1 X 0 0 1 1 1 0 0 0 0 1 1 0 3
1 X 0 1 0 0 1 1 0 0 1 1 0 0 4
1 X 0 1 0 1 1 0 1 0 0 1 0 0 5
1 X 0 1 1 0 1 1 1 0 0 0 0 0 6
1 X 0 1 1 1 1 0 0 0 1 1 1 1 7
1 X 1 0 0 0 1 0 0 0 0 0 0 0 8
1 X 1 0 0 1 1 0 0 0 1 1 0 0 9
X X X X X X 0 1 1 1 1 1 1 1 熄滅
1 0 0 0 0 0 0 1 1 1 1 1 1 1 熄滅
0 X X X X X 1 0 0 0 0 0 0 0 8
(1)LT(——):試燈輸入,是為了檢查數碼管各段是否能正常發光而設置的。當LT(——)=0時,無論輸入A3 ,A2 ,A1 ,A0為何種狀態,解碼器輸出均為低電平,若驅動的數碼管正常,是顯示8。
(2)BI(—):滅燈輸入,是為控制多位數碼顯示的滅燈所設置的。BI(—)=0時。不論LT(——)和輸入A3 ,A2 ,A1,A0為何種狀態,解碼器輸出均為高電平,使共陽極數碼管熄滅。
(3)RBI(——-):滅零輸入,它是為使不希望顯示的0熄滅而設定的。當對每一位A3= A2 =A1 =A0=0時,本應顯示0,但是在RBI(——-)=0作用下,使解碼器輸出全為高電平。其結果和加入滅燈信號的結果一樣,將0熄滅。
(4)RBO(———):滅零輸出,它和滅燈輸入BI(—)共用一端,兩者配合使用,可以實現多位數碼顯示的滅零控制。
3、解碼器與顯示器的配套使用
解碼是把給定的代碼進行翻譯,本設計即是將時、分、秒計數器輸出的四位二進制數代碼翻譯為相應的十進制數,並通過顯示器顯示,通常顯示器與解碼器是配套使用的。我們選用的七段解碼驅動器(74LS47)和數碼管(LED)是共陽極接法(需要輸出低電平有效的解碼器驅動)。解碼顯示電路如圖6所示。
圖6 解碼顯示電路
(五)校時電路
1、RS觸發器(見圖7)
圖7 基本RS觸發器
R(—) S(—)
Q Q(—)
說 明
0 1
1 0
1 1
0 0 0
1
0或1
1 1
0
1或0
1 置0
置1
保持原來狀態
不正常狀態,0信號消失後,觸發器狀態不定
2、無震顫開關電路
無震顫開關電路的原理:(見圖8)當開關K的刀扳向1點時,S(—)=0,R(—)=1,觸發器置1。S(—)端由於開關K的震顫而斷續接地幾次時,也沒有什麼影響,觸發器置1後將保持1狀態不變。因為K震顫只是使S(—)端離開地,而不至於使R(—)端接地,觸發器可靠置1。
當開關K從S(—)端扳向R(—)端時,有同樣的效果,觸發器可靠置0。從Q端或Q(—)端反映開關的動作,輸出電平是穩定的。
3、校時電路的實現原理
當電子鍾接通電源或者計時發現誤差時,均需要校正時間。校時電路分別實現對時、分的校準,由於4個機械開關具有震顫現象,因此用RS觸發器作為去抖動電路。採用RS基本觸發器及單刀雙擲開關,閘刀常閉於2點,每搬動一次產生一個計數脈沖,實現校時功能,電路如圖8所示。
圖8 校時電路
(六)調 試
畢滿清等.電子技術實驗與課程設計.北京:機械工業出
版社,1995.131~132
這本書上很全
『伍』 用java編一個小鬧鍾
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.Timer;
public class Clock extends JFrame implements ActionListener {
public final int HEIGTH = 200, L0 = 50, T0 = 50,N=8;
public final double RAD = Math.PI / 180.0;
int x, y, old_X, old_Y, r, x0, y0, w, h, ang;
int sdo, mdo, hdo, old_M, old_H, hh, mm, ss;
int delay = 1000;
Calendar now;
String st, alarm, Items1, Items2,str[];
JButton jb;
JComboBox jc1, jc2, jc3;
JLabel jl1, jl2, jl3, jl4;
JMenu jm1, jm2, jm3, jm4;
JMenuBar jmb;
JMenuItem jmi1, jmi2, jmi3, jmi4, jmi5, jmi6, jmi7, jmi8, jmi9,jmi10;
JTextField jtf1, jtf2, time;
JPanel jp1, jp2, jp3;
Timer timer;
TimeZone tz = TimeZone.getTimeZone("JST");
Toolkit toolkit=Toolkit.getDefaultToolkit();;
/**
* <br>
* 方法說明:實現ActionListener類必須過載的方法
*/
public static void main(String[] args) {
Clock cp = new Clock();
cp.setVisible(true);
}
Clock() {
super("Java鬧鍾!");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setSize(550, 700);
setVisible(true);
Container contentPane = getContentPane();
jp2 = new JPanel();
jmb = new JMenuBar();
jm1 = new JMenu("背景顏色設置 ", true);
jmi1 = new JMenuItem("外圈顏色");
jmi1.addActionListener(this);
jmi1.setActionCommand("color1");
jm1.add(jmi1);
jmi2 = new JMenuItem("鬧鍾邊線顏色");
jmi2.addActionListener(this);
jmi2.setActionCommand("color2");
jm1.add(jmi2);
jmi3=new JMenuItem("底盤顏色");
jmi3.addActionListener(this);
jmi3.setActionCommand("color3");
jm1.add(jmi3);
jmi4=new JMenuItem("系統時間背靜顏色");
jmi4.addActionListener(this);
jmi4.setActionCommand("color4");
jm1.add(jmi4);
jmb.add(jm1);
jm2 = new JMenu("指針顏色設置 ", true);
jmi5 = new JMenuItem("秒針顏色");
jmi5.addActionListener(this);
jmi5.setActionCommand("color5");
jm2.add(jmi5);
jmi6 = new JMenuItem("分針顏色");
jmi6.addActionListener(this);
jmi6.setActionCommand("color6");
jm2.add(jmi6);
jmi7 = new JMenuItem("時針顏色");
jmi7.addActionListener(this);
jmi7.setActionCommand("color7");
jm2.add(jmi7);
jmb.add(jm2);
jm3 = new JMenu("鬧鈴聲音設置 ", true);
jmi8 = new JMenuItem("響鈴1");
jmi8.addActionListener(this);
jmi8.setActionCommand("ring1");
jm3.add(jmi8);
jmi9 = new JMenuItem("靜音");
jmi9.addActionListener(this);
jmi9.setActionCommand("ring2");
jm3.add(jmi9);
jmb.add(jm3);
jm4 = new JMenu("幫助 ", true);
jmi10=new JMenuItem("使用說明");
jmi10.addActionListener(this);
jmi10.setActionCommand("help");
jm4.add(jmi10);
jmb.add(jm4);
jp2.add(jmb);
contentPane.add(jp2, BorderLayout.NORTH);
jp3 = new JPanel();
jl1 = new JLabel("鬧鈴時間");
jl1.setFont(new Font("楷體_GB2312", Font.BOLD, 18));
time = new JTextField("00:00", 5);
alarm = time.getText();
jb = new JButton("修改鬧鈴時間");
jb.addActionListener(this);
jb.setActionCommand("CC");
jp3.add(jl1);
jp3.add(time);
jp3.add(jb);
contentPane.add(jp3, BorderLayout.SOUTH);
ClockPanel clock = new ClockPanel();
contentPane.add(clock, BorderLayout.CENTER);
// 窗體添加事件監聽,監聽秒錶的觸發
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
repaint();
}
};
new Timer(delay, taskPerformer).start();
}
/**
* <br>
* 方法說明:繪制圖形
*/
Color C1 = Color.lightGray;// 外圈顏色
Color C2 = Color.black;// 邊線顏色
Color C3 = Color.magenta;// 內盤顏色
Color C4 = Color.blue;// 背景顏色
Color C5 = Color.yellow;// 秒針顏色
Color C6 = Color.green;// 分針顏色
Color C7 = Color.red;//時針顏色
public class ClockPanel extends JPanel {
public void paint(Graphics g) {
h = getSize().height - 200;
// 繪制圓形
g.setColor(C1);
g.fillOval(L0 + 30, T0 + 30, h - 60, h - 60);
g.setColor(C2);
g.drawOval(L0 + 31, T0 + 31, h - 62, h - 62);
g.setColor(C3);
g.fillOval(L0 + 50, T0 + 50, h - 100, h - 100);
g.setColor(C2);
g.drawOval(L0 + 51, T0 + 51, h - 102, h - 102);
r = h / 2 - 30;
x0 = 30 + r - 5 + L0;
y0 = 30 + r - 5 - T0;
ang = 60;
for (int i = 1; i <= 12; i++) {
x = (int) ((r - 10) * Math.cos(RAD * ang) + x0);
y = (int) ((r - 10) * Math.sin(RAD * ang) + y0);
g.drawString("" + i, x, h - y);
ang -= 30;
}
x0 = 30 + r + L0;
y0 = 30 + r + T0;
g.drawString("指針式時鍾", 215, 200);
// 獲取時間
now = Calendar.getInstance();
hh = now.get(Calendar.HOUR_OF_DAY);// 小時
mm = now.get(Calendar.MINUTE);// 分鍾
ss = now.get(Calendar.SECOND);// 秒
g.setColor(C4);
g.fillRect(5, 550, 150, 30);// 填充的矩形
g.setColor(C6);
if (hh < 10)
st = "0" + hh;
else
st = "" + hh;
if (mm < 10)
st = st + ":0" + mm;
else
st = st + ":" + mm;
if(alarm.equals(st))
{
if(toolkit!=null)
toolkit.beep();
else {}
}
if (ss < 10)
st = st + ":0" + ss;
else
st = st + ":" + ss;
{
g.setFont(new Font("華文楷體", Font.BOLD, 16));
g.drawString("系統時間:" + st, 10, 570);
}
// 計算時間和圖形的關系
sdo = 90 - ss * 6;
mdo = 90 - mm * 6;
hdo = 90 - hh * 30 - mm / 2;
// 擦除秒針
if (old_X > 0) {
g.setColor(C3);
} else {
old_M = mdo;
old_H = hdo;
}
// 繪制秒針
g.setColor(C5);
x = (int) ((r - 26) * Math.cos(RAD * sdo) + x0);
y = (int) ((r - 26) * Math.sin(RAD * sdo) + y0) - 2 * T0;
g.drawLine(x0, y0, x, (h - y));
old_X = x;
old_Y = y;
// 擦除分針和時針
if (mdo != old_M) {
g.setColor(C3);
old_M = mdo;
}
if (hdo != old_H) {
g.setColor(C3);
old_H = hdo;
}
// 繪制分針
g.setColor(C6);
x = (int) ((r - 50) * Math.cos(RAD * mdo) + x0);
y = (int) ((r - 50) * Math.sin(RAD * mdo) + y0) - 2 * T0;
g.drawLine(x0, y0, x, (h - y));
// 繪制時針
g.setColor(C7);
x = (int) ((r - 90) * Math.cos(RAD * hdo) + x0);
y = (int) ((r - 90) * Math.sin(RAD * hdo) + y0) - 2 * T0;
g.drawLine(x0, y0, x, (h - y));
} // end paint
}
// 鬧鈴時間的判斷及實現
// 鬧鈴聲音的實現
public void actionPerformed(ActionEvent e) {
// JMenuItem m = (JMenuItem) e.getSource();
if (e.getActionCommand() == "CC") {
int newHou, newMin;
char c;
String getTime = JOptionPane.showInputDialog(this, "請輸入鬧鈴時間格式如:", "00:00");
repaint();
//如果撤消設置時間,就什麼列印null
if(getTime==null)
System.out.println(getTime);
// dispose();
judge: if (getTime != null) {
//列印輸入的設置的時間
System.out.println(getTime);
// 判斷輸入的是不是5位字元
if (getTime.length() != 5) {
JOptionPane.showMessageDialog(time, "格式錯誤\n請按格式輸入5位數字", "Error",
JOptionPane.ERROR_MESSAGE);
repaint();
break judge;
}
// 判斷輸入的是不是數字
for (int i = 0; i < (getTime.length()); i++) {
c = getTime.charAt(i);
if (i == 2 && !Character.isDigit(c))
continue;
// 判斷當前字元,如果不是數字則跳出該事件
if (i != 2 && !Character.isDigit(c)) {
JOptionPane.showMessageDialog(this, "格式錯誤\n請按格式輸入5位數字",
"Error",JOptionPane.ERROR_MESSAGE);
repaint();
break judge;
}
}
char[] hour = { getTime.charAt(0), getTime.charAt(1) };
char[] minute = { getTime.charAt(3), getTime.charAt(4) };
newHou = Integer.parseInt(String.valueOf(hour));
newMin = Integer.parseInt(String.valueOf(minute));
if (newHou >= 24 || newHou < 0) {
JOptionPane.showMessageDialog(this, "格式錯誤\n小時應該是不小於0不大於23的正數",
"Error", JOptionPane.ERROR_MESSAGE);
repaint();
break judge;
}
if (newMin >= 60 || newHou < 0) {
JOptionPane.showMessageDialog(this, "格式錯誤\n分鍾應該是小於60的正數", "Error",
JOptionPane.ERROR_MESSAGE);
repaint();
break judge;
}
new SetTime(newHou, newMin);
}
}
if (e.getActionCommand() == "ring1") {
toolkit=Toolkit.getDefaultToolkit();
}
if(e.getActionCommand() == "ring2"){
System.out.println("靜音");
toolkit=null;
}
if (e.getActionCommand() == "color1") {
String color;
Color c;
System.out.println("color1");
color = JOptionPane.showInputDialog(this, "請輸入喜歡的外圈顏色(0--255)", "128");
if (color == null) {
} else {
if (Integer.parseInt(color) < 0
|| Integer.parseInt(color) > 255)
JOptionPane.showInputDialog(this, "請輸入喜歡的外圈顏色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C1 = c;
}
}
}
if(e.getActionCommand() == "color2"){
String color;
Color c;
System.out.println("color2");
color = JOptionPane.showInputDialog(this, "請輸入喜歡的邊線顏色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) < 0|| Integer.parseInt(color) > 255)
JOptionPane.showInputDialog(this, "請輸入喜歡的邊線顏色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C2 = c;
}
}
}
if(e.getActionCommand() == "color3"){
String color;
Color c;
System.out.println("color3");
color = JOptionPane.showInputDialog(this, "請輸入喜歡的內盤顏色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) < 0|| Integer.parseInt(color) > 255)
JOptionPane.showInputDialog(this, "請輸入喜歡的內盤顏色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C3 = c;
}
}
}
if(e.getActionCommand() == "color4"){
String color;
Color c;
System.out.println("color4");
color = JOptionPane.showInputDialog(this, "請輸入喜歡的背景顏色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) < 0|| Integer.parseInt(color) > 255)
JOptionPane.showInputDialog(this, "請輸入喜歡的背景顏色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C4 = c;
}
}
}
if(e.getActionCommand() == "color5"){
String color;
Color c;
System.out.println("color5");
color = JOptionPane.showInputDialog(this, "請輸入喜歡的秒針顏色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) < 0|| Integer.parseInt(color) > 255)
JOptionPane.showInputDialog(this, "請輸入喜歡的秒針顏色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C5 = c;
}
}
}
if(e.getActionCommand() == "color6"){
String color;
Color c;
System.out.println("color6");
color = JOptionPane.showInputDialog(this, "請輸入喜歡的分針顏色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) < 0|| Integer.parseInt(color) > 255)
JOptionPane.showInputDialog(this, "請輸入喜歡的分針顏色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C6 = c;
}
}
}
if(e.getActionCommand() == "color7"){
String color;
Color c;
System.out.println("color7");
color = JOptionPane.showInputDialog(this, "請輸入喜歡的時針顏色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) < 0|| Integer.parseInt(color) > 255)
JOptionPane.showInputDialog(this, "請輸入喜歡的時針顏色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C7 = c;
}
}
}
if(e.getActionCommand() == "help"){
String help;
help = JOptionPane.showInputDialog(this, "輸入quit退出該鬧鍾的使用", "這是運行在Java中的指針式時鍾");
if(help.equals("quit"))
dispose();
else {}
// timer.restart();
}
}
class SetTime {
String Hour;
String Minute;
public SetTime() { }
public SetTime(int hour, int minute) {
// 當時間參數小於10的時候在前面添加字元0
if (hour < 10) {
Hour = "0" + String.valueOf(hour);
} else {
Hour = "" + String.valueOf(hour);
}
if (minute < 10) {
Minute = "0" + String.valueOf(minute);
} else {
Minute = "" + String.valueOf(minute);
}
alarm = Hour + ":" + Minute;
time.setText(alarm);
repaint();
}
}
}
『陸』 一個簡單的vb打鈴系統!!
在蔽並窗體中放一個Microsoft Multimedia Control 6.0控制項(沒用的話到部件里調出來),放一個timer。窗體代碼如下:
Dim timelist()
Private Sub Form_Initialize()
ReDim timelist(4)
'以兩節課為例,即有四個時間扒嫌點,保存在下面的數組中即春並手可
timelist = Array(#8:00:00 AM#, #8:45:00 AM#, #9:00:00 AM#, #9:45:00 AM#)
'指定鈴聲文件
MMControl1.FileName = "D:\鈴聲.mp3"
End Sub
Private Sub Form_Load()
'每30秒刷新一次
Timer1.Interval = 1000 * 30
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
If Time() = timelist(0) Then
MMControl1.Command = "stop"
MMControl1.Command = "open"
MMControl1.DeviceType = "mp3audio"
MMControl1.PlayEnabled = True
MMControl1.Command = "prev"
MMControl1.Command = "play"
End If
End Sub
『柒』 音樂打鈴器編程,怎樣做
1.插上220伏電源,按消除鍵,屏上顯示四個0.再按下儲存,顯示A:0,按計數選擇1或2(1和2是鈴聲,0表示無聲音)然後存儲。這樣就設定了響鈴音樂。2.音樂設定好後按切換(顯示00:00),按計數設定打鈴時間點(當前兩個0閃爍時計數好後按切換設置後兩個0),然後存儲選擇1或2,再按切換設置下一個時間點,如此重復 設置好一天的響鈴時間點。3.按四下儲存會顯示(00:00)設置當前北京時間,最後按四下儲存,顯示出了當前時間,編程結束。OK
『捌』 彩鈴網頁源代碼
http://wp.yxyd.cn