89S51 單晶片 電壓量測問題? |
答題得分者是:scott123
|
gsx21612
一般會員 ![]() ![]() 發表:4 回覆:1 積分:1 註冊:2012-06-27 發送簡訊給我 |
請問一下 有學過 單晶片控制的網友 我試過很多次 每個地方我都插對 我是用 C 語言 下去寫的 ( 例說89S51 C語言的書 和 uvision 4 程式 ) 可以幫我看一下 程式碼是不是有問題? 謝謝 #inclue char code TAB[10]={ 0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x83,0xf8,0x80,0x98 }; #define ADC P0 #define SCANP P1 #define SEG7P P2 unsigned char disp[4]={0,0,0,0,}; unsigned char_adc; void dataproc(unsigned char); void display(void); void delay1ms(char); main() { while(1) { display(); _adc=ADC; dataproc(_adc); } } void dataproc(unsigned char data_in); { int results; results=data_in*196; disp[3]=results/10000; disp[2]=(results/1000); disp[1]=(results/100); disp[0]=results; } void display(void); { char i,scan char times=20; while(--times>=0) { scan=1; for(i=0;i<4;i ) { SEG7P=0xff; SCANP=~scan; SEG7P=TAB[disp[i]]; delay 1ms(4); scan<<=1; } } } void delay 1ms(char x) { int i,j; for(i=0;i }
------
阿良 |
scott123
中階會員 ![]() ![]() ![]() 發表:19 回覆:66 積分:52 註冊:2011-08-11 發送簡訊給我 |
|
a16450
一般會員 ![]() ![]() 發表:0 回覆:1 積分:0 註冊:2013-02-05 發送簡訊給我 |
===================引 用 gsx21612 文 章=================== 請問一下 有學過 單晶片控制的網友 我試過很多次 每個地方我都插對 我是用 C 語言 下去寫的 ( 例說89S51 C語言的書 和 uvision 4 程式 ) 可以幫我看一下 程式碼是不是有問題? 謝謝 #inclue char code TAB[10]={ 0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x83,0xf8,0x80,0x98 }; void dataproc(unsigned char data_in); { results=data_in*196; disp[2]=(results/1000); disp[0]=results; } 因為 int只從-32768至 32768 unsigned int 是0到65535 也就是說你把data_in*196最大就會是49980(255*196) 5V狀態下 但是使用int result 超過32768就溢位了 也就是說你電壓只要超過3V,七段顯示器會亂跳
編輯記錄
a16450 重新編輯於 2013-02-05 02:35:44, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |