Altium Designer畫的步進電機脈沖控制板電路原理圖和PCB圖 STC15F104E單片機源碼,如下:
步進電機脈沖控制板DXP SCH PCB資料.rar
(353.87 KB, 售價: 5 E幣)
2020-4-20 00:00 上傳
點擊文件名下載附件
售價: 5 E幣 [記錄]
[ 購買]
51單片機C語言控制程序,帶掉電記憶功能.rar
(24.59 KB, 售價: 5 E幣)
2020-4-20 00:00 上傳
點擊文件名下載附件
售價: 5 E幣 [記錄]
[ 購買]
3.jpg (29.66 KB)
下載附件
2020-4-19 23:55 上傳
PLC控制步進電機脈沖信號發生器原理圖及例程.doc
(993.5 KB, 售價: 2 E幣)
2020-4-20 00:00 上傳
點擊文件名下載附件
售價: 2 E幣 [記錄]
[ 購買]
產品使用手冊.doc
(934 KB, 售價: 1 E幣)
2020-4-20 00:05 上傳
點擊文件名下載附件
售價: 1 E幣 [記錄]
[ 購買]
1.jpg (98.62 KB)
下載附件
2020-4-19 23:54 上傳
2.jpg (120.04 KB)
下載附件
2020-4-19 23:54 上傳
4.jpg (116.56 KB)
下載附件
2020-4-19 23:55 上傳
5.jpg (76.68 KB)
下載附件
2020-4-19 23:55 上傳
6.jpg (151.23 KB)
下載附件
2020-4-19 23:55 上傳
【簡要說明】
一、 尺寸:83mmX50mm X 15mm 長X寬X高
二、 主要芯片:單片機控制
三、 工作電壓:供電電壓直流5~24伏(寬電壓工作);
四、 特點:
1、單路信號輸出。
2、輸出占空比約為百分之五十的方波波形
4、輸出頻率由按鍵調節,加速 減速按鍵控制
5、輸出頻率范圍1~4KHZ(40種脈沖頻率調節)
6、輸出電壓(直流5V)
7、輸出電流225毫安(MAX)
8、上升/下降時間100 ns
單片機控制程序,帶掉電記憶功能源程序如下:
使用芯片:STC15F104E
晶振:33MHZ
編譯環境:Keil
*********************************************************************/
/********************************************************************/
#include "reg52.h"
#include <intrins.H>
#define uchar unsigned char //宏定義字符型變量
#define uint unsigned int //宏定義整型變量
/********************************************************************
寄存器設置
*********************************************************************/
sfr IAP_DATA =0xc2; //數據寄存器
sfr IAP_ADDRH =0xc3; //地址寄存器
sfr IAP_ADDRL =0xc4; //地址寄存器
sfr IAP_CMD =0xc5; //命令寄存器
sfr IAP_TRIG =0xc6; //觸發寄存器
sfr IAP_CONTR =0xc7; //擦除寄存器
/********************************************************************
命令定義
*********************************************************************/
#define CMD_IDLE 0 //EEPROM無操作
#define CMD_READ 1 //讀取字節
#define CMD_PROGRAM 2 //寫入字節
#define CMD_ERASE 3 //擦除字節
/********************************************************************
編程周期由晶振決定
*********************************************************************/
//#define ENABLE_IAP 0X80 //編程周期由晶振決定(如果<30MHZ選用此項)
//#define ENABLE_IAP 0X81 //編程周期由晶振決定(如果<24MHZ選用此項)
//#define ENABLE_IAP 0X82 //編程周期由晶振決定(如果<20MHZ選用此項)
#define ENABLE_IAP 0X83 //編程周期由晶振決定(如果<12MHZ選用此項)
//#define ENABLE_IAP 0X84 //編程周期由晶振決定(如果<6MHZ選用此項)
//#define ENABLE_IAP 0X85 //編程周期由晶振決定(如果<3MHZ選用此項)
//#define ENABLE_IAP 0X86 //編程周期由晶振決定(如果<2MHZ選用此項)
//#define ENABLE_IAP 0X87 //編程周期由晶振決定(如果<1MHZ選用此項)
#define IAP_ADDRESS 0X0000 //內部EEPROM地址
/********************************************************************
定義繼輸入輸出
*********************************************************************/
sbit JIA=P3^1; //
sbit JIAN=P3^0; //
sbit EN=P3^2; //
sbit P35=P3^5; //
bit write=0;
/********************************************************************
初始定義
*********************************************************************/
uint tcnt1; //脈沖計數
uint t1;
bit write;
uchar sudu;
/********************************************************************
延時100MS函數
*********************************************************************/
void Delay100ms()
{
uchar i, j, k;
_nop_();
i = 5;
j = 144;
k = 71;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
/********************************************************************
操作函數
*********************************************************************/
void IapIdle()
{
IAP_CONTR=0;
IAP_CMD=0;
IAP_TRIG=0;
IAP_ADDRH=0X80;
IAP_ADDRL=0;
}
/********************************************************************
讀取一個字節函數
*********************************************************************/
uchar IapReadByte(uint addr)
{
uchar dat;
IAP_CONTR=ENABLE_IAP;
IAP_CMD=CMD_READ;
IAP_ADDRL=addr;
IAP_ADDRH=addr>>8;
IAP_TRIG=0X5A;
IAP_TRIG=0XA5;
_nop_();
_nop_();
_nop_();
dat=IAP_DATA;
IapIdle();
return dat;
}
/********************************************************************
寫入一個字節函數
*********************************************************************/
void IapProgramByte(uint addr,uchar dat)
{
IAP_CONTR=ENABLE_IAP;
IAP_CMD=CMD_PROGRAM;
IAP_ADDRL=addr;
IAP_ADDRH=addr>>8;
IAP_DATA=dat;
IAP_TRIG=0X5A;
IAP_TRIG=0XA5;
_nop_();
_nop_();
_nop_();
IapIdle();
}
/********************************************************************
擦除一個字節函數
*********************************************************************/
void IapEraseSector(uint addr)
{
IAP_CONTR=ENABLE_IAP;
IAP_CMD=CMD_ERASE;
IAP_ADDRL=addr;
IAP_ADDRH=addr>>8;
IAP_TRIG=0X5A;
IAP_TRIG=0XA5;
_nop_();
_nop_();
_nop_();
IapIdle();
}
/********************************************************************
按鍵判斷函數
*********************************************************************/
void KEY()
{
if(JIA==0){Delay100ms();if(JIA==0){Delay100ms();sudu++;write=1;if(sudu>=30)sudu=30;while(!JIA);Delay100ms();}}
if(JIAN==0){Delay100ms();if(JIAN==0){Delay100ms();sudu--;write=1;if(sudu<=1)sudu=1;while(!JIAN);Delay100ms();}}
if(EN==0)TR0=1;else TR0=0;
switch(sudu)
{
case 1: t1=1;break;//2K
case 2: t1=2;break;//1.6k
case 3: t1=3;break;//1.33k
case 4: t1=4;break;//2K
case 5: t1=5;break;//1.6k
case 6: t1=6;break;//1.33k
case 7: t1=7;break;//1.14k
case 8: t1=8;break;//1k
case 9: t1=9;break;// 880
case 10: t1=10;break;// 800
case 11: t1=12;break;// 660
case 12: t1=14;break;// 580
case 13: t1=16;break;// 500
case 14: t1=18;break;// 450
case 15: t1=20;break;// 400
case 16: t1=22;break;// 360
case 17: t1=23;break;// 350
case 18: t1=26;break;// 300
case 19: t1=30;break;// 260
case 20: t1=33;break;// 240
case 21: t1=37;break;// 220
case 22: t1=41;break;// 200
case 23: t1=50;break;// 160
case 24: t1=60;break;// 135
case 25: t1=65;break;// 125
case 26: t1=75;break;// 110
case 27: t1=80;break;// 100
case 28: t1=95;break;// 84
case 29: t1=120;break;//60
case 30: t1=150;break;//50
case 31: t1=300;break;//30
case 32: t1=1000;break;//8
case 33: t1=10000;break;//1
case 34: t1=20000;break;//1
case 35: t1=30000;break;//1
case 36: t1=40000;break;//1
case 37: t1=60000;break;//1
default:break;
}
}
/********************************************************************
定時中斷服務函數
*********************************************************************/
void t0(void) interrupt 1 using 0 //定時中斷服務函數
{
tcnt1++;
if(tcnt1>=t1)
{
tcnt1=0;
P35=!P35;
}
}
/********************************************************************
主函數
*********************************************************************/
void main()
{
uchar Q;
TMOD=0x02; //定時器工作在方式2
TH0=0x06; //對TH0 TL0 賦值
TL0=0x06;
TR0=0; //關定時
ET0=1; //開定時器
EA=1; //開總中斷
P35=0;//脈沖輸出腳
Q=IapReadByte(0);
sudu=Q;
while(1)
{
KEY();
if(write==1)
{
write=0;
IapEraseSector(0); //擦除扇區
IapProgramByte(0,sudu); //寫入數據
……………………
…………限于本文篇幅 余下代碼請下載附件…………
【必讀】版權免責聲明
1、本主題所有言論和內容純屬會員個人意見,與本論壇立場無關。2、本站對所發內容真實性、客觀性、可用性不做任何保證也不負任何責任,網友之間僅出于學習目的進行交流。3、對提供的數字內容不擁有任何權利,其版權歸原著者擁有。請勿將該數字內容進行商業交易、轉載等行為,該內容只為學習所提供,使用后發生的一切問題與本站無關。 4、本網站不保證本站提供的下載資源的準確性、安全性和完整性;同時本網站也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的損失或傷害。 5、本網站所有軟件和資料均為網友推薦收集整理而來,僅供學習用途使用,請務必下載后兩小時內刪除,禁止商用。6、如有侵犯你版權的,請及時聯系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|