国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于STM8S903K3的序列打螺絲夾具的軟件設(shè)計

2016-11-16 13:35蘇紅衛(wèi)
電腦知識與技術(shù) 2016年25期
關(guān)鍵詞:軟件設(shè)計

蘇紅衛(wèi)

摘要:螺絲是緊固件的通用說法,是日常生活中不可或缺的工業(yè)必需品,目前多數(shù)產(chǎn)品上的螺絲仍是操作工手動鎖緊,如果需鎖緊螺絲數(shù)量較多的話,容易漏打、錯打。該文以C語言為編程語言,圍繞以STM8S903K3為主的硬件電路功能,對序列打螺絲夾具進行了軟件設(shè)計說明,文章首先提出了序列打螺絲夾具軟件設(shè)計的總體思路,然后對序列打螺絲夾具的主要功能函數(shù)進行了重點設(shè)計說明,最后對軟件設(shè)計調(diào)試結(jié)果進行說明。該軟件設(shè)計在硬件設(shè)計的基礎(chǔ)上進行了實驗調(diào)試和實際操作,并已投入實際應(yīng)用中,實際解決了螺絲數(shù)量較多時按統(tǒng)一順序鎖緊,防止錯打、漏打的問題,具備很大的推廣價值。

關(guān)鍵詞:軟件設(shè)計;序列夾具;順序鎖緊

中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 章編號:1009-3044(2016)25-0080-03

基于STM8S903K3的序列打螺絲夾具中功能的設(shè)定、螺絲鎖緊的選擇、信息數(shù)據(jù)的處理存儲、加工信息的顯示、工作數(shù)據(jù)通信、報警等一系列功能是根據(jù)STM8S903K3單片機的特點及硬件電路的設(shè)計而通過C語言編程來實現(xiàn)的。

1 系統(tǒng)軟件設(shè)計

1.1 系統(tǒng)設(shè)計總流程

開機后,先對各硬件端口進行初始化,然后讀取撥碼開關(guān)數(shù)據(jù)來確定需要鎖緊螺絲數(shù)目,之后按循序點亮指示燈,系統(tǒng)自檢(自檢中出現(xiàn)錯誤時會發(fā)出報警聲音提示錯誤);系統(tǒng)自檢后,RESET指示燈亮,為鎖緊螺絲做好準(zhǔn)備。

需要鎖緊螺絲工作時,先用螺絲刀碰觸RESET位置,第一個螺絲位置的指示燈亮,螺絲刀碰觸到第一個螺絲的導(dǎo)柱時產(chǎn)生signal in信號輸入單片機,單片機接收后將SET置1輸出電動起子允許工作信號,當(dāng)螺絲擰到要求的扭矩后,電動起子控制器會發(fā)出一個BZ信號給單片機,單片機再接收到該信號后,關(guān)閉單片機輸出信號并通過點亮FirstHC595SendData函數(shù)第2個螺絲的提示燈,重復(fù)上述動作。

設(shè)計中有一個三位的撥碼開關(guān)用來設(shè)置總螺絲的數(shù)量,例如設(shè)置為48個螺絲,那么在第48個螺絲鎖緊后,RESET指示燈亮,返回初始化狀態(tài)(此時RESET位置沒有鎖螺絲確認(rèn)信號,即只有螺絲刀觸碰到該位置后才點亮第1個螺絲指示燈)。

在鎖螺絲時,假如應(yīng)該鎖第3個螺絲,而實際上螺絲刀在其他螺絲位置時,此時螺絲刀不啟動,并發(fā)出報警聲音提示錯誤。

程序設(shè)計總流程圖如圖1所示:

1.2 硬件初始化操作

系統(tǒng)的硬件進行初始化包括系統(tǒng)時鐘配置初始化Clock_init()、指示燈端口初始化GPIO_LEDInit()和功能端口(編碼器端口、蜂鳴器端口、BZ端口、SET端口、RESET端口、Signal In端口、功能選擇端口、74HC595端口)初始化General_IO_init()。截取程序段如下:

void General_IO_init(void)

