亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? SPMC701系統開發板范例代碼 大家可以下載學習
?? C
字號:
//========================================================
//	The information contained herein is the exclusive property of
//	Sunnnorth Technology Co. And shall not be distributed, reproduced,
//	or disclosed in whole in part without prior written permission.
//	(C) COPYRIGHT 2003 SUNNORTH TECHNOLOGY CO.
//	ALL RIGHTS RESERVED
//	The entire notice above must be reproduced on all authorized copies.
//========================================================

//========================================================
//	工程名稱:	DC_SpeedCtrl
//	功能描述:	直流電機速度測量與調節
//	涉及的庫:	CMacro1016.lib
//	組成文件:	main.c
//              isr.asm, Dig.asm, Key.asm, DCMotor.asm
//              Dig.inc, Key.inc, DCMotor.inc, SPCE061A.inc
//              Dig.h,Key.h, DCMotor.h, SPCE061A.h
//	硬件連接:	61板IOB高8位與電機模組J1連接
//				61板IOA高8位與電機模組J2連接
//				61板IOB低8位與電機模組J3連接
//	維護記錄:	2005-12-2	v1.0
//========================================================

//========================================================
//	文件名稱:	main.c
//	功能描述:	數碼管顯示
//	維護記錄:	2005-09-12	v1.0
//========================================================
#include "SPCE061A.h"
#include "DCMotor.h"
#include "Dig.h"
#include "Key.h"

#define SPEED_MAX	60									// 最高設定速度
#define	SPEED_MIN	30									// 最低設定速度
#define SPEED_STEP	2									// 速度設定步進值

#define CP	8											// 比例常數 Proportional Const
#define CI	3											// 積分常數 Integral Const
#define	CD	1											// 微分常數 Derivative Const

unsigned int g_Direction, g_Speed;						// 全局變量,保存設定的轉動方向和速度


//========================================================================
//	語法格式:	void System_Init(void)
//	實現功能:	系統初始化(時鐘、變量等)
//	參數:		無
//	返回值:	無
//========================================================================
void System_Init(void)
{
	*P_SystemClock = C_Fosc_49M|C_StrongMode;			// 系統時鐘

	DCMotor_Init();
	Key_Init();
	DIG_Init();

	g_Direction = 1;									// 初始設置為正轉
	g_Speed = 40;
}

//========================================================================
//	語法格式:	void DispNum(unsigned int Num)
//	實現功能:	在4位數碼管上顯示整數
//	參數:		Num - 要顯示的數值,范圍0~9999
//	返回值:	無
//========================================================================
const unsigned int DigNum[]={							// 0~9十個數字對應的數碼管顯示編碼
	0x3f,0x06,0x5b,0x4f,0x66,
	0x6d,0x7d,0x27,0x7f,0x6f
	};

void DispNum(unsigned int Num)
{
	unsigned int TempNum = Num, k;

	DIG_Clear();										// 清除數碼管顯示
	if(Num>=1000)										// 千位
	{
		k = TempNum/1000;
		DIG_Set(1,DigNum[k]);
		TempNum = TempNum - k * 1000;
	}
	if(Num>=100)										// 百位
	{
		k = TempNum/100;
		DIG_Set(2,DigNum[k]);
		TempNum = TempNum - k * 100;
	}
	if(Num>=10)											// 十位
	{
		k = TempNum/10;
		DIG_Set(3,DigNum[k]);
		TempNum = TempNum - k * 10;
	}
	DIG_Set(4,DigNum[TempNum]);							// 個位
}

//========================================================================
//	語法格式:	void DelayMS(unsigned ms)
//	實現功能:	延時若干毫秒(不精確)
//	參數:		ms - 毫秒數@49MHz
//	返回值:	無
//========================================================================
void DelayMS(unsigned ms)
{
	unsigned i;
	while(ms--)	
	{
		for(i = 0; i < 1044; i++)
			*P_Watchdog_Clear = 1;
	}
}

