Î人¿Æ¼¼´óѧÖÐÄÏ·ÖУ2008½ì±ÏÒµÉè¼Æ(ÂÛÎÄ)
9'b101111110:Key_temp[4:0]<=6; 9'b101111101:Key_temp[4:0]<=7; 9'b101111011:Key_temp[4:0]<=8; 9'b101110111:Key_temp[4:0]<=9; 9'b101101111:Key_temp[4:0]<=10; 9'b101011111:Key_temp[4:0]<=11; 9'b011111110:Key_temp[4:0]<=12; 9'b011111101:Key_temp[4:0]<=13; 9'b011111011:Key_temp[4:0]<=14; 9'b011110111:Key_temp[4:0]<=15; 9'b011101111:Key_temp[4:0]<=16; 9'b011011111:Key_temp[4:0]<=17; default:Key_temp[4:0]<=31; endcase end endmodule
KeyÄ£¿é³ÌÐò£º
module key(Dout,INT,k); input[7:0] Dout; input INT; output[9:0] k; reg[9:0] k; reg[4:0] k1; reg[4:0] k2; reg[4:0] k3; reg[4:0] k4;
always@(posedge INT) begin
k1<=Dout[4:0];
µÚ15Ò³ ¹²20Ò³
xx£º<Êý×ÖÆµÂÊºÏ³ÉÆ÷>
k2<=k1; k3<=k2; k4<=k3; if(Dout[4:0]==17) begin
k<=k4*1000+k3*100+k2*10+k1; k1<=0;k2<=0;k3<=0;k4<=0; end
else if(Dout[4:0]==15)
begin k1<=0;k2<=0;k3<=0;k4<=0;k<=1; end end endmodule
¡ì3.7ÏÔʾ²¿·Ö
ÔÚ±¾ÏµÍ³ÖеÄÏÔʾ¹¦ÄÜÊÇÓÉÆÀ¹À°åÉÏ×Ô´øµÄLCD12864Íê³É¡£51µ¥Æ¬»úͨ¹ý¶ÁÈ¡À´×ÔScankeyÄ£¿éµÄÊý¾Ý¾¹ý´¦Àíºó½«ÆäÏÔʾÔÚLCD12864ÉÏ¡£ µ¥Æ¬»úÖеÄÖ÷Ìå³ÌÐòÈçÏ£º
void main(void) { uchar q;
Init_Int(); //Öжϳõʼ»¯×Ó³ÌÐò Init_Dian(); //µãÕó³õʼ»¯
Clear_Dian(0); //0:Çå³ýLCDÎı¾Çø£» Clear_Dian(1) //1£ºÇå³ýLCDͼÐÎÇø
Chars_dis(\ DDS \ //Ó¢ÎÄ×Ö·ûÏÔʾËÍÏÔ³ÌÐò Dis_line(0); //ÏÔʾµÄÐÐÊýÑ¡Ôñ Chars_dis(\ Dis_line(1);
Chars_dis(\ IS 10HZ\ Dis_line(2);
Chars_dis(\ Dis_line(3);
Chars_dis(\
µÚ16Ò³ ¹²20Ò³
Î人¿Æ¼¼´óѧÖÐÄÏ·ÖУ2008½ì±ÏÒµÉè¼Æ(ÂÛÎÄ)
Dis_line(6);
Chars_dis(\ \ Dis_line(7);
for(q=0;q<16;q++)
Disp_Buff[q]=0x20; while(1) {
Dis_line(4); }
µÚ4Õ ϵͳ²âÊÔ
¡ì4.1¾ßÌåµ÷ÊÔ
¶Ô¸ÃʵÑéÏÈ·ÖÄ£¿é½øÐе÷ÊÔ£¬×îºóµ÷ÊÔÕû¸öDDSϵͳ¡£ÔÚµ÷ÊÔ¹ý³ÌÖеÄÓöµ½µÄÎÊÌâ¼°½â¾ö°ì·¨ÈçÏ£º
´ÓFPGAÖÐÖ±½Ó³öÀ´µÄ²¨Ðκ¬Óмâ·å£¬´Ó¶øÊ¹µÃ¾¹ýD/AÊä³öµÄ²¨ÐÎÕûÌåÉÏ϶¶¶¯¡£ÎªÁ˿˷þÕâ¸öÓ°Ï죬ÔÚD/Aת»»Ö®Ç°Òª²¹³äÒ»¸öȥë´ÌµÄÄ£¿éÂ˵ôë´Ì¡£Õâ¸öÄ£¿éÖ÷ÒªÊÇÓÉ1.5K¦¸µÄµç×èºÍ200pFµÄµçÈݲ¢Áª¶ø³É£¬°Ë¸öÕâÑùµÄµç·ÐγÉÕâÑùÒ»¸öȥë´ÌµÄÄ£¿é¡£Ö®ËùÒÔ»á²úÉúë´ÌÊÇÒòΪÐźÅÔÚFPGAÆ÷¼þÖÐͨ¹ýÂß¼µ¥ÔªÁ¬Ïßʱ£¬Ò»¶¨´æÔÚÑÓʱ¡£ÑÓʱµÄ´óС²»½öºÍÁ¬Ïߵij¤¶ÌºÍÂß¼µ¥ÔªµÄÊýÄ¿Óйأ¬¶øÇÒÒ²ºÍÆ÷¼þµÄÖÆÔ칤ÒÕ¡¢¹¤×÷»·¾³µÈÓйء£Òò´Ë£¬ÐźÅÔÚÆ÷¼þÖд«ÊäµÄʱºò£¬ËùÐèÒªµÄʱ¼äÊDz»Äܾ«È·¹À¼ÆµÄ£¬µ±¶à·ÐźÅͬʱ·¢ÉúÌø±äµÄ˲¼ä£¬¾Í²úÉúÁË¡°¾ºÕùðÏÕ¡±¡£Õâʱ£¬ÍùÍù»á³öÏÖһЩ²»ÕýÈ·µÄ¼â·åÐźţ¬ÕâЩ¼â·åÐźžÍÊÇ¡°Ã«´Ì¡±¡£ÁíÍ⣬ÓÉÓÚFPGAÒÔ¼°ÆäËüµÄCPLDÆ÷¼þÄÚ²¿µÄ·Ö²¼µçÈݺ͵ç¸Ð¶Ôµç·ÖеÄë´Ì»ù±¾Ã»ÓÐʲô¹ýÂË×÷Óã¬Òò´ËÕâЩë´ÌÐźžͻᱻ¡°±£Áô¡±²¢´«µÝµ½ºóÒ»¼¶£¬´Ó¶øÊ¹µÃë´ÌÎÊÌâ¸ü¼ÓÍ»³ö¡£
ÔÚFPGAÖÐÒª±£Ö¤¼üÅ̵ÄʱÖÓÆµÂÊ×î´ó¼´½Ó·ÖƵ֮ǰµÄƵÂÊ£¨40MHz£©£¬±£Ö¤ÔÚÊä³ö¸ßƵÂÊʱ²¨ÐεÄÎȶ¨
¡ì4.2²âÊÔ½á¹û
²âÊÔ½á¹ûÈç1±íËùʾ£º
µÚ17Ò³ ¹²20Ò³
xx£º<Êý×ÖÆµÂÊºÏ³ÉÆ÷>
±í1²âÊÔÊý¾Ý ƵÂÊ¿ØÖÆ×Ö K 10 200 400 600 1000
ÀíÂÛÊä³öƵÂÊ£¨Hz£© 100.00 2000.00 4000.00 6000.00 10000.00 ʵ¼ÊÊä³öƵÂÊ £¨Hz£© 100.05 2001.06 4002.12 6003.18 10005.30 Îó ²î £¨%£© 0.05 0.053 0.053 0.053 0.053 ¡ì4.3½á¹û·ÖÎö
ƵÂÊ¿ØÖÆ×ÖKÊÇÔÚ1¡«1000Ö®¼ä£¬µ±¼üÅÌÊäÈëΪ10ʱƵÂÊ¿ØÖÆ×ÖΪ10£¬Ôò
Êä³öƵÂÊΪ100HZ£¬µ±KΪ200ʱÊä³öƵÂÊΪ2000HZ¡£´ËϵͳµÄÎó²îΪ0.05%¡£ ÔÚ¸ÃÉè¼ÆÖл¹ÓÐÒ»¸öȱÏݼÈÊÇûÓÐÔÚÕæÕýÒâÒåÉÏʵÏÖµ¥Æ¬»úÓëFPGAͨÐÅ£¬ÔÚ±¾Éè¼ÆÖе¥Æ¬»úÓëFPGAµÄÁªÏµ½ö½öÊÇÒ»¸öScankeyÄ£¿é£¬½«Ëü×÷Ϊһ¸öµ¥Æ¬»úÓë¼üÅÌÁ¬½ÓµÄ½Ó¿Ú¡£
½áÂÛ
ÓÉÓÚFPGA·½±ãÁé»îµÄÌØµã£¬Ê¹µÃÕâÖÖÆ÷¼þÔÚÊý×ÖÉè¼ÆÁìÓòµÄÓ¦ÓÃÔ½À´Ô½¹ã·º¡£¶ø×÷Ϊһ¸öÉè¼ÆÕߣ¬±ØÐëÀûÓÃÉè¼ÆÈí¼þµÄ¿ª·ÅÐÔ£¬³ä·ÖÀûÓÃÆäËû¸÷ÖÖÊÖ¶ÎÀ´±£Ö¤Éè¼ÆµÄ¿É¿¿ÐÔ£¬Ìá¸ßÉè¼ÆµÄÆ·ÖÊ¡£ËùÒԵòÉÓÃһϵÁÐм¼ÊõºÍÐÂÆ÷¼þ²ÅÄÜʵÏÖ¡£Í¨¹ýÓ¦ÓÃAltera¹«Ë¾×îеÄFPGA²úÆ·£¬³ä·ÖÀûÓÃÁËÆä¸ßËÙ¡¢´óÈÝÁ¿ºÍ×éºÏÁé»î·½±ãµÈÓŵ㣬²¢ÓÃAlteraµÄQUARTUSII¿ª·¢»·¾³ËùÌṩµÄ¿â×ÊÔ´£¬×î´óÏ޶ȵØÀûÓúͷ¢»ÓFPGAµÄÓÅÊÆ£¬²»µ«´ó´ó¼ò»¯ÁËϵͳÉè¼Æ£¬¶øÇÒËõ¶ÌÁËÉè¼ÆÖÜÆÚ¡£
µÚ18Ò³ ¹²20Ò³