{ /**編碼器端口初始化**/

GPIO_Init(GPIOB,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, GPIO_MODE_IN_PU_NO_IT);

GPIO_Init(GPIOC,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5,GPIO_MODE_IN_PU_NO_IT);

GPIO_Init(GPIOE, GPIO_PIN_5,GPIO_MODE_IN_PU_NO_IT);

/**蜂鳴器端口初始化**/

GPIO_Init(GPIOA, GPIO_PIN_1, GPIO_MODE_OUT_PP_HIGH_FAST);

/**BZ端口初始化**/

GPIO_Init(GPIOC, GPIO_PIN_6, GPIO_MODE_IN_PU_IT); /**改為中斷方式**/

/**SET端口初始化**/

GPIO_Init(GPIOC, GPIO_PIN_7, GPIO_MODE_OUT_PP_LOW_FAST);

/**ER BZ端口初始化**/

GPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_IN_PU_IT); /**改為中斷方式**/

/**RESET端口初始化---RESET螺絲刀控制器**/

GPIO_Init(GPIOB, GPIO_PIN_4, GPIO_MODE_OUT_PP_LOW_FAST);

/**為了不影響PC6的中斷響應(yīng),特意初始化沒有使用的PC0管腳**/

GPIO_Init(GPIOC, GPIO_PIN_0, GPIO_MODE_OUT_PP_HIGH_FAST);

/**signal_in端口初始化**/

GPIO_Init(GPIOA, GPIO_PIN_2, GPIO_MODE_IN_PU_NO_IT);

/**功能選擇端口初始化**/ /**74HC595端口初始化**/

GPIO_Init(GPIOD,GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7, GPIO_MODE_OUT_PP_HIGH_FAST);

/**Reset_IO CLKIN**/

GPIO_Init(GPIOD, GPIO_PIN_0, GPIO_MODE_OUT_PP_HIGH_FAST);

}

1.3 讀撥碼開關(guān)的流程

程序中,利用ReadCounterNum函數(shù)讀取撥碼開關(guān)的數(shù)據(jù)設(shè)定值,分辨對撥碼開關(guān)的個位、十位、百位數(shù)據(jù)進行設(shè)置和讀取。讀取個位數(shù)據(jù)程序段如下:

/**讀取個位數(shù)據(jù)**/

bit_status = GPIO_ReadInputPin(GPIOC, GPIO_PIN_2); //DC1-8 8

if (bit_status == RESET) //SET or RESET

wCodeNum +=8; }

bit_status = GPIO_ReadInputPin(GPIOC, GPIO_PIN_3); //DC1-4 4

if (bit_status == RESET) //SET or RESET

wCodeNum +=4;

bit_status = GPIO_ReadInputPin(GPIOC, GPIO_PIN_4); //DC1-2 2

if (bit_status == RESET) //SET or RESET

wCodeNum +=2;

bit_status = GPIO_ReadInputPin(GPIOC, GPIO_PIN_5); //DC1-1 1

if (bit_status == RESET) //SET or RESET

wCodeNum +=1;

對于十位數(shù)據(jù)和百威數(shù)據(jù)的讀取流程與個位數(shù)據(jù)的讀取一致,只是對應(yīng)位數(shù)據(jù)不同,十位數(shù)據(jù)對應(yīng)位數(shù)據(jù)分別是128、64、32、16,百位數(shù)據(jù)對應(yīng)位數(shù)據(jù)分別是2048、1024、512、256。

1.4 Signal in 信號的處理

Signal in 信號的處理通過TimeDo函數(shù)來實現(xiàn)。TimeDo函數(shù)中,每500ms掃描一次signal in信號,如果signal in信號來自RESET銅柱,那么保存銅柱位置,關(guān)閉蜂鳴器,并且點亮第一個螺絲位置的指示燈;如果signal in信號來自第1-47個螺絲,那么置位SET信號,關(guān)閉蜂鳴器,開啟電動起子開始鎖緊螺絲,如果signal in信號來自第48個螺絲,就點亮RESET銅柱位置的指示燈;另外,從硬件設(shè)計中我們可知,Signal in 信號是當(dāng)電動起子碰觸治具板上螺絲孔位置的銅柱產(chǎn)生的,如果電動起子碰觸錯誤位置的螺絲孔位置的銅柱則開啟蜂鳴器發(fā)出報警提示的聲音,比如,當(dāng)前待打螺絲位置為2,如果電動起子碰觸螺絲孔2位置以外的銅柱,則蜂鳴器發(fā)出報警提示音,提醒操作人員打錯螺絲位置。其程序流程圖如圖2所示。

