基于51單片機步進電機控制—9個等級

基于51單片機步進電機控制

(仿真+程序+設計報告)

功能介紹

具體功能:

1.使用L298驅動步進電機轉動,可分為9個速度等級(1級最快,9級最慢);

2.使用74HC595驅動數碼管顯示當前速度等級;

3.兩個按鍵可以控制轉速和正/方向;

?演示視頻:

基于51單片機步進電機控制—9個等級?

添加圖片注釋,不超過 140 字(可選)

程序

//*****************************************//
//**************名稱:步進電機*************//
//********          木子單片機    *********//
//*****************************************//
#include<reg51.h>
#define uchar unsigned char 
#define uint unsigned int 
//74HC595引腳定義
sbit MOSIO=P2^1;
sbit R_CLKa=P2^2;
sbit S_CLKa=P2^0;
sbit LED = P0^0 ;
/
uchar vision_cnt = 0 ; 	//數碼管動態掃描計數變量
bit updat = 0 ;		 	//動態刷新標志
uint cnt = 0 ;
uchar sec = 0 ;
uint  key_cnt[4];
uchar key_tab = 0 ;
uint buf_cnt = 0 ;
bit cnv = 0 ;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
0x40
}; //共陰極數碼管顯示數組0-f
uchar code table1[4]={0x10,0x20,0x40,0x80}; //反轉表格,
//(P0.2-P0.5)各位分別取1,二進制碼即:00000100,00001000,0001000,0010000
uchar code table2[4]={0x80,0x40,0x20,0x10}; //正轉表格
/*
********************************************************************************
** 函數名稱 : send595(uchar dat)
** 函數功能 : 數據輸入
********************************************************************************
*/
void send595(uchar dat)	   //數據輸入
{  uchar i; 	for(i=0;i<8;i++) {if((dat<<i)&0x80) MOSIO = 1 ;else MOSIO = 0 ;S_CLKa=0;S_CLKa=1;	}	
}
/*
********************************************************************************
** 函數名稱 : out595(void)
** 函數功能 : 數據輸出
********************************************************************************
*/
void out595(void)	  // 數據輸出
{R_CLKa=0;R_CLKa=1;	     //上升沿
} 
/*
********************************************************************************
** 函數名稱 : vision(uchar dat,uchar pos)
** 函數功能 : 顯示函數
********************************************************************************
*/ //在數碼管某個位置上顯示某個數字
void vision(uchar dat,uchar pos)
{send595(~pos);send595(table[dat]);out595();
}
//定時器初始化函數,
void timer_config(void)
{TMOD = 0x11 ;				//設置定時器0和定時器1工作在方式1--16位計數模式TH0 = (65535-60000)/256 ; 	//設置定時器初值高位TL0 = (65535-60000)%256 ; 	//設置定時器初值低位TR0 = 1 ;					//啟動定時器0ET0 = 1 ;					//開啟定時器0中斷EA = 1 ;					//開啟總中斷
}
//外部中斷配置函數
void ext_config(void)
{EX0 = 1;					//開啟外部中斷0IT0 = 1;					//外部中斷為邊沿觸發方式EX1 = 1;					//開啟外部中斷1IT1 = 1;					//外部中斷為邊沿觸發方式	
}
//外部中斷0
void ext0_isr() interrupt 0 
{if(sec<9)sec++;elsesec=1;
}
//外部中斷0
void ext1_isr() interrupt 2 
{cnv = ~cnv ;
*****//完整資料
****//微信公眾號:木子單片機//
}
//定時器0中斷函數
void timer0_isr() interrupt 1
{TH0 = 0xfc ; 				//設置定時器初值高位	1ms定時TL0 = 0x17 ; 				//設置定時器初值低位updat = 1 ;					//置位標志位if(buf_cnt<30*sec){buf_cnt++;}else{buf_cnt=0;if(cnt<3){cnt++;}else{cnt=0;}if(cnv)P1=table1[cnt];else P1=table2[cnt];}
}

硬件設計

使用元器件:

單片機:AT89C51;

(注意:單片機是通用的,無論51還是52、無論stc還是at都一樣,引腳功能都一樣。程序也是一樣的。)

設計資料

01仿真圖

本設計使用Proteus7.8和Proteus8.9兩個版本設計!具體如圖!

