全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2464
推到 Plurk!
推到 Facebook!

8051接自製線圈

尚未結案
air0214
一般會員


發表:4
回覆:5
積分:1
註冊:2009-11-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-11-17 01:53:49 IP:59.127.xxx.xxx 訂閱
#include <reg51.h> /* 載入 8051 相關暫存器含括檔 */
sbit a = P0^1; /* 定義P0.1接腳 */
sbit b = P0^2; /* 定義P0.2接腳 */
sbit c = P0^3; /* 定義P0.3接腳 */
sbit d = P0^4; /* 定義P0.4接腳 */
sbit k1 = P2^0; /* 按鍵控制線圈啟動 */
sbit k2 = P2^1; /* 按鍵控制線圈關閉 */
/*----------------------------*/
void Delay(unsigned int count)/* 延遲副程式 */

{
unsigned int i,j;
for(i=0;i for(j=0;j<1;j ) ;

}
/*----------------------------*/
smart() /* 線圈啟動*/
{
while(1)
{
a=0;
b=1;
c=0;
d=0;
Delay(1000);
a=1;
b=0;
c=0;
d=0;
Delay(1000);
a=0;
b=0;
c=1;
d=0;
Delay(1000);
a=0;
b=0;
c=0;
d=1;
Delay(1000);
}
}
/*----------------------------*/
smart_2() /* 線圈關閉*/
{
a=0;
b=0;
c=0;
d=0;
}
/*----------------------------*/
void main() /* 主程式 */
{
if(k1==1) /* 控制線圈啟動 */
{
smart();
}
if(k2==1) /* 控制線圈關閉 */
{
smart_2();
}
}
我們估計這個跑出來的結果是會當k1啟動時循序漸進的由b亮a亮c亮d亮燃後間隔一秒 一直無窮回圈下去
然後按k2時即會停止 可是跑出來的結果都不符 請各位大大幫忙解答


iii0628
一般會員


發表:50
回覆:46
積分:19
註冊:2005-04-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-11-17 11:12:26 IP:210.64.xxx.xxx 訂閱
smart() 之後就算你按了線圈關閉也是不會有動作的。
void main() /* 主程式 */
{
while(1)
{
if(k1==1) /* 控制線圈啟動 */
{
smart();//smart的while要刪掉
}
if(k2==1) /* 控制線圈關閉 */
{
smart_2();
}
}
}
ScottWang
版主


發表:32
回覆:486
積分:688
註冊:2009-04-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-11-17 14:39:00 IP:59.115.xxx.xxx 訂閱
你的delay內有變數count,卻都沒有動到,因此你的delay的參數傳遞是無效的.
請參考這裡delay的用法:

http://vision.ee.ccu.edu.tw/modules/tinyd2/content/97_MR/Demo/第一組/自主式機器人期末專題報告(蔡承延 陳汯承)/自主移動式機器人期末專題報告.doc
------
高壓直流電源供應器,高壓模組,測試LED專用AC LED定電流源,全範圍可調電壓電流,
中低壓直流電源供應器,電壓放大器,電流放大器,帶通濾波器,高精度參考電壓,
標準電壓,恆流源(定電流源),恆壓源(定電壓源),大電流電源供應器.
接受訂製,設計生產各種特殊規格,高精度產品,學校實驗室,研究單位實驗設備,
另可接受其它電子專案設計,HV Power,Vmax=20KV,Imax=2000A.
http://hvpower.myweb.hinet.net/
air0214
一般會員


發表:4
回覆:5
積分:1
註冊:2009-11-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-11-17 16:13:06 IP:59.127.xxx.xxx 訂閱
delay(int d) /* 延遲副程式 */
{
int i,j ;
for(i=0;ifor(j=0;j<30;j );
}
那如果我今天改適用這種delay
沒有count是不是就可以順利跑了
我們是要把它接到我們自製的馬達上
主要是有兩段線圈分成 a b c d 裡面放一科強力磁鐵
當b通電磁鐵會被推到d的部份
再將a通電磁鐵回到中間
此時再將ab全部關掉
改由cd供電
由c供電
將磁鐵退至最左邊ab的部份
在經由d供電
將磁鐵拉回來
一直無限回圈下去
就好比今天我要四顆led依照我想要的順序供電
b亮a.c.d.不亮
a亮b.c.d不亮
c亮a.b.d不亮
d亮a.b.c不亮
延遲時間可能是0.1秒
因為我們現在是看結果對不對所以才把秒數加大以便觀察


我會再重寫試試
ScottWang
版主


發表:32
回覆:486
積分:688
註冊:2009-04-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-11-17 18:44:34 IP:59.115.xxx.xxx 訂閱
delay(int d) <-- 這裡也要有d的加或減,外面傳入的值,經過加或減之後,才會產生作用.
}

前面找的資料,你好像沒有去看.
------
高壓直流電源供應器,高壓模組,測試LED專用AC LED定電流源,全範圍可調電壓電流,
中低壓直流電源供應器,電壓放大器,電流放大器,帶通濾波器,高精度參考電壓,
標準電壓,恆流源(定電流源),恆壓源(定電壓源),大電流電源供應器.
接受訂製,設計生產各種特殊規格,高精度產品,學校實驗室,研究單位實驗設備,
另可接受其它電子專案設計,HV Power,Vmax=20KV,Imax=2000A.
http://hvpower.myweb.hinet.net/
編輯記錄
ScottWang 重新編輯於 2009-11-17 18:46:03, 註解 無‧
air0214
一般會員


發表:4
回覆:5
積分:1
註冊:2009-11-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-11-17 19:40:14 IP:59.127.xxx.xxx 訂閱
我已經參考過了delay的寫法了
我會再去試試看
謝謝各位的幫忙
air0214
一般會員


發表:4
回覆:5
積分:1
註冊:2009-11-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-11-17 23:22:47 IP:210.70.xxx.xxx 訂閱
#include <reg51.h> /* 載入 8051 相關暫存器含括檔 */

sbit a = P0^1; /* 定義P0.1接腳 */
sbit b = P0^2; /* 定義P0.2接腳 */
sbit c = P0^3; /* 定義P0.3接腳 */
sbit d = P0^4; /* 定義P0.4接腳 */
sbit k1 = P2^0; /* 按鍵控制線圈啟動 */
sbit k2 = P2^1; /* 按鍵控制線圈關閉 */
/*----------------------------*/
delay(int d) /* 延遲副程式 */
{
int i,j ;
for(i=0;i for(j=0;j<114;j );
}
/*----------------------------*/
smart() /* 線圈啟動*/
{
a=1;
b=0;
c=1;
d=1;
delay(1000);
a=0;
b=1;
c=1;
d=1;
delay(1000);
a=1;
b=1;
c=0;
d=1;
delay(1000);
a=1;
b=1;
c=1;
d=0;
delay(1000);
}
/*----------------------------*/
smart_2() /* 線圈關閉*/
{
a=1;
b=1;
c=1;
d=1;
}
/*----------------------------*/
void delay(int d);//宣告延時1m秒函數
void main() /* 主程式 */
{
while(1)
{
if(k1==0) /* 控制線圈啟動 */
{
smart();
}
if(k2==0) /* 控制線圈關閉 */
{
smart_2();
}
}

}
改了結果卻還是不符預期

air0214
一般會員


發表:4
回覆:5
積分:1
註冊:2009-11-17

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-11-17 23:32:21 IP:210.70.xxx.xxx 訂閱
不知道為什麼i的部分打不出來
所以我用口述的方式
(i等於零分號i小於d分號i 累加)








編輯記錄
air0214 重新編輯於 2009-11-18 01:34:42, 註解 無‧
air0214 重新編輯於 2009-11-18 01:35:13, 註解 無‧
air0214 重新編輯於 2009-11-18 01:35:51, 註解 無‧
air0214 重新編輯於 2009-11-18 01:36:20, 註解 無‧
air0214 重新編輯於 2009-11-18 01:37:08, 註解 無‧
air0214 重新編輯於 2009-11-18 01:49:29, 註解 無‧
air0214 重新編輯於 2009-11-18 01:50:53, 註解 無‧
air0214 重新編輯於 2009-11-18 01:51:59, 註解 無‧
air0214
一般會員


發表:4
回覆:5
積分:1
註冊:2009-11-17

發送簡訊給我
#9 引用回覆 回覆 發表時間:2009-11-17 23:37:20 IP:210.70.xxx.xxx 訂閱
delay(int d)/*延遲副程式
{
int,i,j;
for(i=0;i for(j=0;j<144;j );
}
補充副程式的部份
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#10 引用回覆 回覆 發表時間:2009-11-18 10:09:12 IP:122.116.xxx.xxx 訂閱
下面連結有教如何PO程式碼
http://delphi.ktop.com.tw/board.php?cid=32&fid=107&tid=86625
系統時間:2024-04-25 18:11:48
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!