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

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于單片機(jī)的電子秤設(shè)計(jì)(編輯修改稿)

2025-02-12 22:46 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 模塊、按鍵與顯示模塊組成。 主控制器電路 主控制器是 STC12C5A60S2 單片機(jī),其外圍電路簡(jiǎn)單,只需要加上晶振電路和電源就可以工作。主控制器電路如圖 5所示。 圖 5 主控制系統(tǒng) 11 傳感器放大電路 傳感器放大電路由兩級(jí)組成,前級(jí)由兩個(gè)同相比例運(yùn)算電路組成,后級(jí)是一個(gè)差動(dòng)比例運(yùn)算電路。傳感器信號(hào)首先進(jìn)過前級(jí)進(jìn)行初步放大,接著進(jìn)入后級(jí)。由于前級(jí)的對(duì)稱性直接影 響后級(jí)的共模抑制比,考慮到元件阻值的誤差, R2,R4選用多圈精密可調(diào)電阻。為了提高后級(jí)對(duì)共模信號(hào)的抑制,反饋電阻 R3也采用精密多圈可調(diào)電阻。傳感器放大電路如圖 6所示。 圖 6 傳感器放大電路 顯示電路 1602液晶模塊的引腳連線如圖 7。其中,第 2腳為液晶的驅(qū)動(dòng)電源;第三腳 VL為液晶的對(duì)比度調(diào)節(jié),通過在 VCC和 GND之間接一個(gè) 10K多圈可調(diào)電阻,中間抽頭接 VL,可實(shí)現(xiàn)液晶對(duì)比度的調(diào)節(jié);液晶的控制線 RS、 R/W、 E 分別接單片機(jī)的 、 、 ;數(shù)據(jù)口接在單片機(jī)的 P2 口; BL+、 BL為液晶背光電源。 12 圖 7 1602 液晶模塊的接線圖 1602液晶模塊的初始化過程: 延遲 15ms 寫指令 38H(不檢測(cè)忙信號(hào)) 延遲 5ms 寫指令 38H(不檢測(cè)忙信號(hào)) 延遲 5ms 寫指令 38H(不檢測(cè)忙信號(hào)) (以后每次寫指令、讀 /寫數(shù)據(jù)操作之前均需檢測(cè)忙信號(hào)) 寫指令 38H:顯示模式設(shè)置 寫指令 08H:顯示關(guān)閉 寫指令 01H:顯示清屏 寫指令 06H:顯示光標(biāo)移動(dòng)設(shè)置 寫指令 0CH:顯示開及光標(biāo)設(shè)置 13 1602液晶模塊的 讀操作時(shí)序如圖 8 所示。 圖 8 1602 液晶模塊的讀操作時(shí)序 1602液晶 模塊的 寫操作時(shí)序如圖 9 所示。 圖 9 1602 液晶模塊的寫操作時(shí)序 14 4 軟件設(shè)計(jì) 系統(tǒng)應(yīng)用程序組成 本設(shè)計(jì)采 用 C語言 編程,編譯環(huán)境為 keil UV3。 keil c51 是美國(guó) Keil Software 公司出品的 51 系列兼容單片機(jī) C 語言軟件開發(fā)系統(tǒng),和匯編相比, C 在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。 Keil c51 軟件提供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全 Windows 界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到 keil c51 生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語言的優(yōu)勢(shì)。 Keil C51 可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開發(fā)流程。開發(fā)人員可用IDE 本身或其它編輯器編輯 C 或匯編源文件,然后分別有 C51 及 A51 編輯器編譯連接生成單片機(jī)可執(zhí)行的二進(jìn)制文件( .HEX),然后通過單片機(jī)的燒寫軟件將 HEX 文件燒入單片機(jī)內(nèi)。 軟件主要三個(gè)方面:一是初始化系統(tǒng);二是按鍵檢測(cè);三是數(shù)據(jù)采集、數(shù)據(jù)處理并進(jìn)行顯示。這三個(gè)方面的操作分別在主程序中來進(jìn)行。程序采用模 塊化的結(jié)構(gòu),這樣程序結(jié)構(gòu)清楚,易編程和易讀性好,也便于調(diào)試和修改。程序結(jié)構(gòu)如圖 10所示。 圖 10 程序結(jié)構(gòu) 15 主程序流程圖 系統(tǒng)程序固化在 STC12C5A60S2內(nèi)部的 flash存儲(chǔ)器中,分為主程序和若干子程序。主程序的功能是系統(tǒng)初始化,管理和調(diào)用各個(gè)子程序。本設(shè)計(jì)的程序流程圖如圖 11所示。 圖 11 程序流程圖 AD 采樣程序塊 本文設(shè)計(jì)的 STC12C5A60S2 片內(nèi) AD程序如下: include // // SPEED1 SPEED0 A/D 轉(zhuǎn)換所需時(shí)間 define AD_SPEED 0x60 // 0110,0000 1 1 90 個(gè)時(shí)鐘周期轉(zhuǎn)換一次 , // CPU工作頻率 21MHz 時(shí) A/D轉(zhuǎn)換速度約 300KHz //define AD_SPEED 0x40 //0100,0000 1 0 140 個(gè)時(shí)鐘周期轉(zhuǎn)換一次 //define AD_SPEED 0x20 //0010,0000 0 1 280 個(gè)時(shí)鐘周期轉(zhuǎn)換一次 16 //define AD_SPEED 0x00 //0000,0000 0 0 420 個(gè)時(shí)鐘周期轉(zhuǎn)換一次 // unsigned int get_AD_result(unsigned char channel) { unsigned char AD_finished=0。 //存儲(chǔ) A/D 轉(zhuǎn)換標(biāo)志 ADC_RES = 0。 //A/D 轉(zhuǎn)換結(jié)果高 8 位 ADC_RESL = 0。 //A/D 轉(zhuǎn)換結(jié)果低 2 位 channel amp。= 0x07。 //0000,0111 清 0高 5位 ADC_CONTR = AD_SPEED。 _nop_()。 ADC_CONTR|=0xE0。 //1110,0000清 ADC_FLAG, ADC_START位和低三位 ADC_CONTR |= channel。 //選擇 A/D 當(dāng)前通道 _nop_()。 ADC_CONTR |= 0x80。 //啟動(dòng) A/D 電源 delay(1)。 //使輸入電壓達(dá)到穩(wěn)定 ADC_CONTR |= 0x08。 //0000,1000 令 ADCS = 1, 啟動(dòng) A/D轉(zhuǎn)換 AD_finished = 0。 while (AD_finished == 0 ) //等待 A/D轉(zhuǎn)換結(jié)束 { AD_finished = (ADC_CONTR amp。 0x10)。 //0001,0000 測(cè)試 A/D 轉(zhuǎn)換結(jié)束否 } ADC_CONTR amp。= 0xE7。 //1111,0111 清 ADC_FLAG 位 , 關(guān)閉 A/D轉(zhuǎn)換 return (ADC_RES2|ADC_RESL)。//返回轉(zhuǎn)換后的結(jié)果 } 液晶顯示程序塊 本文設(shè)計(jì)的 1602液晶操作程序如下: /***************************************************** 函 數(shù) 名: WriteDataLCD() 功 能:向 1602寫數(shù)據(jù) 說 明: 入口參數(shù): WDLCD 17 返 回 值:無 *****************************************************/ void WriteDataLCD(unsigned char WDLCD) { ReadStatusLCD()。 //檢測(cè)忙 LCD_Data = WDLCD。 LCD_RS = 1。 LCD_RW = 0。 LCD_E = 0。 //若晶振速度太高可以在這后加小的延時(shí) LCD_E = 0。 LCD_E = 0。 //延時(shí) LCD_E = 1。 } /***************************************************** 函 數(shù) 名: WriteCommandLCD() 功 能:向 1602寫指令 說 明: 入口參數(shù): WDLCD, BuysC 返 回 值:無 *****************************************************/ void WriteCommandLCD(unsigned char WCLCD,BuysC) //BuysC為 0時(shí)忽略忙檢測(cè) { if (BuysC) ReadStatusLCD()。 //根據(jù)需要檢測(cè)忙 LCD_Data = WCLCD。 LCD_RS = 0。 LCD_RW = 0。 LCD_E = 0。 LCD_E = 0。 LCD_E = 0。 LCD_E = 1。 } /***************************************************** 函 數(shù) 名: ReadDataLCD() 功 能:從 1602讀數(shù)據(jù) 18 說 明: 入口參數(shù):無 返 回 值: LCD_Data *****************************************************/ unsigned char ReadDataLCD(void) { LCD_RS = 1。 LCD_RW = 1。 LCD_E = 0。 LCD_E = 0。 LCD_E = 0。 LCD_E = 1。 return(LCD_Data)。 } /***************************************************** 函 數(shù) 名: ReadStatusLCD() 功 能:讀取 1602 狀態(tài) 說 明:如果為忙,則一直等到非忙為止 入口參數(shù):無 返 回 值: LCD_Data *****************************************************/ unsigned char ReadStatusLCD(void) { LCD_Data = 0xFF。 LCD_RS = 0。 LCD_RW = 1。 LCD_E = 0。 LCD_E = 0。 LCD_E = 0。 LCD_E = 1。 delay_18B20(200)。 // Delay5Ms()。 //檢測(cè)忙信號(hào) proteus 仿真時(shí), 延遲 5MS,關(guān)閉 while循環(huán) while (LCD_Dataamp。Busy) //硬件使用時(shí),不延遲,打開 while循環(huán) return(LCD_Data)。 } 19 /***************************************************** 函 數(shù) 名: LCDInit() 功 能: 1602初始化 說 明: 入口參數(shù):無 返 回 值:無 *****************************************************/ void LCDInit(void) { LCD_Data = 0。 WriteCommandLCD(0x38,0)。 //三次顯示模式設(shè)置,不檢測(cè)忙信號(hào) Delay5Ms()。 WriteCommandLCD(0x38,0)。 Delay5Ms()。 WriteCommandLCD(0x38,0)。 Delay5Ms()。 WriteCommandLCD(0x38,1)。 //顯示模式設(shè)置 ,開始要求每次檢測(cè)忙信號(hào) WriteCommandLCD(0x08,1)。 //關(guān)閉顯示 WriteCommandLCD(0x01,1)。 //顯示清屏 WriteCommandLCD(0x06,1)。 // 顯示光標(biāo)移動(dòng)設(shè)置 WriteCommandLCD(0x0C,1)。 // 顯示開及光標(biāo)設(shè)置 } /***************************************************** 函 數(shù) 名: DisplayOneChar() 功 能:按指定位置在 1602顯示一個(gè)字符 說 明: X為列, Y 為行, DData為字符 入口參數(shù): X, Y, DData 返 回 值:無 *****************************************************/ //按指定位置顯示一個(gè)字符 void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData) { Y amp。= 0x1。 X amp。= 0xF。 //限制 X不能大于 15, Y不能大于 1 20 if (Y) X |= 0x40。 //當(dāng)要顯示第二行時(shí)地址碼 +0x40。 X |= 0x80。 //算出指令碼 WriteCommandLCD(X, 0)。 //這里不檢測(cè)忙信號(hào),發(fā)送地址碼 WriteDataLCD(DData)。 } /*****************************
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1