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

正文內(nèi)容

可控硅動(dòng)態(tài)無(wú)功功率補(bǔ)償裝置-資料下載頁(yè)

2025-06-26 20:58本頁(yè)面
  

【正文】 r(CS5463_No,0x08)。//讀電壓通道AC增益寄存器值 ii=spi_wr_mand(CS5463_No,0xce)。 //電流通道AC增益校準(zhǔn)命令 do { Phase_A[1]=spi_rd_register(CS5463_No,0x1e)。 _nop_()。 _nop_()。 } while((Phase_A[1]amp。0x00800000)==0x00)。 Phase_A[1]=spi_rd_register(CS5463_No,0x04)。//讀電流通道AC增益寄存器值 } 人機(jī)交互軟件模塊 人機(jī)交互通常是完成機(jī)器與人之間的通信工作,人機(jī)交互軟件的質(zhì)量對(duì)于實(shí)現(xiàn)控制器的整體功能具有重要影響,本部分分別從液晶顯示、按鍵掃描、指示與報(bào)警、手動(dòng)/自動(dòng)切換等四部分詳細(xì)介紹其相關(guān)的軟件設(shè)計(jì)。液晶顯示軟件本控制器的數(shù)據(jù)顯示設(shè)計(jì)選用的是OCMJ4*8B中文液晶顯示模塊。在軟件編寫的過(guò)程中,主要分為基本驅(qū)動(dòng)函數(shù)的編寫、液晶顯示參數(shù)界面設(shè)計(jì)、液晶人機(jī)交互軟件設(shè)計(jì)。(1)基本驅(qū)動(dòng)函數(shù)的編寫根據(jù)本控制器中對(duì)液晶的使用,主要編寫了六個(gè)液晶使用的基本函數(shù)分別是:液晶的初始化,完成液晶的復(fù)位以及控制線信號(hào)的初始化;寫命令字函數(shù),完成向液晶模塊寫入一字節(jié)命令字任務(wù);清屏函數(shù),完成把屏幕顯示內(nèi)容全部清除的任務(wù);顯示漢字函數(shù),完成在屏幕指定的位置顯示一個(gè)漢字的任務(wù);顯示8*8 ASCII字符函數(shù),完成在屏幕指定的位置顯示一個(gè)8*8的ASCII字符的任務(wù);顯示8*16ASCII字符,實(shí)現(xiàn)在屏幕指定的位置顯示一個(gè)8*16的ASCII字符。主要程序函數(shù)如下:void lcd_clr(void)。void lcd_write(unsigned char dat)。void lcd_character(unsigned char xx,unsigned char yy,unsigned char qq,unsigned char ww)。void lcd_ascii8_16(unsigned char xx,unsigned char yy,unsigned char as)。 //void lcd_ascii8_8(unsigned char xx,unsigned char yy,unsigned char as)。 //顯示8*8ASCIIvoid lcd_bit(unsigned char xx,unsigned char yy)。 //顯示位點(diǎn)陣void lcd_byte(unsigned char xx,unsigned char yy,unsigned char bt)。 //顯示字節(jié)點(diǎn)陣void lcd_up(void)。 //上移void lcd_left(void)。 //左移void lcd_right(void)。 //右移液晶顯示參數(shù)界面設(shè)計(jì)這部分主要是在控制器在主程序的大循環(huán)里分屏顯示各個(gè)參數(shù),參數(shù)主要包括合相功率因數(shù)、投入組數(shù)、投入容量、電壓參數(shù)、電流參數(shù)、有功功率、無(wú)功功率、視在功率、諧波含量、A相功率因數(shù)、A相投入組數(shù)、A相投入容量、B相功率因數(shù)、B相投入組數(shù)、B相投入容量、C相功率因數(shù)、C相投入組數(shù)、C相投入容量等。這部分軟件的設(shè)計(jì)首先是完成各屏顯示子函數(shù)的編寫,在主循環(huán)的不斷地循環(huán)依次顯示。實(shí)現(xiàn)在控制器檢測(cè)參數(shù)、投切控制的過(guò)程中,不斷地顯示當(dāng)前的電網(wǎng)參數(shù)。主要程序函數(shù)如下:void LCD_CNo1(void)。 //補(bǔ)償參數(shù)顯示void LCD_CNo2(void)。 //三相功率參數(shù)顯示void LCD_CNo3(void)。 //功率因數(shù)及諧波參數(shù)void LCD_CNo4(void)。 //電壓參數(shù)void LCD_CNo5(void)。 //電流參數(shù)void LCD_CNo6(unsigned char L_No)。 //分相參數(shù)液晶人機(jī)交互軟件設(shè)計(jì)這部分主要包括兩種情況,一是根據(jù)按鍵的不同顯示相應(yīng)的內(nèi)容;二是需要報(bào)警時(shí)顯示報(bào)警信息。軟件可使用的功能鍵有7個(gè),使用不同的按鍵時(shí),需要液晶顯示相應(yīng)的內(nèi)容,這部分主要是通過(guò)判斷鍵值來(lái)實(shí)現(xiàn)的,根據(jù)不同的鍵值顯示相應(yīng)的內(nèi)容,比如按下設(shè)置按鍵,就進(jìn)入?yún)?shù)設(shè)置的界面。同一按鍵連續(xù)多次按下時(shí),比如左移、右移按鍵等,一般設(shè)置變量進(jìn)行累加來(lái)判斷要顯示的內(nèi)容。報(bào)警部分的設(shè)計(jì)主要是實(shí)現(xiàn)對(duì)電網(wǎng)電壓進(jìn)行監(jiān)視,當(dāng)電壓出現(xiàn)高于上極限時(shí),液晶顯示出報(bào)警信息。 按下設(shè)置鍵后液晶顯示內(nèi)容 電壓高于上極限屏幕報(bào)警顯示內(nèi)容按鍵掃描軟件鍵盤軟件的關(guān)鍵是鍵值的獲得,根據(jù)本次按鍵電路的設(shè)計(jì),軟件實(shí)現(xiàn)讀取鍵值主要是通過(guò)對(duì)74HC615的控制來(lái)實(shí)現(xiàn)的,通過(guò)芯片74HC165的功能表,就可以實(shí)現(xiàn)單片機(jī)對(duì)74HC165的控制,這樣就可以在使用的過(guò)程中判斷鍵值來(lái)實(shí)現(xiàn)不同的功能,同一鍵值的按鍵按下時(shí),需要的時(shí)候設(shè)置累加變量以示區(qū)別。 74HC165功能表輸入功能SH/LD CLK CLKIN L X X并行數(shù)據(jù)載入 H H X不變 H X H不變 H L 內(nèi)部寄存器數(shù)據(jù)從QH串行移出一位 H L內(nèi)部寄存器數(shù)據(jù)從QH串行移出一位指示燈與報(bào)警器 這部分軟件設(shè)計(jì)簡(jiǎn)單,在需要的時(shí)候只需要向控制端口發(fā)出控制信號(hào)就可以實(shí)現(xiàn),具體來(lái)說(shuō),當(dāng)電網(wǎng)電壓高于上限時(shí),過(guò)壓指示燈亮報(bào)警;當(dāng)電網(wǎng)電壓低于下限時(shí),欠壓指示燈亮報(bào)警。手動(dòng)/自動(dòng)切換手動(dòng)/自動(dòng)模式的轉(zhuǎn)換是通過(guò)判斷相應(yīng)的單片機(jī)I/O口信號(hào)來(lái)實(shí)現(xiàn)的。為了軟件的設(shè)計(jì)靈活性,當(dāng)判斷輸入I/O口電平變化后,直接跳轉(zhuǎn)到相應(yīng)的軟件處執(zhí)行。 實(shí)時(shí)時(shí)鐘和數(shù)據(jù)存儲(chǔ)軟件模塊在硬件電路設(shè)計(jì)時(shí)選擇了都有I2C通信總線的實(shí)時(shí)時(shí)鐘芯片和數(shù)據(jù)存儲(chǔ)器,不但節(jié)省單片機(jī)硬件資源,而且降低了軟件的開發(fā)難度,C8051F020單片機(jī)所帶的SMBus通信總線與I2C通信總線兼容,這樣只要設(shè)計(jì)好I2C通信的軟件,只需要改變一下訪問(wèn)的地址,就可以實(shí)現(xiàn)對(duì)兩個(gè)芯片的操作。SMBus通信軟件SMBus通信軟件主要包括單片機(jī)SMBus初始化、SMBus中斷服務(wù)程序、SMBus寫子函數(shù)和SMBus讀子函數(shù)四部分。在初始化子函數(shù)中主要完成SMBus控制寄存器設(shè)置、通信頻率設(shè)置、中斷設(shè)置以及總線初始狀態(tài)設(shè)置;SMBus中斷服務(wù)程序主要是完成一次I2C通信握手協(xié)議的實(shí)現(xiàn),一個(gè)完整的數(shù)據(jù)流主要包括開始信號(hào)、從機(jī)地址以及讀或?qū)懨?、從機(jī)子地址以及數(shù)據(jù),每一部分傳輸后都有反饋的握手信息,依次判斷傳輸是否成功。在一次I2C協(xié)議完整數(shù)據(jù)流傳輸?shù)倪^(guò)程中,中斷發(fā)生多次,通過(guò)寄存器SMB0TA的值來(lái)判斷執(zhí)行不同的指令;SMBus讀寫子函數(shù)比較簡(jiǎn)單,只要設(shè)置好SMBus需要的參數(shù),比如從機(jī)的子地址、讀或?qū)懨?、從機(jī)子地址以及數(shù)據(jù)等,然后發(fā)出起始條件,開始一次通信。直到等待SMBus通信總線空閑,說(shuō)明這次通信結(jié)束。實(shí)時(shí)時(shí)鐘讀寫軟件 在對(duì)其使用之前,要先確定ISL1208作為SMBus通信從機(jī)的地址以及各個(gè)寄存器的地址,再調(diào)用SMBus的基本函數(shù)進(jìn)行操作。實(shí)時(shí)時(shí)鐘芯片ISL1208的軟件編寫主要包括ISL1208初始化、ISL1208讀子函數(shù)和ISL1208寫子函數(shù)。其中ISL1208初始化主要完成對(duì)于ISL1208基本的配置任務(wù),設(shè)置好一些工作模式、參數(shù)的格式等內(nèi)容;ISL1208讀子函數(shù)包括通過(guò)SMBus通信總線讀出其寄存器內(nèi)容,并對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單的處理,ISL1208寄存器的日期和時(shí)間內(nèi)容都是以BCD碼的格式存放的,為了更好的在液晶屏上顯示,讀出之后轉(zhuǎn)換為各個(gè)數(shù)字的ASCII字符經(jīng)行存儲(chǔ),比如年、月、日、時(shí)、分秒等分高位和低位來(lái)存儲(chǔ),便于以后的顯示和操作;ISL1208寫子函數(shù)主要用于對(duì)時(shí)間進(jìn)行修改設(shè)置時(shí),寫入當(dāng)前正確的時(shí)間,同樣為了便于顯示和操作,把年、月、日、時(shí)、分秒等分高位和低位,然后再轉(zhuǎn)化為BCD數(shù)據(jù)寫入到ISL1208,在對(duì)數(shù)據(jù)的處理上,與讀操作是個(gè)逆向的過(guò)程[32]。數(shù)據(jù)存儲(chǔ)器的讀寫軟件與實(shí)時(shí)時(shí)鐘芯片類似,首先要確定數(shù)據(jù)存儲(chǔ)芯片AT24C16的從機(jī)地址和子地址,AT24C16的存儲(chǔ)量是2048*8位數(shù)據(jù), AT24C16的從機(jī)地址包括三方面內(nèi)容,包括四位從機(jī)ID、單位頁(yè)面地址和一位讀寫控制位,從機(jī)子地址就是所選定的一頁(yè)中256字節(jié)里的一個(gè),地址從0X000XFF。然后就可以編寫AT24C16使用子函數(shù)了,一般包括數(shù)據(jù)的寫入與讀出,當(dāng)操作的不是簡(jiǎn)單的字節(jié)型整數(shù)時(shí),先進(jìn)行簡(jiǎn)單的數(shù)據(jù)處理然后寫入,讀出時(shí)再進(jìn)行其逆處理就可以完成復(fù)雜數(shù)據(jù)的存儲(chǔ)與讀取。SMBus通信軟編程序主要有以下設(shè)置://*********************************************************************define ISL1208 0xde //從器件isl1208地址define at24c16 0xa0 //從器件at24c16地址define I2C_WRITE 0x00 //I2C操作模式為寫define I2C_READ 0x01 //I2C操作模式為讀//*********************************//I2C中斷狀態(tài)字定義(SMBUS為主模式)//MS 主發(fā)送//MR 主接受//*********************************define I2C_BUS_ERROR 0X00 //(對(duì)所有方式)總線錯(cuò)誤define I2C_START 0X08 // (MS amp。 MR)起始條件已發(fā)送define I2C_RP_START 0X10 // (MS amp。 MR)重復(fù)起始條件define I2C_MSADDACK 0X18 //(MS) 從地址 + W 已發(fā)送;收到 ACKdefine I2C_MSADDNACK 0X20 //(MS) 從地址 + W 已發(fā)送;收到 NACK define I2C_MSDBACK 0X28 //(MS) 數(shù)據(jù)字節(jié)已發(fā)送;收到 ACK define I2C_MSDBNACK 0X30 //(MS) 數(shù)據(jù)字節(jié)已發(fā)送;收到 NACKdefine I2C_MSARBLOST 0X38 //(MS) 競(jìng)爭(zhēng)失敗 define I2C_MRADDACK 0X40 //(MR) 從地址 + R 已發(fā)送;收到 ACKdefine I2C_MRADDNACK 0X48 //(MR) 從地址 + W 已發(fā)送;收到 NACKdefine I2C_MRDBACK 0X50 //(MR) 收到數(shù)據(jù)字節(jié);ACK 已發(fā)送define I2C_MRDBNACK 0X58 //(MR) 收到數(shù)據(jù)字節(jié);NACK 已發(fā)送//***********************************//所用全局變量定義//**********************************volatile unsigned char I2C_CONMAND。 //在I2C中斷服務(wù)程序中用于保存從地址+R/W位volatile unsigned char I2C_BYTE。 //保存I2C要發(fā)送的字節(jié)或剛收到的數(shù)據(jù)volatile unsigned char I2C_BYTE_NUM。 //在中斷服務(wù)程序中用于判斷是讀操作還是寫操作volatile bit I2C_BUSY。 //該位在發(fā)送或接收開始時(shí)被置 1,操作結(jié)束后由中斷服務(wù)程序清 0volatile unsigned char I2C_SUBA。 //從器件的子地址volatile unsigned char I2C_write_flag。//寫字節(jié)個(gè)數(shù)標(biāo)志位//**********************************//I2C函數(shù)聲明//**********************************void I2C_init(void)。 //I2C初始化void I2C_SEND(unsigned char adr,unsigned char sub_adr,unsigned char dat)。//向從器件的子地址發(fā)送一個(gè)字節(jié)unsigned char I2C_RECEIVE(unsigned char adr,unsigned char sub_adr)。 //從從器件的子地址讀一個(gè)字節(jié)void I2C_isr(void)。 //I2C中斷服務(wù)程序 溫度檢測(cè)與傳輸軟件模塊 溫度檢測(cè)與傳輸軟件模塊是通過(guò)對(duì)AT89C2051單片機(jī)編程來(lái)實(shí)現(xiàn)的,開發(fā)環(huán)境使用的是WAVE 6000。主要包括溫度測(cè)量和溫度數(shù)據(jù)的傳輸兩部分。溫度檢測(cè)軟件考慮無(wú)功補(bǔ)償裝置的安裝,本次設(shè)計(jì)選用了單總線通信方式的溫度傳感器DS18B20,初期設(shè)計(jì)使用了三片,可以靈活的安裝在控制裝置的不同位置。對(duì)于DS18B20的使用主要是通過(guò)其時(shí)序圖來(lái)完成程序編寫的。其初始化、讀/、??梢姡浖木帉懼醒訒r(shí)的精確性非常重要,為此再用C語(yǔ)言編寫延時(shí)函數(shù)的時(shí)候,可以查看其編譯成匯編語(yǔ)言之后的指令情況,以確保延時(shí)時(shí)間的精確把握。溫度的檢測(cè)
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1