添加圖片注釋,不超過 140 字(可選)

02程序

本設計使用Keil5版本編程設計!具體如圖!

添加圖片注釋,不超過 140 字(可選)

03設計報告

一千字設計報告,具體如下!

添加圖片注釋,不超過 140 字(可選)

04設計資料

????????資料獲取請看前面演示視頻,全部資料包括仿真源文件 、程序(含注釋)、設計報告等。具體內容如下,全網最全! !

操作演示請觀看前面演示視頻!

點贊分享一起學習成長。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/80376.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/80376.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/80376.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【某OTA網站】phantom-token 1004

新版1004 phantom-token 請求頭中包含phantom-token 定位到 window.signature 熟悉的vmp 和xhs一樣 最新環境檢測點 最新檢測 canvas 下的 toDataURL方法較嚴 過程中 會用setAttribute給canvas 設置width height 從而使toDataURL返回不同的值 如果寫死toDataURL的返回值…

LSTM的簡單模型

好的&#xff0c;我來用通俗易懂的語言解釋一下這個 LSTMTagger 類是如何工作的。 1?? 類的目的 這個 LSTMTagger 類是一個用于自然語言處理&#xff08;NLP&#xff09;任務的模型&#xff0c;目的是標注輸入的句子&#xff0c;通常用于詞性標注&#xff08;例如&#xff…

每天批次導入 100 萬對賬數據到 MySQL 時出現死鎖

一、死鎖原因及優化策略 1.1 死鎖原因分析 批量插入事務過大&#xff1a; Spring Batch 默認將整個 chunk&#xff08;批量數據塊&#xff09;作為一個事務提交&#xff0c;100 萬數據可能導致事務過長&#xff0c;增加鎖競爭。 并發寫入沖突&#xff1a; 多個線程或批處理作…

DeepResearch深度搜索實現方法調研

DeepResearch深度搜索實現方法調研 Deep Research 有三個核心能力 能力一&#xff1a;自主規劃解決問題的搜索路徑&#xff08;生成子問題&#xff0c;queries&#xff0c;檢索&#xff09;能力二&#xff1a;在探索路徑時動態調整搜索方向&#xff08;劉亦菲最好的一部電影是…

跟我學C++中級篇——STL容器的查找對比

一、C標準庫的查找 在C的STL中&#xff0c;對容器或相關序列的查找中&#xff0c;有兩種方式&#xff0c;一種是std::find&#xff0c;另外一種是std::search。而且在它們的基礎上&#xff0c;還衍生出std::find_if、std::find_if_not、std::find_end等和std::search_n、range…

SpringAI框架中的RAG知識庫檢索與增強生成模型詳解

SpringAI框架中的RAG知識庫檢索與增強生成模型詳解 一、RAG簡介 RAG&#xff08;Retrieval-Augmented Generation&#xff09;可以通過檢索知識庫&#xff0c;克服大模型訓練完成后參數凍結的局限性&#xff0c;攜帶知識讓大模型根據知識進行回答。 二、SpringAI框架支持的R…

Delphi12安裝Android開發的配置

Delphi12如果要開發android和Linux系統,需要在安裝的時候安裝這兩個選項,否則,就找不到開發平臺。 1、Adroid開發三劍客必須是指: JDK,SDK,NDK三洋,其中JDK是必須要安裝的,最好使用Installer安裝,否則自解壓的免安裝版在安裝過程中會退出。 2、開始安裝Delphi12. …

OpenHarmony launcher開發——刪除dock欄

開發環境 OpenHarmony 5.0.0 代碼修改 效果

FreeRTOS如何實現100%的硬實時性?

實時系統在嵌入式應用中至關重要&#xff0c;其核心在于確保任務在指定時間內完成。根據截止時間滿足的嚴格程度&#xff0c;實時系統分為硬實時和軟實時。硬實時系統要求任務100%滿足截止時間&#xff0c;否則可能導致災難性后果&#xff0c;例如汽車安全系統或醫療設備。軟實…

微軟推動智能體協同運作:支持 A2A、MCP 協議

今日凌晨&#xff0c;微軟宣布 Azure AI Foundry 和 Microsoft Copilot Studio 兩大開發平臺支持最新 Agent 開發協議 A2A&#xff0c;并與谷歌合作開發擴大該協議&#xff0c;這一舉措對智能體賽道意義重大。 現狀與變革意義 當前智能體領域類似戰國時代&#xff0c;各家技術…

