? asked in 電腦與網際網路程式設計 · 1 decade ago

spce061a電路板問題(20點)

急,我嘗試在SPCE061A電路板的時鐘程式範例中想用LED七段顯示數字出來,我的LED是6個七段顯示,我知道7段顯示的原理但我不知道怎麼去抓取時鐘的數值且本身程式不太好,其程式字數太多所以只能貼一小段,希望高手幫忙!或是希望給予意見!

//input: 時------16進制

//*********************************************************//

PlaySpeakHour(int DayTemp) //*************時

{

if(DayTemp>=1 && DayTemp<=7)

{ PlayRespond(C_LINGCHEN); //1—7 淩晨

if(DayTemp==2) PlayRespond(C_S02); //兩

else PlayRespond(DayTemp+C_T00);

}

else if(DayTemp>=8 && DayTemp<=12)

{ PlayRespond(C_NOON); //8--12 上午

switch(DayTemp)

{ case 10:PlayRespond(C_T10); break; //十點

case 11:PlayRespond(C_T11); break; //十一點

case 12:PlayRespond(C_T12); break; //十二點

default: PlayRespond(DayTemp+C_T00);break;

}

}

else if(DayTemp>=13 && DayTemp<=19)

{ PlayRespond(C_AFTERNOON); //13--19 下午1--7

if(DayTemp==14) PlayRespond(C_S02); //兩

else PlayRespond(DayTemp-12+C_T00);

}

else if(DayTemp>=20 && DayTemp<=24)

{ PlayRespond(C_NIGHT); //20--24 晚上8--12

switch(DayTemp)

{ case 22:PlayRespond(C_T10); break; //十點

case 23:PlayRespond(C_T11); break; //十一點

case 24:PlayRespond(C_T12); break; //十二點

default: PlayRespond(DayTemp-12+C_T00);break;

}

}

PlayRespond(C_DIAN); //點

}

//input: 分 ------16進制

//*********************************************************//

PlaySpeakMinute(int MinTemp) //*************分

{

if(MinTemp==0) PlayRespond(C_ZHENG); //正點

else

{ if((MinTemp/10)>1) PlayRespond(MinTemp/10+C_T00); //分的十位

if((MinTemp/10) >0) PlayRespond(C_T10); //分的十位大於1報,為1不報1

if((MinTemp%10)!=0) PlayRespond(MinTemp%10+C_T00); //分的個位不為0則報

PlayRespond(C_MIN); //分

}

}

Update:

可以解釋一下CPLD是什麼嗎

如果能用CPLD做出也可

2 Answers

Rating
  • 末了
    Lv 4
    1 decade ago
    Favorite Answer

    若要用CPLD 可以到這裡看看 有一些source code 分享

    `timescale 1ns/1ps. }+ Y- Z6 q0 I* E$ P

    * E) D: M7 A+ d3 r' a+ U* `/ K

    module clock (/ |* M8 j' Q! \7 O

    clk,* C/ K6 c* f8 [2 r+ d- w

    reset,' t' A O8 T- T6 C, U

    cou_s,

    ! F2 R( d. H; V) E+ h# @5 q Q) t cou_m,) R h, O6 [, ? m9 q

    cou_h,

    1 U1 e; d) e6 w* B& s; N switch,& i0 H- [- t g/ }- m

    set,$ M6 P0 b7 D# e; {

    m_set,

    $ F% D3 P( x+ J- Q) z1 z$ g h_set

    9 a7 H! N- j7 q5 h2 S );

    ; k Q- q9 ^5 R% E$ L

    4 [/ Y- |; o) x. A5 iinput clk;

    2 p. {/ H4 K& _! E% _( c+ kinput reset;4 b' H# f- W; i3 T4 l) H

    input switch;

    2 x' D! S( Z% ]+ J& F4 t8 _5 ~input set;1 c o4 w) f# Y* ~$ A# V

    input m_set;

    4 A! [% ]4 ~9 ?7 |4 o% binput h_set;/ w; F2 E) D. Q

    output [5:0]cou_s;

    1 U' U/ N2 x% M6 W1 U) E- ^* Houtput [5:0]cou_m;

    4 C2 m" T9 Q5 o$ Z. @/ ooutput [3:0]cou_h;8 T3 i: J- Z0 ]; r) H/ F

    $ g( l: d: y7 ?6 ?( g6 m, ]3 \

    1 A5 P6 l, }9 n! m! z) t6 @ l

    wire clk ;

    / o D: W2 e2 _5 F9 M5 L) U0 Uwire reset;6 k6 N6 W+ I) L

    wire switch;

    6 Y' ]' k7 C7 ~% Y- dwire set;

    5 O/ r+ O! s1 ~/ l4 c; nwire m_set;& F$ J& Y1 [3 K7 l) o

    wire h_set;. ^: v7 ~/ `9 B8 Z5 V9 |2 ^

    reg [5:0]cou_s;

    ! p9 p6 Z4 B9 X- Q# E0 n3 ?3 preg [5:0]cou_m; ( z1 u0 _% P1 w6 ]4 E% c0 t, |

    reg [3:0]cou_h;3 o3 {+ u; J s' R! g5 [2 T# O

    reg alarm;

    % G- A5 t1 f( n$ E. e( P- z1 Nreg [5:0]acou_s;$ \% G! N7 B1 a8 g7 Y3 }2 D. t

    reg [5:0]acou_m;

    9 T( j5 T' ^, \% N% e _reg [3:0]acou_h;9 N) Y( v6 a' j4 X9 _

    reg [9:0]count_a;

    . {* s# H( e6 r6 `- B( w1 B R" Q8 B# ~/ I5 h% F7 N- d6 ^+ Y

    //cou_m_時鐘分的計數器-------------------------------------------% T% V+

  • 1 decade ago

    這東西我寫過,不過我比較偷懶我使用CPLD做解碼器,然後直接把它定義的東西丟出去,你並沒有看到標頭檔,所以你單看程式是看不出個所以。

    2008-01-16 23:00:08 補充:

    CPLD全名我不太記得了,只記得他在上去就是FPGA了他們都是邏輯集成IC可以取代COMS跟TTL系列的IC,並且可以在裡面繞線,以減少使用邏輯IC布線之困擾,體積更小 ,我原本都是種在開發SOC跟SOPC不過有時偷懶,都會把程式跟邏輯電路藏在裡面,再其中內建一顆特殊功能的CPU,在與外部的MPU做連接,我的CPU本身就含有各種控制電路的驅動部份,我只要下相對命令節能動,所以我的程式碼都超短的。

    2008-01-16 23:01:24 補充:

    找的到我的話,我就幫你解決你的疑問吧

Still have questions? Get your answers by asking now.