//========================================================================
//	語法格式:	int DCMotor_Speed_PID(int SetSpeed, int CurSpeed)
//	實現功能:	增量式PID計算: u0 = u1 + CP*(e0-e1) + CI*e0 + CD*(e0-2*e1+e2)
//	參數:		SetSpeed:	設定的轉速
//				CurSpeed:	實際測得轉速
//	返回值:	直流電機速度等級(PWM占空比)
//========================================================================
int DCMotor_Speed_PID(int SetSpeed, int CurSpeed)
{
	int e0, u0;
	static int u1 = 0;									// 前一次輸出值(為避免浮點運算將該值擴大16倍)
	static int e1 = 0, e2 = 0;
	
	e0 = SetSpeed - CurSpeed;							// 當前速度偏差
	u0 = u1 											
		 + CP * (e0 - e1)								// 比例項
		 + CI * e0										// 積分項
		 + CD * (e0 - e1 - e1 + e2);					// 微分項
	
	if(u0 > 1023) u0 = 1023;							// 輸出值應小于64(擴大16倍)
	if(u0 < 16) u0 = 16;								// 輸出值應不小于1(擴大16倍)

	u1 = u0;											// 更新u1、e1和e2
	e2 = e1;
	e1 = e0;
	
	return u0>>4;										// 返回u0/16
}

//========================================================================
//	語法格式:	void SetSpeed(void)
//	實現功能:	設定轉速
//	參數:		無
//	返回值:	無
//========================================================================
void SetSpeed(void)
{
	unsigned int KeyCode;

	while(1)
	{
		DispNum(g_Speed);								// 閃爍顯示當前設定的轉速
		DelayMS(300);
		DIG_Clear();
		DelayMS(300);
		
		KeyCode = Key_Get();
		switch(KeyCode)
		{
			case KEY_1:									// Key1, 設定值增加
				g_Speed += SPEED_STEP;
				if(g_Speed > SPEED_MAX)g_Speed = SPEED_MIN;
				break;
			case KEY_2:									// Key2, 設定值減小
				g_Speed -= SPEED_STEP;
				if(g_Speed < SPEED_MIN)g_Speed = SPEED_MAX;
				break;
			case KEY_3:									// Key3, 確定
				return;
			default:
		}
	}
}

//========================================================================
//	語法格式:	void SetDirection(void)
//	實現功能:	設定轉動方向
//	參數:		無
//	返回值:	無
//========================================================================
void SetDirection(void)
{
	unsigned int KeyCode;
	unsigned int i;

	i = 1;
	while(1)
	{
		/// 在數碼管上顯示滾動的"-",表示電機轉動方向
		DIG_Clear();									// 清除顯示
		DIG_Set(i,0x40);
		DelayMS(200);
		i += g_Direction;
		if(i>4)i=1;
		if(i<1)i=4;
		
		KeyCode = Key_Get();
		switch(KeyCode)
		{
			case KEY_1:									// Key1, 正轉
				g_Direction = 1;
				break;
			case KEY_2:									// Key2, 反轉
				g_Direction = -1;
				break;
			case KEY_3:									// Key3, 確定
				return;
			default:
				break;
		}
	}		

}

//========================================================================
//	語法格式:	void StartMotor(void)
//	實現功能:	直流電機轉動控制
//	參數:		無
//	返回值:	無
//========================================================================
void StartMotor(void)
{
	unsigned int KeyCode;
	unsigned int SpeedLevel, CurSpeed=0, PreSpeed=0;
		
	if(g_Direction==1)									// 確定轉動方向
		DCMotor_Forward(MOTOR_1+MOTOR_2);
	else
		DCMotor_Backward(MOTOR_1+MOTOR_2);

	DispNum(CurSpeed);
	while(1)
	{
		if(CurSpeed != PreSpeed)						// 如果轉速改變則更新顯示
		{
			DispNum(CurSpeed);							// 顯示當前轉速
			PreSpeed = CurSpeed;
		}
		if(DCMotor_IsSpeedRdy())						// 如果已完成一次測速
		{
			CurSpeed = DCMotor_GetSpeed();				// 獲取轉速
			SpeedLevel = DCMotor_Speed_PID(g_Speed, CurSpeed);	// PID計算,得到新的PWM占空比
			DCMotor_SetSpeed(MOTOR_1+MOTOR_2, SpeedLevel);		// 更新PWM占空比,調節轉速
		}
		KeyCode = Key_Get();
		switch(KeyCode)	
		{
			case KEY_1:									// Key1,速度增加
				g_Speed += SPEED_STEP;
				if(g_Speed > SPEED_MAX)g_Speed = SPEED_MIN;
				break;
			case KEY_2:									// Key2,速度減小
				g_Speed -= SPEED_STEP;
				if(g_Speed < SPEED_MIN)g_Speed = SPEED_MAX;
				break;
			case KEY_3:									// Key3,停止
				DCMotor_Stop(MOTOR_1+MOTOR_2);
				return;
			default:
				break;
		}
	}
}

