• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

      蘇紅衛(wèi)

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

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

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

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

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

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

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

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

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

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

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

      1.2 硬件初始化操作

      系統(tǒng)的硬件進(jìn)行初始化包括系統(tǒng)時(shí)鐘配置初始化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),特意初始化沒(méi)有使用的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 讀撥碼開(kāi)關(guān)的流程

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

      /**讀取個(gè)位數(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;

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

      1.4 Signal in 信號(hào)的處理

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

      1.5 BZ信號(hào)的處理流程

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

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

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

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

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

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

      3 結(jié)束語(yǔ)

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

      參考文獻(xiàn):

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

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

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

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

      [5] STM8S903手冊(cè)[Z]. June 2009.

      [6] 74HC595 手冊(cè)[Z]. 2003 Jun 25.

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

      猜你喜歡
      軟件設(shè)計(jì)
      CAN總線通信技術(shù)在電梯監(jiān)控系統(tǒng)中的應(yīng)用
      基于單片機(jī)SPCE061A的字幕機(jī)點(diǎn)陣式字母電子顯示屏的設(shè)計(jì)制作
      商情(2016年42期)2016-12-23 16:56:26
      電力參數(shù)監(jiān)測(cè)系統(tǒng)研究
      基于STC單片機(jī)的廚房智能安全管控系統(tǒng)的設(shè)計(jì)
      基于Java串口通訊的檢測(cè)系統(tǒng)程序設(shè)計(jì)
      JCI標(biāo)準(zhǔn)下發(fā)送調(diào)配部軟件設(shè)計(jì)及應(yīng)用
      一種VHDL語(yǔ)言代碼重用的方法
      科技視界(2016年20期)2016-09-29 13:33:02
      系統(tǒng)工程方法在計(jì)算機(jī)軟件設(shè)計(jì)中的應(yīng)用分析
      基于Java語(yǔ)言的手機(jī)軟件開(kāi)發(fā)技術(shù)分析
      計(jì)算機(jī)軟件可維護(hù)性路徑研究
      简阳市| 达尔| 武冈市| 潼南县| 临桂县| 土默特左旗| 专栏| 孟州市| 吴忠市| 大田县| 上虞市| 乌拉特中旗| 木兰县| 静安区| 临洮县| 苍南县| 沭阳县| 长寿区| 胶州市| 云南省| 台南市| 剑川县| 柘城县| 当阳市| 大竹县| 鄯善县| 夏邑县| 武鸣县| 遵义市| 宁远县| 泸西县| 德惠市| 武宣县| 扬州市| 团风县| 来安县| 民县| 浮山县| 靖边县| 龙门县| 射洪县|