從“山谷論壇”看AI七劍下天山

始于2023年的美國山谷論壇(Hill and Valley Forum)峰會,以“國會山與硅谷”命名,寓意連接科技界與國家安全戰略。以人工智能為代表的高科技,在逆全球化時代已成為大國的致勝高點。 論壇創辦者Jacob Helberg,現在是華府的副國務卿,具體負責經濟、環境和能源事務。早先曾任…

Docker封裝深度學習模型

1.安裝Docker Desktop 從官網下載DockerDesktop&#xff0c;安裝。&#xff08;默認安裝位置在C盤&#xff0c;可進行修改&#xff09; "D:\Program Files (x86)\Docker\Docker Desktop Installer.exe" install --installation-dir"D:\Program Files (x86)\Do…

Linux 內核中的 security_sk_free:安全模塊與 Socket 釋放機制解析

引言 在 Linux 內核中,網絡通信和進程間交互(IPC)的核心數據結構之一是 struct sock(即 socket)。其生命周期管理涉及復雜的資源分配與釋放邏輯。本文聚焦于 security_sk_free 這一函數,探討其作用、調用場景以及與安全模塊的交互機制,并解答一個常見疑問:在單機間 TC…

工業與協議融合篇:如何將多個協議集成進一個系統?

?? 本文為《嵌入式通信協議全解析》第六篇,深入探討如何在工業或物聯網系統中同時集成 BLE、CAN、LoRa、MQTT、RS485 等多種通信協議,實現一個高效、可控、穩定運行的嵌入式通信架構。 ?? 一、為什么需要多協議融合? 在真實產品中,單一通信協議往往無法滿足所有業務需…

手撕紅黑樹的 左旋 與 右旋

一、為什么需要旋轉&#xff1f; 在紅黑樹中&#xff0c;插入或刪除節點可能會破壞其五條性質&#xff0c;比如高度不平衡或連續紅節點。 為了恢復紅黑性質&#xff0c;我們采用局部旋轉來“調整樹形結構”&#xff0c;保持平衡。 二、旋轉本質是“局部變形” 左旋和右旋不會…

不用官方EDA怎么開發FPGA?

目前FPGA的開發和官方的EDA工具是高度綁定的&#xff0c;用哪家的芯片只能用其配套的EDA工具進行開發&#xff08;綜合可選工具&#xff0c;布局布線沒有可選的工具&#xff09;&#xff0c;那么有沒有其他的開發方式呢&#xff1f;今天就介紹一個使用開源工具鏈來開發FPGA的方…

QuecPython+Aws:快速連接亞馬遜 IoT 平臺

提供一個可接入亞馬遜 Iot 平臺的客戶端&#xff0c;用于管理亞馬遜 MQTT 連接和影子設備。 初始化客戶端 Aws class Aws(client_id,server,port,keep_alive,ssl,ssl_params)參數&#xff1a; client_id (str) - 客戶端唯一標識。server (str) - 亞馬遜 Iot 平臺服務器地址…

44.輻射發射整改簡易摸底測試方法

輻射發射整改簡易摸底測試方法 1. 正式摸底預測試2. 簡易方法預測試3. 分析頻譜4. 探查傳播路徑5. 施加措施6. 與簡易方法預測試效果對比 1. 正式摸底預測試 去正式實驗室做一次預測試&#xff0c;取得頻譜圖&#xff1b;確定超標頻點和超標量&#xff08;備用&#xff09;。 …

OpenCV中適用華為昇騰(Ascend)后端的逐元素操作(Per-element Operations)

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 針對華為昇騰&#xff08;Ascend&#xff09;后端的逐元素操作&#xff08;Per-element Operations&#xff09;&#xff0c;這些操作通常用于圖…

Web前端VSCode如何解決打開html頁面中文亂碼的問題(方法2)

Web前端—VSCode如何解決打開html頁面中文亂碼的問題&#xff08;方法2&#xff09; 1.打開VScode后&#xff0c;依次點擊 文件 >> 首選項 >> 設置 2.打開設置后&#xff0c;依次點擊 文本編輯器 >> 文件&#xff08;或在搜索框直接搜索“files.autoGuessEnc…