1.5 BZ信號的處理流程

BZ信號的處理流程如圖2所示。螺絲鎖緊到位后電動起子控制器發(fā)出BZ信號,MCU控制模塊接受到BZ信號后進入中斷處理子程序中,中斷處理程序包括關(guān)中斷、SET信號清零、關(guān)閉電動起子,如果鎖緊的螺絲是1-47個,那么點亮下一個位置螺絲的指示燈,如果鎖緊的螺絲是最后一個即第48個,那么點亮RESET指示燈,然后開中斷為下一個signal in信號的讀取做好準(zhǔn)備。

1.6 74HC595數(shù)據(jù)存儲器數(shù)據(jù)的讀取

通過HC595SendData函數(shù)可發(fā)送1到6個字節(jié)的數(shù)據(jù),這些數(shù)據(jù)用來點亮和關(guān)閉對應(yīng)個螺絲位置的指示燈、獲取某個位置螺絲是否有電動起子的輸入信號,最終將串行輸入數(shù)據(jù)并行輸出。傳送1個字節(jié)的流程如圖3所示。

2 程序下載調(diào)試

本設(shè)計所使用的編譯環(huán)境是ST Visual Develop,編譯環(huán)境開發(fā)界面如圖4所示。程序使用ST-LINK工具下載,下載軟件是ST Visual Programmer,程序下載界面如圖5所示。

程序調(diào)試過程中,還有個bug在里面,BUG: 當(dāng)打完第一個銅柱對應(yīng)的螺絲的時候,在打第二個螺絲時出現(xiàn)告警提示音,通過DEBUG程序發(fā)現(xiàn),在處理完前面打螺絲流程時遺漏了保存當(dāng)前所打螺絲銅柱位置信息,導(dǎo)致后面判斷中出現(xiàn)位置錯誤而開啟蜂鳴器進行告警提示。

3 結(jié)束語

本文以C語言為編程語言,圍繞以STM8S903K3為主的硬件電路功能,對序列打螺絲夾具中功能的設(shè)定、螺絲鎖緊的選擇、信息數(shù)據(jù)的處理存儲、加工信息的顯示、工作數(shù)據(jù)通信、報警等一系列功能進行了軟件設(shè)計說明。該軟件設(shè)計在硬件設(shè)計的基礎(chǔ)上進行了實驗調(diào)試和實際操作,并已投入實際應(yīng)用中,實際解決了螺絲數(shù)量較多時按統(tǒng)一順序鎖緊,防止錯打、漏打的問題并且具備提示、報警等功能,從實踐結(jié)果和參數(shù)來看,該裝置很好地解決了生產(chǎn)中的實際問題,具備很大的推廣價值。

參考文獻(xiàn):

[1] 王雷. 基于STM8S903K3的電動自行車控制器設(shè)計與實現(xiàn)[D]. 南京: 南京理工大學(xué), 2014.

[2] 陳方里, 欽仿仿. 基于STM8S的大功率BLDC驅(qū)動系統(tǒng)設(shè)計[J]. 技術(shù)與市場, 2015(10):9-10.

[3] 王強. 無刷直流電機無位置傳感器起動控制與逆變器故障診斷研究[D]. 南京: 南京航空航天大學(xué), 2015.

[4] 譚浩強. C語言程序設(shè)計[M].2版.北京: 清華大學(xué)出版社, 1999.

[5] STM8S903手冊[Z]. June 2009.

[6] 74HC595 手冊[Z]. 2003 Jun 25.

[7] A7C系列小型撥碼開關(guān)參數(shù)手冊[Z].

猜你喜歡
軟件設(shè)計
基于單片機SPCE061A的字幕機點陣式字母電子顯示屏的設(shè)計制作