//========================================================================
//	語法格式:	int main(void)
//	實現功能:	主函數,通過按鍵選擇不同功能
//	參數:		無
//	返回值:	無
//========================================================================
int main(void)
{
	unsigned int KeyCode, Flag_KeyEvent;
	
	System_Init();										// 系統初始化
	Flag_KeyEvent = 1;
	
	while(1)
	{
		if(Flag_KeyEvent==1)
		{
			DispNum(g_Speed);							// 顯示當前設定的轉速
			Flag_KeyEvent = 0;
		}
		KeyCode = Key_Get();
		switch(KeyCode)
		{
			case KEY_1:									// Key1, 轉速設定
				SetSpeed();
				Flag_KeyEvent = 1;
				break;
			case KEY_2:									// Key2, 方向設定
				SetDirection();
				Flag_KeyEvent = 1;
				break;
			case KEY_3:									// Key3, 啟動電機
				StartMotor();
				Flag_KeyEvent = 1;
				break;
			default:
				break;
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美区在线观看| 欧美成人在线直播| 亚洲欧洲综合另类在线| 国产成人超碰人人澡人人澡| 精品国产网站在线观看| 日韩激情一二三区| 欧美日韩在线亚洲一区蜜芽| 亚洲自拍欧美精品| 色婷婷av一区二区三区之一色屋| 最好看的中文字幕久久| 91丨九色丨蝌蚪富婆spa| 中文字幕日韩精品一区| av亚洲精华国产精华| 中文字幕一区视频| 99视频有精品| 亚洲欧美日本在线| 色狠狠综合天天综合综合| 综合久久给合久久狠狠狠97色| 国产高清不卡二三区| 国产午夜亚洲精品羞羞网站| 国产成人一区在线| 国产精品视频在线看| 成人h精品动漫一区二区三区| ...av二区三区久久精品| www.欧美日韩国产在线| 综合色中文字幕| 一本久久a久久精品亚洲 | 欧美日韩一区在线| 亚洲18色成人| 日韩欧美123| 国产综合成人久久大片91| 久久久国产精品麻豆| 大美女一区二区三区| 中文字幕一区二区日韩精品绯色| 一本久道久久综合中文字幕| 亚洲一区精品在线| 在线观看91av| 久久精品二区亚洲w码| 久久新电视剧免费观看| 成人av动漫在线| 一区二区三区产品免费精品久久75| 欧美亚州韩日在线看免费版国语版| 天天综合色天天| 久久婷婷综合激情| 亚洲精品一区二区三区蜜桃下载| 国产成人综合亚洲网站| 亚洲人精品一区| 欧美精品一卡两卡| 国产在线精品一区在线观看麻豆| 日本一区二区三区久久久久久久久不| 9i在线看片成人免费| 一区二区久久久| 日韩情涩欧美日韩视频| 国产乱码精品一区二区三| 国产精品丝袜91| 欧美日韩久久一区二区| 精品一区二区久久| 国产精品久久久久久久久久免费看 | 欧美综合欧美视频| 蜜臂av日日欢夜夜爽一区| 欧美国产97人人爽人人喊| 欧美视频在线播放| 麻豆精品久久精品色综合| 欧美国产成人精品| 欧美高清精品3d| 国产高清精品在线| 亚洲制服欧美中文字幕中文字幕| 日韩欧美国产综合一区| 91视频精品在这里| 麻豆国产精品视频| 亚洲天堂久久久久久久| 欧美一级免费观看| 99热这里都是精品| 日本不卡视频一二三区| 中文字幕日本不卡| 精品国产一区a| 欧美三级中文字| 国产白丝精品91爽爽久久| 午夜精品福利一区二区蜜股av| 国产日韩欧美一区二区三区综合| 欧美日韩一区二区欧美激情| 国产精品一区二区无线| 午夜电影一区二区| 亚洲欧洲成人av每日更新| 91麻豆精品国产91久久久资源速度| 成人黄动漫网站免费app| 久久精品国产久精国产爱| 亚洲综合在线视频| 国产日韩欧美在线一区| 3d成人h动漫网站入口| 91丨porny丨在线| 国产一区啦啦啦在线观看| 亚洲成av人影院| 亚洲免费在线观看视频| 国产欧美日韩三区| 日韩一区二区三区四区| 91丨九色丨尤物| 成人一道本在线| 国产一区二区伦理| 美女视频黄 久久| 一区二区三区四区av| 中文幕一区二区三区久久蜜桃| 51久久夜色精品国产麻豆| 91激情五月电影| 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 精品福利在线导航| 在线播放视频一区| 在线亚洲一区观看| 不卡一区二区三区四区| 国产一区二区三区在线观看精品| 三级一区在线视频先锋| 一区二区成人在线视频| 亚洲视频 欧洲视频| 国产欧美综合在线观看第十页 | 91精品国产91久久久久久最新毛片| 91碰在线视频| www.亚洲在线| 丰满亚洲少妇av| 国产精品1区2区3区在线观看| 久久99深爱久久99精品| 日韩不卡免费视频| 日本一道高清亚洲日美韩| 亚洲成人激情av| 亚洲第一福利一区| 亚洲成av人片在www色猫咪| 一区二区三区产品免费精品久久75| 亚洲手机成人高清视频| 国产欧美日韩中文久久| 欧美激情资源网| 欧美国产1区2区| 中文字幕在线视频一区| 国产精品婷婷午夜在线观看| 国产精品网曝门| 国产精品进线69影院| 日韩伦理av电影| 亚洲免费观看视频| 一区二区三区四区不卡视频| 亚洲国产日产av| 午夜天堂影视香蕉久久| 日本亚洲视频在线| 日本不卡中文字幕| 麻豆国产欧美一区二区三区| 精品制服美女丁香| 国产精品一色哟哟哟| 国产成人精品一区二区三区四区 | 精品视频在线免费看| 欧美巨大另类极品videosbest| 欧美日韩国产美| 欧美一区二区三区的| 日韩精品一区二区三区在线观看 | 免费在线看成人av| 久久国产综合精品| 国产一本一道久久香蕉| 成年人国产精品| 在线观看国产日韩| 欧美精品色一区二区三区| 日韩色在线观看| 久久精品一区二区三区av| 国产精品久久久久久久久久免费看 | 欧美一卡二卡三卡| 精品国产亚洲在线| 国产精品久久久久久久久免费丝袜| 亚洲乱码国产乱码精品精98午夜 | 亚洲色图视频免费播放| 亚洲永久精品大片| 蜜桃视频免费观看一区| 国产99久久久国产精品潘金| 色天天综合色天天久久| 欧美人伦禁忌dvd放荡欲情| 日韩欧美一卡二卡| 欧美国产视频在线| 亚洲一区二区高清| 蜜臀av一区二区三区| 成人av动漫网站| 欧美老肥妇做.爰bbww| 久久久一区二区三区| 日韩美女视频一区| 日本91福利区| 成人动漫精品一区二区| 欧美日韩高清一区| 久久久99免费| 亚洲综合免费观看高清完整版在线 | 欧美日韩成人在线| 亚洲精品在线免费播放| 中文字幕亚洲欧美在线不卡| 亚洲123区在线观看| 国产成人夜色高潮福利影视| 色欧美日韩亚洲| 欧美精品一区二区精品网| 亚洲色图欧洲色图婷婷| 日韩精品1区2区3区| 成人avav影音| 日韩亚洲欧美一区| ●精品国产综合乱码久久久久| 日本欧洲一区二区| youjizz久久| 日韩欧美高清dvd碟片| 亚洲美女在线一区| 狠狠色狠狠色综合| 在线观看亚洲专区|