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

正文內(nèi)容

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

2025-07-24 19:40 本頁面
 

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