Re: 常见单片机问题征集帖。。。汇聚于此贴,各个击破。。。

什么都不知道个 做什么哇
点赞  2007-6-17 19:45

Re: 常见单片机问题征集帖。。。汇聚于此贴,各个击破。。。

个程序怎么看啊 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_arith.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CLOCKer IS PORT(CLK,loadh,loadm:IN STD_LOGIC; di1,di0:IN STD_LOGIC_VECTOR(3 downto 0); qh1,qh0,qm1,qm0:OUT STD_LOGIC_VECTOR(6 downto 0)); END CLOCKer; ARCHITECTURE CLKdo OF CLOCKer IS SIGNAL iqh,iqm : STD_LOGIC_VECTOR(7 downto 0); SIGNAL Cm:STD_LOGIC; --将两位BCD码合并成整数的函数 Function GetTime(ds1,ds0:STD_LOGIC_VECTOR(3 downto 0)) Return STD_LOGIC_VECTOR Is variable temp,temp1:STD_LOGIC_VECTOR(7 downto 0); Begin --temp:=ds1*10+ds0 temp:='0'&ds1(3 downto 0) &"000"; --*8 temp1:="000"&ds1(3 downto 0) &'0'; --*2 temp:=temp+temp1;--完成ds1*10,即ds1*8+ds1*2 temp1:="0000"&ds0; temp:=temp+temp1;--完成temp:=ds1*10+ds0 Return temp; End Function GetTime; --整数到7段LED码译码函数 Function ToLed7(hORm:STD_LOGIC_VECTOR(7 downto 0);hl:std_logic) Return STD_LOGIC_VECTOR Is variable temp:STD_LOGIC_VECTOR(6 downto 0); Begin if hl='1' then case conv_integer(hOrm) is --Hi when 0|1|2|3|4|5|6|7|8|9=> temp:="0111111";--3FH 0 when 10|11|12|13|14|15|16|17|18|19=> temp:="0000110";--06H 1 when 20|21|22|23|24|25|26|27|28|29=> temp:="1011011";--5bH 2 when 30|31|32|33|34|35|36|37|38|39=> temp:="1001111";--4FH 3 when 40|41|42|43|44|45|46|47|48|49=> temp:="1100110";--66H 4 when 50|51|52|53|54|55|56|57|58|59=> temp:="1101101";--6dH 5 when others=>null; end case; else case conv_integer(hOrm) is --Lo when 0|10|20|30|40|50 => temp:="0111111";--3FH 0 when 1|11|21|31|41|51 => temp:="0000110";--06H 1 when 2|12|22|32|42|52 => temp:="1011011";--5bH 2 when 3|13|23|33|43|53 => temp:="1001111";--4FH 3 when 4|14|24|34|44|54 => temp:="1100110";--66H 4 when 5|15|25|35|45|55 => temp:="1101101";--6dH 5 when 6|16|26|36|46|56 => temp:="1111101";--7DH 6 when 7|17|27|37|47|57 => temp:="0000111";--07H 7 when 8|18|28|38|48|58 => temp:="1111111";--7FH 8 when 9|19|29|39|49|59 => temp:="1101111";--6FH 9 when others=>null; end case; end if; Return temp; End Function ToLed7; BEGIN mRun: Process (loadm,clk) Begin If loadm='1' then iqm<=GetTime(di1,di0); elsif (clk'event and clk='1') then if (iqm<59) then iqm<=iqm+1; else iqm<=(others=>'0'); End if; end if; if (iqm=59) then cm<='1'; else Cm<='0';end if ; End process mRun; hRun: Process (loadh,Cm) Begin If loadh='1' then iqh<=GetTime(di1,di0); elsif Cm'event and Cm='0' then if iqh<23 then iqh<=iqh+1; else iqh<=(others=>'0'); end if ; end if; End process hRun; dCode: Process (iqh,iqm) Begin qh1<=ToLed7(iqh,'1');--(others=>'0');根据iqh的值确定小时的十位7段码. qh0<=ToLed7(iqh,'0');--(others=>'0');根据iqh的值确定小时的个位7段码. qm1<=ToLed7(iqm,'1');--(others=>'0');根据iqm的值确定分的十位7段码. qm0<=ToLed7(iqm,'0');--(others=>'0');根据iqm的值确定分的个位7段码. End Process dCode; END CLKdo ; 这是老师给的程序看了N久都看不明白,高手帮指点一下啊。老师说这是一个电子钟的程序。用Quartus II 5.0运行, 在里面加一个用65536HZ的频率作为系统的时钟,对其进行分频产生秒信号,再对秒信号进行计数,产生分、时,并显示小时和分钟的实际值(对秒的显示不作要求)。2、能预置小时和分钟的功能(即校时、校分)。怎么做啊,里面那个ToLed7,GetTime函数怎么也理解不了到底怎么回事,还when 10|11|12|13|14|15|16|17|18|19这些数字怎么出现的啊?高手能详细解释一下吗 急哦
点赞  2007-6-20 00:40

回复:常见单片机问题征集帖。。。汇聚于此贴,各个击破。。。

when 0|1|2|3|4|5|6|7|8|9=&gt; temp:=&quot;0111111&quot;;--3FH 0 when 10|11|12|13|14|15|16|17|18|19=&gt; temp:=&quot;0000110&quot;;--06H 1 when 20|21|22|23|24|25|26|27|28|29=&gt; temp:=&quot;1011011&quot;;--5bH 2 when 30|31|32|33|34|35|36|37|38|39=&gt; temp:=&quot;1001111&quot;;--4FH 3 when 40|41|42|43|44|45|46|47|48|49=&gt; temp:=&quot;1100110&quot;;--66H 4 when 50|51|52|53|54|55|56|57|58|59=&gt; temp:=&quot;1101101&quot;;--6dH 5 --显示十位上的数,“|”表示或,比如第一行十位上的数全是0 when 0|10|20|30|40|50 =&gt; temp:=&quot;0111111&quot;;--3FH 0 when 1|11|21|31|41|51 =&gt; temp:=&quot;0000110&quot;;--06H 1 when 2|12|22|32|42|52 =&gt; temp:=&quot;1011011&quot;;--5bH 2 when 3|13|23|33|43|53 =&gt; temp:=&quot;1001111&quot;;--4FH 3 when 4|14|24|34|44|54 =&gt; temp:=&quot;1100110&quot;;--66H 4 when 5|15|25|35|45|55 =&gt; temp:=&quot;1101101&quot;;--6dH 5 when 6|16|26|36|46|56 =&gt; temp:=&quot;1111101&quot;;--7DH 6 when 7|17|27|37|47|57 =&gt; temp:=&quot;0000111&quot;;--07H 7 when 8|18|28|38|48|58 =&gt; temp:=&quot;1111111&quot;;--7FH 8 when 9|19|29|39|49|59 =&gt; temp:=&quot;1101111&quot;;--6FH 9 --显示个位上的数
世界是个圈,人生也是个圈。
点赞  2007-6-26 00:37
123
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复