欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      《單片機(jī)原理及應(yīng)用課程設(shè)計(jì)》節(jié)日彩燈控制器的設(shè)計(jì)

      時(shí)間:2019-05-12 05:28:49下載本文作者:會(huì)員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《《單片機(jī)原理及應(yīng)用課程設(shè)計(jì)》節(jié)日彩燈控制器的設(shè)計(jì)》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《《單片機(jī)原理及應(yīng)用課程設(shè)計(jì)》節(jié)日彩燈控制器的設(shè)計(jì)》。

      第一篇:《單片機(jī)原理及應(yīng)用課程設(shè)計(jì)》節(jié)日彩燈控制器的設(shè)計(jì)

      《單片機(jī)原理及應(yīng)用課程設(shè)計(jì)》報(bào)告

      ——節(jié)日彩燈控制器的設(shè)計(jì)

      業(yè):

      級:

      名:

      學(xué)

      號:

      2014年2月

      1.課程設(shè)計(jì)目的

      1.1鞏固和加深對單片機(jī)原理和接口技術(shù)知識(shí)的理解;

      1.2培養(yǎng)根據(jù)課題需要選學(xué)參考書籍、查閱手冊和文獻(xiàn)資料的能力; 1.3學(xué)會(huì)方案論證的比較方法,拓寬知識(shí),初步掌握工程設(shè)計(jì)的基本方法; 1.4掌握常用儀器、儀表的正確使用方法,學(xué)會(huì)軟、硬件的設(shè)計(jì)和調(diào)試方法; 1.5能按課程設(shè)計(jì)的要求編寫課程設(shè)計(jì)報(bào)告,能正確反映設(shè)計(jì)和實(shí)驗(yàn)成果,能用計(jì)算機(jī)繪制電路圖和流程圖。

      2.課程設(shè)計(jì)要求

      以單片機(jī)為核心,設(shè)計(jì)一個(gè)節(jié)日彩燈控制器: P1.2(S0)—開始,按此鍵則燈開始流動(dòng)(由上而下)。P1.3(S1)—停止,按此鍵則停止流動(dòng),所有燈為暗。P1.4(S2)—上,按此鍵則燈由上向下流動(dòng)。P1.5(S3)—下,按此鍵則燈由下向上流動(dòng)。實(shí)驗(yàn)原理

      本題目本質(zhì)上是由按鍵控制功能的流水燈,LED工作的方式通過鍵盤的掃描實(shí)現(xiàn)。其中的LED采取共陽極接法,通過依次向連接LED的I/O口送出低電平,可實(shí)現(xiàn)題目要求的功能。

      3.硬件設(shè)計(jì)

      3.1 控制器中AT89C51單片機(jī)硬件結(jié)構(gòu)

      AT89C51是一種低功耗/低電壓、高性能的八位CMOS單片機(jī),片內(nèi)有一個(gè)4KB的FLASH可編程可擦除只讀存儲(chǔ)器(FPEROM—Flash Programmable and Erasable Read Only Memory),它采用了CMOS工藝和ATMEL公司的高密度非易失性存儲(chǔ)器技術(shù),而且其輸出引腳和指令系統(tǒng)都與MSC—51兼容。片內(nèi)置通用8位中央處理器(CPU)和FLASH存儲(chǔ)單元,片內(nèi)的存儲(chǔ)器允許在系統(tǒng)內(nèi)改編程序或用常規(guī)的非易失性存儲(chǔ)器編程。因此,AT89C51是一種功能強(qiáng)、靈活性高且價(jià)格合理的單片機(jī),可方便的應(yīng)用于各種控制領(lǐng)域。

      3.2主要元器件

      1)電阻:10KΩ(1個(gè))、200Ω(8個(gè))、500Ω(2個(gè))2)電容:10μF(1個(gè))、30pF(2個(gè))3)LED燈(8個(gè))、按鈕(4個(gè))、晶振

      3.3 原理圖

      4.軟件設(shè)計(jì)

      4.1 設(shè)計(jì)思想

      程序設(shè)計(jì)(Programming)是指設(shè)計(jì)、編制、調(diào)試程序的方法和過程。它是目標(biāo)明確的智力活動(dòng)。在進(jìn)行微機(jī)控制系統(tǒng)設(shè)計(jì)時(shí),除了系統(tǒng)硬件設(shè)計(jì)外,大量的工作就是如何根據(jù)每個(gè)生產(chǎn)對象的實(shí)際需要設(shè)計(jì)應(yīng)用程序。因此,軟件設(shè)計(jì)在微機(jī)控制系統(tǒng)設(shè)計(jì)中占重要地位。對于本系統(tǒng),軟件也占有重要的地位。

      在單片機(jī)控制系統(tǒng)中,大體上可分為數(shù)據(jù)處理、過程控制兩個(gè)基本類型。數(shù)據(jù)處理包括:數(shù)據(jù)的采集、數(shù)字濾波、標(biāo)度變換等。過程控制程序主要是使單片機(jī)按一定的方法進(jìn)行計(jì)算,然后再輸出,以便控制生產(chǎn)。4.2軟件流程圖

      4.3 源程序 ORG

      0000H AJMP START ORG START: MOV

      0030H P0,#0FFH A,#0FEH P1.2,LOOP P1.3,LOOP1 P1.4,LOOP2 P1.5,LOOP3

      START MOV JNB JNB JNB JNB AJMP LOOP: MOV

      P0,A

      DEL LCALL JNB RL AJMP LOOP1: MOV

      JNB

      JNB AJMP LOOP2: JNB

      JNB

      JNB

      MOV

      LCALL

      RL AJMP LOOP3: JNB

      JNB

      JNB

      MOV

      LCALL

      RR AJMP DEL: MOV DEL1: MOV DEL2: MOV DEL3: DJNZ

      DJNZ DJNZ RET END

      P1.3,LOOP1 A

      LOOP

      P0,#0FFH P1.4,LOOP2 P1.5,LOOP3

      LOOP1

      P1.2,LOOP P1.3,LOOP1 P1.5,LOOP3 P0,A

      DEL A

      LOOP2

      P1.2,LOOP P1.3,LOOP1 P1.4,LOOP2 P0,A

      DEL A

      LOOP3

      R5,#02H R6,#0F0H R7,#0F0H R7, DEL3 R6, DEL2

      R5, DEL1

      5.調(diào)試運(yùn)行

      啟動(dòng)仿真如下圖所示:(1)P1.2(S0)—開始,按此鍵則燈開始流動(dòng)(由上而下)。

      (2)P1.3(S1)—停止,按此鍵則停止流動(dòng),所有燈為暗。

      (3)P1.4(S2)—上,按此鍵則燈由上向下流動(dòng)。

      (4)P1.5(S3)—下,按此鍵則燈由下向上流動(dòng)。

      6.設(shè)計(jì)心得體會(huì)

      經(jīng)過幾天的努力,終于完成了本學(xué)期的單片機(jī)課程設(shè)計(jì),過程雖是辛苦的,但從中我學(xué)到了很多東西。首先鞏固了課上學(xué)習(xí)的理論知識(shí),對于計(jì)算機(jī)匯編語言的系統(tǒng)化整體化有了更深的認(rèn)識(shí)。在編寫程序的過程中遇到了很多困難經(jīng)過反復(fù)修改不斷修正最終才能得以執(zhí)行。再次是經(jīng)過搜集資料基本了解了軟件的使用。整個(gè)設(shè)計(jì)過程最大的收獲就是意識(shí)到理論知識(shí)扎實(shí)的重要性,實(shí)踐是建立在理論之上的。

      參考書目:

      [1] 肖金球.單片機(jī)原理與接口技術(shù).[M].北京:清華大學(xué)出版社,2004.12 [2] 胡漢才.單片機(jī)原理及其接口技術(shù)[M].北京:清華大學(xué)出版社.[3] 李全利.單片機(jī)原理及應(yīng)用技術(shù)[J].北京:高等教育出版社.[4] 周航慈.單片機(jī)程序設(shè)計(jì)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社.[5] 何立民.單片機(jī)初級教程[M].北京:北京航空航天大學(xué)出版社

      第二篇:EDA課程設(shè)計(jì)彩燈控制器

      沈陽理工大學(xué)EDA技術(shù)課程設(shè)計(jì)報(bào)告

      1設(shè)計(jì)目的

      熟練掌握EDA技術(shù)利用計(jì)算機(jī)方面的課程解決專業(yè)課程方面點(diǎn)具體問題,達(dá)到解決問題,完成課程設(shè)計(jì)任務(wù),培養(yǎng)實(shí)踐的目的。

      2設(shè)計(jì)要求和任務(wù)

      利用所學(xué)的EDA設(shè)計(jì)方法設(shè)計(jì)彩燈控制器,熟練使用使用QUARTUSII應(yīng)用軟件,進(jìn)一步學(xué)習(xí)使用VHDL語言、原理圖等EDA設(shè)計(jì)方法進(jìn)行綜合題目的方法。

      功能要求: 1.要有多種花型變化(至少4種).2.多種花型可以自動(dòng)變換,循環(huán)往復(fù).3.彩燈變換的快慢節(jié)拍可以選擇.4.具有清零開關(guān).總體設(shè)計(jì)思路及原理描述

      3.1功能描述

      在電路中以 1 代表燈亮,以 0 代表燈滅,由 0,1按不同的規(guī)律組合代表不同的燈光圖案,同時(shí)使其選擇不同的頻率,從而實(shí)現(xiàn)多種圖案多種頻率的花樣功能顯示。在該電路中只需簡單的修改程序就可以靈活地調(diào)整彩燈圖案和變化方式。下面就以一個(gè)十六路彩燈控制系統(tǒng)的實(shí)現(xiàn)為例進(jìn)行簡單說明。此十六路彩燈控制系統(tǒng)設(shè)定有六種花樣變化 ,這六種花樣可以進(jìn)行自動(dòng)切換 ,并且每種花樣可以選擇不同的頻率。

      3.2設(shè)計(jì)原理

      用VHDL進(jìn)行設(shè)計(jì) ,首先應(yīng)該了解 ,VHDL語言一種全方位硬件描述語言 ,包括系統(tǒng)行為級 ,寄存?zhèn)鬏敿壓瓦壿嬮T級多個(gè)設(shè)計(jì)層次。應(yīng)充分利用DL “自頂向下” 的設(shè)計(jì)優(yōu)點(diǎn)以及層次化的設(shè)計(jì)概層次概念對于設(shè)計(jì)復(fù)雜的數(shù)字系統(tǒng)是非常

      沈陽理工大學(xué)EDA技術(shù)課程設(shè)計(jì)報(bào)告

      有用它使得人們可以從簡單的單元入手 ,逐漸構(gòu)成龐大而復(fù)雜的系統(tǒng)。首先應(yīng)進(jìn)行系統(tǒng)模塊的劃分 ,規(guī)定每一模塊的功能以及各個(gè)模塊之間的接口。最終設(shè)計(jì)方案為:以一個(gè)十六路彩燈花樣控制器、一個(gè)四頻率輸出分頻器 ,一個(gè)四選一控制器和一個(gè)時(shí)間選擇器總共四部分來完成設(shè)計(jì)。四選一控制器從分頻器選擇不同頻率的時(shí)鐘信號輸送到彩燈花樣控制器 ,從而達(dá)到控制彩燈閃爍速度的快慢 ,時(shí)間選擇器控制每種速度維持的時(shí)間長短。整個(gè)十六路彩燈控制系統(tǒng)設(shè)計(jì)的模塊圖如圖 1所示

      圖一

      4分層次方案設(shè)計(jì)及代碼描述

      4.1子模塊及其功能

      本次設(shè)計(jì)分為四個(gè)子模塊 ,即十六路彩燈花樣控制器、四頻率輸出分頻器 ,四選一控制器和時(shí)間選擇器 ,其子模塊及其功能如下: 2

      沈陽理工大學(xué)EDA技術(shù)課程設(shè)計(jì)報(bào)告

      4.1.1四頻率輸出分頻器

      在本次設(shè)計(jì)中 ,設(shè)計(jì)了六種花樣 ,要求這六種花樣以不同的頻率顯示 ,而只有一個(gè)輸入的時(shí)鐘信號 ,所以對所輸入的時(shí)鐘信號進(jìn)行 2 分頻 ,4 分頻 ,8分頻 ,16分頻 ,得到四種頻率信號 ,CLKDIV模塊用來完成此功能。

      4.1.2時(shí)間選擇器

      時(shí)間選擇器實(shí)際上是兩個(gè)分頻器 ,其中一個(gè)頻率是另一個(gè)頻率的兩倍。本來這兩個(gè)分頻器是可以在上述的四頻率輸出器中實(shí)現(xiàn)的 ,但為了方便地為四選一控制器提供不同的時(shí)間選擇條件 ,就將這兩個(gè)分頻器獨(dú)立開來。這兩個(gè)輸出的時(shí)鐘信號組合起來就可以為四選一控制器提供 00,01,10,11 四個(gè)時(shí)間選擇條件 ,如

      下圖三所示。

      圖二

      4.1.3四選一控制器

      四選一控制器功能是從分頻器中選擇不同頻率的時(shí)鐘信號送給彩燈控制器 ,實(shí)現(xiàn)彩燈閃爍的頻率變化。

      4.1.4彩燈控制器

      彩燈控制電路是整個(gè)設(shè)計(jì)的核心 ,它負(fù)責(zé)整個(gè)設(shè)計(jì)的輸出效果即各種彩燈圖案的樣式變化。該程序充分地說明了用 VHDL設(shè)計(jì)電路的 “彈” 性 ,即可通過改變程序中輸出變量 Q 的位數(shù)來改變彩燈的數(shù)目。其中 ,P1進(jìn)程對燈閃的速度控制有兩種方式可改變燈閃的速度:一是改變外部時(shí)鐘的賦值 ,二是改變信號U 的位數(shù)。P2進(jìn)程能進(jìn)行彩燈的圖案控制 ,改變 s的位數(shù)即可改變要控制圖案的數(shù)目 ,改變輸出變量 Q 的組合即可變幻彩燈圖案。

      最后 ,當(dāng)各個(gè)模塊均完成上述操作之后 ,即可利用MAXPLUS2的原理圖輸

      沈陽理工大學(xué)EDA技術(shù)課程設(shè)計(jì)報(bào)告

      入 ,調(diào)用各個(gè)元器件(底層文件),以原理圖的形式形成最后的十六路彩燈顯示系統(tǒng)(頂層文件),并且進(jìn)行仿真。仿真通過 ,即可下載到指定的 CPLD芯片里面 ,并進(jìn)行實(shí)際連線 ,進(jìn)行最后的硬件測試。當(dāng)然 ,可以將各個(gè)模塊所生成的元件符號存放在元件庫中 ,用以被其它人或其它的設(shè)計(jì)所重復(fù)調(diào)用 ,以簡化后面的設(shè)計(jì)。

      4.2 代碼描述

      4.2.1 時(shí)序控制電路部分

      程序如下: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity timecontrol is--定義實(shí)體 port(clk: in std_logic;--時(shí)鐘信號 clr: in std_logic;--復(fù)位信號 opt: in std_logic;--快慢控制信號 clkout: out std_logic--輸出時(shí)鐘信號);end timecontrol;architecture one of timecontrol is signal clk_tmp: std_logic;signal counter: std_logic_vector(1 downto 0);--定義計(jì)數(shù)器 begin process(clk,clr,opt)begin 4

      沈陽理工大學(xué)EDA技術(shù)課程設(shè)計(jì)報(bào)告

      if clr='0' then--清零 clk_tmp<='0';counter<=“00”;elsif clk'event and clk='1' then if opt='0' then--四分頻 if counter=“01” then counter<=“00”;clk_tmp<=not clk_tmp;else counter<=counter+'1';end if;else--八分頻 if counter=“11” then counter<=“00”;clk_tmp<=not clk_tmp;else counter<=counter+'1';end if;end if;end if;end process;clkout<=clk_tmp;--輸出分頻后的信號 end architecture one;

      4.2.2顯示控制電路部分

      程序如下: library ieee;use ieee.std_logic_1164.all;

      沈陽理工大學(xué)EDA技術(shù)課程設(shè)計(jì)報(bào)告

      entity showcontrol is port(clk: in std_logic;--輸入時(shí)鐘信號 clr: in std_logic;--復(fù)位信號

      led: out std_logic_vector(15 downto 0));--彩燈輸出

      end showcontrol;architecture one1 of showcontrol is type states is--狀態(tài)機(jī)狀態(tài)列舉(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15);signal state: states;begin process(clk,clr)begin

      if clr='0'then state<=s0;led<=“***0”;elsif clk'event and clk='1'then case state is when s0=>state<=s1;led<= “***1”;when s1=> state<=s2;led<=“***1”;when s2=> state<=s3;led<=“***0”;when s3=> state<=s4;led<=“***1”;when s4=> state<=s5;6

      沈陽理工大學(xué)EDA技術(shù)課程設(shè)計(jì)報(bào)告

      led<=“***0”;when s5=>state<=s6;led<=“***1”;when s6=>state<=s7;led<=“***0”;when s7=>state<=s8;led<=“***1”;when s8=>state<=s9;led<=“***0”;when s9=>state<=s10;led<=“***1”;when s10=>state<=s11;led<=“***0”;when s11=>state<=s12;led<=“***1”;when s12=>state<=s13;led<=“***0”;when s13=>state<=s14;led<=“***1”;when s14=>state<=s15;led<=“***0”;when s15=>state<=s0;led<=“***1”;when others=>null;end case;end if;end process;end architecture one1;

      沈陽理工大學(xué)EDA技術(shù)課程設(shè)計(jì)報(bào)告

      4.2.3頂層電路部分

      程序如下:

      library ieee;use ieee.std_logic_1164.all;entity root is port(clk: in std_logic;clr: in std_logic;opt:in std_logic;led: out std_logic_vector(15 downto 0));--八路彩燈輸出 end colorled;architecture one3 of root is component timecontrol is--定義元件:時(shí)序控制電路 port(clk: in std_logic;clr: in std_logic;opt:in std_logic;clkout: out std_logic);end component timecontrol;component showcontrol is--定義元件:顯示電路

      port(clk: in std_logic;clr: in std_logic;led: out std_logic_vector(15 downto 0));end component showcontrol;signal clk_tmp: std_logic;begin u1: timecontrol port map(clk=>clk,clr=>clr,opt=>opt,clkout=>clk_tmp);--例化時(shí)序控制模塊

      沈陽理工大學(xué)EDA技術(shù)課程設(shè)計(jì)報(bào)告

      u2: showcontrol port map(clk=>clk_tmp,clr=>clr,led=>led);--例化顯示電路模塊 end architecture one3;

      5各模塊的時(shí)序仿真圖

      5.1時(shí)序控制電路timecontrol的仿真圖如下:

      圖三

      功能:時(shí)序控制電路metronome的功能是,用OPT控制輸入信號CKL_IN的快慢節(jié)拍。而CLR是控制開關(guān)。且從圖中可以看出,當(dāng)復(fù)位信號為高電平時(shí),電路時(shí)鐘輸出清零,當(dāng)快慢信號OPT為低電平時(shí),時(shí)序控制電路四分頻起作用,當(dāng)快慢信號OPT為高電平時(shí),時(shí)序控制電路八分頻起作用,仿真結(jié)果符合電路要求。

      沈陽理工大學(xué)EDA技術(shù)課程設(shè)計(jì)報(bào)告

      5.2 顯示控制電路showcontrol的仿真圖如下:

      圖四

      功能:顯示控制電路showcontrol的功能是控制花形的。且從圖中可以看出,當(dāng)復(fù)位信號有效時(shí)彩燈輸出為零,否則,顯示電路在十六種不同狀態(tài)間轉(zhuǎn)換。

      5.3 頂層電路root系統(tǒng)的仿真圖如下:

      沈陽理工大學(xué)EDA技術(shù)課程設(shè)計(jì)報(bào)告

      圖五

      功能:整個(gè)電路root系統(tǒng)是把showcontrol與timecontrol綜合成一個(gè)電路。且從圖中可以看出,從圖中可以看出當(dāng)OPT為高電平時(shí)彩燈狀態(tài)轉(zhuǎn)換慢,為低電平時(shí)轉(zhuǎn)換要快,當(dāng)復(fù)位信號有效時(shí),所用輸出都清零。

      6總結(jié)

      通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,通過這次的課程設(shè)計(jì),發(fā)現(xiàn)自己的實(shí)踐經(jīng)驗(yàn)還是不足的,以后多應(yīng)該以理論為基礎(chǔ),然后應(yīng)用到實(shí)踐中來,從理論中得出結(jié)論,才能提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。

      在這次的課程設(shè)計(jì)里深入的接觸了運(yùn)用電子集成元器件制作多路彩燈的過程,并和同學(xué)一起討論用軟件制作出了這一個(gè)多路彩燈控制系統(tǒng)。正所謂“紙上談兵終覺淺,覺知此事要躬行?!睂W(xué)習(xí)任何知識(shí),都要進(jìn)行實(shí)踐,只有那樣才能達(dá)到事半功倍的效果。

      沈陽理工大學(xué)EDA技術(shù)課程設(shè)計(jì)報(bào)告 參考文獻(xiàn)

      《EDA技術(shù)與數(shù)字系統(tǒng)設(shè)計(jì)》

      鄒彥主編

      電子工業(yè)出版社

      《EDA技術(shù)實(shí)用教程》,潘松、黃繼業(yè),科學(xué)出版社 《數(shù)字電子技術(shù)基礎(chǔ)》(第五版),閻石,高等教育出版社

      《電子設(shè)計(jì)自動(dòng)化(EDA)手冊》,王丹、童如松,電子工業(yè)出版社 《EDA技術(shù)程設(shè)計(jì)》,劉江海,華中科技大學(xué)出版社

      第三篇:eda課程設(shè)計(jì)-彩燈控制器

      1.設(shè)計(jì)目的

      學(xué)習(xí)EDA開發(fā)軟件和MAX+plus Ⅱ的使用方法,熟悉可編程邏輯器件的使用,通過制作來了解彩燈控制系統(tǒng)。2.設(shè)計(jì)題目描述和要求

      1)設(shè)計(jì)一個(gè)彩燈控制器,使彩燈(LED管)能連續(xù)發(fā)出四種以上不同的顯示形式;

      2)隨著彩燈顯示圖案的變化,發(fā)出不同的音響聲。3)擴(kuò)充其它功能。3.設(shè)計(jì)原理 3.1 方案論證

      這次的彩燈設(shè)計(jì)采用的是分模塊來完成的,包括分頻器、計(jì)數(shù)器、選擇器、彩燈控制器。其中彩燈控制器是用來輸出不同的花樣,彩燈控制器的輸出則是用一個(gè)32進(jìn)制的計(jì)數(shù)器來控制,揚(yáng)聲器的輸出時(shí)用不同的頻率來控制,所以用了一個(gè)集成分頻器來使輸入的頻率被分為幾種不同的頻率,不同頻率的選擇性的輸出則是用一個(gè)4選一的選擇器來控制?;谏鲜龅慕榻B本次的彩燈控制采用的模式6來進(jìn)行顯示。

      圖3-1-1 模式6結(jié)構(gòu)圖

      3.2 模塊設(shè)計(jì)

      1)集成分頻器模塊

      設(shè)計(jì)要求顯示不同的彩燈的時(shí)候要伴隨不同的音樂,所以設(shè)計(jì)分頻器來用不同的頻率控制不同的音樂輸出。模塊說明:

      Rst:輸入信號 復(fù)位信號 用來復(fù)位集成分頻器的輸出使輸出為“0”,及沒有音樂輸出。

      Clk:輸入信號 模塊的功能即為分頻輸入的頻率信號。

      Clk_

      4、clk_

      6、clk_

      8、clk_10:輸出信號 即為分頻模塊對輸入信號clk的分頻,分別為1/4分頻輸出、1/6分頻輸出、1/8分頻輸出、1/10分頻輸出。

      圖3-2-1 集成分頻器

      2)32進(jìn)制計(jì)數(shù)器模塊

      32進(jìn)制模塊用來控制彩燈輸出模塊,即確定彩燈控制器的不同的輸出。Rst:輸入信號 復(fù)位信號 用來復(fù)位32進(jìn)制使其輸出為“00000”。Clk:輸入信號 用來給模塊提供工作頻率。

      Count_out[4..0]:輸出信號 即為32進(jìn)制計(jì)數(shù)器的輸出。

      圖3-2-2 32進(jìn)制計(jì)數(shù)器

      3)彩燈控制模塊

      彩燈控制模塊用來直接控制彩燈的輸出,使彩燈表現(xiàn)出不同的花樣。Rst:輸入信號 使彩燈控制模塊的輸出為“00000000”,即讓彩燈無輸出。Input[4..0]:輸入信號 不同的輸入使彩燈控制模塊有不同的輸出即彩燈顯示出不同的花樣。

      Output[7..0]:輸出信號 直接與彩燈相連來控制彩燈。

      圖3-2-3 彩燈控制模塊 4)4選1選擇器模塊

      Rst:輸入信號 復(fù)位信號 使選擇器的輸出為“0”。In1、in2、in3、in4:輸入信號 接分頻器的輸出。

      Inp[1..0]:輸入信號 接4進(jìn)制計(jì)數(shù)器的輸出用來控制選擇器的選擇不同的輸入選擇不同的輸出。

      Output:輸出信號 直接接揚(yáng)聲器即輸出的是不同的頻率來控制揚(yáng)聲器播放音樂。

      圖3-2-4 4選1選擇器

      5)4進(jìn)制計(jì)數(shù)器模塊

      4進(jìn)制計(jì)數(shù)器作為選擇器的輸入來控制選擇器選擇不同的頻率作為輸出控制揚(yáng)聲器工作。

      Clk:輸入信號 來為計(jì)數(shù)器提供工作頻率。

      Rst:輸入信號 復(fù)位信號 使計(jì)數(shù)器的輸出為“00”。

      圖3-2-5 4進(jìn)制計(jì)數(shù)器

      3.3 系統(tǒng)結(jié)構(gòu)

      整個(gè)系統(tǒng)就是各個(gè)分模塊組成來實(shí)現(xiàn)最后的彩燈控制功能,系統(tǒng)又兩個(gè)時(shí)鐘來控制一個(gè)是控制32進(jìn)制計(jì)數(shù)器即控制彩燈控制模塊來實(shí)現(xiàn)彩燈的不同輸出,另一個(gè)時(shí)鐘為分頻器的輸入來進(jìn)行分頻處理,最后用來控制揚(yáng)聲器發(fā)出不同的音樂,具體分頻處理的時(shí)鐘的頻率比實(shí)現(xiàn)彩燈控制的時(shí)鐘頻率要高。

      圖 3-3-1 系統(tǒng)功能模塊

      4.總結(jié)

      這次的EDA課程設(shè)計(jì)有一周的時(shí)間,在這一周的時(shí)間里我們充分合理的安排了自己的時(shí)間來使本次的課程設(shè)計(jì)能夠順利的完成,當(dāng)然我們在本次的設(shè)計(jì)中并不是一帆風(fēng)順的,我們遇到了一些的問題,例如我們開始時(shí)用的文本的方式用一個(gè)總的程序來完成,可以在設(shè)計(jì)的過程中我們發(fā)現(xiàn)程序編到后面變量越到很容易搞混淆同時(shí)各個(gè)進(jìn)程間的聯(lián)系也越來越模糊以至于后面我們自己都不知道程序的整體框圖是什么,導(dǎo)致后面不能夠繼續(xù)下去,后面我們再一次對我們這次的設(shè)計(jì)題目進(jìn)行了分析和整理,最后我和我的同伴決定采用分模塊的方式來完成本次的課題設(shè)計(jì),當(dāng)然最重要的是分析各個(gè)模塊間的關(guān)系。最后我們采用上面分析的結(jié)構(gòu)框圖。最后我們的設(shè)計(jì)很成功,仿真和硬件測試都是正確的,實(shí)現(xiàn)了我們的設(shè)計(jì)要求和目的。

      在這次設(shè)計(jì)中我們收獲了很多,首先最直接的收獲就是我們鞏固了這門課程所學(xué)過的知識(shí),把它運(yùn)用到了實(shí)踐當(dāng)中,并且學(xué)到了很多在書本撒和那個(gè)所沒有學(xué)到的知識(shí),通過查閱相關(guān)資料進(jìn)一步加深了對EDA的了??偟膩碚f,通過這次課程設(shè)計(jì)不僅鍛煉了我們的動(dòng)手和動(dòng)腦能力,也使我懂得了理論與實(shí)際相結(jié)合的重要性,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,要把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,才能提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在我們的共同努力和指導(dǎo)老師的指引下我們圓滿的完成了彩燈控制器的設(shè)計(jì),實(shí)現(xiàn)了設(shè)計(jì)目的。

      6附錄一 程序:

      ---------------分頻器模塊----------LIBRARY ieee;USE ieee.std_logic_1164.all;

      ENTITY fenpinqi IS

      PORT(clk,rst : IN std_logic;

      clk_10,clk_4,clk_6,clk_8 : OUT std_logic);

      END fenpinqi;

      ARCHITECTURE cd OF fenpinqi IS begin p1:process(clk,rst)

      variable a:integer range 0 to 20;

      begin if rst='1' then

      clk_4<='0';

      -----

      復(fù)位信號控制部分 else if clk'event and clk='1'then

      if a>=3 then

      a:=0;

      clk_4<='1';

      else

      a:=a+1;

      clk_4<='0';

      end if;

      end if;

      end if;end process p1;

      p2:process(clk,rst)

      variable b:integer range 0 to 20;

      begin if rst='1' then

      clk_6<='0';

      -----

      復(fù)位信號控制部分

      else if clk'event and clk='1'then

      if b>=5 then

      b:=0;

      clk_6<='1';

      else

      b:=b+1;

      clk_6<='0';

      end if;

      end if;

      end if;end process p2;

      p3:process(clk,rst)

      variable c:integer range 0 to 20;

      begin if rst='1' then

      clk_8<='0';

      -----else if clk'event and clk='1'then

      if c>=7 then

      c:=0;

      clk_8<='1';

      else

      c:=c+1;

      clk_8<='0';

      end if;

      end if;

      end if;end process p3;

      p4:process(clk,rst)

      variable d:integer range 0 to 20;

      begin if rst='1' then

      clk_10<='0';

      -----else if clk'event and clk='1'then

      if d>=9 then

      d:=0;

      clk_10<='1';

      else

      復(fù)位信號控制部分7

      復(fù)位信號控制部分

      d:=d+1;

      clk_10<='0';

      end if;

      end if;

      end if;end process p4;end cd;

      ---------------4選1選擇器--------LIBRARY ieee;USE ieee.std_logic_1164.all;

      ENTITY xzq4_1 IS

      PORT(rst:in std_logic;

      inp:in integer range 0 to 3;

      in1,in2,in3,in4 : In std_logic;

      output : OUT std_logic);

      END xzq4_1;

      ARCHITECTURE a OF xzq4_1 IS

      BEGIN

      PROCESS(rst,inp)BEGIN

      if(rst='1')then output<='0';

      else

      case inp is

      when 0=>output<=in1;

      when 1=>output<=in2;

      when 2=>output<=in3;

      when 3=>output<=in4;

      when others=>null;

      end case;

      end if;

      END PROCESS;END a;

      ------------彩燈控制模塊---------LIBRARY ieee;USE ieee.std_logic_1164.all;

      ENTITY caideng IS

      PORT(input : IN INTEGER RANGE 0 TO 31;

      rst:in std_logic;

      output : OUT std_logic_vector(7 downto 0);

      sm :out std_logic_vector(6 downto 0));

      END caideng;

      ARCHITECTURE a OF caideng IS

      BEGIN

      PROCESS(input)BEGIN

      if rst='1' then output<=“00000000”;sm<=“0000000”;

      else

      case input is

      when 0=>output<=“10000000”;sm<=“0000110”;

      when 1=>output<=“01000000”;sm<=“0000110”;

      when 2=>output<=“00100000”;sm<=“0000110”;

      when 3=>output<=“00010000”;sm<=“0000110”;

      when 4=>output<=“00001000”;sm<=“0000110”;

      when 5=>output<=“00000100”;sm<=“0000110”;

      when 6=>output<=“00000010”;sm<=“0000110”;

      when 7=>output<=“00000001”;sm<=“0000110”;

      when 8=>output<=“00010000”;sm<=“0011011”;

      when 9=>output<=“00110000”;sm<=“0011011”;

      when 10=>output<=“00111000”;sm<=“0011011”;

      when 11=>output<=“01111000”;sm<=“0011011”;

      when 12=>output<=“01111100”;sm<=“0011011”;

      when 13=>output<=“01111110”;sm<=“0011011”;

      when 14=>output<=“11111110”;sm<=“0011011”;

      when 15=>output<=“11111111”;sm<=“0011011”;

      when 16=>output<=“10000001”;sm<=“1001111”;

      when 17=>output<=“11000001”;sm<=“1001111”;

      when 18=>output<=“11000011”;sm<=“1001111”;

      when 19=>output<=“11100011”;sm<=“0011011”;

      when 20=>output<=“11100111”;sm<=“1001111”;

      when 21=>output<=“11110111”;sm<=“1001111”;

      when 22=>output<=“11111111”;sm<=“1001111”;

      when 23=>output<=“00001000”;sm<=“1001111”;

      when 24=>output<=“00000001”;sm<=“0100110”;

      when 25=>output<=“00000010”;sm<=“0100110”;

      when 26=>output<=“00000100”;sm<=“0100110”;

      when 27=>output<=“00001000”;sm<=“0100110”;

      when 28=>output<=“00010000”;sm<=“0100110”;

      when 29=>output<=“00100000”;sm<=“0100110”;

      when 30=>output<=“01000000”;sm<=“0100110”;

      when 31=>output<=“10000000”;sm<=“0100110”;

      when others=>null;

      end case;

      end if;

      end process;end a;

      -------------32進(jìn)制計(jì)數(shù)器模塊----

      LIBRARY ieee;USE ieee.std_logic_1164.all;

      ENTITY counter_32 IS

      PORT(clk,rst : IN std_logic;

      count_out : OUT integer range 0 to 31);

      END counter_32;

      ARCHITECTURE a OF counter_32 IS BEGIN PROCESS(rst,clk)

      variable temp:integer range 0 to 32;BEGIN

      IF rst='1' THEN

      temp:=0;

      ELSIF(clk'event and clk='1')THEN

      temp:=temp+1;

      if(temp=32)then

      temp:=0;

      end if;

      END IF;

      count_out<=temp;END PROCESS;

      END a;

      ------------4進(jìn)制計(jì)數(shù)器模塊---LIBRARY ieee;USE ieee.std_logic_1164.all;

      ENTITY counter_4 IS

      PORT(clk,rst : IN std_logic;

      count_out : OUT integer range 0 to 3);

      END counter_4;

      ARCHITECTURE a OF counter_4 IS BEGIN

      PROCESS(rst,clk)

      variable temp:integer range 0 to 32;BEGIN

      IF rst='1' THEN

      temp:=0;

      ELSIF(clk'event and clk='1')THEN

      temp:=temp+1;

      if(temp=4)then

      temp:=0;

      end if;

      END IF;

      count_out<=temp;END PROCESS;END a;

      7附錄二 編譯

      7附錄三 時(shí)序仿真

      第四篇:彩燈控制器eda課程設(shè)計(jì)(定稿)

      目錄

      1.引言..............................................................3 2.EDA技術(shù).........................................................5 2.1 EDA技術(shù)介紹..................................................5 2.2硬件描述語言..................................................5 3 Quartus II介紹..................................................8 3.1 Quartus II軟件介紹..........................................8 3.2 Quartus II軟件界面介紹......................................9 3.2.1 代碼輸入界面..............................................9 3.2.2 編譯界面..................................................9 3.2.3 波形仿真界面.............................................10 4 系統(tǒng)設(shè)計(jì).........................................................12 4.1 設(shè)計(jì)過程.....................................................12 4.1.1 設(shè)計(jì)內(nèi)容及要求...........................................12 4.1.2 輸入與輸出說明...........................................12 4.1.3 設(shè)計(jì)過程思路分析.........................................12 4.2 程序分析及仿真...............................................13 4.2.1花型控制電路模塊.........................................13 4.2.2 顯示電路模塊...........................................14 4.2.3 發(fā)聲電路模塊...........................................17 4.3 程序仿真圖...................................................17 5 下載.............................................................19 5.1 芯片選定.....................................................19 5.2引腳設(shè)定.....................................................19 5.3 程序下載.....................................................20 5.4 結(jié)果顯示.....................................................20

      課程設(shè)計(jì)說明書 設(shè)計(jì)總結(jié).........................................................22 參考文獻(xiàn)...........................................................23 附錄:源代碼程序...................................................24

      課程設(shè)計(jì)說明書

      1.引言

      伴隨著計(jì)算機(jī)、集成電路和電子設(shè)計(jì)技術(shù)的發(fā)展,當(dāng)今社會(huì)是數(shù)字化的社會(huì),也是數(shù)字集成電路廣泛應(yīng)用的社會(huì),數(shù)字本身在不斷的進(jìn)行更新?lián)Q代。它由早起的電子管、晶體管、小中規(guī)模集成電路發(fā)展到超大規(guī)模集成電路以及許多具有特定功能的專用集成電路。EDA技術(shù)在過去的幾十年里取得了巨大的進(jìn)步。EDA技術(shù)使得設(shè)計(jì)者的工作僅限于利用軟件的方式,即利用硬件描述語言和EDA軟件便可完成對系統(tǒng)硬件功能的實(shí)現(xiàn)。如今,EDA軟件工具已經(jīng)成為電子信息類產(chǎn)品的支柱產(chǎn)業(yè)。從高性能的微處理器、數(shù)字信號處理器一直到彩電、音響和電子玩具電路等,EDA技術(shù)不單是應(yīng)用于前期的計(jì)算機(jī)模擬仿真、產(chǎn)品調(diào)試,而且也在P哪的制作、電子設(shè)備的研制與生產(chǎn)、電路板的焊接、朋比的制作過程等有重要作用??梢哉f電子EDA技術(shù)已經(jīng)成為電子工業(yè)領(lǐng)域不可缺少的技術(shù)支持。相比傳統(tǒng)的電路系統(tǒng)的設(shè)計(jì)方法,VHDL具有多層次描述系統(tǒng)硬件功能的能力,支持自頂向下(Top to Down)和基于庫(LibraryBased)的設(shè)計(jì)的特點(diǎn)。因此設(shè)計(jì)者可以不必了解硬件結(jié)構(gòu)。從系統(tǒng)設(shè)計(jì)入手,在頂層進(jìn)行系統(tǒng)方框圖的劃分和結(jié)構(gòu)設(shè)計(jì),在方框圖一級用VHDL對電路的行為進(jìn)行描述,并進(jìn)行仿真和糾錯(cuò),然后在系統(tǒng)一級進(jìn)行驗(yàn)證,最后再用邏輯綜合優(yōu)化工具生成具體的門級邏輯電路的網(wǎng)表,下載到具體的CPLD器件中去,從而實(shí)現(xiàn)可編程的專用集成電路(ASIC)的設(shè)計(jì)。

      而EDA技術(shù)就是以微電子技術(shù)為物理層面,現(xiàn)代電子設(shè)計(jì)為靈魂,計(jì)算機(jī)軟件技術(shù)為手段,最終形成集成電子系統(tǒng)或?qū)S眉呻娐稟SIC為目的的一門新興技術(shù)。

      VHDL的英文全名是VHSIC(Very High Speed Integrated Circuit)Hardware Descriptiong Language, 翻譯成中文就是超高速集成電路硬件描述語言,誕生于1982年。1987年底,VHDL被美國國防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語言。自IEEE公布了VHDL的標(biāo)準(zhǔn)版本,IEEE-1076之后,各EDA公司相繼推出了自己的VHDL設(shè)計(jì)環(huán)境,或宣布自己的設(shè)計(jì)工具可以和VHDL接口。1993年,IEEE對VHDL進(jìn)行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴(kuò)展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標(biāo)準(zhǔn)的1076-1993版本。

      現(xiàn)在,VHDL和Verilog作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語言,又得到眾多EDA公司的支持,在電子工程領(lǐng)域,已成為事實(shí)上的通用硬件描述語言。有專家認(rèn)為,在新的世紀(jì)中,VHDL于Verilog語言將承擔(dān)起大部分的數(shù)字系統(tǒng)設(shè)計(jì)任務(wù)。目前,它在中國的應(yīng)用多數(shù)是用在FPGA/CPLD/EPLD的設(shè)計(jì)中。當(dāng)然在一些實(shí)力較為雄厚的單位,它也被用來設(shè)計(jì)ASIC。

      隨著EDA技術(shù)的高速發(fā)展,電子系統(tǒng)的設(shè)計(jì)技術(shù)和工具發(fā)生了深刻的變化,大規(guī)

      課程設(shè)計(jì)說明書

      模可編程邏輯器件CPLD/FPGA的出現(xiàn),給設(shè)計(jì)人員帶來了諸多方便。利用它進(jìn)行產(chǎn)品開發(fā),不僅成本低、周期短、可靠性高,而且具有完全的知識(shí)產(chǎn)權(quán)。利用VHDL語言設(shè)計(jì)彩燈控制器設(shè)計(jì),使其實(shí)現(xiàn)彩燈控制器變形,發(fā)聲等功能,突出了其作為硬件描述語言的良好的可讀性、可移植性和易讀性等優(yōu)點(diǎn)。此程序通過下載到特定芯片后,可應(yīng)用于實(shí)際的控制器系統(tǒng)中。

      本文基于FPGA開發(fā)系統(tǒng),在QuartusII 7.2軟件平臺(tái)上,完成了自動(dòng)售貨機(jī)控制器的設(shè)計(jì)和與仿真,并下載到試驗(yàn)箱進(jìn)行硬件實(shí)現(xiàn)。首先,本文介紹了QuartusII 7.2軟件的基本使用方法和VHDL硬件描述語言的特點(diǎn),采用VHDL 硬件描述語言描述自動(dòng)售貨機(jī)控制器,完成對電路的功能仿真;在設(shè)計(jì)過程中,重點(diǎn)探討了彩燈控制器設(shè)計(jì)的設(shè)計(jì)思路和功能模塊劃分;然后,初步探討了電路邏輯綜合的原理,該軟件對彩燈控制器設(shè)計(jì)電路進(jìn)行了邏輯綜合;最后,使用EDA實(shí)驗(yàn)開發(fā)系統(tǒng)進(jìn)行電路的下載和驗(yàn)證,驗(yàn)證結(jié)果表明設(shè)計(jì)的彩燈控制器設(shè)計(jì)完成了預(yù)期的功能。

      課程設(shè)計(jì)說明書

      2.EDA技術(shù)

      2.1EDA技術(shù)介紹

      EDA是電子設(shè)計(jì)自動(dòng)化(Electronic Design Automation)縮寫,是90年代初從CAD(計(jì)算機(jī)輔助設(shè)計(jì))、CAM(計(jì)算機(jī)輔助制造)、CAT(計(jì)算機(jī)輔助測試)和CAE(計(jì)算機(jī)輔助工程)的概念發(fā)展而來的。EDA技術(shù)是以計(jì)算機(jī)為工具,根據(jù)硬件描述語言HDL(Hardware Description language)完成的設(shè)計(jì)文件,自動(dòng)地完成邏輯編譯、化簡、分割、綜合及優(yōu)化、布局布線、仿真以及對于特定目標(biāo)芯片的適配編譯和編程下載等工作。EDA技術(shù)(即Electronic Design Automation技術(shù))就是依賴強(qiáng)大的計(jì)算機(jī),在EDA工具軟件平臺(tái)上,對以硬件描述語言HDL(Hardware DdscriptionLangurage)為系統(tǒng)邏輯描述手段完成的設(shè)計(jì)文件,自動(dòng)地完成邏輯編譯、化簡、分割、綜合、布局布線以及邏輯優(yōu)化和仿真測試,直至實(shí)現(xiàn)既定的電子線路系統(tǒng)功能。它在硬件實(shí)現(xiàn)方面融合了大規(guī)模集成電路制造技術(shù)、IC版圖設(shè)計(jì)、ASIC測試和封裝、FPGA(GieldPeogrammable Gate Array)/CPLD(Complex Programmable Logic Device)編程下載和自動(dòng)測試等技術(shù);在計(jì)算機(jī)輔助工程方面融合了計(jì)算機(jī)輔助設(shè)計(jì)(CAD),計(jì)算機(jī)輔助制造(CAM),計(jì)算機(jī)輔助測試(CAT),計(jì)算機(jī)輔助工程(CAE)技術(shù)以及多種計(jì)算機(jī)語言的設(shè)計(jì)概念;而在現(xiàn)代電子學(xué)方面則容納了更多的內(nèi)容,如電子線路設(shè)計(jì)理論、數(shù)字信號處理技術(shù)、數(shù)字系統(tǒng)建模和優(yōu)化技術(shù)及長線技術(shù)理論等。

      2.2硬件描述語言

      硬件描述語言HDL是EDA技術(shù)的重要組成部分,常見的HDL主要有VHDL、Verilog HDL、ABEL、AHDL、System Verilog和SystemC。其中VHDL、Verilog和現(xiàn)在的EDA設(shè)計(jì)中使用最多,并且我們學(xué)習(xí)的是VHDL的編程方法和實(shí)用技術(shù)。VHDL的英文全名是VHSIC(Very High Speed Integrated Circuit)Hardware Description Language,由IEEE(The Institute of Electrical and Electronics Engineets)進(jìn)一步發(fā)展,并在1987年作為“IEEE標(biāo)準(zhǔn)1076”公布。從此VHDL成為硬件描述語言的業(yè)界標(biāo)準(zhǔn)之一。VHDL技術(shù)與傳統(tǒng)的數(shù)字電子系統(tǒng)或IC設(shè)計(jì)相比之下有很大的優(yōu)勢,主要表現(xiàn)在: 第一,VHDL語言具有很強(qiáng)的電路描述和建模能力,能從多個(gè)層次對數(shù)字系統(tǒng)進(jìn)行建 模和描述,從而大大簡化了硬件設(shè)計(jì)任務(wù),提高了設(shè)計(jì)效率和可靠性。第二,VHDL具有也具體硬件電路武官和與設(shè)計(jì)平臺(tái)無關(guān)的特性,并且具有良好的電 路行為描述和系統(tǒng)描述的能力,課程設(shè)計(jì)說明書

      并在語言易讀性和層次化,結(jié)構(gòu)化設(shè)計(jì)方面,表現(xiàn)了強(qiáng)大的生命力和應(yīng)用潛力。

      當(dāng)今社會(huì)是數(shù)字化的社會(huì),也是數(shù)字集成電路廣泛應(yīng)用的社會(huì),數(shù)字本身在不斷的進(jìn)行更新?lián)QVHDL的英文全名是VHSIC(Very High Speed Integrated Circuit)Hardware Descriptiong Language, 翻譯成中文就是超高速集成電路硬件描述語言,誕生于1982年。1987年底,VHDL被美國國防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語言。

      自IEEE公布了VHDL的標(biāo)準(zhǔn)版本,IEEE-1076之后,各EDA公司相繼推出了自己的VHDL設(shè)計(jì)環(huán)境,或宣布自己的設(shè)計(jì)工具可以和VHDL接口。1993年,IEEE對VHDL進(jìn)行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴(kuò)展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標(biāo)準(zhǔn)的1076-1993版本。

      現(xiàn)在,VHDL和Verilog作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語言,又得到眾多EDA公司的支持,在電子工程領(lǐng)域,已成為事實(shí)上的通用硬件描述語言。有專家認(rèn)為,在新的世紀(jì)中,VHDL于Verilog語言將承擔(dān)起大部分的數(shù)字系統(tǒng)設(shè)計(jì)任務(wù)。目前,它在中國的應(yīng)用多數(shù)是用在FPGA/CPLD/EPLD的設(shè)計(jì)中。當(dāng)然在一些實(shí)力較為雄厚的單位,它也被用來設(shè)計(jì)ASIC。

      傳統(tǒng)的硬件電路設(shè)計(jì)方法是采用自下而上的設(shè)計(jì)方法,即根據(jù)系統(tǒng)對硬件的要求,詳細(xì)編制技術(shù)規(guī)格書,并畫出系統(tǒng)控制流圖;然后根據(jù)技術(shù)規(guī)格書和系統(tǒng)控制流圖,對系統(tǒng)的功能進(jìn)行細(xì)化,合理地劃分功能模塊,并畫出系統(tǒng)的功能框圖;接著就進(jìn)行各功能模塊的細(xì)化和電路設(shè)計(jì);各功能模塊電路設(shè)計(jì)、調(diào)試完成后,將各功能模塊的硬件電路連接起來再進(jìn)行系統(tǒng)的調(diào)試,最后完成整個(gè)系統(tǒng)的硬件設(shè)計(jì)。采用傳統(tǒng)方法設(shè)計(jì)數(shù)字系統(tǒng),特別是當(dāng)電路系統(tǒng)非常龐大時(shí),設(shè)計(jì)者必須具備較好的設(shè)計(jì)經(jīng)驗(yàn),而且繁雜多樣的原理圖的閱讀和修改也給設(shè)計(jì)者帶來諸多的不便。為了提高開發(fā)的效率,增加已有開發(fā)成果的可繼承性以及縮短開發(fā)周期,各ASIC研制和生產(chǎn)廠家相繼開發(fā)了具有自己特色的電路硬件描述語言(Hardware Description Language,簡稱HDL)。但這些硬件描述語言差異很大,各自只能在自己的特定設(shè)計(jì)環(huán)境中使用,這給設(shè)計(jì)者之間的相互交流帶來了極大的困難。因此,開發(fā)一種強(qiáng)大的、標(biāo)準(zhǔn)化的硬件描述語言作為可相互交流的設(shè)計(jì)環(huán)境已勢在必行。于是,美國于1981年提出了一種新的、標(biāo)準(zhǔn)化的HDL,稱之為VHSIC(Very High Speed Integrated Circuit)Hardware Description Language,簡稱VHDL。這是一種用形式化方法來描述數(shù)字電路和設(shè)計(jì)數(shù)字邏輯系統(tǒng)的語言。設(shè)計(jì)者可以利用這種語言來描述自己的設(shè)計(jì)思想,然后利用電子設(shè)計(jì)自動(dòng)化工具進(jìn)行仿真,再自動(dòng)綜合到門電路,最后用PLD實(shí)現(xiàn)其功能。

      VHDL是一種全方位的硬件描述語言,包括系統(tǒng)行為級。寄存器傳輸級和邏輯門多個(gè)設(shè)計(jì)層次,支持結(jié)構(gòu)、數(shù)據(jù)流和行為三種描述形式的混合描述,因此

      課程設(shè)計(jì)說明書

      VHDL幾乎覆蓋了以往各種硬件語言的功能,整個(gè)自頂向下或由下向上的電路設(shè)計(jì)過程都可以用VHDL來完成。VHDL還具有以下優(yōu)點(diǎn):

      1.VHDL的寬范圍描述能力使它成為高層進(jìn)設(shè)計(jì)的核心,將設(shè)計(jì)人員的工作重心提高到了系統(tǒng)功能的實(shí)現(xiàn)與調(diào)試,而花較少的精力于物理實(shí)現(xiàn)。

      2.VHDL可以用簡潔明確的代碼描述來進(jìn)行復(fù)雜控制邏輯設(shè)計(jì),靈活且方便,而且也便于設(shè)計(jì)結(jié)果的交流、保存和重用。

      3.VHDL的設(shè)計(jì)不依賴于特定的器件,方便了工藝的轉(zhuǎn)換。

      4.VHDL是一個(gè)標(biāo)準(zhǔn)語言,為眾多的EDA廠商支持,因此移植性好。關(guān)于VHDL語言,最后需要說明的是:與常規(guī)的順序執(zhí)行的計(jì)算機(jī)程序不同,VHDL從根本上講是并發(fā)執(zhí)行的。因此,我們通常稱之為代碼,而不是程序。在VHDL中,只有在進(jìn)程(PROCESS)、函數(shù)(FUNCTION)和過程(PROCEDURE)內(nèi)部的語句才是順序執(zhí)行的。

      VHDL語言具有良好的可讀性,即容易被計(jì)算機(jī)接受,也容易被讀者理解。使用期長,不會(huì)因工藝變化而使描述過時(shí)。因?yàn)閂HDL的硬件描述與工藝無關(guān),當(dāng)工藝改變時(shí),只需修改相應(yīng)程序中的屬性參數(shù)即可。

      課程設(shè)計(jì)說明書 Quartus II介紹

      3.1 Quartus II軟件介紹

      Quartus II 是Altera公司單芯片可編程系統(tǒng)(SOPC)設(shè)計(jì)的綜合性環(huán)境,也是適合SOPC的最全面的設(shè)計(jì)環(huán)境。擁有現(xiàn)場可編程門陣列(FPGA)和復(fù)雜可編程邏輯器件(CPLD)設(shè)計(jì)的所有解決方案。Altera的Quartus II可編程邏輯軟件屬于第四代PLD開發(fā)平臺(tái),該平臺(tái)支持一個(gè)工作組環(huán)境下的設(shè)計(jì)要求,其中包括支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計(jì)輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整PLD設(shè)計(jì)流程。

      Quartus II也支持第三方的仿真工具,對第三方EDA工具的良好支持也使用戶可以在設(shè)計(jì)流程的各個(gè)階段使用熟悉的第三方EDA工具。Quartus II還支持層次化設(shè)計(jì),可以在一個(gè)新的編輯環(huán)境中對使用不同輸入設(shè)計(jì)方式完成的模塊進(jìn)行調(diào)用,從而解決了原理圖與HDL混合輸入設(shè)計(jì)的問題,并且在輸入之后,Quartus II的編譯器將給出設(shè)計(jì)輸入的錯(cuò)誤報(bào)告。

      Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl腳本完成設(shè)計(jì)流程外,提供了完善的用戶圖形界面設(shè)計(jì)方式。具有運(yùn)行速度快,界面統(tǒng)一,功能集中,易學(xué)易用等特點(diǎn)。

      Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模塊庫,使用戶可以充分利用成熟的模塊,簡化了設(shè)計(jì)的復(fù)雜性、加快了設(shè)計(jì)速度。

      Maxplus II 作為Altera的上一代PLD設(shè)計(jì)軟件,由于其出色的易用性而得到了廣泛的應(yīng)用。目前Altera已經(jīng)停止了對Maxplus II 的更新支持,Quartus II 與之相比不僅僅是支持器件類型的豐富和圖形界面的改變。Altera在Quartus II 中包含了許多諸如SignalTap II、Chip Editor和RTL Viewer的設(shè)計(jì)輔助工具,集成了SOPC和HardCopy設(shè)計(jì)流程,并且繼承了Maxplus II 友好的圖形界面及簡便的使用方法。

      Altera 公司的Quartus II 作為一種可編程邏輯的設(shè)計(jì)環(huán)境, 由于其強(qiáng)大的設(shè)計(jì)能力和直觀易用的接口,越來越受到數(shù)字系統(tǒng)設(shè)計(jì)者的歡迎。

      課程設(shè)計(jì)說明書

      3.2 Quartus II軟件界面介紹

      3.2.1 代碼輸入界面

      新建一個(gè)工程,選擇File→New Project Wizard,在出現(xiàn)的對話框中輸入工作路徑和工程名稱(應(yīng)與實(shí)體名稱相同),新建完工程后,選擇File→New→VHDL File,然后新出現(xiàn)的空白窗口中輸入代碼,代碼輸入界面如圖3-1所示:

      圖3-1 代碼輸入界面

      3.2.2 編譯界面

      代碼輸入完畢后,選擇Processing→Start Compilation或直接單擊(Start Compilation)進(jìn)行編譯,編譯界面如圖3-2所示:

      課程設(shè)計(jì)說明書

      圖3-2 編譯界面

      3.2.3 波形仿真界面

      編譯沒有錯(cuò)誤后,選擇File→New→Vector Waveform File,自己設(shè)置輸入的值,設(shè)置好后單擊 進(jìn)行波形仿真,仿真前界面如圖3-3所示:

      圖3-3波形仿真前界面

      仿真后界面如圖3-4所示:

      課程設(shè)計(jì)說明書

      3-4波形仿真后界面

      課程設(shè)計(jì)說明書 系統(tǒng)設(shè)計(jì)

      4.1 設(shè)計(jì)過程

      4.1.1 設(shè)計(jì)內(nèi)容及要求

      1.設(shè)計(jì)內(nèi)容:

      (1)設(shè)計(jì)一個(gè)彩燈控制器,使8個(gè)彩燈(發(fā)光二極管)能連續(xù)發(fā)出六種種以上不同的花型,花型自擬(全亮,全滅除外),每種花型持續(xù)的時(shí)間為10秒鐘。

      (2)使用數(shù)碼管顯示當(dāng)前的花型序號(分別為A、B、C,D,E,F(xiàn))以及該花型的顯示時(shí)間。

      (3)每種花型顯示時(shí)對應(yīng)發(fā)出不用的聲音(4)系統(tǒng)要有整體復(fù)位信號 2.設(shè)計(jì)要求:

      (1)根據(jù)任務(wù)要求確定電路各功能模塊;(2)寫出設(shè)計(jì)程序;(3)給出時(shí)序仿真結(jié)果;(4)實(shí)現(xiàn)硬件調(diào)試;

      4.1.2 輸入與輸出說明

      1.輸入:

      rst,clk,clker分別為彩燈控制器的整體復(fù)位,時(shí)鐘脈沖發(fā)生以及發(fā)聲器分頻時(shí)鐘脈沖;

      2.輸出:

      x表示彩燈控制器六種種以上不同的花型,y表示每種花型持續(xù)的時(shí)間(10秒鐘),M表示數(shù)碼管顯示的當(dāng)前的花型序號(分別為A、B、C,D,E,F(xiàn)),Z為每種花型顯示時(shí)對應(yīng)發(fā)出不用的聲音。

      4.1.3 設(shè)計(jì)過程思路分析

      如圖4.1整個(gè)系統(tǒng)有需要三個(gè)輸入信號,分別為彩燈控制器的整體復(fù)位,計(jì)時(shí)時(shí)鐘脈沖以及發(fā)聲器分頻時(shí)鐘脈沖,輸出信號要能表示彩燈控制器六種種以上不同的花型,表示每種花型持續(xù)的時(shí)間(10秒鐘)和花型序號以及每種花型對

      課程設(shè)計(jì)說明書

      應(yīng)發(fā)出不用的聲音。系統(tǒng)框圖如下:主要模塊組成:花型控制模塊和顯示電路模塊以及蜂鳴器發(fā)聲模塊。時(shí)序電路是根據(jù)時(shí)鐘脈沖信號的設(shè)置得到相應(yīng)的輸出信號,并將此信號作為花型控制模塊和顯示電路時(shí)鐘信號。顯示電路輸入時(shí)鐘信號的周期,有規(guī)律的輸出設(shè)定的六種彩燈變化類型以及數(shù)碼管顯示花型序號和持續(xù)時(shí)間。時(shí)序電路是根據(jù)另一時(shí)鐘脈沖信號的設(shè)置得到相應(yīng)的輸出信號,并將此信號作為發(fā)聲模塊的時(shí)鐘信號的輸入時(shí)鐘信號的周期,進(jìn)行有規(guī)律的輸出設(shè)定蜂鳴器對應(yīng)花型變化發(fā)出的各種聲音。該程序采用層次設(shè)計(jì)法,頂層采用原理圖設(shè)計(jì),底層采用VHDL 設(shè)計(jì)。以下是它的方框圖。底層分為三個(gè)子電路模塊,分別是時(shí)序控制電路模塊和顯示電路模塊以及蜂鳴器發(fā)聲模塊。

      圖 4.1 模塊組成

      4.2 程序分析及仿真

      4.2.1花型控制電路模塊

      花型控制電路模塊是8 路彩燈電路的核心部分。它主控著8 路彩燈的花型種類。模塊主要采用狀態(tài)機(jī)如圖4.2來實(shí)現(xiàn),用狀態(tài)機(jī)來設(shè)計(jì)靈活性很強(qiáng)。按設(shè)計(jì)要求要實(shí)現(xiàn)六種花型01100110、010000010、1000001、00011000、00100100、11100111,用S0、S1、S2、S3、S4、S5 來表示6 種循環(huán),以1表示燈亮,以0表示燈滅狀態(tài)的狀態(tài)。仿真圖如圖4.2:

      圖 4.2 狀態(tài)轉(zhuǎn)換圖

      課程設(shè)計(jì)說明書

      a7:process(pr_state)begin casepr_state is when a=> x<=“01100110”;nx_state<=b;when b=> x<=“01000010”;nx_state<=c;when c=> x<=“1000001”;z<=clk2;when d=> x<=“00011000”;nx_state<=e;when e=> x<=“00100100”;nx_state<=f;when f=> x<=“11100111”;nx_state<=a;end case;end process;

      圖 4.3 花型控制電路模塊仿真

      4.2.2

      顯示電路模塊

      顯示電路模塊的要求是使用數(shù)碼管顯示當(dāng)前的花型序號(分別為A、B、C,D,E,F(xiàn))以及該花型的顯示時(shí)間?;ㄐ涂刂齐娐纺K采用狀態(tài)機(jī)實(shí)現(xiàn),在狀態(tài)機(jī)的

      課程設(shè)計(jì)說明書

      時(shí)序邏輯電路部分已經(jīng)采用計(jì)數(shù)器計(jì)時(shí)的方法直到計(jì)數(shù)器計(jì)時(shí)達(dá)到時(shí)才進(jìn)入下一個(gè)狀態(tài),如下為狀態(tài)機(jī)時(shí)序邏輯電路程序:

      process(clk,rst)variablecount:integer range 0 to 10;begin if(rst='1')then pr_state<=a;count:=0;elsif(clk'event and clk='1')then count:=count+1;if(count=10)then pr_state<=nx_state;count:=0;end if;end if;y<=count;end process;為用數(shù)碼管顯示當(dāng)前的花型序號(分別為A、B、C,D,E,F(xiàn))以及該花型的顯示時(shí)間,只需要將顯示當(dāng)前的花型序號程序二進(jìn)制代碼以及該花型的顯示的時(shí)間的二進(jìn)制代碼添加到狀態(tài)中即可,程序如下:

      a7:process(pr_state)begin casepr_state is when a=> x<=“01100110”;m<=“1110111”;nx_state<=b;z<=clker;when b=> x<=“01000010”;m<=“1111100”;nx_state<=c;z<=clk1;when c=>

      課程設(shè)計(jì)說明書

      x<=“1000001”;m<=“0111001”;nx_state<=d;z<=clk2;when d=> x<=“00011000”;m<=“1011110”;nx_state<=e;z<=clk3;when e=> x<=“00100100”;m<=“1111001”;nx_state<=f;z<=clk4;when f=> x<=“11100111”;m<=“1110001”;nx_state<=a;z<=clk5;end case;end process;仿真圖如下:

      圖4.4 顯示電路模塊

      課程設(shè)計(jì)說明書

      4.2.3發(fā)聲電路模塊

      發(fā)生電路采用蜂鳴器,而蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應(yīng)用于計(jì)算機(jī)、打印機(jī)、復(fù)印機(jī)、報(bào)警器、電子玩具、電話機(jī)、定時(shí)器等電子產(chǎn)品中作發(fā)聲器件,它分為有源蜂鳴器和無源蜂鳴器兩種,有源蜂鳴器直接接上額定電源就可連續(xù)發(fā)聲,而無源蜂鳴器工作需要加入其理想信號方波,該課程設(shè)計(jì)采用無源蜂鳴器。對于每種花型顯示時(shí)對應(yīng)發(fā)出不用的聲音,這里就需要對其中輸入的時(shí)鐘信號進(jìn)行分頻,改變temp的值能產(chǎn)生出不同頻率的聲音。在程序中添加不同的進(jìn)程(process),來產(chǎn)生不同頻率的方波。程序如下:

      a1:process(clker)variable temp1:integer range 0 to 15;begin ifclker'event and clker='1'then temp1:=temp1+1;if temp1=2 then clk1<=not clk1;temp1:=0;end if;end if;end process;發(fā)聲電路模塊輸出信號z同樣可以反映在狀態(tài)機(jī)的組合邏輯電路中,程序4.2.1中的組合邏輯電路

      圖4.5 發(fā)聲電路模塊

      4.3 程序仿真圖

      綜合以上各模塊程序仿真圖如下:

      課程設(shè)計(jì)說明書

      圖4.6 程序仿真圖

      課程設(shè)計(jì)說明書 下載

      5.1 芯片選定

      選擇Assignments→devives然后選擇芯片,芯片設(shè)定界面如圖5-1所示:

      圖5.1 芯片選定

      5.2引腳設(shè)定

      選擇Assignments→Pins然后設(shè)定引腳,引腳設(shè)定界面如圖5-2所示:

      課程設(shè)計(jì)說明書

      圖5.2 引腳設(shè)定

      5.3 程序下載

      引腳設(shè)定好后,將下載盒子插到USB接口,點(diǎn)擊,選擇Hardward和start當(dāng)下載到100%時(shí),就可以通過試驗(yàn)箱進(jìn)行驗(yàn)證,下載驗(yàn)證如圖5-3所示:

      圖5.3 程序下載

      5.4 結(jié)果顯示

      程序下載到實(shí)驗(yàn)板上完成后,程序運(yùn)行結(jié)果在實(shí)驗(yàn)板上得到實(shí)現(xiàn),八個(gè)LED發(fā)光二極管變換產(chǎn)生六種不同的花型樣式,七段譯碼管顯示與之對應(yīng)的變換的花

      課程設(shè)計(jì)說明書

      型序號A,B,C,D,E,F,同時(shí)LED譯碼管也開始計(jì)時(shí),到達(dá)10秒后變換到下一個(gè)花型,蜂鳴器也對應(yīng)不同花型發(fā)出不同的聲音,程序運(yùn)行結(jié)果顯示正確。如下圖:

      圖 5.4 實(shí)驗(yàn)板

      課程設(shè)計(jì)說明書 設(shè)計(jì)總結(jié)

      通過這次課程設(shè)計(jì)對EDA技術(shù)有了更進(jìn)一步的熟悉,VHDL 語言和C語言等其他語言還是有很大的區(qū)別。VHDL是EDA技術(shù)的重要組成部分,其具有與具體硬件電路無關(guān)和與設(shè)計(jì)平臺(tái)無關(guān)的特性,并且具有良好的電路行為描述和系統(tǒng)描述的能力,并在語言易讀性和層次化、結(jié)構(gòu)化設(shè)計(jì)方面,表現(xiàn)了強(qiáng)大的生命力和應(yīng)用潛力。其主要的也是最大的優(yōu)點(diǎn)就在于設(shè)計(jì)者可以專心致力于其功能的實(shí)現(xiàn),而不需要對不影響功能的與工藝有關(guān)的因素花費(fèi)過多的時(shí)間和精力。在實(shí)際操作中發(fā)現(xiàn)設(shè)計(jì)和課本上的知識(shí)有很大聯(lián)系,但又高于課本,一個(gè)簡單的原理要把它應(yīng)用以及和其他功能綜合起來就有些困難。通過設(shè)計(jì)也鞏固了我們的書本知識(shí)以及通過借閱書籍和上網(wǎng)查找資料,也豐富了自己對EDA的了解。不過本次設(shè)計(jì)也存在一些不足,暴露了自己對EDA的掌握還有所欠缺。在設(shè)計(jì)過程中,分頻分的太大,頻率太小的話,揚(yáng)聲器的聲音體現(xiàn)不出顯示不同花型時(shí)的區(qū)別;頻率太大的話,數(shù)碼管顯示速度太快,嘗試分頻時(shí)使用不同的脈沖信號,但沒有成功。在反復(fù)調(diào)試中,最后還是成功了,但原理還不是很清楚。同時(shí),在課程設(shè)計(jì)過程中通過與老師、同學(xué)的交流,也了解了他們對于這門技術(shù)的看法和今后這門技術(shù)的發(fā)展方向,也感謝老師對我設(shè)計(jì)的指導(dǎo)和同學(xué)對我的幫助??偟膩碚f,這次設(shè)計(jì)還是有所收獲的。

      課程設(shè)計(jì)說明書

      參考文獻(xiàn)

      [1] VokneiA.Pedroni.《VHDL數(shù)字電路設(shè)計(jì)教程》.電子工業(yè)出版社,2008.5

      [2] 潘松,黃繼業(yè).《EDA技術(shù)實(shí)用教程》(第二版).科學(xué)出版社,2005.2 [3] 焦素敏.《EDA應(yīng)用技術(shù)》.清華大學(xué)出版社,2002.4 [4] 曾繁泰,陳美金.VHDL程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2001 [5] 張昌凡等.可編程邏輯器件及VHDL設(shè)計(jì)技術(shù)[M].廣州:華南理工大學(xué)出版社,2001

      課程設(shè)計(jì)說明書

      附錄:源代碼程序

      libraryieee;use ieee.std_logic_1164.all;entity led is port(rst,clk,clker:instd_logic;x:out std_logic_vector(7 downto 0);y:out integer range 0 to 10;m:out std_logic_vector(6 downto 0);z:out std_logic);end led;architecturebhv of led is signal clk1,clk2,clk3,clk4,clk5:std_logic;type state is(a,b,c,d,e,f);signalpr_state,nx_state:state;begin a1:process(clker)variable temp1:integer range 0 to 15;begin ifclker'event and clker='1'then temp1:=temp1+1;if temp1=2 then clk1<=not clk1;temp1:=0;end if;end if;end process;a2:process(clker)variable temp2:integer range 0 to 15;begin ifclker'event and clker='1'then temp2:=temp2+1;if temp2=4 then clk2<=not clk2;

      課程設(shè)計(jì)說明書

      temp2:=0;end if;end if;end process;a3:process(clker)variable temp3:integer range 0 to 15;begin ifclker'event and clker='1'then temp3:=temp3+1;if temp3=8 then clk3<=not clk3;temp3:=0;end if;end if;end process;a4:process(clker)variable temp4:integer range 0 to 16;begin ifclker'event and clker='1'then temp4:=temp4+1;if temp4=16 then clk4<=not clk4;temp4:=0;end if;end if;end process;a5:process(clker)variable temp5:integer range 0 to 33;begin ifclker'event and clker='1'then temp5:=temp5+1;if temp5=32 then clk5<=not clk5;temp5:=0;

      課程設(shè)計(jì)說明書

      end if;end if;end process;a6: process(clk,rst)variablecount:integer range 0 to 10;begin if(rst='1')then pr_state<=a;count:=0;elsif(clk'event and clk='1')then count:=count+1;if(count=10)then pr_state<=nx_state;count:=0;end if;end if;y<=count;end process;a7:process(pr_state)begin casepr_state is when a=> x<=“01100110”;m<=“1110111”;nx_state<=b;z<=clker;when b=> x<=“01000010”;m<=“1111100”;nx_state<=c;z<=clk1;when c=> x<=“10000001”;m<=“0111001”;

      課程設(shè)計(jì)說明書

      nx_state<=d;z<=clk2;when d=> x<=“00011000”;m<=“1011110”;nx_state<=e;z<=clk3;when e=> x<=“00100100”;m<=“1111001”;nx_state<=f;z<=clk4;when f=> x<=“11100111”;m<=“1110001”;nx_state<=a;z<=clk5;end case;end process;endbhv;

      第五篇:單片機(jī)原理及應(yīng)用課程設(shè)計(jì)

      智能電子鐘(LCD顯示)

      1、設(shè)計(jì)內(nèi)容及要求...............................................................................................2 1.1、設(shè)計(jì)內(nèi)容..............................................................................................2 1.2、設(shè)計(jì)要求..............................................................................................2 1.3、撰寫設(shè)計(jì)報(bào)告......................................................................................2

      2、總體方案設(shè)計(jì)...................................................................................................2 2.1、方案圖................................................................................................2 2.2、面板布置圖.........................................................................................2 2.3、方案討論.............................................................................................3 2.4、明晰任務(wù).............................................................................................4

      3、電路原理圖......................................................................................................4

      4、程序框圖.........................................................................................................5 4.1、顯示子程序流程圖............................................................................5 4.2、實(shí)時(shí)時(shí)鐘芯片 1302 讀/寫數(shù)據(jù)流程圖............................................6

      5、編程序................................................................................................................6

      6、調(diào)試....................................................................................................................6 6.1、軟件調(diào)試.............................................................................................6 6.2、仿真調(diào)試..............................................................................................7

      7、自我感想............................................................................................................7

      8、參考書目............................................................................................................8 附錄:C 語言編程源程序.......................................................................................8 1.設(shè)計(jì)內(nèi)容及要求 1.1、設(shè)計(jì)內(nèi)容:

      以AT89C51 單片機(jī)為核心,制作一個(gè) LCD 顯示的智能電子鐘。1.2、設(shè)計(jì)要求:

      (1)計(jì)時(shí):秒、分、時(shí)、天、周、月、年。(2)閏年自動(dòng)判別。

      (3)五路定時(shí)輸出,可任意關(guān)斷(最大可到16路)。(4)時(shí)間、月、日交替顯示。(5)自定任意時(shí)刻自動(dòng)開/關(guān)屏

      (6)計(jì)時(shí)精度:誤差≤1秒/月(具有微調(diào)設(shè)置)

      (7)鍵盤采用動(dòng)態(tài)掃描方式查詢。所有的查詢、設(shè)置功能均由功能鍵K1、K2完成 1.3、撰寫設(shè)計(jì)報(bào)告

      單片機(jī)課程設(shè)計(jì)是以課題或項(xiàng)目設(shè)計(jì)方式開展的一門課程,具有較強(qiáng)的綜合性、實(shí)踐性,是工科、工程類院?;蚵殬I(yè)類院校電類專業(yè)在校生的必修課,是將單片機(jī)原理與應(yīng)用課程的理論知識(shí)轉(zhuǎn)變?yōu)閼?yīng)用技術(shù)的重要教學(xué)環(huán)節(jié)。這一環(huán)節(jié)不但能加深對單片機(jī)原理的理解,而且還能培養(yǎng)學(xué)生的實(shí)踐動(dòng)手能力,開發(fā)學(xué)生的分析、解決問題的能力。單片機(jī)課程設(shè)計(jì)環(huán)節(jié)的訓(xùn)練能夠讓學(xué)生知道單片機(jī)工程項(xiàng)目的制作過程,使學(xué)生盡早了解單片機(jī)系統(tǒng)的開發(fā)過程。

      2.總體方案設(shè)計(jì) 2.1、方案圖

      2.2、面板布置圖

      2.3、方案討論

      方案一:采用實(shí)時(shí)時(shí)鐘芯片

      實(shí)時(shí)時(shí)鐘芯片具備年、月、日、時(shí)、分、秒計(jì)時(shí)功能和多點(diǎn)計(jì)時(shí)功能,計(jì)時(shí)數(shù)據(jù)的更新每秒自動(dòng)進(jìn)行一次,不需程序干預(yù)。計(jì)算機(jī)可通過中斷或查詢方式讀取計(jì)時(shí)數(shù)據(jù)進(jìn)行顯示,因此計(jì)時(shí)功能的實(shí)現(xiàn)無需占用 CPU 的時(shí)間,程序簡單。此外,實(shí)時(shí)時(shí)鐘芯片多數(shù)帶有鋰電池做后備電源,具備永不停止的計(jì)時(shí)功能;具有可編程方波輸出功能,可用做實(shí)時(shí)測控系統(tǒng)的采樣信號等;有的實(shí)時(shí)時(shí)鐘芯片內(nèi)部還帶有非易失性 RAM,可用來存放需長期保存但有時(shí)也需變更的數(shù)據(jù),由于功能完善,精度高,軟件程序設(shè)計(jì)相對簡單,且計(jì)時(shí)不占用 CPU 時(shí)間,因此,在工業(yè)實(shí)時(shí)測控系統(tǒng)中多采用這一類專用芯片來實(shí)現(xiàn)實(shí)時(shí)時(shí)鐘功能。

      方案二:軟件控制

      利用單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器進(jìn)行中斷定時(shí),配合軟件延時(shí)實(shí)現(xiàn)時(shí)、分、秒的計(jì)時(shí)及秒表計(jì)時(shí)。該方案節(jié)省硬件成本,且能使設(shè)計(jì)者對單片機(jī)的指令系統(tǒng)能有更深入的了解,從而掌握單片機(jī)應(yīng)用技術(shù) MCS-51 匯編語言程序設(shè)計(jì)方法,因此,本系統(tǒng)設(shè)計(jì)采用此種軟件控制方法來實(shí)現(xiàn)計(jì)時(shí)。而由于 Atmel 公司 的AT89C51 是一種自帶 4KB Flash 存儲(chǔ)器的低電壓、高性能的 CMOS 8 位微處理器。該器件采用 Atmel 高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn) 的MCS-51 指令集和輸出引腳相兼容。AT89C51 將多功能 8 位 CPU 和閃存集成在單個(gè)芯片中,是一種高效的微控制器,使用也更方便,壽命更長,可以反復(fù)擦除 1000 次。形成了功能強(qiáng)大、使用靈活和具有較高性能價(jià)格比的微控制器。它的功能強(qiáng)大而且也比較容易購買,故本設(shè)計(jì)中所選的單片機(jī)為 AT89C51 單片機(jī)。2.4、明晰任務(wù)

      采用 AT89C51 單片機(jī)作為系統(tǒng)的控制核心。時(shí)鐘數(shù)據(jù)通過市場上流行的時(shí)鐘芯片 DS1302 來獲取。DS1302 是 DALLAS 公司推出的涓流充電時(shí)鐘芯片,內(nèi)含一個(gè)實(shí)時(shí)時(shí)鐘/日歷和 31 字節(jié)靜態(tài) RAM,可以通過串行接口與計(jì)算機(jī)進(jìn)行通信,使得管腳數(shù)量減少。實(shí)時(shí)時(shí)鐘/日歷電路能夠計(jì)算 2100 年之前的秒、分、時(shí)、日、星期、月、年的,具有閏年自動(dòng)判斷調(diào)整的能力。定時(shí)電路能夠?qū)崿F(xiàn)自定任意時(shí)刻自動(dòng)開/關(guān)屏,采用 LCD LM016L 顯示年、月、周、天、時(shí)、分、秒。通過按鍵開關(guān)實(shí)現(xiàn)微調(diào),確保計(jì)時(shí)精度:誤差≤1 秒/月。DS1302 時(shí)鐘芯片的主要功能特性:

      (1)能計(jì)算 2100 年之前的年、月、日、星期、時(shí)、分、秒的信息;每月的天數(shù)

      和閏年的天數(shù)可自動(dòng)調(diào)整;時(shí)鐘可設(shè)置為 24 或 12 小時(shí)格式。(2)31B 的 8 位暫存數(shù)據(jù)存儲(chǔ) RAM。(3)串行 I/O 口方式使得引腳數(shù)量最少。

      (4)DS1302 與單片機(jī)之間能簡單地采用同步串行的方式進(jìn)行通信,僅需 3 根線。

      (5)寬范圍工作電壓 2.0-5.5V。

      (6)工作電流為 2.0A 時(shí),小于 300nA。

      (7)功耗很低,保持?jǐn)?shù)據(jù)和時(shí)鐘信息時(shí)功率小于 1mW。

      3.電路原理圖

      4.程序框圖

      4.1、顯示子程序流程圖

      4.2、實(shí)時(shí)時(shí)鐘芯片 1302 讀/寫數(shù)據(jù)流程圖

      5.編程序 源程序見附錄部分 6.調(diào)試 6.1、軟件調(diào)試

      目前設(shè)計(jì)過程中容易造成元件和儀器儀表的損壞,而借助 Keil 和 Proteus進(jìn)行單片機(jī)系統(tǒng)的開發(fā),可以節(jié)省設(shè)計(jì)成本,提高設(shè)計(jì)速度。Keil 軟件包是一個(gè)功能強(qiáng)大的開發(fā)平臺(tái),它包括項(xiàng)目管理器、CX51 編譯器、AX51 宏匯編器、BL51/LX51 連接定位器、RTX51 實(shí)時(shí)操作系統(tǒng)、Simulator 軟件模擬器及 Monitor51 硬件目標(biāo)調(diào)試器。它是一種集成化程度高的文件管理編譯環(huán)境,主要功能為編譯 C 語言源程序,匯編程序或混合語言源程序,連接和定位目標(biāo)文件和庫,創(chuàng)建 HEX 文件,調(diào)試目標(biāo)程序等。Keil 是目前最好的 51 單片機(jī)開

      發(fā)工具之一。Keil 支持軟件模擬仿真(Simulator)和用戶目標(biāo)調(diào)試(Monitor51)兩種工作模式。前者不需要任何單片機(jī)硬件即可完成用戶程序仿真、調(diào)試,后者利用硬件目標(biāo)板中的監(jiān)控程序可以直接調(diào)試目標(biāo)硬件系統(tǒng)。Proteus 是一個(gè)完整的嵌入式系統(tǒng)軟件、硬件設(shè)計(jì)仿真平臺(tái),它包括原理圖輸入系統(tǒng) ISIS、帶擴(kuò)展的 Prospice 混合模型仿真器、動(dòng)態(tài)元件庫、高級圖形分析模塊和處理器虛擬系統(tǒng)仿真模型 VSM。ISIS 是 Proteus 系統(tǒng)的中心,具有超強(qiáng)的控制原理設(shè)計(jì)環(huán)境。ProteusVSM 最重要的特點(diǎn)是能把微處理器軟件作用在處理器上,并和該處理器的任何模擬和數(shù)字元件協(xié)同仿真,仿真執(zhí)行目標(biāo)碼就像在真正的單片機(jī)系統(tǒng)上運(yùn)行一樣,VSM CPU 模型能完整仿真 I/O 接口、中斷、定時(shí)器、通用外部設(shè)備口及其他與 CPU 有關(guān)的外部設(shè)備,甚至能仿真多個(gè)處理器。6.2、仿真調(diào)試 Proteus 仿真

      7.自我感想

      經(jīng)歷過這么多天不間斷的課程設(shè)計(jì),我們有挺多感觸的,從最基本上說我們看到了,也意識(shí)到了自己的不足,對于不斷克服的各種阻礙也讓我們體會(huì)到了課程設(shè)計(jì)的意義所在。對于只接觸課本只動(dòng)筆桿的我們,面臨實(shí)際的設(shè)計(jì)尺寸,讓我們很是尷尬,都說理論聯(lián)系實(shí)際,真正到聯(lián)系的時(shí)候才發(fā)現(xiàn)挺困難的,不過正是理論知識(shí)的各種補(bǔ)充才讓我們能最終完成任務(wù),然后深深地體會(huì)到理論對現(xiàn)實(shí)的指導(dǎo)作用。我們現(xiàn)在最缺乏的就是實(shí)際工作經(jīng)驗(yàn),而理論聯(lián)系實(shí)踐并不像我們想象的那么簡單,他需要堅(jiān)實(shí)的理論基礎(chǔ)和實(shí)際工作經(jīng)驗(yàn)。堅(jiān)實(shí)的理論基礎(chǔ)決定了我必須堅(jiān)持學(xué)習(xí)新的知識(shí)新的理論,完善了自己的知識(shí)結(jié)構(gòu),才能在以后的實(shí)際中輕松面對,才能設(shè)計(jì)出更好的更有益于人們生活與工作的機(jī)械,才能跟上時(shí)代的步伐,不被淘汰。在這個(gè)一邊忙著復(fù)習(xí)忙著考試又要準(zhǔn)備課程設(shè)計(jì)的日子里,真真正正的體會(huì)到了時(shí)間的寶貴,有點(diǎn)像高中忙忙碌碌的生活,不過能按時(shí)完成課程設(shè)計(jì)對我們來說也是一個(gè)莫大的安慰。嚴(yán)謹(jǐn)和細(xì)心是做機(jī)械設(shè)計(jì)的必要態(tài)度,要想做好一件事,就必須一絲不茍、態(tài)度認(rèn)真。俗話說:“失之毫厘,謬之千里?!痹跈C(jī)械設(shè)計(jì)上尤其應(yīng)該注意。在以后的工作中,你的很小的一個(gè)疏忽將會(huì)造成一個(gè)公司很大的損失,甚至給用戶帶去生命危險(xiǎn),而自己也會(huì)為自己的不負(fù)責(zé)任行為付出代價(jià)。再者就是設(shè)計(jì)中要嚴(yán)謹(jǐn)和細(xì)心,對于機(jī)械是不能出差錯(cuò)的,任何的微小誤差都可能產(chǎn)生不可預(yù)計(jì)的后果,當(dāng)然對于我們來說就是設(shè)計(jì)中要走一些彎路,而且在這個(gè)嚴(yán)重缺少時(shí)間又惦記回家問題的我們來說也是一個(gè)很嚴(yán)重的后果。不過,困難雖是難免的,但我們有信心就能并且已經(jīng)戰(zhàn)勝了困難,完成了這個(gè)無比揪心的課程設(shè)計(jì)。因?yàn)闀r(shí)間等各種關(guān)系設(shè)計(jì)中難免有些不足還請老師助教給予批評和幫助。

      8.參考文獻(xiàn)

      《MCS-51 系列單片機(jī)原理及應(yīng)用》 孫涵芳 主編 《新概念 51 單片機(jī) C 語言教程》 郭天祥 主編 《51 單片機(jī)課程設(shè)計(jì)》 周向紅 主編 《單片機(jī)原理及其應(yīng)用教程》 張?jiān)?主編 附錄:C 語言編程源程序

      #include #include //--------#define uint unsigned int #define uchar unsigned char //--------/*ucharcode table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf 8, 0x80,0x98,0x88,0x83,0xc6,0xa1,0x86,0x8e};// 共 陽極數(shù)碼管代碼 */ ucharcode xingqi[8]={0x00,0x07,0x01,0x02,0x03,0x04,0x05, 0x06};//星期顯示代碼 uchar miao,shi,fen,date,month,day,year,year10,set,mun,set_shi,set_fen,time_ flag;// 全 局 定 義

      uint year_data,t;//-----sbit SCLK=P3^5;//DS1302 通訊線定義 sbit DIO=P3^6;sbit RST=P3^7;sbit speak=P0^0;sbit DS=P2^0;//595 通訊線定義 sbit SH_CP=P2^1;sbit ST_CP1=P2^2;sbit ST_CP2=P2^3;sbit ST_CP3=P2^4;sbit ST_CP4=P2^5;sbit ST_CP5=P2^6;sbit ST_CP6=P2^7;sbit ST_CP7=P3^0;sbit ST_CP8=P3^1;sbit OE1=P1^0;sbit OE2=P1^1;sbit OE3=P1^2;sbit OE4=P1^3;sbit OE5=P1^4;sbit OE6=P1^5;sbit OE7=P1^6;sbit OE8=P1^7;sbit K1=P3^2;//按鍵接口定義 sbit K2=P3^3;sbit K3=P3^4;sbit K4=P0^1;sbit K5=P0^2;//-----void write_595(uchar temp)//寫 74HC595 一個(gè)字節(jié) { uchar temp_595,i;temp_595=temp;for(i=0;i<8;i++)

      {

      SH_CP=0;

      _nop_();_nop_();_nop_();if(temp_595&0x80){ DS=1;} else { DS=0;} _nop_();_nop_();_nop_();SH_CP=1;temp_595<<=1;} } //--------------void delay(uint z)//Nms 延時(shí) { uint x,y;for(x=z;x>0;x--)for(y=112;y>0;y--);} //-------------void delaynus(uint z)//ums 延時(shí) { uint x,y;for(x=z;x>0;x--)for(y=10;y>0;y--);} //---------------void write(uchar date)//寫入 DS1302 一個(gè)字節(jié) { uchar temp,i;RST=1;SCLK=0;temp=date;for(i=0;i<8;i++){ SCLK=0;if(temp&0x01)DIO=1;else DIO=0;SCLK=1;temp>>=1;} } //-----uchar read()//讀出 DS1302 一個(gè)字節(jié) { uchar a,temp;RST=1;for(a=8;a>0;a--){ temp>>=1;SCLK=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();SCLK=0;if(DIO){ temp=temp|0x80;} else { temp=temp|0x00;} } return(temp);} //---void write_1302(uchar add,uchar dat)//寫 DS1302 數(shù)據(jù) { RST=0;SCLK=0;RST=1;write(add);write(dat);SCLK=1;RST=0;} //----------uchar read_1302(uchar add)// 讀 DS1302 數(shù)據(jù) { uchar temp;RST=0;SCLK=0;RST=1;write(add);temp=read();SCLK=1;RST=0;return(temp);} //------------void display()//顯示子程序 { miao=read_1302(0x81);//讀秒 fen=read_1302(0x83);//讀分

      shi=read_1302(0x85)&0x3f;//讀時(shí) date=read_1302(0x87);//讀日 month=read_1302(0x89);//讀月 year=read_1302(0x8d);//讀年 day=read_1302(0x8B);//讀星期 write_595(miao);//顯示秒 ST_CP1=0;ST_CP1=1;ST_CP1=0;delaynus(10);write_595(fen);//顯示分 ST_CP2=0;ST_CP2=1;ST_CP2=0;delaynus(10);write_595(shi);//顯示時(shí) ST_CP3=0;ST_CP3=1;ST_CP3=0;delaynus(10);write_595(date);//顯示日 ST_CP4=0;ST_CP4=1;ST_CP4=0;delaynus(10);write_595(month);//顯示月 讀 ST_CP5=0;ST_CP5=1;ST_CP5=0;delaynus(10);write_595(year);//顯示年 ST_CP6=0;ST_CP6=1;ST_CP6=0;delaynus(10);write_595(xingqi[day]);//顯示星期 ST_CP7=0;ST_CP7=1;ST_CP7=0;delaynus(10);} //----------void ds1302_init()//1302 初始化 { RST=0;SCLK=0;/* write_1302(0x80,0x00);//設(shè)置初始值 SEC write_1302(0x82,0x00);//設(shè)置初始值 MIN write_1302(0x84,0x00);//設(shè)置初始值 HR write_1302(0x86,0x00);//設(shè)置初始值 DATE write_1302(0x88,0x00);//設(shè)置初始值 MONTH write_1302(0x8A,0x00);//設(shè)置初始值 DAY */ write_1302(0x8C,0x10);//設(shè)置初始值 YEAR } //--------------void PORT_INIT()//端口初始化 { P0=0XFE;P1=0X00;P2=0X00;P3=0XFC;} void time_init()//定時(shí)器初始化 { TMOD=0x11;//設(shè)置定時(shí) 器 01 都為工作方式 1 TH0=(65536-50000)/256;//裝入初值 TL0=(65536-50000)%256;TH1=(65536-10000)/256;//裝入初值 TL1=(65536-10000)%256;PT0=1;//T0 定時(shí)器優(yōu)先級最高 EA=1;//開總中斷

      ET0=1;//開定時(shí)器 0 中斷 ET1=1;//開定時(shí)器 1 中斷 TR0=1;//啟動(dòng)定時(shí)器 0 TR1=1;// 啟動(dòng)定時(shí)器 1 } //--------------void main(void)//主程序 { PORT_INIT();ds1302_init();time_init();year=read_1302(0x8d);//讀年數(shù)據(jù) year_data=0x2000|year;write_595(year_data>>8);//顯示 2010 年的 20 字樣 ST_CP8=0;ST_CP8=1;ST_CP8=0;set_shi=0x09;//鬧鐘初始值設(shè)定 set_fen=0x39;time_flag=0;//標(biāo)志位 set=0;while(1){ switch(set){ case 0: //設(shè)置秒 { display();// 顯 示 子 程 序

      if((shi==set_shi)&&(fen==set_fen)&&(time_flag==0))小時(shí)和分鐘 { speak=~speak;if((K2==0)&&(time_flag==0))//按鍵 K2 停 止鬧鐘響 { P0&=0XFE;time_flag=1;} delay(10);} } break;} if(fen==set_fen+1)// 當(dāng) 不 按 下 鬧 鐘 停止按鍵,一分鐘后自動(dòng)停止鬧 鐘 { P0&=0XFE;time_flag=0;} } } //--------void time0()interrupt 1 // 定時(shí) 器 0 中斷 { TR0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;mun++;if(mun==15){ mun=0;switch(set){ case 1: //設(shè)置秒閃爍 {OE1=1;delay(300);OE1=0;} break;case 2: //設(shè)置分閃爍 { OE2=1;delay(300);OE2=0;} break;case 3: //設(shè)置時(shí)閃爍 { OE3=1;delay(300);OE3=0;} break;case 4: //設(shè)置日閃爍 { OE4=1;delay(300);OE4=0;} break;case 5: //設(shè)置月閃爍 { OE5=1;delay(300);OE5=0;} break;case 6: //設(shè)置年閃爍 { OE6=1;OE8=1;delay(300);OE6=0;OE8=0;} break;case 7: //設(shè)置星期閃爍 { OE7=1;delay(200);OE7=0;} break;case 8: //設(shè)置鬧鐘閃爍 { OE2=1;OE3=1;delay(200);OE2=0;OE3=0;} break;} } TR0=1;} //-----------void time1()interrupt 3 // 定時(shí)器 1 中斷 { TR1=0;//先關(guān)定時(shí)器 TH1=(65536-20000)/256;TL1=(65536-20000)%256;//-if(K1==0){ delay(10);if(K1==0){ set++;if(set==9){ set=0;write_1302(0x80,miao);//設(shè)置初始值 SEC write_1302(0x82,fen);//設(shè)置初始值 MIN write_1302(0x84,shi);//設(shè)置初始值 HR write_1302(0x86,date);//設(shè)置初始值 DATE write_1302(0x88,month);// 設(shè)置初始值 MONTH write_1302(0x8A,day);//設(shè)置初始值 DAY write_1302(0x8C,year_data);//設(shè)置初始值 YEAR } t=50000;while((!K1)&&t){ t--;} } } //-------if(K2==0){ delay(10);if(K2==0){ switch(set){ case 1: { miao++;if((miao&0x0f)>0x09){ miao+=0x10;miao&=0xf0;} if(miao==0x60){ miao=0x00;} write_595(miao);ST_CP1=0;ST_CP1=1;ST_CP1=0;} break;case 2: { fen++;if((fen&0x0f)>0x09){ fen+=0x10;fen&=0xf0;} if(fen==0x60){ fen=0x00;} ST_CP2=0;ST_CP2=1;ST_CP2=0;} break;case 3: { if((read_1302(0x85)&0x80)==0x00){ shi++;if((shi&0x0f)>0x09){ shi+=0x10;shi&=0xf0;} if(shi==0x24)//24 小時(shí)制 { shi=0x00;} } else { shi=(shi|0x80)+1;if((shi&0x0f)>0x09){ shi+=0x10;shi&=0xf0;} if(shi==0x12)//12 小時(shí)制 { shi=0X80;} } write_595(shi);//顯示時(shí) ST_CP3=0;ST_CP3=1;ST_CP3=0;} break;case 4: { date++;if((date&0x0f)>0x09){ date+=0x10;date&=0xf0;} if((date==0x32)&&((month==0x01)||(month==0x03)||(month==0x05)||(month ==0x07)||(month==0x08)||(month==0x10)||(month==0x12))){ date=0x01;} else if((date==0x31)&&((month==0x04)||(month==0x06)||(month==0x09)||(month ==0x11))){ date=0x01;} else if((date==0x29)&&(month==0x02)&&((year_data|read_1302(0x8d))%100!=0)& &((year_data|read_1302(0x8d))%400!=0)){ date=0x01;} else if((date==0x30)&&(month==0x02)&&((year_data|read_1302(0x8d))%100==0)& &((year_data|read_1302(0x8d))%400==0)){ date=0x01;} write_595(date);ST_CP4=0;ST_CP4=1;ST_CP4=0;} break;case 5: { month++;if((month&0x0f)>0x09){ month+=0x10;month&=0xf0;} if(month==0x13){ month=0x01;} write_595(month);ST_CP5=0;ST_CP5=1;ST_CP5=0;} break;case 6: { year_data++;if((year_data&0x000f)==0x0a){ year_data+=0x0010;year_data&=0xfff0;} if((year_data&0x00ff)==0xa0){ year_data+=0x0100;//向前進(jìn) 1 year_data&=0xff00;//后面尾數(shù)歸 0 } write_595(year_data);ST_CP6=0;ST_CP6=1;ST_CP6=0;write_595(year_data>>8);ST_CP8=0;ST_CP8=1;ST_CP8=0;} break;case 7: { day++;if((day&0x0f)==0x08){ day=0x01;} write_595(xingqi[day]);ST_CP7=0;ST_CP7=1;ST_CP7=0;} break;} t=50000;while((!K2)&&t){ t--;} } } //-------------------------if(K3==0){ delay(10);if(K3==0){ switch(set){ case 1: { miao--;if((miao&0x0f)==0x0F){ miao&=0xf9;//減到 0 后,再減一次就歸 0, } if(miao==0xF9)//當(dāng)全部減到 00 時(shí),再 減一次就為 59 { miao=0x59;} write_595(miao);ST_CP1=0;ST_CP1=1;ST_CP1=0;} break;case 2: { fen--;if((fen&0x0f)==0x0F){ fen&=0xf9;} if(fen==0xF9){ fen=0x59;} write_595(fen);ST_CP2=0;ST_CP2=1;ST_CP2=0;} break;case 3: { if((read_1302(0x85)&0x80)==0x00){ shi--;if((shi&0x0f)==0x0F){ shi&=0xf9;} if(shi==0xF9)//24 小時(shí)制 { shi=0x23;} } else { shi=(shi|0x80)-1;if((shi&0x0f)==0x0F){ shi&=0xf9;} ST_CP4=0;} break;case 5: { month--;if((month&0x0f)==0x0F){ month&=0xf9;} if(month==0x00){ month=0x12;} write_595(month);ST_CP5=0;ST_CP5=1;ST_CP5=0;} break;case 6: { year_data--;if((year_data&0x000f)==0x0F){ year_data&=0xfff9;} if((year_data&0x00f0)==0xF0){ year_data&=0xf999;} write_595(year_data);ST_CP6=0;ST_CP6=1;ST_CP6=0;write_595(year_data>>8);ST_CP8=0;ST_CP8=1;ST_CP8=0;} break;case 7: { day--;if((day&0x0f)==0x00){ day=0x07;} write_595(xingqi[day]);ST_CP7=0;ST_CP7=1;ST_CP7=0;} break;} t=50000;while((!K3)&&t)//松手檢測 { t--;} } } //---switch(set){ case 8: { if(K4==0){ delay(10);if(K4==0){ if((read_1302(0x85)&0x80)==0x00){ set_shi++;if((set_shi&0x0f)>0x09){ set_shi+=0x10;set_shi&=0xf0;} if(set_shi==0x24)//24 小時(shí)制 { set_shi=0x00;} } else { set_shi=(set_shi|0x80)+1;if((set_shi&0x0f)>0x09){ set_shi+=0x10;set_shi&=0xf0;} if(set_shi==0x12)//12 小時(shí)制 { set_shi=0X80;} write_595(set_shi);// 顯示鬧 鐘的時(shí) ST_CP3=0;ST_CP3=1;ST_CP3=0;t=50000;while((!K4)&&t){ t--;} } } //----if(K5==0){ delay(10);if(K5==0){ set_fen++;if((set_fen&0x0f)>0x09){ set_fen+=0x10;set_fen&=0xf0;}

      if(set_fen==0x60)

      {

      set_fen=0x00;

      } write_595(set_fen);ST_CP2=0;ST_CP2=1;ST_CP2=0;t=50000;while((!K5)&&t){ t--;} } set_shi+=0x10;set_shi&=0xf0;} if(set_shi==0x12)//12 小時(shí)制 { set_shi=0X80;} write_595(set_shi);// 顯示鬧 鐘的時(shí) ST_CP3=0;ST_CP3=1;ST_CP3=0;t=50000;while((!K4)&&t){ t--;} } } //----if(K5==0){ delay(10);if(K5==0){ set_fen++;if((set_fen&0x0f)>0x09){ set_fen+=0x10;set_fen&=0xf0;}

      if(set_fen==0x60)

      {

      set_fen=0x00;

      } write_595(set_fen);ST_CP2=0;ST_CP2=1;ST_CP2=0;t=50000;while((!K5)&&t){ t--;} } } } } //------------------------if(((K4==0)||(K5==0))&&(set==0)){ delay(10);if(((K4==0)||(K5==0))&&(set==0)){ write_595(set_shi);//顯示鬧鐘的時(shí) ST_CP3=0;ST_CP3=1;ST_CP3=0;write_595(set_fen);ST_CP2=0;ST_CP2=1;ST_CP2=0;P1=0XF9;while((!K4)||(!K5));P1=0X00;} } //----------TR1=1;//退出時(shí)開定時(shí)器 } } //----------

      下載《單片機(jī)原理及應(yīng)用課程設(shè)計(jì)》節(jié)日彩燈控制器的設(shè)計(jì)word格式文檔
      下載《單片機(jī)原理及應(yīng)用課程設(shè)計(jì)》節(jié)日彩燈控制器的設(shè)計(jì).doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        EDA課程設(shè)計(jì):八路彩燈控制器

        EDA課程設(shè)計(jì) 設(shè)計(jì)題目:基于VHDL的8路彩燈控制器設(shè)計(jì) 一、 課程設(shè)計(jì)的目的 1.熟悉QuartusⅡ軟件的使用方法,使用VHDL 文本輸入設(shè)計(jì)法進(jìn)行任務(wù)設(shè)計(jì)。 2.增強(qiáng)自己實(shí)際動(dòng)手能力,獨(dú)......

        《單片機(jī)原理及應(yīng)用》課程設(shè)計(jì)簡介

        《單片機(jī)原理及應(yīng)用》課程設(shè)計(jì)簡介 1、 課程編碼:130200960 2、 英文名稱:project work for 《the principle and application of single chip computer》 3、 學(xué)時(shí)/學(xué)分: 總學(xué)......

        《單片機(jī)原理及應(yīng)用》課程設(shè)計(jì)任務(wù)書(2014)

        《單片機(jī)原理及應(yīng)用》課程設(shè)計(jì) 任務(wù)書 一、 課程設(shè)計(jì)題目 見農(nóng)機(jī)111《單片機(jī)課程設(shè)計(jì)》題目分配表。 二、 課程設(shè)計(jì)的基本要求 1、根據(jù)給定的題目,在規(guī)定時(shí)間內(nèi)完成系統(tǒng)硬件......

        單片機(jī)原理及應(yīng)用課程設(shè)計(jì)教學(xué)大綱

        《單片機(jī)原理及應(yīng)用》課程設(shè)計(jì)教學(xué)大綱 課程編號:13033070 課程類別:必修課 適用專業(yè):電氣信息類 學(xué)時(shí):10 教研室主任:姜志成大綱執(zhí)筆人:李春華 大綱審批人:付家才 一、課程設(shè)計(jì)的......

        數(shù)電課程設(shè)計(jì)循環(huán)彩燈控制器

        課 程 設(shè) 計(jì) 說 明 書 班 級:電子信息0901 學(xué) 號:0501090108 學(xué)生姓名:張亞軍 指導(dǎo)教師:曹建生日 期:2011.1.04 緒論 自1879年美國科學(xué)家愛迪生發(fā)明了白熾燈以來,便結(jié)束......

        單片機(jī)原理及應(yīng)用課程設(shè)計(jì)報(bào)告五篇

        中國地質(zhì)大學(xué)江城學(xué)院一、課程設(shè)計(jì)內(nèi)容1 編寫C程序進(jìn)行跑馬燈及鍵盤控制2 根據(jù)所用芯片設(shè)計(jì)外圍電路3 電路焊接4 程序下載入所焊電路進(jìn)行系統(tǒng)軟硬件綜合調(diào)試二、器材9個(gè)二極......

        基于FPGA的彩燈控制器設(shè)計(jì)

        鄭州輕工業(yè)學(xué)院 可編程數(shù)字系統(tǒng)設(shè)計(jì) 題 目 學(xué)生姓名 專業(yè)班級 學(xué) 號 院 (系)指導(dǎo)教師 完成時(shí)間 基于FPGA的彩燈控制器的設(shè)計(jì) 張煥煥 電子信息工程10-2班 電氣信息工程學(xué)院......

        2012 單片機(jī)原理課程設(shè)計(jì)要求

        通信0901/02單片機(jī)原理課程設(shè)計(jì)要求 (2011-2012學(xué)年第2學(xué)期) 1. 綜合運(yùn)用已學(xué)習(xí)過單片機(jī)原理、模擬電路和數(shù)字電路等知識(shí),閱讀相關(guān)單片機(jī)電路芯片資料和相關(guān)文獻(xiàn),了解單片機(jī)電路......