第一篇:基于小規模芯片的電子時鐘課程設計
摘 要
電力電子技術是一門新興的應用于電力領域的電子技術,就是使用電力電子器件(如晶閘管,GTO,IGBT等)對電能進行變換和控制的技術。電力電子技術所變換的“電力”功率可大到數百MW甚至GW,也可以小到數W甚至1W以下,和以信息處理為主的信息電子技術不同電力電子技術主要用于電力變換。電子電力技術對于生活與工業生產起到了重要的作用。無論是小到玩具的控制,大到航天器件的控制。都離不開電力電子技術。
電力電子技術分為電力電子器件制造技術和變流技術(整流,逆變,斬波,變頻,變相等)兩個分支。現已成為現代電氣工程與自動化專業不可缺少的一門專業基礎課,在培養該專業人才中占有重要地位。
關鍵字:電子電力技術,芯片,變流技術。
目 錄
摘要.............................................Ⅰ
1、緒論......................................1
2、相關芯片知識.................................2 2.1 相關芯片簡介.....................................2 2.2電力電子技術的應用.......................................5
3、課程設計的內容及設計方案.............................6 3.1設計任務及要求................................6 3.2方案的討論................................6 3.3外部電路設計........................................7
4、調試...................................10 4.1系統調試.................................12 附錄...................................10 心得體會.............................................12 參考文獻..........................................13
1、緒論
電力電子技術是建立在電子學、電工原理和自動控制三大學科上的新興學科。因它本身是大功率的電技術,又大多是為應用強電的工業服務的,故常將它歸屬于電工類。電力電子技術的內容主要包括電力電子器件、電力電子電路和電力電子裝置及其系統。電力電子器件以半導體為基本材料,最常用的材料為單晶硅;它的理論基礎為半導體物理學;它的工藝技術為半導體器件工藝。近代新型電力電子器件中大量應用了微電子學的技術。電力電子電路吸收了電子學的理論基礎,根據器件的特點和電能轉換的要求,又開發出許多電能轉換電路。這些電路中還包括各種控制、觸發、保護、顯示、信息處理、繼電接觸等二次回路及外圍電路。利用這些電路,根據應用對象的不同,組成了各種用途的整機,稱為電力電子裝置。這些裝置常與負載、配套設備等組成一個系統。電子學、電工學、自動控制、信號檢測處理等技術常在這些裝置及其系統中大量應用。
對于這一次的電子時鐘的設計,利用電力電子元器件來構造,是對我們的電力電子技術水平的提升和考驗。
2、相關芯片知識。2.1相關芯片的簡介。(1)CD4060芯片介紹
圖1
圖2 由圖1與圖2可知CD4060芯片可以用來做分頻器來使用,其主要作用就是為 給時鐘提供一個比較精準的秒數來提供計數單位。
引腳介紹:
VDD: VSS: 芯片接地端。
芯片電源端,接5v電壓源。
Q4-Q14:作為分頻端,由圖2可已看出,一2^Qn次方對輸入頻率盡心分頻。可以得到1HZ的頻率輸出。
RESET: 清零開關,當RESET腳導入由地電位到高電位變化時,芯片數據清零。
圖3為RC自振蕩發生電路接線圖。
圖3
(2)、74LS161芯片介紹
圖4、74LS161 圖4為74161芯片的圖片。總共有16支管腳,其中每支管腳的作用如下所示: VCC: 芯片電源端,接5V電源。
Q0-Q3: 芯片輸出端,輸出4位符合8421編碼的二進制數。P0-P3: 預置數端口,可為芯片實現預置數功能。R: 復位端口,當該引腳來一高電位芯片復位。CP: 計數脈沖的輸入端。CEP:平行輸入使能端。TC: 使用時接高電位。CEP: 使用時接高電位。GND: 接地端。
圖5 74161動能表
由圖5可以看出,只有當R、PE、CET、CEP四個端口同時達到高電平是該芯片能夠實現技術功能。當R引腳由高變為低電平時,芯片實現復位功能。
(3)、74LS47芯片簡介
圖6 圖7 如上圖6與圖7可以知道74LS47的作用,主要用來實現對7端數碼管的編譯工作。
圖8 圖8為74LS47的功能表,輸出與8421BCD嗎對應的數碼管編碼。
(4)、與門、非門、與非門的簡介。
與門的邏輯關系非常簡單,同理非門和與非門的邏輯關系一樣也很簡單,這里就不多作介紹。
2.2、電力電子技術的應用。
一般工業: 交直流電機、電化學工業、冶金工業
交通運輸: 電氣化鐵道、電動汽車、航空、航海
電力系統: 高壓直流輸電、柔性交流輸電、無功補償
電子裝置電源: 為信息電子裝置提供動力
家用電器: “節能燈”、變頻空調
其他: UPS、航天飛行器、新能源、發電裝置
3、課程設計的內容及方案。
3.1、設計任務及要求。
電子技術課程設計應達到如下基本要求:
(1)綜合運用電子技術課程中所學到的理論知識去獨立完成一個設計課題。(2)通過查閱手冊和文獻資料,培養學生獨立分析和解決實際問題的能力。(3)進一步熟悉常用電子器件的類型和特性,并掌握合理選用的原則。(4)學會電子電路的安裝與調試技能。(5)進一步熟悉電子儀器的正確使用方法。(6)學會撰寫課程設計總結報告。
(7)培養嚴肅認真的工作作風和嚴謹的科學態度。
電子課程設計的任務:
用中小規模集成芯片設計多功能數字鐘,1、準確計時,以數字形式顯示時(00~23)、分(00~59)、秒(00~59)的時間。
2、具有校時功能,可以對小時和分單獨校時,對分校時的時候,停止分向小時進位
3.2、方案的討論。
方案
1、利用74LS390實現十進制的計數器,實現對秒和分的各位進行計數。再利用74161構成二十四進制計數對時進行計數。
方案
2、利用74LS1611來實現所有計數功能。
選擇方案二來實現的原因有開始用芯片少,易于實現。比較經濟。
3.3、外部電路設計。
(1)、秒晶振實現
圖9
產生1HZ的脈沖用于實現秒計數的是通過使用CD4060芯片的自起振作用來實現的,芯片的默認頻率為32768HZ通過13分頻后可以得到1HZ的振動頻率。圖9是芯片的自起振動的電信電路接法,具體的芯片使用見上面所描述。
(2)、計數器的實現
圖10
計數部分是由兩片74LS161組成的。第一片適用于構成十進制計數器,滿十進一,通過一個與非門進行反饋到MR管教,進行芯片復位處理。主要用于計數秒的各位。
第二塊芯片有第一款芯片的進位信號作為輸入脈沖信號,達到兩塊芯片級聯來實現六十進制的計數器的構造。作為秒的十位輸出。再通過7400進行反饋來清零芯片內部數據。
(3)、時計數與顯示芯片的實現
圖11
對于“時”的顯示調節比較復雜。對于時的復位有兩種肯能,一種是個位數滿十復位,十位滿二復位。并且當個位滿四,且十位滿二時進行復位。于是采用兩路型號的與門來實現對芯片的復位,即實現在個位滿十的時候復位,又能滿足總數為二十四的時候進行復位,既可以實現數字時鐘的功能。
顯示芯片是使用的74LS47譯碼器。它的功能在前面的章節已經介紹過啦。它能夠實現對數碼管的編碼工作,實現顯示數字的作用。
同時對于調節按鈕的設計也比較方便的。
(4)、調節按鈕
圖12
在電子時鐘顯示系統中要實現對時分秒的調節功能,于是。利用對信號脈沖的調節來實現對顯示的調節。其中SW1為調節開關,按下后,時鐘不進行計數,本質是在于將產生秒脈沖的信號接地處理。
秒調節按鈕,同樣是接到秒脈沖之上,對他進行脈沖的調節來實現對計數的加法運算。
分調節與時調節,同上所示。
(5)、顯示模塊
圖13
顯示模塊是由8只數碼管來盡心是實現的,通過譯碼器來對輸入的信號進行編碼后輸送到數碼管中進行顯示。
4、系統調試
圖14
圖14為系統的調試運行圖。在模擬運行時,由CD4060產生脈沖信號。輸入到74LS161中進行處理,然后送到下一級計數器中處理,如此循環實現控制。
通過調節四個按鈕也可以實現對他的控制調節。
附 錄
電路原理圖
心 得 體 會
這次課程設計讓我體會到,再大的一個系統其實也可以分解為一小塊一小塊的分解模塊來實現,就比如說我們的電子時鐘,可以分解為自激振動模塊,計數模塊,復位模塊,顯示模塊。每一個模塊有時可以由最簡單的基礎元件組成的。這樣一來,所有的復雜的,多元的,都可以將其分解為我們最熟悉的模塊來解決。
這種基本方法就是我這次課程設計最大的心得體會。同時,對于各電路中的邏輯關系也要十分的明白,像CD4060芯片中復位的信號時一個低電平進行復位,與其他的有區別。還有構建二十四進制的時鐘“時”顯示的時候,他的邏輯關系就更要搞明白,否則就容易出錯誤。
參 考 文 獻
[1] 張克農,寧改姊,數字電子計數基礎.高等教育出版社,2010.[1]Brand Holdsworth,Clive Wood,數字邏輯設計.人民郵電出版社,2006.
第二篇:數電電子時鐘課程設計
專業課程設計報告
題目:數字電子鐘課程設計
系
別
電氣工程系
專業班級
電氣班
學生姓名
指導教師
提交日期
2011年X月X日
一、設計目的3
二、設計要求和設計指標
三、設計內容
3.1方案設計與選擇
3.2原理設計和功能描述
3.2.1數字計時器的設計思想
3.2.2數字電子鐘總體框架圖
3.3單元電路的設計
3.3.1數字電子鐘原理效果圖
3.3.2晶體振蕩器電路
3.3.3分頻器電路
3.3.4時間計數器電路
3.3.5數碼管
3.3.6揚聲器
3.4元器件清單
3.4.1數字電子鐘仿真
四、本設計改進建議
五、感想
六、主要參考文獻
附錄
一、設計目的數字鐘是一種用數字電路技術實現時、分、秒計時的裝置,與機械式時鐘相比具有更高的準確性和直觀性,且無機械裝置,具有更更長的使用壽命,因此得到了廣泛的使用。
數字鐘從原理上講是一種典型的數字電路,其中包括了組合邏輯電路和時序電路。
因此,我們此次設計與制做數字鐘就是為了了解數字鐘的原理,從而學會制作數字鐘.而且通過數字鐘的制作進一步的了解各種在制作中用到的中小規模集成電路的作用及實用方法.且由于數字鐘包括組合邏輯電路和時敘電路.通過它可以進一步學習與掌握各種組合邏輯電路與時序電路的原理與使用方法。
二、設計要求和設計指標
1、設計一個能顯示時、分、秒的數字鐘,顯示時間從00:00:00到23:59:592、設計的電路包括產生時基信號,時、分、秒的計時電路,顯示電路。
3、擴展功能:能實現校時、教分、教秒;整點報時。
三、設計內容
3.1方案設計與選擇
數字電子技術的復雜性和靈活性決定了數字電子鐘的設計方案有多種,如下是我總結的部分方案。
方案一:
脈沖信號源的選擇。用555定時器制作的多諧振蕩器,信號發生器,脈沖芯片等方式都可以作為脈沖信號源,在此我選擇的是多諧振蕩器,主要考慮的是它的易于制作和很好的穩定性。
方案二:
時分秒計數器的選擇。時分秒計數器的選擇同樣有多種,74160N和74161N都是不錯的選擇,74LS160和
74LS161,74LS190和74LS191等等也都可以,考慮到其簡單易用和作為課本上重點內容在此我們選擇的是74160N。
方案三:
譯碼顯示器的選擇。DCD_HEX或7448加上SEVEN_SEG_COM_K等也是多種方案,這里我選擇的是DCD_HEX。
3.2原理設計和功能描述
3.2.1數字計時器的設計思想
要想構成數字鐘,首先應選擇一個脈沖源——能自動地產生穩定的標準時間脈沖信號。而脈沖源產生的脈沖信號地頻率較高,因此,需要進行分頻,使得高頻脈沖信號變成適合于計時的低頻脈沖信號,即“秒脈沖信號”(頻率為1Hz)。經過分頻器輸出的秒脈沖信號到計數器中進行計數。由于計時的規律是:60秒=1分,60分=1小時,24小時=1天,就需要分別設計60進制,24進制計數器,并發出驅動信號。各計數器輸出信號經譯碼器、驅動器到數字顯示器,是“時”、“分”、“秒”得以數字顯示出來。
3.2.2數字電子鐘總體框架圖
圖2-2
3.3單元電路的設計
3.3.1數字電子鐘原理效果圖
圖2-3-1
3.3.2晶體振蕩器電路
晶體振蕩器是電子鐘的核心,晶體振蕩器設計的質量直接影響了整個電的好壞。這里我用555定時器制作了一個多諧振蕩器。
其中R1=57.72
kΩ,R1=115.4
kΩ,C=100nF,Cf=10nF,f=1/0.7(Rw+2R)C=1/[0.7(57.72+2*115.4)*103*100*10-9]≈50Hz。
其產生的頻率為50Hz,然后經過整形、分頻獲得1Hz的秒脈沖。如圖:
圖2-3-2
3.3.3分頻器電路
分頻器是由兩個74160N組成的50進制計數器。則輸出端的頻率則是將原來的50Hz分成1Hz的頻率輸出,實現分頻效果。
圖2-3-3
3.3.4時間計數器電路
時間計數電路由秒個位和秒十位計數器、分個位和分十位計數器、時個位和時十位計數器電路構成,其中秒個位和秒十位計數器、分個位和分十位計數器為60進制計數器,時個位和時十位計數器為24進制計數器,其原理圖如下:
圖2-3-4
3.3.5數碼管
數碼管通常有發光二極管(LED)數碼管和液晶(LCD)數碼管,本設計提供的為LED數碼管DCD_HEX,其已內含譯碼器功能,所以不用再另加譯碼器。
圖2-3-5
3.3.6揚聲器
該揚聲器的額定頻率為200Hz,額定電壓為3V,額定電流為0.05A。
圖2-3-6
3.4元器件清單
元件名稱
數量(個)
DCD_HEX
74160N
555_VIRTUAL
4049BT_5V
74LS00D
57.72kΩ電阻
115.4kΩ電阻
5V直流電源
BUZZER
100nF電容
10nF電容
導線
若干
表2-4
3.4.1數字電子鐘仿真
下圖為仿真結果,仿真開始時,多諧振蕩器產生50Hz的正弦脈沖信號,然后經過分頻器后其輸出的頻率變為1Hz。計數器接收到脈沖信號后開始計數,計數結果顯示在數碼管上。當分秒計數器達到59分59秒,然后再來一個脈沖信號時揚聲器開始發聲,也就是整點報時。下面為其中的一張仿真圖。
圖3-1
四、本設計改進建議
1、應選用石英晶體振蕩器,為了簡化電路分頻選用CD4040。
2、本設計校時電路是將各個位上的使能端引出接一個單刀雙擲開關,一端(1端)接低位的進位信號,另一端(2端)接校時電路。校正某位上的時間時,可以將相應位的開關接到2端,通過撥動校時電路就能實現校時功能。
3、沒有校時電路。
五、感想
(1)
布局設計:要先根據主體電路圖和擴展電路圖想象各個元件的分布位置,哪塊電路板該放哪些元件,如何最大限度利用電路板的空間,怎么樣才能使走線明朗、簡潔。
(2)
布線工藝:一開始看到電線像蜘蛛網一樣,密密麻麻的,非常難看懂和檢查,后來看了預先設計的線路,而且用各種顏色的導線區分,顯得明朗清晰。
(3)
課題核心及使用價值:該課題用一個生活中的實力展示了振蕩電路、計數電路、譯碼電路的作用與銜接過程,揭示了電子鐘內部電路圖及其各部分的作用。我們通過此課題,結合上學期學習的模擬電子、數字電子技術的理論課知識,可以系統地學習電子設計與測試的流程、方法、原理,為我們以后設計更加專業、復雜的集成電路打下雄厚的基礎。
六、主要參考文獻
[1]
清華大學電子學教研組編,童詩白、華成英主編:《
模擬電子技術基礎
》
[
M
]
.(第四版).北京:高等教育出版社,2006.5(2009重印)
[2]華中工學院電子學教研室編,康華光主編:《電子
基礎——數字部分》
[M]
.(第四版).北京:高等教育出版社,1988年
[3]
清華大學電子學教研組編,閻
石主編:《
數學電子技術基礎
》
[M]
.(第五版).北京:高等教育出版社,2006.5(2008年重印)
[4]遼寧工程技術大學電工與電子技術實驗中心組編,馬玉芳、樸忠學、張國軍主編:《
電子技術實驗指導書
》,2010.3
[5]朱清慧、張鳳蕊、翟天蒿、王志奎編著:《
Proteus教程——電子線路設計、制版與仿真
》
[M]
.北京:清華大學教育出版社,2008.9
[6]熊幸明主編:《電子電工技能訓練》
[M].北京:電子工業出版社,2005年
華nan理工大學guang州學院
附錄
第三篇:電子時鐘 電子技術基礎 課程設計
課程設計報告
課 程 名 稱 電子技術基礎 院 部 名 稱
機電工程學院
專
業
自動化
班 級 10自動化 指 導 教 師 趙國樹
金陵科技學院教務處制
目錄
一、課程設計應達到的目的............................................二、課程設計題目及要求..............................................三、課程設計任務及工作量的要求....................................1.設計要求.......................................................2.總體參考方案.................................................3.單元電路設計....................................................(1).秒脈沖發生器.............................................(2).秒、分、時計數器...........................................(3).秒、分、時譯碼顯示模塊....................................(4).校時電路................................................4.附圖說明各部分功能的實現....................................(1).開始狀態................................................(2).時、分、秒分別校時........................................(3).3滿60秒向分鐘進位狀態...................................(4).滿60分向小時進位狀態....................................(5).23:59:59向00:00:00進位狀態................................5.整體電路圖....................................................6.實驗室調試....................................................(1).元件清單.................................................(2).調試過程...............................................(3).調試結果(照片).........................................(4).調試心得體會..............................................參考文獻.......................................................致謝........................................................一、課程設計應達到的目的
1、掌握組合邏輯電路、時序邏輯電路及數字邏輯電路系統的設計、安裝、測試方法;
2、進一步鞏固所學的理論知識,提高運用所學知識分析和解決實際問題的能力;
3、提高電路布局﹑布線及檢查和排除故障的能力;
4、培養書寫綜合實驗報告的能力。
二、課程設計題目及要求
數字電子時鐘設計
1、準確計時,以數字形式顯示時、分、秒的時間。
2、小時計時采用24進制的計時方式,分、秒采用60進制的計時方式。
3、具有快速校準時、分的功能。
三、課程設計任務及工作量的要求
1、設計要求
(1)、準確計時,以數字形式顯示時、分、秒的時間。
(2)、小時計時采用24進制的計時方式,分、秒采用60進制的計時方式。(3)、具有快速校準時、分的功能。
2、總體參考方案 框圖
T?0.7(R1?2R2)C?0.7(6k?2?4.7k)?100uF?1.078s
3.單元電路設計(1).秒脈沖發生器
采用555施密特觸發器
相關計算如下
仿真圖
(2).秒、分、時計數器
秒脈沖信號經過6級計數器,分別得到“秒”個位、十位、“分”個位、十位以及“時”個位、十位的計時。“秒”“分”計數器為六十進制,小時為二十四進制。
由秒脈沖獲得的1Hz的頻率首先送到計數器,這里采用的是十進制計數器74LS192,達到10次脈沖向前進位并且同步清零,一次來實現“秒”各位的十進制,然后產生一個進位信號,向“秒”的十位送達一個脈沖,“秒”的十位數字將要顯示六時,將Q1,Q2經過與門與MR相連,一次達到“秒”的六十清零的目的,同樣,分鐘的個位的計數要通過秒十位的Q1,Q2經過與門,與“分”個位的家計數器相連,時,“12翻1”小時計數器是按照“01——02——03——??——22——23——00——01——02——??”規律計數的,這與日常生活中的計時規律相同。在此實驗中,它是由兩片cc40192和一片cc4011構造成的同步二十四計數器,利用異步清零端實現起從23——00的翻轉,其中“24”為過渡狀態不顯示。其中,“時”十位是3進制,“時”個位是十進制。
74LS192功能及引腳圖
、可預置的十進制加/減計數器
仿真圖
(3).秒、分、時譯碼顯示模塊
本系統用七段發光二極管來顯示譯碼器輸出的數字,顯示器有兩種:共陽極顯示器或共陰極顯示器。74LS48譯碼器對應的顯示器是共陰極顯示器。
(4).校時電路
當數字鐘走時出現誤差時,需要校正時間。校時電路實現對“時”“分”
“秒”的校準。在電路中設有正常計時和校對位置。本實驗實現“時”“分”的校對。對校時的要求是,在小時校正時不影響分和秒的正常計數;在分校正時不影響秒和小時的正常計數。需要注意的時,校時電路是由與門構成的組合邏輯電路如下圖示:
方法:“秒”校時采用等待校時法。正常工作時,將開關S1撥向VDD位置,不影響與門G1傳送秒計數信號。進行校對時,將S1撥向接地位置,封閉與門G1,暫停秒計時。標準時間一到,立即將S1撥回VDD位置,開放與門G1。“分”和“時”校時采用加速校時法。正常工作時,S2和S3接地,封閉與門G3或G5,不影響或門G2或G4傳送秒、分進位計數脈沖。進行校對時,將S2、S3撥向VDD位置,秒脈沖通過G3、G2或G5、G4直接引入“分”、“時”計數器,讓“分”、“時”計數器以秒節奏快速計數。待標準時、分一到,立即將S2、S3撥回接地位置,封鎖秒脈沖信號,開放或門G2、G4對秒、分進位計數脈沖的傳送
仿真圖
4、附圖說明各部分功能的實現
(1).開始狀態
(2).時、分、秒分別校時
.(3)..滿60秒向分鐘進位狀態
(4)、滿60分向小時進位狀態
(5)、23:59:59向00:00:00進位狀態
5.整體電路圖
6、實驗室調試(1)元件清單
(2)調試過程
于6月7日下午開始進行實物調試,歷時四個小時。首先調試的是秒脈沖發生器,以NE555為主要芯片其引腳示意圖如下圖示
選擇合適的電阻電容,根據仿真的數據以及連接方式,對其進行調試,由于脈沖產生的波形不穩定,可以采取將脈沖信號經過非門調試。計數器采用的是十進制計數器74LS192,其引腳示意圖以及功能表如下示
74ls192引腳圖
74ls192功能表
將192的輸出端Q1、Q2、Q3、Q4分別與譯碼器74LS48的A、B、C、D相連接,其引腳示意圖如下圖示
譯碼器與共陰極的七段數碼管分別相連接。主要部分已經完成,所需要注意的是,每一個芯片都要接通電源和地。至于控制電路以及邏輯進位和清零,所需要的芯片主要是與門和或門以及非門,三者的引腳示意圖分別如下示
(與門74LS08)(或門74LS32)(非門74LS00)
(3)調試結果(照片)由于跳動的太大,在進行校正時,可能不會盡如人意,照片如下圖示
(4)調試心得體會
通過這次數字電子鐘的課程設計,我們才把學到的東西與實踐相結合。從中對我們學的知識有了更進一步的理解,而且更進一步地熟悉了芯片的結構及掌握了各芯片的工作原理和其具體的使用方法。也鍛煉了自己獨立思考問題的能力和通過查看相關資料來解決問題的習慣。雖然這只是一次簡單的課程設計,但通過這次課程設計我們了解了課程設計的一般步驟,和設計中應注意的問題。設計本身并不是有很重要的意義,而是同學們對待問題時的態度和處理事情的能力。各個芯片能夠完成什么樣的功能,使用芯片時應該注意那些要點。同一個電路可以用那些芯片實現,各個芯片實現同一個功能的區別。
另外,我還漸漸熟悉了pruteus這個仿真軟件的各個功能,讓我體會到了期中的樂趣,還在電腦制作文檔的過程中,使我對辦公軟件有了更進一步的了解和掌握。
參考文獻
1.現代數字電路與邏輯設計 清華大學出版社 北京交通大學出版社.2.模擬電子技術(修訂版)清華大學出版社 北京交通大學出版社
3.模擬電子技術教程 電子工業出版社
4.朱定華主編.電子電路測試與實驗.北京:清華大學出版社,2004.致謝
首先要感謝趙國樹老師的悉心教導,幾天來,趙老師的不辭勞苦給我留下了深刻的印象,趙老師嚴謹的教學態度以及他豐富的學識,讓我們學到了很多在《數字電子電路》等方面的知識,同時讓我們認識它的趣味性、實用性,讓我深深的喜歡上了這門學科。當我們在課程設計上遇到困難時,老師一邊又一遍的給我們講解,在此,向趙國樹老師致以最誠摯的謝意。
第四篇:數字電子時鐘課程設計2
數字電子時鐘課程設計
題目:
數字電子時鐘課程設計
目錄
一、設計任務及設計要求…………………………………………(3)
二、設計方案論證
…………………………..………….(3)1.總體方案及框圖 2.各部分論證
三、單元電路設計…………………………………………………(4)1.振蕩器 ………………………………………………………(4)2.秒、分、時計數器…………………………………………(5)
3.顯示譯碼/驅動器和LED七段數碼顯示管……………….(6)
4.分頻器……………………………………………………(7)5.報時電路…………………………………………………(9)
四、總體電路設計及原理………………………………………(13)
五、元器件明細表………………………………………………(10)
六、心得體會……………………………………………………(11)
七、參考文獻……………………………………………………(11)
一、設計任務及設計要求 1.設計任務
數字電子鐘的邏輯電路 2.設計要求
(1)由晶振電路產生1HZ的校準秒信號。
(2)設計一個有“時”、“分”、“秒”(23小時59分59秒)顯示切且具有校時、校分、校秒的功。
(3)整點報時功能。要求整點差10秒開始每隔1秒鳴叫一次,共五次,每次持續時間為一秒,前五次為500赫茲的聲音,最后依次為1000赫茲的聲音。(4)用中小規模集成電路組成電子鐘,并在實驗箱上進行組裝和調試。(5)劃出框圖和邏輯電路圖,寫出設計,實驗總結報告。
二、設計方案論證
數字鐘原理框圖如圖1所示,電路一般包括以下幾個部分:振蕩器、分頻器、譯碼顯示電路、時分秒計數器、校時電路、報時電路。
圖一
對于各個部分而言
數字鐘計時的標準信號應該是頻率相當穩定的1HZ秒脈沖,所以要設置標準時間源。?
數字鐘計時周期是24小時,因此必須設置24小時計數器,他應由模為60的秒計數器和分計數器及模為24的時計數器組成,秒、分、時由七段數碼管顯示。?
為使數字鐘走時與標準時間一致,校時電路是必不可少的。設計中采用開關控制校時直接用秒脈沖先后對“時”“分”“秒”計數器進行校時操作。?
能進行整點報時。在從59分50秒開始,每隔2秒鐘發出一次低音“嘟”的信號,連續五次,最后一次要求最高音“嘀”的信號,此信號結束即達到正點。?
三、單元電路設計 1.各獨立功能部件的設計(1)、振蕩器 振蕩器是計時器的核心,其作用是產生一個標準頻率的脈沖信號振蕩頻率的精度和 穩定度決定了數字鐘的質量。第一種方 案采用石英晶體振蕩器,如圖二。使用 振蕩頻率為32768HZ的石英晶體和反 向器構成一個穩定性極好、精度較高 的時間信號源。改變電容C可以
圖 二
石英晶體振蕩器
振蕩器的頻率進行微調,再通過一個反相器,輸出32768HZ的方波將此方波的頻率進行15次二分頻后,在輸出端剛好可得到頻率為1HZ的脈沖信號。
第二種方案如圖三采用集成電路555定時器與RC組成的多諧振蕩器。輸出的脈沖頻率為fS=1/[(R1+2R2)C1ln2]=1KHZ,周期T=1/fS=1ms。若參數選擇:R1=R2=10K歐姆,C1=47uF時,可以得到秒脈沖信號。
圖三 方波信號發生器
附555定時器的功能表 輸
出 輸
出
閥值輸入(v11)觸發輸入(v12)復位(RD)輸出(VO)發電管T × × 0 0 導通
<2/3VCC <1/3VCC 1 1 截止 >2/3VCC >1/3VCC 1 0 導通 <2/3VCC >1/3VCC 1 不變 不變
(2)秒、分、時計數器
U1到U6 六個74LS161構成數字鐘的秒、分、時計數器。
U1、U2共同構成秒計數器,它由兩個74LS161構成六--十進制的計數器,如圖四。U1作為秒個位十進制計數器,它的復位輸入RD、和置位輸入LD都接低電平,秒信號脈沖作為計數脈沖輸入到CP1端,輸出端C控制U2秒十位計數器的計數脈沖輸入。Q1、Q2、Q3、Q4作為秒個位的計時值送至秒個位七段顯示譯碼/驅動器。?
U2作為秒十位六進制計數器,它的計數脈沖輸入受到秒個位U1的控制,其計數器使能端EP、ET與U1的輸出端C相連接。當U2計數器計到0011,即清零信號到復位輸入端時,Q1、Q2、Q3、Q4輸出的都是零。Q1、Q2、Q3、Q4作為秒十位的計時值送至秒十位七段顯示譯碼/驅動器。U3、U4分別構成分個位十進制和分十位六進制計數器,如圖四。U3、U4與U1、U2的連接方法相似。當計數器輸出為01011001狀態,U3(U1)、U4(U2)的LD端同時為“0”,使計數器立即返回到00000000狀態。這樣就構成了六十進制計數器。?
圖四 六十進制計數器
U5、U6共同構成時計數器,它由兩個74LS161構成六十進制的計數器?
如圖五。U5作為時十位計數器,它的復位輸入RD、和置位輸入LD都接低電平,時信號脈沖作為計數脈沖輸入到CP1端,輸出端C控制U6秒十位計數器的計數脈沖輸入。Q1、Q2、Q3、Q4作為秒個位的計時值送至秒個位七段顯示譯碼/驅動器。當計數器輸出為00100100狀態,U5、U6的LD端同時為“0”,使計數器立即返回到00000000狀態。這樣就構成了二十四進制計數器。
U12
圖五
二十四進制計數器
(3)顯示譯碼/驅動器和LED七段數碼顯示管
六個74LS248集成電路構成數字鐘的七段數碼顯示管顯示譯碼/驅動器。74LS248七段顯示譯碼器輸出高電平有效,將8421BCD碼譯成七段(a、b、c、d、e、f、g)輸出,用以直接驅動LED七段數碼顯示對應的十進制數。74LS248的顯示功能:
顯示功能見功能表的上半部分。[DCBA]是二進制碼輸入,要正確的執行顯示功能,有關的功能端必須接合適的邏輯電平,這些功能端的作用隨后介紹。對于0~9輸入,[DCBA]相當BCD8421碼。當超過9以后,譯碼器仍然有字型輸出,具體見圖六。當[DCBA]=1111時,數碼管熄滅。實驗時要在筆劃段電極串聯電阻,以保護LED數碼管。表1 中規模顯示譯碼器74LS248的功能表 十進制
或功能 輸
入
輸
出
D
C
B
A
a
b
c
d
e
f
g 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 H H H H H H H H H H H H H H H H H ′ ′ ′ ′ ′ ′ ′ ′ ′ ′ ′ ′ ′
′ L
L L
L L
L L
L L
H L
L L
H H
L H
H L
L
L
H
L
H L
H
H
L L
H
H
H H H H H H H H H H H H H H H H H
H
H
H
H
H
H
L
L
H
H
L
L
L
L
H
H
L
H
H
L
H
H
H
H
H
L
L
H
L
H
H
L
L
H
H
H
L
H
H
L
H
H
H
L
H
H
H
H
H
H
H
H
L
L
L
L
圖六 74LS248顯示字型與輸入的對應關系
如圖七,六個LED七段數碼顯示管利用不同發光段組合的方式顯示不同數碼,都采用+5V電源作為每段發光二極管的驅動電源。需要發光的段為高電平,不發光的段為低電平。設計中采用共陰極數碼管,每段發光二極管的正向降壓,隨顯示光的顏色有所不同,通常約2V~3V,點亮電流在5~10mA。六個LED七段數碼顯示管分別顯示秒個位、十位;分個位、十位;時個位、十位的計數十進制數
圖七 顯示譯碼/驅動器和數碼顯示管(4)分頻器
分頻器電路是由三個74LS90構成,如圖八。74LS90是異步十進制計數器,它由一個一位二進制計數器和一個異步五進制計數器組成。將QA與CP2相連,計數脈沖由CP1端輸入,輸出由QA~QD引出,即得到十進制計數器。只有在復位輸入R0(1)= R0(2)=0和置位輸入S9(1)= S9(2)=0時,才能夠在計數脈沖(下降沿)作用下實現二—五—十進制加計算。因為要對輸入的脈沖進行三次10分頻,三片74LS90的復位輸入R0(1)、R0(2)和置位輸入S9(1)、S9(2)都接低電平。振蕩器輸出的方波脈沖計數器作為U1的CP1端的輸入時鐘脈沖,U1的QD端的輸出脈沖作為U2的CPA端的輸入時鐘脈沖,U2的QD端的輸出脈沖作為U3的CP1端的輸入時鐘脈沖,U3的QD端的輸出脈沖fO=fS/103???????=1HZ,即為秒信號方波脈沖,成為秒、分、時計數器的計數脈沖和時間校準信號。
將JK觸發器的J、K端都接在高電平,Qn+1=JQn+KQn=Qn,每輸入一個時鐘脈沖后,觸發器翻轉一次,觸發器處于計數狀態。經過觸發器的二分頻,Q端輸出為500HZ的脈沖作為低音脈沖。
經過U1、U2計數器的二次十分頻,輸出的脈沖頻率為10HZ,作為秒校時脈沖。
圖八
分頻器 附74LS90二—五—十進制計數器功能圖 復位輸入 置位輸入 輸出
R0(1)R0(2)S9(1)S9(2)QA QB QC QD H H L × L L L L H H × L L L L L × × H H H L L H L × L × 計數 L × × L 計數 × L L × 計數 × L × L 計數
JK觸發器的功能表 J K Qn Qn+1 說明 0 0 0 0 輸出狀態不變 1
0 1 0 0 輸出狀態與J端狀態相同
0 0 0 1 輸出狀態與K端狀態相同
1 1 0 1 每輸入一個脈沖輸出狀態改變一次
0
(五)報時電路
整點報時電路要求在每個整點發出音響,因此需要對每個整點進行時間譯碼,以其輸出驅動音響控制電路。如圖九。
若要在每一整點發出五低音、一高音報時,需要對59分50秒到59分59秒進行時間譯碼。QD4~QA4是分十位輸出,QD3~QA3是分個位輸出,QD2~QA2是秒十位輸出,QD1~QA1秒個位輸出。在59分時,A= QC4 QA4 QD3 QA3=1;在50秒時,B= QC2 QA2=1;秒個位為0、2、4、6、8秒時,QA1=0,C= QA1=1;因而F1=ABC= QC4QA4 QD3 QA3 QC2 QA2 QA1僅在59分50秒、52秒、54秒、56秒、58秒時等于1,故可以用F1作低音的控制信號。當計數器每計到59分59秒時,A= QC4 QA4 QD3QA3=1,D= QC2 QA2 QD1 QA1=1,此時F2=AD=1。把F2接至JK觸發器控制端J端,CP端加秒脈沖,則再計1秒到達整點時F3=1,故可用F3作一次高音控制信號。
用F1控制5次低音、F3控制高音,經音響放大器放大,每當“分”和“秒”計數器累計到59分50、52、54、56、58秒發出頻率為500HZ的五次低音,0分0秒時發出頻率為1000HZ的一次高音,每次音響的時間均為一秒鐘,實現了整點報時的功能。
圖九
整點報時電路
四、原理圖(見最后一頁)
五、元器件明細表
序號 元器件名稱 型號規格 數量(個)備注 U0 集成定時器 5G555定時器 1 構成多諧振蕩器 U1~U6 同步加法計數器 74161 6 構成模加法計數器 U7~U9 異步十進制計數器 74LS90 3 構成分頻器
U10 七端顯示譯碼器 74LS248 6 分別顯示秒、分、時的數字 U11~U12 與非門 多輸入與非門 2 U13 J-K觸發器
C1、C2 電容C1=C2=104pf R1 R2 電阻R1 =2K、R2=5.1K R、R` 電阻R=1k,R`=47 U14 U20 門器件 非門 1
U15~U19 門器件 與門 6 多輸入與門 U21~U23 門器件 與非門 3 多輸入與非門 U24 觸發器 J-K觸發器 1 U25 晶體三級管 U26 喇叭實現鬧鈴
六、設計體會
在整個課程設計完后,總的感覺是:有收獲。以前上課都是上一些最基本的東西,而現在卻可以將以前學的東西作出有實際價值的東西。在這個過程中,我的確學得到很多在書本上學不到的東西,如:如何利用現有的元件組裝得到設計要求,如何找到錯誤的原因,如何利用計算機來畫圖等等。但也遇到了不少的挫折,有時遇到了一個錯誤怎么找也找不到原因所在,找了老半天結果卻是芯片的管腳接錯了,有時更是忘接電源了。在學習中的小問題在課堂上不可能犯,在動手的過程中卻很有可能犯。特別是在接電路時,一不小心就會犯錯,而且很不容易檢查出來。但現在回過頭來看,還是挺有成就感的。
七、參考文獻
姚福安.電子電路設計與實踐.山東科學技術出版社第一版.2002 楊志亮.電路原理圖設計技術.西北工業大學出版社第一版.2003 閻石.數字電子技術基礎..高等教育出版社第四版.1998 童詩白.模擬電子技術基礎.高等教育出版社第三版.2001 康華光.電子技術基礎.高等教育出版社.2002 蘇止麗.數字電子電路實驗.武漢理工大學.2003 陳明義.電子技術課程設計使用教程 中南大學出版社第一版.2002
回答者: 命途多舛0913-一
級
2008-1-5 21:54
數字電子時鐘課程設計
題目: 數字電子時鐘課程設計
目 錄
一、設計任務及設計要求…………………………………………(3)
二、設計方案論證 …………………………..………….(3)
1.總體方案及框圖
2.各部分論證
三、單元電路設計…………………………………………………(4)
1.振蕩器 ………………………………………………………(4)
2.秒、分、時計數器…………………………………………(5)
3.顯示譯碼/驅動器和LED七段數碼顯示管……………….(6)
4.分頻器……………………………………………………(7)
5.報時電路…………………………………………………(9)
四、總體電路設計及原理………………………………………(13)
五、元器件明細表………………………………………………(10)
六、心得體會……………………………………………………(11)
七、參考文獻……………………………………………………(11)
一、設計任務及設計要求
1.設計任務
數字電子鐘的邏輯電路
2.設計要求
(1)由晶振電路產生1HZ的校準秒信號。
(2)設計一個有“時”、“分”、“秒”(23小時59分59秒)顯示切且具有校時、校分、校秒的功。
(3)整點報時功能。要求整點差10秒開始每隔1秒鳴叫一次,共五次,每次持續時間為一秒,前五次為500赫茲的聲音,最后依次為1000赫茲的聲音。
(4)用中小規模集成電路組成電子鐘,并在實驗箱上進行組裝和調試。
(5)劃出框圖和邏輯電路圖,寫出設計,實驗總結報告。
二、設計方案論證
數字鐘原理框圖如圖1所示,電路一般包括以下幾個部分:振蕩器、分頻器、譯碼顯示電路、時分秒計數器、校時電路、報時電路。
圖一
對于各個部分而言
數字鐘計時的標準信號應該是頻率相當穩定的1HZ秒脈沖,所以要設置標準時間源。?
數字鐘計時周期是24小時,因此必須設置24小時計數器,他應由模為60的秒計數器和分計數器及模為24的時計數器組成,秒、分、時由七段數碼管顯示。?
為使數字鐘走時與標準時間一致,校時電路是必不可少的。設計中采用開關控制校時直接用秒脈沖先后對“時”“分”“秒”計數器進行校時操作。? 能進行整點報時。在從59分50秒開始,每隔2秒鐘發出一次低音“嘟”的信號,連續五次,最后一次要求最高音“嘀”的信號,此信號結束即達到正點。?
三、單元電路設計
1.各獨立功能部件的設計
(1)、振蕩器
振蕩器是計時器的核心,其作用是產生一個標準頻率的脈沖信號振蕩頻率的精度和
穩定度決定了數字鐘的質量。第一種方
案采用石英晶體振蕩器,如圖二。使用
振蕩頻率為32768HZ的石英晶體和反
向器構成一個穩定性極好、精度較高的時間信號源。改變電容C可以
圖 二 石英晶體振蕩器
振蕩器的頻率進行微調,再通過一個反相器,輸出32768HZ的方波將此方波的頻率進行15次二分頻后,在輸出端剛好可得到頻率為1HZ的脈沖信號。
第二種方案如圖三采用集成電路555定時器與RC組成的多諧振蕩器。輸出的脈沖頻率為fS=1/[(R1+2R2)C1ln2]=1KHZ,周期T=1/fS=1ms。若參數選擇:R1=R2=10K歐姆,C1=47uF時,可以得到秒脈沖信號。
圖三 方波信號發生器
附555定時器的功能表
輸 出 輸 出
閥值輸入(v11)觸發輸入(v12)復位(RD)輸出(VO)發電管T × × 0 0 導通
<2/3VCC <1/3VCC 1 1 截止
>2/3VCC >1/3VCC 1 0 導通
<2/3VCC >1/3VCC 1 不變 不變
(2)秒、分、時計數器
U1到U6 六個74LS161構成數字鐘的秒、分、時計數器。
U1、U2共同構成秒計數器,它由兩個74LS161構成六--十進制的計數器,如圖四。U1作為秒個位十進制計數器,它的復位輸入RD、和置位輸入LD都接低電平,秒信號脈沖作為計數脈沖輸入到CP1端,輸出端C控制U2秒十位計數器的計數脈沖輸入。Q1、Q2、Q3、Q4作為秒個位的計時值送至秒個位七段顯示譯碼/驅動器。?
U2作為秒十位六進制計數器,它的計數脈沖輸入受到秒個位U1的控制,其計數器使能端EP、ET與U1的輸出端C相連接。當U2計數器計到0011,即清零信號到復位輸入端時,Q1、Q2、Q3、Q4輸出的都是零。Q1、Q2、Q3、Q4作為秒十位的計時值送至秒十位七段顯示譯碼/驅動器。
U3、U4分別構成分個位十進制和分十位六進制計數器,如圖四。U3、U4與U1、U2的連接方法相似。當計數器輸出為01011001狀態,U3(U1)、U4(U2)的LD端同時為“0”,使計數器立即返回到00000000狀態。這樣就構成了六十進制計數器。?
圖四 六十進制計數器
U5、U6共同構成時計數器,它由兩個74LS161構成六十進制的計數器? 如圖五。U5作為時十位計數器,它的復位輸入RD、和置位輸入LD都接低電平,時信號脈沖作為計數脈沖輸入到CP1端,輸出端C控制U6秒十位計數器的計數脈沖輸入。Q1、Q2、Q3、Q4作為秒個位的計時值送至秒個位七段顯示譯碼/驅動器。當計數器輸出為00100100狀態,U5、U6的LD端同時為“0”,使計數器立即返回到00000000狀態。這樣就構成了二十四進制計數器。
U12 圖五 二十四進制計數器
(3)顯示譯碼/驅動器和LED七段數碼顯示管
六個74LS248集成電路構成數字鐘的七段數碼顯示管顯示譯碼/驅動器。74LS248七段顯示譯碼器輸出高電平有效,將8421BCD碼譯成七段(a、b、c、d、e、f、g)輸出,用以直接驅動LED七段數碼顯示對應的十進制數。74LS248的顯示功能:
顯示功能見功能表的上半部分。[DCBA]是二進制碼輸入,要正確的執行顯示功能,有關的功能端必須接合適的邏輯電平,這些功能端的作用隨后介紹。對于0~9輸入,[DCBA]相當BCD8421碼。當超過9以后,譯碼器仍然有字型輸出,具體見圖六。當[DCBA]=1111時,數碼管熄滅。實驗時要在筆劃段電極串聯電阻,以保護LED數碼管。
表1 中規模顯示譯碼器74LS248的功能表
圖六 74LS248顯示字型與輸入的對應關系
如圖七,六個LED七段數碼顯示管利用不同發光段組合的方式顯示不同數碼,都采用+5V電源作為每段發光二極管的驅動電源。需要發光的段為高電平,不發光的段為低電平。設計中采用共陰極數碼管,每段發光二極管的正向降壓,隨顯示光的顏色有所不同,通常約2V~3V,點亮電流在5~10mA。六個LED七段數碼顯示管分別顯示秒個位、十位;分個位、十位;時個位、十位的計數十進制數
圖七 顯示譯碼/驅動器和數碼顯示管
(4)分頻器
分頻器電路是由三個74LS90構成,如圖八。74LS90是異步十進制計數器,它由一個一位二進制計數器和一個異步五進制計數器組成。將QA與CP2相連,計數脈沖由CP1端輸入,輸出由QA~QD引出,即得到十進制計數器。只有在復位輸入R0(1)= R0(2)=0和置位輸入S9(1)= S9(2)=0時,才能夠在計數脈沖(下降沿)作用下實現二—五—十進制加計算。因為要對輸入的脈沖進行三次10分頻,三片74LS90的復位輸入R0(1)、R0(2)和置位輸入S9(1)、S9(2)都接低電平。振蕩器輸出的方波脈沖計數器作為U1的CP1端的輸入時鐘脈沖,U1的QD端的輸出脈沖作為U2的CPA端的輸入時鐘脈沖,U2的QD端的輸出脈沖作為U3的CP1端的輸入時鐘脈沖,U3的QD端的輸出脈沖fO=fS/103???????=1HZ,即為秒信號方波脈沖,成為秒、分、時計數器的計數脈沖和時間校準信號。
將JK觸發器的J、K端都接在高電平,Qn+1=JQn+KQn=Qn,每輸入一個時鐘脈沖后,觸發器翻轉一次,觸發器處于計數狀態。經過觸發器的二分頻,Q端輸出為500HZ的脈沖作為低音脈沖。
經過U1、U2計數器的二次十分頻,輸出的脈沖頻率為10HZ,作為秒校時脈沖。
圖八 分頻器
附74LS90二—五—十進制計數器功能圖
復位輸入 置位輸入 輸出 R0(1)R0(2)S9(1)S9(2)QA QB QC QD H H L × L L L L H H × L L L L L × × H H H L L H L × L × 計數
L × × L 計數
× L L × 計數
× L × L 計數
JK觸發器的功能表
J K Qn Qn+1 說明
0 0 0 0 輸出狀態不變1
0 1 0 0 輸出狀態與J端狀態相同0 0 0 1 輸出狀態與K端狀態相同1 1 0 1 每輸入一個脈沖輸出狀態改變一次0
(五)報時電路
整點報時電路要求在每個整點發出音響,因此需要對每個整點進行時間譯碼,以其輸出驅動音響控制電路。如圖九。
若要在每一整點發出五低音、一高音報時,需要對59分50秒到59分59秒進行時間譯碼。QD4~QA4是分十位輸出,QD3~QA3是分個位輸出,QD2~QA2是秒十位輸出,QD1~QA1秒個位輸出。在59分時,A= QC4 QA4 QD3 QA3=1;在50秒時,B= QC2 QA2=1;秒個位為0、2、4、6、8秒時,QA1=0,C= QA1=1;因而F1=ABC= QC4QA4 QD3 QA3 QC2 QA2 QA1僅在59分50秒、52秒、54秒、56秒、58秒時等于1,故可以用F1作低音的控制信號。
當計數器每計到59分59秒時,A= QC4 QA4 QD3QA3=1,D= QC2 QA2 QD1 QA1=1,此時F2=AD=1。把F2接至JK觸發器控制端J端,CP端加秒脈沖,則再計1秒到達整點時F3=1,故可用F3作一次高音控制信號。
用F1控制5次低音、F3控制高音,經音響放大器放大,每當“分”和“秒”計數器累計到59分50、52、54、56、58秒發出頻率為500HZ的五次低音,0分0秒時發出頻率為1000HZ的一次高音,每次音響的時間均為一秒鐘,實現了整點報時的功能。
圖九 整點報時電路
四、原理圖(見最后一頁)
五、元器件明細表
序號 元器件名稱 型號規格 數量(個)備注
U0 集成定時器 5G555定時器 1 構成多諧振蕩器 U1~U6 同步加法計數器 74161 6 構成模加法計數器
U7~U9 異步十進制計數器 74LS90 3 構成分頻器
U10 七端顯示譯碼器 74LS248 6 分別顯示秒、分、時的數字
U11~U12 與非門 多輸入與非門 2 U13 J-K觸發器 1
C1、C2 電容 2 C1=C2=104pf R1 R2 電阻 2 R1 =2K、R2=5.1K R、R` 電阻 2 R=1k,R`=47 U14 U20 門器件 非門 1
U15~U19 門器件 與門 6 多輸入與門
U21~U23 門器件 與非門 3 多輸入與非門
U24 觸發器 J-K觸發器 1 U25 晶體三級管 1 U26 喇叭 1 實現鬧鈴
六、設計體會
在整個課程設計完后,總的感覺是:有收獲。以前上課都是上一些最基本的東西,而現在卻可以將以前學的東西作出有實際價值的東西。在這個過程中,我的確學得到很多在書本上學不到的東西,如:如何利用現有的元件組裝得到設計要求,如何找到錯誤的原因,如何利用計算機來畫圖等等。但也遇到了不少的挫折,有時遇到了一個錯誤怎么找也找不到原因所在,找了老半天結果卻是芯片的管腳接錯了,有時更是忘接電源了。在學習中的小問題在課堂上不可能犯,在動手的過程中卻很有可能犯。特別是在接電路時,一不小心就會犯錯,而且很不容易檢查出來。但現在回過頭來看,還是挺有成就感的。
第五篇:嵌入式電子鬧鐘時鐘課程設計
#include
sbit rs=P2^5;//液晶位定義 sbit lcden=P2^7;sbit s1=P2^0;//時間功能切換按鍵 sbit s2=P2^1;//按鍵加 sbit s3=P2^3;//按鍵減
sbit s4=P2^4;//鬧鐘功能切換鍵 sbit rst=P1^5;//ds1302引腳定義 sbit io=P1^6;sbit sclk=P1^7;sbit beep=P3^0;//蜂鳴器
uchar num,count,shi,fen,miao,s1num,s2num, year,month,day,week,flag,flag1,year1,month1, day1,week1,shi1,fen1,miao1,year2,month2, day2,week2,shi2,fen2,miao2,year5,month5, day5,week5,shi5,fen5,miao5,wk,ashi,afen;//參數定義
uchar code table[]=“20--”;//液晶固定顯示 uchar code table1[]=“ : : 00:00”;/* uchar time_dat[7]={12,1,6,6,12,59,59};//年周月日時分秒 uchar write_add[7]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80};uchar read_add[7]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81};*/ void write_com(uchar com);//液晶寫指令函數 void write_data(uchar date);//液晶寫數據函數
void write_ds1302(uchar add,uchar dat);//ds1302芯片寫指令函數 void set_rtc();//ds1302時間設置函數 void time_pros();//ds1302進制轉換函數 void read_rtc();//ds1302讀時間函數 void alarm();//鬧鐘函數
void delay(uint z)//延時函數 { uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);} void init()//初始化 { lcden=0;flag=0;flag1=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);//液晶固定顯示,第一行 for(num=0;num<14;num++){ write_data(table[num]);delay(5);}
write_com(0x80+0x40);//液晶顯示第二行 for(num=0;num<20;num++){ write_data(table1[num]);delay(5);} }
void write_com(uchar com)//1602液晶寫指令 { rs=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}
void write_data(uchar date)//1602液晶寫寫數據 { rs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;}
void write_sfm(uchar add,uchar date)//時分秒 { uchar shi3,ge;shi3=date/10;ge=date%10;write_com(0x80+0x40+add);write_data(0x30+shi3);write_data(0x30+ge);}
void write_nyr(uchar ad,uchar date)//年月日 { uchar shi4,ge2;shi4=date/10;ge2=date%10;write_com(0x80+ad);write_data(0x30+shi4);write_data(0x30+ge2);}
void write_week(uchar wk)//星期按西方星期設置{ write_com(0x80+11);switch(wk){ case 1: write_data('S');delay(5);write_data('U');delay(5);write_data('N');break;
case 2: write_data('M');delay(5);write_data('O');delay(5);write_data('N');break;
case 3: write_data('T');
星期天為第一天 delay(5);write_data('U');delay(5);write_data('E');break;
case 4: write_data('W');delay(5);write_data('E');delay(5);write_data('D');break;
case 5: write_data('T');delay(5);write_data('H');delay(5);write_data('U');break;
case 6: write_data('F');delay(5);write_data('R');delay(5);write_data('T');break;
case 7: write_data('S');delay(5);write_data('A');delay(5);write_data('T');break;
} }
void keyscan()//{ if(s1==0){ delay(5);
按鍵函數 if(s1==0){ write_com(0x0f);s1num++;//記錄按鍵次數 flag=1;flag1=1;while(!s1);
switch(s1num)//光標閃爍點定位 { case 1:write_com(0x80+0x40+6);//秒 break;
case 2:write_com(0x80+0x40+3);//分 break;
case 3:write_com(0x80+0x40+0);//時 break;
case 4:write_com(0x80+11);//星期 break;case 5:write_com(0x80+8);//日 break;
case 6:write_com(0x80+5);//月 break;
case 7:write_com(0x80+2);//年 break;
case 8:s1num=0;write_com(0x0c);//設置開顯示光標不顯示 關閉時間設置
set_rtc();flag=0;break;}
} }
if(s1num!=0)//按鍵加減 { if(s2==0)//加按鍵函數 { delay(10);if(s2==0){
while(!s2);switch(s1num)//根據功能鍵相應次數做出調節 { case 1: miao++;//秒加 if(miao==60)miao=0;write_sfm(6,miao);write_com(0x80+0x40+6);break;
case 2: fen++;// if(fen==60)fen=0;write_sfm(3,fen);write_com(0x80+0x40+3);break;
case 3: shi++;// if(shi==24)shi=0;write_sfm(0,shi);write_com(0x80+0x40+0);break;
case 4: week++;// if(week==8)week=1;write_week(week);write_com(0x80+11);break;
case 5: day++;// if(day==32)day=1;write_nyr(8,day);write_com(0x80+8);break;
case 6: month++;//分加 時加 星期加日加 月加
if(month==13)month=1;write_nyr(5,month);write_com(0x80+5);break;
case 7: year++;//年加 if(year==100)year=0;write_nyr(2,year);write_com(0x80+2);break;
}
}
}
if(s3==0)//減按鍵函數同上 { delay(10);if(s3==0){ while(!s3);switch(s1num)//根據功能鍵相應次數做出調節 { case 1: miao--;if(miao==-1)miao=59;write_sfm(6,miao);write_com(0x80+0x40+6);break;
case 2: fen--;if(fen==-1)fen=59;write_sfm(3,fen);write_com(0x80+0x40+3);break;
case 3: shi--;if(shi==-1)shi=23;write_sfm(0,shi);write_com(0x80+0x40+0);break;
case 4: week--;if(week==-1)week=7;write_week(week);write_com(0x80+11);break;
case 5: day--;if(day==-1)day=31;write_nyr(8,day);write_com(0x80+8);break;
case 6: month--;if(month==-1)month=12;write_nyr(5,month);write_com(0x80+5);break;
case 7: year--;if(year==-1)year=99;write_nyr(2,year);write_com(0x80+2);break;
}
} }
}
if(s4==0)// { delay(5);
鬧鐘按鍵 if(s4==0){ write_com(0x0f);//光標閃爍 s2num++;//記錄按鍵次數 flag=1;while(!s4);switch(s2num)//光標閃爍點定位 { case 1:write_com(0x80+0x40+13);//分 break;
case 2:write_com(0x80+0x40+10);//時 break;
case 3:write_com(0x0c);//關閉鬧鐘設置 flag=0;s2num=0;break;
}
} }
if(s2num!=0)//鬧鐘設置 { if(s2==0)//鬧鐘加 { delay(10);if(s2==0){ while(!s2);switch(s2num)//根據功能鍵相應次數做出調節 { case 1: afen++;if(afen==60)afen=0;write_sfm(13,afen);write_com(0x80+0x40+13);break;
case 2: ashi++;if(ashi==24)ashi=0;write_sfm(10,ashi);write_com(0x80+0x40+10);break;
} } }
if(s3==0)//鬧鐘減 { delay(10);if(s3==0){ while(!s3);switch(s2num)//根據功能鍵相應次數做出調節 { case 1: afen--;if(afen==-1)afen=59;write_sfm(13,afen);write_com(0x80+0x40+13);break;
case 2: ashi--;if(ashi==-1)ashi=23;write_sfm(10,ashi);write_com(0x80+0x40+10);break;
} } }
} }
void wirte_ds1302_byte(uchar dat)//ds1302字節寫 { uchar i;for(i=0;i<8;i++){ sclk=0;io=dat&0x01;dat=dat>>1;sclk=1;} }
void write_ds1302(uchar add,uchar dat)//ds1302寫函數 { rst=0;_nop_();// 空操作 sclk=0;_nop_();rst=1;_nop_();wirte_ds1302_byte(add);wirte_ds1302_byte(dat);rst=0;io=1;sclk=1;}
uchar read_ds1302(uchar add)//ds1302{ uchar i,value;rst=0;_nop_();// 空操作 sclk=0;_nop_();rst=1;_nop_();wirte_ds1302_byte(add);for(i=0;i<8;i++){ value=value>>1;sclk=0;if(io){ value=value|0x80;} sclk=1;} rst=0;_nop_();// 空操作 sclk=0;_nop_();
讀函數 sclk=1;io=1;return value;}
void set_rtc()//ds1302時間設置 { write_ds1302(0x8e,0x00);//關寫保護
year1=year/10;//轉換為十六進制 year=year%10;year=year+year1*16;write_ds1302(0x8c,year);
week1=week/10;week=week%10;week=week+week1*16;write_ds1302(0x8a,week);
month1=month/10;month=month%10;month=month+month1*16;write_ds1302(0x88,month);
day1=day/10;day=day%10;day=day+day1*16;write_ds1302(0x86,day);
shi1=shi/10;shi=shi%10;shi=shi+shi1*16;write_ds1302(0x84,shi);
fen1=fen/10;fen=fen%10;fen=fen+fen1*16;write_ds1302(0x82,fen);
miao1=miao/10;miao=miao%10;miao=miao+miao1*16;write_ds1302(0x80,miao);
write_ds1302(0x8e,0x80);//開寫保護 flag1=0;}
void read_rtc()//從ds1302中讀時間 { year2=read_ds1302(0x8d);week2=read_ds1302(0x8b);month2=read_ds1302(0x89);day2=read_ds1302(0x87);shi2=read_ds1302(0x85);fen2=read_ds1302(0x83);miao2=read_ds1302(0x81);}
void time_pros()//進制 {
year5=year2/16;year2=year2%16;year2=year2+year5*10;
month5=month2/16;month2=month2%16;month2=month2+month5*10;
day5=day2/16;day2=day2%16;day2=day2+day5*10;
shi5=shi2/16;shi2=shi2%16;shi2=shi2+shi5*10;
fen5=fen2/16;fen2=fen2%16;fen2=fen2+fen5*10;
miao5=miao2/16;miao2=miao2%16;miao2=miao2+miao5*10;
從ds1302中讀出的時間轉換為十
}
void display()//顯示函數 { write_sfm(6,miao2);write_com(0x80+0x40+6);
write_sfm(3,fen2);write_com(0x80+0x40+3);
write_sfm(0,shi2);write_com(0x80+0x40+0);
write_week(week2);write_com(0x80+11);
write_nyr(8,day2);write_com(0x80+8);
write_nyr(5,month2);write_com(0x80+5);
write_nyr(2,year2);write_com(0x80+2);
if((ashi==shi2)&&(afen==fen2)){ alarm();} }
void alarm()// 鬧鐘 { beep=0;delay(1000);beep=1;} void main()//主函數 { init();//初始化 while(1){ keyscan();//按鍵函數
if(flag==0){ keyscan();read_rtc();time_pros();display();}
} }