本考試系統考試題題型均為單選題,考生分數為:考生答題正確題數/總題數*100分 本考試系統如有考生登陸過,就視為已經考試,并限制不能再考,若要恢復考生考試需要 進入后臺后點補考后才能繼續考試. 考生在考試中不能刷新考試頁面,如果刷新就視為作弊,若需要補考,需要等所有考有考生考試完畢后 重起IIS后,清空該生考試記錄后才能考試. 后臺地址:admin/login.asp 后臺用戶名:admin 密碼:admin
上傳時間: 2015-10-11
上傳用戶:偷心的海盜
Euler函數: m = p1^r1 * p2^r2 * …… * pn^rn ai >= 1 , 1 <= i <= n Euler函數: 定義:phi(m) 表示小于等于m并且與m互質的正整數的個數。 phi(m) = p1^(r1-1)*(p1-1) * p2^(r2-1)*(p2-1) * …… * pn^(rn-1)*(pn-1) = m*(1 - 1/p1)*(1 - 1/p2)*……*(1 - 1/pn) = p1^(r1-1)*p2^(r2-1)* …… * pn^(rn-1)*phi(p1*p2*……*pn) 定理:若(a , m) = 1 則有 a^phi(m) = 1 (mod m) 即a^phi(m) - 1 整出m 在實際代碼中可以用類似素數篩法求出 for (i = 1 i < MAXN i++) phi[i] = i for (i = 2 i < MAXN i++) if (phi[i] == i) { for (j = i j < MAXN j += i) { phi[j] /= i phi[j] *= i - 1 } } 容斥原理:定義phi(p) 為比p小的與p互素的數的個數 設n的素因子有p1, p2, p3, … pk 包含p1, p2…的個數為n/p1, n/p2… 包含p1*p2, p2*p3…的個數為n/(p1*p2)… phi(n) = n - sigm_[i = 1](n/pi) + sigm_[i!=j](n/(pi*pj)) - …… +- n/(p1*p2……pk) = n*(1 - 1/p1)*(1 - 1/p2)*……*(1 - 1/pk)
上傳時間: 2014-01-10
上傳用戶:wkchong
Visual Studio 6.0是Microsoft公司推出的一個可視化應用程序集成開發環境(IDE Integrate Develop Environment)。 Visual Studio IDE不僅支持Visual C++,還支持Visual Basic、Visual J++、Visual InterDev等Microsoft系列開發工具。 本簡介介紹了通過 ActiveX Automation 接口顯示 AutoCAD 對象以及使用 Visual Basic for Applications 編程環境對這些對象進行編程的相關概念。
標簽: Visual Studio Environment Microsoft
上傳時間: 2013-12-16
上傳用戶:sjyy1001
/****************temic*********t5557***********************************/ #include <at892051.h> #include <string.h> #include <intrins.h> #include <stdio.h> #define uchar unsigned char #define uint unsigned int #define ulong unsigned long //STC12C2051AD的SFR定義 sfr WDT_CONTR = 0xe1;//stc2051的看門狗?????? /**********全局常量************/ //寫卡的命令 #define write_command0 0//寫密碼 #define write_command1 1//寫配置字 #define write_command2 2//密碼寫數據 #define write_command3 3//喚醒 #define write_command4 4//停止命令 #define TRUE 1 #define FALSE 0 #define OK 0 #define ERROR 255 //讀卡的時間參數us #define ts_min 250//270*11.0592/12=249//取近似的整數 #define ts_max 304//330*11.0592/12=304 #define t1_min 73//90*11.0592/12=83:-10調整 #define t1_max 156//180*11.0592/12=166 #define t2_min 184//210*11.0592/12=194 #define t2_max 267//300*11.0592/12=276 //***********不采用中斷處理:采用查詢的方法讀卡時關所有中斷****************/ sbit p_U2270B_Standby = P3^5;//p_U2270B_Standby PIN=13 sbit p_U2270B_CFE = P3^3;//p_U2270B_CFE PIN=6 sbit p_U2270B_OutPut = P3^7;//p_U2270B_OutPut PIN=2 sbit wtd_sck = P1^7;//SPI總線 sbit wtd_si = P1^3; sbit wtd_so = P1^2; sbit iic_data = P1^2;//lcd IIC sbit iic_clk = P1^7; sbit led_light = P1^6;//測試綠燈 sbit led_light1 = P1^5;//測試紅燈 sbit led_light_ok = P1^1;//讀卡成功標志 sbit fengmingqi = P1^5; /***********全局變量************************************/ uchar data Nkey_a[4] = {0xA0, 0xA1, 0xA2, 0xA3};//初始密碼 //uchar idata card_snr[4]; //配置字 uchar data bankdata[28] = {1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7}; //存儲卡上用戶數據(1-7)7*4=28 uchar data cominceptbuff[6] = {1,2,3,4,5,6};//串口接收數組ram uchar command; //第一個命令 uchar command1;// //uint temp; uchar j,i; uchar myaddr = 8; //uchar ywqz_count,time_count; //ywqz jishu: uchar bdata DATA; sbit BIT0 = DATA^0; sbit BIT1 = DATA^1; sbit BIT2 = DATA^2; sbit BIT3 = DATA^3; sbit BIT4 = DATA^4; sbit BIT5 = DATA^5; sbit BIT6 = DATA^6; sbit BIT7 = DATA^7; uchar bdata DATA1; sbit BIT10 = DATA1^0; sbit BIT11 = DATA1^1; sbit BIT12 = DATA1^2; sbit BIT13 = DATA1^3; sbit BIT14 = DATA1^4; sbit BIT15 = DATA1^5; sbit BIT16 = DATA1^6; sbit BIT17 = DATA1^7; bit i_CurrentLevel;//i_CurrentLevel BIT 00H(Saves current level of OutPut pin of U2270B) bit timer1_end; bit read_ok = 0; //緩存定時值,因用同一個定時器 union HLint { uint W; struct { uchar H;uchar L; } B; };//union HLint idata a union HLint data a; //緩存定時值,因用同一個定時器 union HLint0 { uint W; struct { uchar H; uchar L; } B; };//union HLint idata a union HLint0 data b; /**********************函數原型*****************/ //讀寫操作 void f_readcard(void);//全部讀出1~7 AOR喚醒 void f_writecard(uchar x);//根據命令寫不同的內容和操作 void f_clearpassword(void);//清除密碼 void f_changepassword(void);//修改密碼 //功能子函數 void write_password(uchar data *data p);//寫初始密碼或數據 void write_block(uchar x,uchar data *data p);//不能用通用指針 void write_bit(bit x);//寫位 /*子函數區*****************************************************/ void delay_2(uint x) //延時,時間x*10us@12mhz,最小20us@12mhz { x--; x--; while(x) { _nop_(); _nop_(); x--; } _nop_();//WDT_CONTR=0X3C;不能頻繁的復位 _nop_(); } ///////////////////////////////////////////////////////////////////// void initial(void) { SCON = 0x50; //串口方式1,允許接收 //SCON =0x50; //01010000B:10位異步收發,波特率可變,SM2=0不用接收到有效停止位才RI=1, //REN=1允許接收 TMOD = 0x21; //定時器1 定時方式2(8位),定時器0 定時方式1(16位) TCON = 0x40; //設定時器1 允許開始計時(IT1=1) TH1 = 0xfD; //FB 18.432MHz 9600 波特率 TL1 = 0xfD; //fd 11.0592 9600 IE = 0X90; //EA=ES=1 TR1 = 1; //啟動定時器 WDT_CONTR = 0x3c;//使能看門狗 p_U2270B_Standby = 0;//單電源 PCON = 0x00; IP = 0x10;//uart you xian XXXPS PT1 PX1 PT0 PX0 led_light1 = 1; led_light = 0; p_U2270B_OutPut = 1; } /************************************************/ void f_readcard()//讀卡 { EA = 0;//全關,防止影響跳變的定時器計時 WDT_CONTR = 0X3C;//喂狗 p_U2270B_CFE = 1;// delay_2(232); //>2.5ms /* // aor 用喚醒功能來防碰撞 p_U2270B_CFE = 0; delay_2(18);//start gap>150us write_bit(1);//10=操作碼讀0頁 write_bit(0); write_password(&bankdata[24]);//密碼block7 p_U2270B_CFE =1 ;// delay_2(516);//編程及確認時間5.6ms */ WDT_CONTR = 0X3C;//喂狗 led_light = 0; b.W = 0; while(!(read_ok == 1)) { //while(p_U2270B_OutPut);//等一個穩定的低電平?超時判斷? while(!p_U2270B_OutPut);//等待上升沿的到來同步信號檢測1 TR0 = 1; //deng xia jiang while(p_U2270B_OutPut);//等待下降沿 TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1;//定時器晚啟動10個周期 //同步頭 if((324 < a.W) && (a.W < 353)) ;//檢測同步信號1 else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } //等待上升沿 while(!p_U2270B_OutPut); TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1;//b.N1<<=8; if(a.B.L < 195);//0.5p else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } //讀0~7塊的數據 for(j = 0;j < 28;j++) { //uchar i; for(i = 0;i < 16;i++)//8個位 { //等待下降沿的到來 while(p_U2270B_OutPut); TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1; if(t2_max < a.W/*)&&(a.W < t2_max)*/)//1P { b.W >>= 2;//先左移再賦值 b.B.L += 0xc0; i++; } else if(t1_min < a.B.L/*)&&(a.B.L < t1_max)*/)//0.5p { b.W >>= 1; b.B.L += 0x80; } else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } i++; while(!p_U2270B_OutPut);//上升 TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1; if(t2_min < a.W/*)&&(a.W < t2_max)*/)//1P { b.W >>= 2; i++; } else if(t1_min < a.B.L/*a.W)&&(a.B.L < t1_max)*/)//0.5P //else if(!(a.W==0)) { b.W >>= 1; //temp+=0x00; //led_light1=0;led_light=1;delay_2(40000); } else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } i++; } //取出奇位 DATA = b.B.L; BIT13 = BIT7; BIT12 = BIT5; BIT11 = BIT3; BIT10 = BIT1; DATA = b.B.H; BIT17 = BIT7; BIT16 = BIT5; BIT15 = BIT3; BIT14 = BIT1; bankdata[j] = DATA1; } read_ok = 1;//讀卡完成了 read_error: _nop_(); } } /***************************************************/ void f_writecard(uchar x)//寫卡 { p_U2270B_CFE = 1; delay_2(232); //>2.5ms //psw=0 standard write if (x == write_command0)//寫密碼:初始化密碼 { uchar i; uchar data *data p; p = cominceptbuff; p_U2270B_CFE = 0; delay_2(31);//start gap>330us write_bit(1);//寫操作碼1:10 write_bit(0);//寫操作碼0 write_bit(0);//寫鎖定位0 for(i = 0;i < 35;i++) { write_bit(1);//寫數據位1 } p_U2270B_CFE = 1; led_light1 = 0; led_light = 1; delay_2(40000);//測試使用 //write_block(cominceptbuff[4],p); p_U2270B_CFE = 1; bankdata[20] = cominceptbuff[0];//密碼存入 bankdata[21] = cominceptbuff[1]; bankdata[22] = cominceptbuff[2]; bankdata[23] = cominceptbuff[3]; } else if (x == write_command1)//配置卡參數:初始化 { uchar data *data p; p = cominceptbuff; write_bit(1);//寫操作碼1:10 write_bit(0);//寫操作碼0 write_bit(0);//寫鎖定位0 write_block(cominceptbuff[4],p); p_U2270B_CFE= 1; } //psw=1 pssword mode else if(x == write_command2) //密碼寫數據 { uchar data*data p; p = &bankdata[24]; write_bit(1);//寫操作碼1:10 write_bit(0);//寫操作碼0 write_password(p);//發口令 write_bit(0);//寫鎖定位0 p = cominceptbuff; write_block(cominceptbuff[4],p);//寫數據 } else if(x == write_command3)//aor //喚醒 { //cominceptbuff[1]操作碼10 X xxxxxB uchar data *data p; p = cominceptbuff; write_bit(1);//10 write_bit(0); write_password(p);//密碼 p_U2270B_CFE = 1;//此時數據不停的循環傳出 } else //停止操作碼 { write_bit(1);//11 write_bit(1); p_U2270B_CFE = 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /************************************/ void f_clearpassword()//清除密碼 { uchar data *data p; uchar i,x; p = &bankdata[24];//原密碼 p_U2270B_CFE = 0; delay_2(18);//start gap>150us //操作碼10:10xxxxxxB write_bit(1); write_bit(0); for(x = 0;x < 4;x++)//發原密碼 { DATA = *(p++); for(i = 0;i < 8;i++) { write_bit(BIT0); DATA >>= 1; } } write_bit(0);//鎖定位0:0 p = &cominceptbuff[0]; write_block(0x00,p);//寫新配置參數:pwd=0 //密碼無效:即清除密碼 DATA = 0x00;//停止操作碼00000000B for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /*********************************/ void f_changepassword()//修改密碼 { uchar data *data p; uchar i,x,addr; addr = 0x07;//block7 p = &Nkey_a[0];//原密碼 DATA = 0x80;//操作碼10:10xxxxxxB for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } for(x = 0;x < 4;x++)//發原密碼 { DATA = *(p++); for(i = 0;i < 8;i++) { write_bit(BIT7); DATA >>= 1; } } write_bit(0);//鎖定位0:0 p = &cominceptbuff[0]; write_block(0x07,p);//寫新密碼 p_U2270B_CFE = 1; bankdata[24] = cominceptbuff[0];//密碼存入 bankdata[25] = cominceptbuff[1]; bankdata[26] = cominceptbuff[2]; bankdata[27] = cominceptbuff[3]; DATA = 0x00;//停止操作碼00000000B for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /***************************子函數***********************************/ void write_bit(bit x)//寫一位 { if(x) { p_U2270B_CFE = 1; delay_2(32);//448*11.0592/120=42延時448us p_U2270B_CFE = 0; delay_2(28);//280*11.0592/120=26寫1 } else { p_U2270B_CFE = 1; delay_2(92);//192*11.0592/120=18 p_U2270B_CFE = 0; delay_2(28);//280*11.0592/120=26寫0 } } /*******************寫一個block*******************/ void write_block(uchar addr,uchar data *data p) { uchar i,j; for(i = 0;i < 4;i++)//block0數據 { DATA = *(p++); for(j = 0;j < 8;j++) { write_bit(BIT0); DATA >>= 1; } } DATA = addr <<= 5;//0地址 for(i = 0;i < 3;i++) { write_bit(BIT7); DATA <<= 1; } } /*************************************************/ void write_password(uchar data *data p) { uchar i,j; for(i = 0;i < 4;i++)// { DATA = *(p++); for(j = 0;j < 8;j++) { write_bit(BIT0); DATA >>= 1; } } } /*************************************************/ void main() { initial(); TI = RI = 0; ES = 1; EA = 1; delay_2(28); //f_readcard(); while(1) { f_readcard(); //讀卡 f_writecard(command1); //寫卡 f_clearpassword(); //清除密碼 f_changepassword(); //修改密碼 } }
標簽: 12345
上傳時間: 2017-10-20
上傳用戶:my_lcs
隨著圖像分辨率的越來越高,軟件實現的圖像處理無法滿足實時性的需求;同時FPGA等可編程器件的快速發展使得硬件實現圖像處理變得可行。如今基于FPGA的圖像處理研究成為了國內外的一個熱門領域。 本文在FPGA平臺上,用Verilog HDL實現了一個研究圖像處理算法的可重復配置的硬件模塊架構,架構包括PC機預處理和通信軟件,控制模塊,計算單元,存儲器模塊和通信適配模塊五個部分。其中的計算模塊負責具體算法的實現,根據不同的圖像處理算法可以獨立實現。架構為計算模塊實現了一個可添加、移出接口,不同的算法設計只要符合該接口就可以方便的加入到模塊架構中來進行調試和運行。 在硬件架構的基礎上本文實現了排序濾波,中值濾波,卷積運算及高斯濾波,形態學算子運算等經典的圖像處理算法。討論了FPGA的圖像處理算法的設計方法及優化策略,通過性能分析,FPGA實現圖像處理在時間上比軟件處理有了很大的提高;通過結果的比較,發現FPGA的處理結果達到了軟件處理幾乎同等的效果水平。最后本文在實現較大圖片處理和圖像處理窗口的大小可配置性方面做了一定程度的討論和改進,提高了算法的可用性,同時為進一步的研究提供了更加便利的平臺。 整個設計都是在ISE8.2和ModelSim第三方仿真軟件環境下開發的,在xilinx的Spartan-3E XC3S500E硬件平臺上實現。在軟件仿真過程中利用了ISE8.2自帶仿真工具和ModelSim結合使用。 本課題為制造FPGA的專用圖像處理芯片做了有益的探索性研究,為實現FPGA為核心處理芯片的實時圖像處理系統有著積極的作用。
上傳時間: 2013-07-29
上傳用戶:愛順不順
由于全球定位系統在航天、航空、航海、海洋上程、大地測量、陸地導航以及軍事上的大量運用及其廣闊的應用前景,使得GPS接收機系統成為國內外相關領域競相研究的對象。GPS系統的用戶部分主要是各種型號的GPS接收機。所以GPS接收機中的微處理器的運算能力和功耗直接影響整機的性能。 本文所研究的是基于ARM微處理器和μC/OS—Ⅱ的嵌入式系統開發及其在GPS接收機中的應用。介紹了OPS接收機設計原理,分析了接收機硬件模塊的組成和功能,設計了由FPGA和ARM完成基帶信號處理及導航解算的接收機,建立了基于ARM和μC/OS—Ⅱ的GPS接收機嵌入式硬件開發平臺。研究了嵌入式實時操作系統μC/OS—Ⅱ,分析了其內核的組成結構:與處理器無關代碼、處理器相關代碼、與應用相關代碼,并重點分析和配置了其中與處理器相關和與應用相關的代碼部分,最終將其成功移植到ARM LPC2290微處理器上。建立了基于ARM LPC2290和μC/OS—Ⅱ的嵌入式系統軟件編譯和調試的交叉環境,設計了運行在此環境下的中斷和多任務來實現接收機信號處理、導航解算及顯示等功能,最終完成了基于ARM和μC/OS—Ⅱ的GPS接收機軟應用件設計。 總之,本文從研究嵌入式系統的軟、硬件設計及其應用著手,掌握了嵌入式系統開發的核心技術,研制了基于ARM嵌入式開發平臺的GPS接收機。
上傳時間: 2013-04-24
上傳用戶:buffer
隨著圖像分辨率的越來越高,軟件實現的圖像處理無法滿足實時性的需求;同時FPGA等可編程器件的快速發展使得硬件實現圖像處理變得可行。如今基于FPGA的圖像處理研究成為了國內外的一個熱門領域。 本文在FPGA平臺上,用Verilog HDL實現了一個研究圖像處理算法的可重復配置的硬件模塊架構,架構包括PC機預處理和通信軟件,控制模塊,計算單元,存儲器模塊和通信適配模塊五個部分。其中的計算模塊負責具體算法的實現,根據不同的圖像處理算法可以獨立實現。架構為計算模塊實現了一個可添加、移出接口,不同的算法設計只要符合該接口就可以方便的加入到模塊架構中來進行調試和運行。 在硬件架構的基礎上本文實現了排序濾波,中值濾波,卷積運算及高斯濾波,形態學算子運算等經典的圖像處理算法。討論了FPGA的圖像處理算法的設計方法及優化策略,通過性能分析,FPGA實現圖像處理在時間上比軟件處理有了很大的提高;通過結果的比較,發現FPGA的處理結果達到了軟件處理幾乎同等的效果水平。最后本文在實現較大圖片處理和圖像處理窗口的大小可配置性方面做了一定程度的討論和改進,提高了算法的可用性,同時為進一步的研究提供了更加便利的平臺。 整個設計都是在ISE8.2和ModelSim第三方仿真軟件環境下開發的,在xilinx的Spartan-3E XC3S500E硬件平臺上實現。在軟件仿真過程中利用了ISE8.2自帶仿真工具和ModelSim結合使用。 本課題為制造FPGA的專用圖像處理芯片做了有益的探索性研究,為實現FPGA為核心處理芯片的實時圖像處理系統有著積極的作用。
上傳時間: 2013-05-30
上傳用戶:水瓶kmoon5
遺傳算法是一種基于自然選擇原理的優化算法,在很多領域有著廣泛的應用。但是,遺傳算法使用計算機軟件實現時,會隨著問題復雜度和求解精度要求的提高,產生很大的計算延時,這種計算的延時限制了遺傳算法在很多實時性要求較高場合的應用。為了提升運行速度,可以使用FPGA作為硬件平臺,設計數字系統完成遺傳算法。和軟件實現相比,硬件實現盡管在實時性和并行性方面具有很大優勢,但同時會導致系統的靈活性不足、通用性不強。本文針對上述矛盾,使用基于功能的模塊化思想,將基于FPGA的遺傳算法硬件平臺劃分成兩類模塊:系統功能模塊和算子功能模塊。針對不同問題,可以在保持系統功能模塊不變的前提下,選擇不同的遺傳算子功能模塊完成所需要的優化運算。本文基于Xilinx公司的Virtex5系列FPGA平臺,使用VerilogHDL語言實現了偽隨機數發生模塊、隨機數接口模塊、存儲器接口/控制模塊和系統控制模塊等系統功能模塊,以及基本位交叉算子模塊、PMX交叉算子模塊、基本位變異算子模塊、交換變異算子模塊和逆轉變異算子模塊等遺傳算法功能模塊,構建了系統功能構架和遺傳算子庫。該設計方法不僅使遺傳算法平臺在解決問題時具有更高的靈活性和通用性,而且維持了系統架構的穩定。本文設計了多峰值、不連續、不可導函數的極值問題和16座城市的旅行商問題 (TSP)對遺傳算法硬件平臺進行了測試。根據測試結果,該硬件平臺表現良好,所求取的最優解誤差均在1%以內。相對于軟件實現,該系統在求解一些復雜問題時,速度可以提高2個數量級。最后,本文使用FPGA實現了粗粒度并行遺傳算法模型,并用于 TSP問題的求解。將硬件平臺的運行速度在上述基礎上提高了近1倍,取得了顯著的效果。關鍵詞:遺傳算法,硬件實現,并行設計,FPGA,TSP
上傳時間: 2013-06-15
上傳用戶:hakim
TLC2543是TI公司的12位串行模數轉換器,使用開關電容逐次逼近技術完成A/D轉換過程。由于是串行輸入結構,能夠節省51系列單片機I/O資源;且價格適中,分辨率較高,因此在儀器儀表中有較為廣泛的應用。 TLC2543的特點 (1)12位分辯率A/D轉換器; (2)在工作溫度范圍內10μs轉換時間; (3)11個模擬輸入通道; (4)3路內置自測試方式; (5)采樣率為66kbps; (6)線性誤差±1LSBmax; (7)有轉換結束輸出EOC; (8)具有單、雙極性輸出; (9)可編程的MSB或LSB前導; (10)可編程輸出數據長度。 TLC2543的引腳排列及說明 TLC2543有兩種封裝形式:DB、DW或N封裝以及FN封裝,這兩種封裝的引腳排列如圖1,引腳說明見表1 TLC2543電路圖和程序欣賞 #include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit clock=P1^0; sbit d_in=P1^1; sbit d_out=P1^2; sbit _cs=P1^3; uchar a1,b1,c1,d1; float sum,sum1; double sum_final1; double sum_final; uchar duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar wei[]={0xf7,0xfb,0xfd,0xfe}; void delay(unsigned char b) //50us { unsigned char a; for(;b>0;b--) for(a=22;a>0;a--); } void display(uchar a,uchar b,uchar c,uchar d) { P0=duan[a]|0x80; P2=wei[0]; delay(5); P2=0xff; P0=duan[b]; P2=wei[1]; delay(5); P2=0xff; P0=duan[c]; P2=wei[2]; delay(5); P2=0xff; P0=duan[d]; P2=wei[3]; delay(5); P2=0xff; } uint read(uchar port) { uchar i,al=0,ah=0; unsigned long ad; clock=0; _cs=0; port<<=4; for(i=0;i<4;i++) { d_in=port&0x80; clock=1; clock=0; port<<=1; } d_in=0; for(i=0;i<8;i++) { clock=1; clock=0; } _cs=1; delay(5); _cs=0; for(i=0;i<4;i++) { clock=1; ah<<=1; if(d_out)ah|=0x01; clock=0; } for(i=0;i<8;i++) { clock=1; al<<=1; if(d_out) al|=0x01; clock=0; } _cs=1; ad=(uint)ah; ad<<=8; ad|=al; return(ad); } void main() { uchar j; sum=0;sum1=0; sum_final=0; sum_final1=0; while(1) { for(j=0;j<128;j++) { sum1+=read(1); display(a1,b1,c1,d1); } sum=sum1/128; sum1=0; sum_final1=(sum/4095)*5; sum_final=sum_final1*1000; a1=(int)sum_final/1000; b1=(int)sum_final%1000/100; c1=(int)sum_final%1000%100/10; d1=(int)sum_final%10; display(a1,b1,c1,d1); } }
上傳時間: 2013-11-19
上傳用戶:shen1230
對應程序: #include<reg52.h> #define uint unsigned int #define uchar unsigned char uchar code tab[]={ 0x81, 0x42, 0x24, 0x18, }; void delay(uint z) { uint i,j; for(i=z;i>0;i--) for(j=120;j>0;j--); } void init() { P0=0x00; }
上傳時間: 2014-01-17
上傳用戶:ruan2570406