freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機的智能充電器畢業(yè)設(shè)計論文(編輯修改稿)

2025-07-24 19:40 本頁面
 

【文章內(nèi)容簡介】 oid)。 這段程序用于模式1充電時Menu按鍵狀態(tài)的檢測,在模式1充電方式中,Menu鍵通過連續(xù)按的方式改變設(shè)置狀態(tài),分別是設(shè)置時、設(shè)置分和確定,在不同的設(shè)置狀態(tài)返回全局變量g_funtion不同的標(biāo)志位,同時程序還有一個巧妙的設(shè)計,通過標(biāo)志位g_s判斷按鍵按下的狀態(tài),防止長按Menu鍵造成的功能跳躍。 倒計時子程序void timer(void)。 這段程序用于模式1狀態(tài)下所有功能的實現(xiàn),包括時間設(shè)置、倒計時功能和倒計時結(jié)束的操作,具體操作根據(jù)全局變量g_funtion的值。g_funtion=OK時為時間設(shè)置提示界面;g_funtion=SetH和SetM分別為小時和分的設(shè)置,其中時最大值為6小時;g_funtion=Start和Finish分別為開始計時和結(jié)束計時的標(biāo)志。 顯示子程序void Wele(void)。void LCM1602_Init(void)。void LCM1602_ClrScreen(void)。void LCM1602_SendCmd(uchar cmd)。void LCM1602_SendData(uchar dat)。uchar LCM1602_ReadData(void)。void LCM1602_ChkBusy(void)。void LCM1602_PrintStr(uchar x,uchar y,char* str)。void display(int H,int M,int S)。 wele子程序定義了系統(tǒng)初始化時的歡迎界面。LCM1602系列子程序相當(dāng)于1602液晶顯示屏的底層驅(qū)動程序,通過定義驅(qū)動引腳及讀寫狀態(tài)時引腳的邏輯電平變化達到通過調(diào)用程序就能顯示任何字符的功能,并且方便任何程序調(diào)用。display顯示子程序負責(zé)除了初始化界面以外所有狀態(tài)的顯示,同倒計時子程序一樣,該子程序通過全局變量g_funtion的值來判斷該顯示什么。 A/D轉(zhuǎn)換子程序void ADCInit(void)。uint16 ADCValue(uint8 channel)。uint16 ADCMid(uint8 channel)。uint16 ADCAve(uint8 channel, uint8 n)。 ADCInit子程序負責(zé)A/D通道的初始化,包括采樣時間和頻率的設(shè)置和采樣分辨率的設(shè)置;ADCValue子程序負責(zé)獲取A/D通道轉(zhuǎn)換的結(jié)果;ADCMid子程序負責(zé)將A/D通道轉(zhuǎn)換的結(jié)果進行中值濾波;ADCAve子程序負責(zé)將中值濾波之后的數(shù)據(jù)再進行n次均值濾波,并輸出最后結(jié)果。 第五章 調(diào)試 硬件調(diào)試硬件調(diào)試時,可先檢查印制電路板及焊接的質(zhì)量情況,在檢查無誤后,可通電檢查LCD 顯示器的顯示狀態(tài)。單片機系統(tǒng)的硬件和軟件調(diào)試相互密切聯(lián)系,許多硬件錯誤是在軟件調(diào)試中發(fā)現(xiàn)的,但是一般還是盡可能地先排除硬件故障后,再進行聯(lián)機調(diào)試。 靜態(tài)測試在樣機加電之前,首先要進行靜態(tài)測試,主要內(nèi)容有:1.檢查線路。通過目測和使用萬用表,檢查樣機連線的正確性,注意各電路板之間的連線完好。 2.核對元器件。檢查所有的元器件是否有插錯或損壞現(xiàn)象。3.檢查電源系統(tǒng)。將樣機中所有芯片都從插座上拔下,給樣機加電。檢查完整流穩(wěn)壓電路后,逐一檢查各芯片插座上電源引腳的電壓是否有異常情況。一切正常時,斷電,插上一個芯片,重復(fù)檢查電壓,并試摸該芯片是否發(fā)熱。電源電壓正常,芯片沒有過熱現(xiàn)象。當(dāng)插上某個芯片后對電源系統(tǒng)沒有影響。4.外圍電路調(diào)試。將所有能進行硬件單獨調(diào)試的外圍電路如檢測信號放大 電路、輸出驅(qū)動電路等都調(diào)試好。進行局部電路調(diào)試,提供有關(guān)模擬信號或開關(guān)信號。 聯(lián)機調(diào)試聯(lián)機調(diào)試是軟硬件結(jié)合調(diào)試,即利用簡單的調(diào)試程序來調(diào)試硬件系統(tǒng)。進行聯(lián)機調(diào)試,用專用仿真插頭將樣機和仿真器連接起來,分別打開樣機和仿真器的電源,按以下步驟進行具體調(diào)試: 1.測試 I/O 口和 I/O 設(shè)備。對于單片機本身的輸出口,用仿真器內(nèi)部特殊功能寄存器修改命令將數(shù)據(jù)寫入輸出口或運行一段給輸出口賦值的程序, 然后檢查輸出口的相應(yīng)狀態(tài)及所接設(shè)備的狀態(tài),如與寫入的內(nèi)容一致,說明輸出口及輸出設(shè)備工作正常。對于單片機本身的輸入口,通過輸入設(shè)備給輸入口設(shè)置一定的狀態(tài),然后用讀特殊功能寄存器命令讀出相應(yīng)輸入接口寄存器的狀態(tài),與設(shè)定的狀態(tài)一致,輸入口工作正常。擴展I/O口大多是可編程的。檢查時先向其控制(命令)寄存器寫入控制字,設(shè)定接口的工作狀態(tài),然后再用外部數(shù)據(jù)存儲器讀寫命令來檢查 I/O 口的狀態(tài)。I/O 口狀態(tài)與讀寫數(shù)據(jù)一致,工作正常。 2.試驗預(yù)充、充電保護、自動斷電和充電完成報警提示功能,借助程序進行。 軟件調(diào)試軟件調(diào)試是在編譯器下進行的。首先要將用C語言編寫的源程序進行編輯、編譯,變成目標(biāo)程序(機器代碼程序),然后才能調(diào)試,最后可結(jié)合硬件實時調(diào)試。因此,軟件調(diào)試實際上可分為編輯、編譯和調(diào)試兩部分。本次設(shè)計使用的是飛思卡爾單片機開發(fā)軟件CodeWarrior Development Studio for S12(X) 。應(yīng)用程序應(yīng)分成若干個功能模塊來編寫和調(diào)試,單個程序模塊都調(diào)試通過后,將它們組合起來進行系統(tǒng)統(tǒng)調(diào)。模塊程序從調(diào)試方法來說分成兩類情況。一類是各種計算程序已經(jīng)代碼轉(zhuǎn)換程序、靜態(tài) I/O 程序。這類程序如果不能正常運行,程序中的錯誤是靜態(tài)的固定的錯誤,因此可以用單拍或帶斷點運行方式來調(diào)試。另一類是I/O 實時處理程序和通訊程序。調(diào)試這類程序不能用單拍或慢速斷點方式,而必須采用全速斷點或全速連續(xù)運行方式。這是因為實時事件的發(fā)生是隨機的或不能停止的。如果有問題,需要從硬件和軟件兩個方面進行檢查和解決。 系統(tǒng)調(diào)試當(dāng)硬件調(diào)試和軟件分模塊調(diào)試完成以后,就可以進行系統(tǒng)調(diào)試,在系統(tǒng)調(diào)試時,應(yīng)將全部硬件電路都接上,應(yīng)用程序也都組合好,進行全系統(tǒng)軟硬件的統(tǒng)調(diào)。系統(tǒng)調(diào)試的任務(wù)是排除軟硬件中的殘留錯誤,使整個微機系統(tǒng)能夠完成預(yù)定的工作任務(wù),達到要求的技術(shù)性能指標(biāo)。在系統(tǒng)調(diào)試中要注意以下幾點:,先試空載,空載正常后在試驗負載情況。,避免遺漏。仔細調(diào)整有關(guān)軟件或硬件,使檢測和控制達到要求的精度。,仿真器采用全速斷點或連續(xù)運行方式,在綜合調(diào)試的最后階段應(yīng)使用樣機中的晶振。,以考驗硬件部分的穩(wěn)定性。 結(jié)束語本次設(shè)計以充電芯片MAXl898的使用為主體,利用單片機配合實現(xiàn)智能化充電的便攜設(shè)備充電器。目前,充電電池的種類繁多,因此在充電器的方案創(chuàng)建時需要針對不同的電池選擇不同的充電芯片。本次設(shè)計實現(xiàn)的是單節(jié)鋰離子電池充電器,因此選用了芯片MAXl898作為充電芯片。設(shè)計在選擇芯片后進行硬件和軟件設(shè)計,最后進行調(diào)試和檢測。在本次設(shè)計過程中,需著重把握的是:預(yù)充、快充、滿充等充電方式的工作原理;MAXl898 的充電狀態(tài)指示輸出信號 在本設(shè)計中的應(yīng)用;在整體設(shè)計中自動斷電功能的實現(xiàn);MAXl898在外圍電路的設(shè)計中,其中包括設(shè)置充電電流的電阻和充電時間的電容數(shù)值的選取以及如何在單片機程序中判斷出充電完成還是充電出錯,并做出相應(yīng)的處理。采用C語言設(shè)計單片機應(yīng)用系統(tǒng)程序時,首先是要盡可能地采用結(jié)構(gòu)化的程序設(shè)計方法,這樣就使整個應(yīng)用系統(tǒng)程序結(jié)構(gòu)清晰,易于調(diào)試和維護。雖然設(shè)計的最終結(jié)果與最初的設(shè)計目標(biāo)有一定的差距,有些功能還沒有來的及實現(xiàn),但是智能充電器在生活中有十分重要的推廣意義,就目前實現(xiàn)的功能來說,智能充電器還有很大的發(fā)展空間,未來的智能充電器功能將更加完善,充電過程將更加智能,并且在通用性上有更好的表現(xiàn)。這次設(shè)計的過程使我積累了許多寶貴的經(jīng)驗,無論是從硬件設(shè)計上還是程序編寫上的能力都有很大的提高。 附 錄附錄A 系統(tǒng)設(shè)計源代碼include /* mon defines and macros */include /* derivativespecific definitions */typedef unsigned char uint8。 // 8 位無符號數(shù)typedef unsigned short int uint16。 // 16 位無符號數(shù)typedef unsigned long int uint32。 // 32 位無符號數(shù)typedef char int8。 // 8 位有符號數(shù)typedef short int int16。 // 16 位有符號數(shù) typedef int int32。 // 32 位有符號數(shù) void Delay_2us(int)。void Delay_10us(int)。 void SetBusCLK_32M(void)。void LCM1602_Init(void)。void LCM1602_ClrScreen(void)。void LCM1602_SendCmd(uchar cmd)。void LCM1602_SendData(uchar dat)。uchar LCM1602_ReadData(void)。void LCM1602_ChkBusy(void)。void LCM1602_PrintStr(uchar x,uchar y,char* str)。void Pit_Init(void)。void Wele(void)。void timer(void)。void keyscan(void)。void display(int H,int M,int S)。void battery_detect(void)。define LCM1602_DATA_DIR DDRA define LCM1602_CTRL_DIR DDRBdefine LCM1602_RS_1() {PORTB_PB3=1。}define LCM1602_RS_0() {PORTB_PB3=0。} define LCM1602_RW_1() {PORTB_PB4=1。} define LCM1602_RW_0() {PORTB_PB4=0。} define LCM1602_EN_1() {PORTB_PB5=1。} define LCM1602_EN_0() {PORTB_PB5=0。} define LCM1602_DATA PORTAdefine K1 PORTK_PK0define K2 PORTK_PK1define K3 PORTK_PK2define OK 0define SetH 1define SetM 2define Start 3define Finish 1 void ADCInit(void)。uint16 ADCValue(uint8 channel)。uint16 ADCMid(uint8 channel)。uint16 ADCAve(uint8 channel, uint8 n)。void IntToStr(int a, uchar *str)。int ADtoVOL(uint16 ad)。int g_H=0。 // 時間時int g_M=0。 // 時間分int g_S=20。 // 時間秒int g_10ms=0。 // 定時器計數(shù)int g_funtion=0。 // 功能int g_s=1。 // 確定按鈕標(biāo)志int g_bi=0。 // 電池檢測標(biāo)志int g_bf=0。 // 電池狀態(tài)標(biāo)志int g_mf=0。/**********************************************************************/// 主程序 *//**********************************************************************/void main(void) { int l_mf=0。 DisableInterrupts。 // 禁用中斷 SetBusCLK_32M()。 // 系統(tǒng)時鐘設(shè)定 LCM1602_Init()。 // LCD1602初始化 ADCInit()。 // AD功能初始化 Pit_Init()。 // 定時器初始化 EnableInterrupts。 // 使能中斷 PITCFLMT_PITE=0。 // 關(guān)閉定時器 Wele()。 // 初始化界面 for(。) { battery_detect()。 if(g_mf==0) //默認模式 0 電池充電模式 { if(g_bf==1) //檢測到電池 { PITCFLMT_PITE=0。 g_H=0。 g_M=0。 g_S=30。 if(K2==OK) { Delay_10us(20)。 if(K2==OK) {
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1