版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
嵌入式系統(tǒng)原理及應(yīng)用
項(xiàng)目化教程項(xiàng)目7模數(shù)轉(zhuǎn)換設(shè)計(jì)與實(shí)現(xiàn)學(xué)習(xí)目標(biāo)1.了解STM32的ADC主要特點(diǎn)和結(jié)構(gòu);2.了解STM32與ADC編程相關(guān)的寄存器和庫(kù)函數(shù);3.會(huì)使用STM32的ADC寄存器和庫(kù)函數(shù),完成A/D轉(zhuǎn)換程序設(shè)計(jì);4.會(huì)利用STM32的ADC,實(shí)現(xiàn)模擬電壓的采集并在串口上打印出來(lái)。目錄7.1ADC介紹7.2任務(wù)12基于庫(kù)函數(shù)的STM32F1ADC控制設(shè)計(jì)7.3任務(wù)13DS18B20溫度傳感器控制ADCADCAnalog-to-DigitalConverter的縮寫(xiě)。指模/數(shù)轉(zhuǎn)換器或者模擬/數(shù)字轉(zhuǎn)換器。是指將連續(xù)變量的模擬信號(hào)轉(zhuǎn)換為離散的數(shù)字信號(hào)的器件。典型的模擬數(shù)字轉(zhuǎn)換器將模擬信號(hào)轉(zhuǎn)換為表示一定比例電壓值的數(shù)字信號(hào)。7.1ADC介紹ADCSTM32F10xADC特點(diǎn)12位逐次逼近型的模擬數(shù)字轉(zhuǎn)換器。最多帶3個(gè)ADC控制器最多支持18個(gè)通道,可最多測(cè)量16個(gè)外部和2個(gè)內(nèi)部信號(hào)源。支持單次和連續(xù)轉(zhuǎn)換模式
轉(zhuǎn)換結(jié)束,注入轉(zhuǎn)換結(jié)束,和發(fā)生模擬看門(mén)狗事件時(shí)產(chǎn)生中斷。
通道0到通道n的自動(dòng)掃描模式
自動(dòng)校準(zhǔn)
采樣間隔可以按通道編程
規(guī)則通道和注入通道均有外部觸發(fā)選項(xiàng)
轉(zhuǎn)換結(jié)果支持左對(duì)齊或右對(duì)齊方式存儲(chǔ)在16位數(shù)據(jù)寄存器ADC轉(zhuǎn)換時(shí)間:最大轉(zhuǎn)換速率1us。(最大轉(zhuǎn)換速度為1MHz,在ADCCLK=14M,采樣周期為1.5個(gè)ADC時(shí)鐘下得到。)ADC供電要求:2.4V-3.6VADC輸入范圍:VREF-≤VIN≤VREF+7.1ADC介紹ADCSTM32F10x大容量芯片帶3個(gè)ADC控制器其中144腳芯片因?yàn)閹F腳,所以多5個(gè)通道,為21個(gè)外部通道。小于144腳芯片只有16個(gè)外部通道。7.1ADC介紹ADCSTM32F10x系列芯片ADC通道和引腳對(duì)應(yīng)關(guān)系7.1ADC介紹ADCADC引腳7.1ADC介紹ADCADC框圖7.1ADC介紹ADC7.1ADC介紹ADCSTM32通道組規(guī)則通道組:相當(dāng)正常運(yùn)行的程序。最多16個(gè)通道。
規(guī)則通道和它的轉(zhuǎn)換順序在ADC_SQRx寄存器中選擇,規(guī)則
組轉(zhuǎn)換的總數(shù)應(yīng)寫(xiě)入ADC_SQR1寄存器的L[3:0]中②注入通道組:相當(dāng)于中斷。最多4個(gè)通道。
注入組和它的轉(zhuǎn)換順序在ADC_JSQR寄存器中選擇。注入組
里轉(zhuǎn)化的總數(shù)應(yīng)寫(xiě)入ADC_JSQR寄存器的L[1:0]中7.1ADC介紹ADC規(guī)則通道1規(guī)則通道2規(guī)則通道N注入通道1注入通道1規(guī)則通道1規(guī)則通道2規(guī)則通道N注入通道N7.1ADC介紹ADCSTM32F1的ADC的各通道可以單次,連續(xù),掃描或者間斷模式執(zhí)行。7.1ADC介紹ADC單次轉(zhuǎn)化VS連續(xù)轉(zhuǎn)換7.1ADC介紹ADC單次轉(zhuǎn)化VS連續(xù)轉(zhuǎn)換7.1ADC介紹ADC掃描模式7.1ADC介紹ADCADC中斷7.1ADC介紹ADCADC時(shí)鐘配置不要讓ADC時(shí)鐘超過(guò)14MHz,否則可能不準(zhǔn)。RCC_ADCCLKConfig(RCC_PCLK2_Div6);7.1ADC介紹ADCADC_CR1寄存器在掃描模式下,由ADC_SQRx或者ADC_JSQRx寄存器選中的通道被轉(zhuǎn)換。如果設(shè)置了EOCIE或者JEOCIE,在最后一個(gè)通道轉(zhuǎn)換完畢后才會(huì)產(chǎn)生EOC或者JEOC中斷。7.1ADC介紹ADCADC_CR1寄存器7.1ADC介紹ADCADC_CR2寄存器7.1ADC介紹ADC數(shù)據(jù)對(duì)齊方式7.1ADC介紹ADCADC_CR2寄存器7.1ADC介紹ADCADC_SMPR1寄存器7.1ADC介紹ADCADC_SMPR2寄存器7.1ADC介紹ADCADC的采樣時(shí)間最小采樣時(shí)間1us(ADC時(shí)鐘=14MHz,采樣周期為1.5周期下得到)7.1ADC介紹ADCADC_SQR1/SQR2/SQR3規(guī)則序列寄存器7.1ADC介紹ADCADC_JSQR注入系列寄存器7.1ADC介紹ADCADC_DR規(guī)則通道數(shù)據(jù)寄存器7.1ADC介紹ADCADC_JDR注入通道數(shù)據(jù)寄存器7.1ADC介紹ADCADC_SR狀態(tài)寄存器7.1ADC介紹ADC常用庫(kù)函數(shù)voidADC_Init(ADC_TypeDef*ADCx,ADC_InitTypeDef*ADC_InitStruct);voidADC_DeInit(ADC_TypeDef*ADCx)voidADC_Cmd(ADC_TypeDef*ADCx,FunctionalStateNewState);voidADC_ITConfig(ADC_TypeDef*ADCx,uint16_tADC_IT,FunctionalStateNewState);voidADC_SoftwareStartConvCmd(ADC_TypeDef*ADCx,FunctionalStateNewState);voidADC_RegularChannelConfig(ADC_TypeDef*ADCx,uint8_tADC_Channel,uint8_tRank,uint8_tADC_SampleTime);uint16_tADC_GetConversionValue(ADC_TypeDef*ADCx);voidADC_ResetCalibration(ADC_TypeDef*ADCx);FlagStatusADC_GetResetCalibrationStatus(ADC_TypeDef*ADCx);voidADC_StartCalibration(ADC_TypeDef*ADCx);FlagStatusADC_GetCalibrationStatus(ADC_TypeDef*ADCx);7.1ADC介紹ADCADC初始化函數(shù)ADC_Init
voidADC_Init(ADC_TypeDef*ADCx,ADC_InitTypeDef*ADC_InitStruct);typedefstruct{uint32_tADC_Mode;//ADC模式:配置ADC_CR1寄存器的位[19:16]:DUALMODE[3:0]位FunctionalStateADC_ScanConvMode;//是否使用掃描模式。ADC_CR1位8:SCAN位
FunctionalStateADC_ContinuousConvMode;//單次轉(zhuǎn)換OR連續(xù)轉(zhuǎn)換:ADC_CR2的位1:CONTuint32_tADC_ExternalTrigConv;//觸發(fā)方式:ADC_CR2的位[19:17]:EXTSEL[2:0]uint32_tADC_DataAlign;//對(duì)齊方式:左對(duì)齊還是右對(duì)齊:ADC_CR2的位11:ALIGNuint8_tADC_NbrOfChannel;//規(guī)則通道序列長(zhǎng)度:ADC_SQR1的位[23:20]:L[3:0]}ADC_InitTypeDef;7.1ADC介紹ADC
voidADC_Init(ADC_TypeDef*ADCx,ADC_InitTypeDef*ADC_InitStruct);ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;//獨(dú)立模式ADC_InitStructure.ADC_ScanConvMode=DISABLE; //不開(kāi)啟掃描ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;//單次轉(zhuǎn)換模式ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//觸發(fā)軟件ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//ADC數(shù)據(jù)右對(duì)齊ADC_InitStructure.ADC_NbrOfChannel=1;//順序進(jìn)行規(guī)則轉(zhuǎn)換的ADC通道的數(shù)目ADC_Init(ADC1,&ADC_InitStructure); 7.1ADC介紹ADCADC使能函數(shù)
ADC_Cmd();
voidADC_Cmd(ADC_TypeDef*ADCx,FunctionalState
NewState);ADC_Cmd(ADC1,ENABLE); //使能指定的ADC1ADC使能軟件轉(zhuǎn)換函數(shù)ADC_SoftwareStartConvCmdvoidADC_SoftwareStartConvCmd(ADC_TypeDef*ADCx,FunctionalStateNewState)ADC_SoftwareStartConvCmd(ADC1,ENABLE);//使能ADC1的軟件轉(zhuǎn)換啟動(dòng)7.1ADC介紹ADCADC規(guī)則通道配置函數(shù)ADC_RegularChannelConfigADC_RegularChannelConfig(ADC1,ADC_Channel_1,1,ADC_SampleTime_239Cycles5);ADC獲取轉(zhuǎn)換結(jié)果函數(shù)ADC_GetConversionValueuint16_tADC_GetConversionValue(ADC_TypeDef*ADCx);ADC_GetConversionValue(ADC1);//獲取ADC1轉(zhuǎn)換結(jié)果
voidADC_RegularChannelConfig(ADC_TypeDef*ADCx,uint8_tADC_Channel,uint8_tRank,uint8_tADC_SampleTime);7.1ADC介紹7.2任務(wù)12基于庫(kù)函數(shù)的STM32F1ADC控制設(shè)計(jì)ADC1對(duì)應(yīng)芯片的PA1引腳,將該引腳直接外部連接到電位器上,調(diào)節(jié)電位器即可改變電壓,通過(guò)ADC轉(zhuǎn)換即可檢測(cè)此電壓值。
7.2任務(wù)12基于庫(kù)函數(shù)的STM32F1ADC控制設(shè)計(jì)DS18B20介紹DS18B20技術(shù)性能特征①、獨(dú)特的單總線接口方式,DS18B20在與微處理器連接時(shí)僅需要一條口線即可實(shí)
現(xiàn)微處理器與DS18B20的雙向通訊。大大提高了系統(tǒng)的抗干擾性。②、測(cè)溫范圍-55℃~+125℃,精度為±0.5℃。③、支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在唯一的三線上,最多只能并聯(lián)8個(gè),
實(shí)現(xiàn)多點(diǎn)測(cè)溫,如果數(shù)量過(guò)多,會(huì)使供電電源電壓過(guò)低,從而造成信號(hào)傳輸?shù)?/p>
不穩(wěn)定。④、工作電源:3.0~5.5V/DC(可以數(shù)據(jù)線寄生電源)。⑤、在使用中不需要任何外圍元件。⑥、測(cè)量結(jié)果以9~12位數(shù)字量方式串行傳送。7.3任務(wù)13DS18B20溫度傳感器控制DS18B20封裝7.3DS18B20介紹連接方式7.3DS18B20介紹單總線是一種半雙工通信方式DS18B20共有6種信號(hào)類型:復(fù)位脈沖、應(yīng)答脈沖、寫(xiě)0、寫(xiě)1、讀0和讀1。所有這些信號(hào),除了應(yīng)答脈沖以外,都由主機(jī)發(fā)出同步信號(hào)。并且發(fā)送所有的命令和數(shù)據(jù)都是字節(jié)的低位在前。7.3DS18B20介紹復(fù)位脈沖單總線上的所有通信都是以初始化序列開(kāi)始。主機(jī)輸出低電平,保持低電平時(shí)間至少480us,,以產(chǎn)生復(fù)位脈沖。接著主機(jī)釋放總線,4.7K的上拉電阻將單總線拉高,延時(shí)15~60us,并進(jìn)入接收模式(Rx)。接著DS18B20拉低總線60~240us,以產(chǎn)生低電平應(yīng)答脈沖。
//復(fù)位DS18B20voidDS18B20_Rst(void) {DS18B20_IO_OUT();//設(shè)置為輸出模式DS18B20_DQ_OUT=0;//拉低DQ
delay_us(750);//拉低750us(至少480us)DS18B20_DQ_OUT=1;//DQ=1拉高釋放總線
delay_us(15);//15US//進(jìn)入接受模式,等待應(yīng)答信號(hào)。}7.3DS18B20介紹②應(yīng)答信號(hào)//等待DS18B20的回應(yīng)//返回1:未檢測(cè)到DS18B20的存在返回0:存在u8DS18B20_Check(void) {u8retry=0;DS18B20_IO_IN();//SETPA0INPUT while(DS18B20_DQ_IN&&retry<200){retry++;
delay_us(1);}; if(retry>=200)return1;elseretry=0;while(!DS18B20_DQ_IN&&retry<240){retry++;
delay_us(1);};if(retry>=240)return1; return0;}7.3DS18B20介紹③寫(xiě)時(shí)序?qū)憰r(shí)序包括寫(xiě)0時(shí)序和寫(xiě)1時(shí)序。所有寫(xiě)時(shí)序至少需要60us,且在2次獨(dú)立的寫(xiě)時(shí)序之間至少需要1us的恢復(fù)時(shí)間,兩種寫(xiě)時(shí)序均起始于主機(jī)拉低總線。寫(xiě)1時(shí)序:主機(jī)輸出低電平,延時(shí)2us,然后釋放總線,延時(shí)60us。寫(xiě)0時(shí)序:主機(jī)輸出低電平,延時(shí)60us,然后釋放總線,延時(shí)2us。7.3DS18B20介紹//寫(xiě)一個(gè)字節(jié)到DS18B20//dat:要寫(xiě)入的字節(jié)voidDS18B20_Write_Byte(u8dat){u8j;u8testb;DS18B20_IO_OUT();//設(shè)置PA0為輸出for(j=1;j<=8;j++){
testb=dat&0x01;
dat=dat>>1;if(testb)//輸出高{DS18B20_DQ_OUT=0;//主機(jī)輸出低電平
delay_us(2);//延時(shí)2usDS18B20_DQ_OUT=1;//釋放總線
delay_us(60);//延時(shí)60us}else//輸出低{DS18B20_DQ_OUT=0;//主機(jī)輸出低電平
delay_us(60);//延時(shí)60usDS18B20_DQ_OUT=1;//釋放總線
delay_us(2);//延時(shí)2us}}}7.3DS18B20介紹④讀時(shí)序單總線器件僅在主機(jī)發(fā)出讀時(shí)序時(shí),才向主機(jī)傳輸數(shù)據(jù),所以,在主機(jī)發(fā)出讀數(shù)據(jù)命令后,必須馬上產(chǎn)生讀時(shí)序,以便從機(jī)能夠傳輸數(shù)據(jù)。所有讀時(shí)序至少需要60us,且在2次獨(dú)立的讀時(shí)序之間至少需要1us的恢復(fù)時(shí)間。每個(gè)讀時(shí)序都由主機(jī)發(fā)起,至少拉低總線1us。主機(jī)在讀時(shí)序期間必須釋放總線,并且在時(shí)序起始后的15us之內(nèi)采樣總線狀態(tài)。典型的讀時(shí)序過(guò)程為:主機(jī)輸出低電平延時(shí)2us,然后主機(jī)轉(zhuǎn)入輸入模式延時(shí)12us,然后讀取單總線當(dāng)前的電平,然后延時(shí)50us。7.3DS18B20介紹//從DS18B20讀取一個(gè)位//返回值:1/0u8DS18B20_Read_Bit(void) //readonebit{u8data;DS18B20_IO_OUT();//設(shè)置為輸出DS18B20_DQ_OUT=0;//輸出低電平2us
delay_us(2);DS18B20_DQ_OUT=1;//拉高釋放總線DS18B20_IO_IN();//設(shè)置為輸入
delay_us(12);//延時(shí)12usif(DS18B20_DQ_IN)data=1;//讀取總線數(shù)據(jù)elsedata=0;
delay_us(50);//延時(shí)50usreturndata;}典型的讀時(shí)序過(guò)程為:主機(jī)輸出低電平延時(shí)2us,然后主機(jī)轉(zhuǎn)入輸入模式延時(shí)12us,然后讀取單總線當(dāng)前的電平,然后延時(shí)50us。7.3DS18B20介紹//從DS18B20讀取一個(gè)字節(jié)//返回值:讀到的數(shù)據(jù)u8DS18B20_Read_Byte(void)//readonebyte{u8i,j,dat;
dat=0;for(i=1;i<=8;i++){j=DS18B20_Read_Bit();
dat=(j<<7)|(dat>>1);} returndat;}讀取一個(gè)字節(jié)數(shù)據(jù)7.3DS18B20介紹我們來(lái)看看DS18B20的典型溫度讀取過(guò)程,DS18B20的典型溫度讀取過(guò)程為:復(fù)位
發(fā)SKIPROM命令(0XCC)
發(fā)開(kāi)始轉(zhuǎn)換命令(0X44)
延時(shí)
復(fù)位
發(fā)送SKIPROM命令(0XCC)
發(fā)讀存儲(chǔ)器命令(0XBE)
連續(xù)讀出兩個(gè)字節(jié)數(shù)據(jù)(即溫度)
結(jié)束。7.3DS18B20介紹//從ds18b20得到溫度值//精度:0.1C//返回值:溫度值(-550~1250)shortDS18B20_Get_Temp(void){u8temp;u8TL,TH;shorttem;DS18B20_Start();//ds1820startconvertDS18B20_Rst();復(fù)位DS18B20_Check(); DS18B20_Write_Byte(0xcc);//skipromDS18B20_Write_Byte(0xbe);//convert TL=DS18B20_Read_Byte();TH=DS18B20_Read_Byte(); if(TH>7){TH=~TH;TL=~TL;temp=0;//溫度為負(fù)
}elsetemp=1;//溫度為正
tem=TH;//獲得高八位
tem<<=8;tem+=TL;//獲得底八位
tem=(float)tem*0.625;//轉(zhuǎn)換if(temp)returntem;//返回溫度值
elsereturn-tem;}//開(kāi)始溫度轉(zhuǎn)換voidDS18B20_Start(void)//ds1820startconvert{ DS18B20_Rst(); DS18B20_Check(); DS18B20_Write_Byte(0xcc);//skipromDS18B20_Write_Byte(0x44);//convert}轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在18B20的兩個(gè)8比特的RAM中,二進(jìn)制中的前面5位是符號(hào)位,如果測(cè)得的溫度大于0,這5位為0,只要將測(cè)到的數(shù)值乘于0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測(cè)到的數(shù)值需要取反加1再乘于0.0625即可得到實(shí)際溫度。例如+125℃的數(shù)字輸出為07D0H,,-25.0625℃的數(shù)字輸出為FE6FH。7.3DS18B20介紹7.3任務(wù)13DS18B20溫度傳感器控制舉一反三(1)使用ADC實(shí)現(xiàn)多個(gè)通道的AD采集。(溫馨提示:參考ADC初始化步驟,修改相應(yīng)的一些參數(shù),注意ADC轉(zhuǎn)換通道引腳不要被其他芯片或電路占用,防止干擾,ADC輸入電壓不能超過(guò)3.3V,否則可能燒壞芯片)。(2)利用DS18B20設(shè)計(jì)一個(gè)智能溫度控制系統(tǒng),具有溫度上下限值設(shè)定,當(dāng)溫度高于上限值加熱指示燈LED2熄滅同時(shí)報(bào)警,當(dāng)溫度低于下限值時(shí)加熱指示燈LED2點(diǎn)亮同時(shí)報(bào)警,當(dāng)溫度處于上下限間正常工作,指示燈LED2閃爍。(溫馨提示:把本章實(shí)驗(yàn)結(jié)合按鍵控制實(shí)驗(yàn))。嵌入式系統(tǒng)原理及應(yīng)用
項(xiàng)目化教程項(xiàng)目8顯示屏控制設(shè)計(jì)與實(shí)現(xiàn)學(xué)習(xí)目標(biāo)1.掌握TFT-LCD顯示原理;2.利用TFT-LCD實(shí)現(xiàn)漢字和彩色的顯示方法;3.掌握OLED顯示原理;4.利用OLED實(shí)現(xiàn)ASCII字符的顯示。目錄8.1任務(wù)14TFT-LCD顯示8.2任務(wù)15OLED顯示1、TFTLCD驅(qū)動(dòng)原理-TFTLCD簡(jiǎn)介T(mén)FTLCD即薄膜晶體管液晶顯示器。它與無(wú)源TN-LCD、STN-LCD的簡(jiǎn)單矩陣不同,它在液晶顯示屏的每一個(gè)象素上都設(shè)置有一個(gè)薄膜晶體管(TFT),可有效地克服非選通時(shí)的串?dāng)_,使顯示液晶屏的靜態(tài)特性與掃描線數(shù)無(wú)關(guān),因此大大提高了圖像質(zhì)量。TFTLCD具有:亮度好、對(duì)比度高、層次感強(qiáng)、顏色鮮艷等特點(diǎn)。是目前最主流的LCD顯示器。廣泛應(yīng)用于電視、手機(jī)、電腦、平板等各種電子產(chǎn)品。8.1任務(wù)14TFT-LCD顯示TFTLCD驅(qū)動(dòng)原理1、TFTLCD驅(qū)動(dòng)原理-模塊簡(jiǎn)介ALINETEKTFTLCD模塊介紹ALIENTEK提供豐富的TFTLCD模塊型號(hào),供大家選擇,目前有以下型號(hào)可選:1,ATK-2.8寸TFTLCD模塊
分辨率:240*320,驅(qū)動(dòng)IC:ILI9341,電阻觸摸屏,16位并口驅(qū)動(dòng)2,ATK-3.5寸TFTLCD模塊分辨率:320*480,驅(qū)動(dòng)IC:NT35310,電阻觸摸屏,16位并口驅(qū)動(dòng)3,ATK-4.3寸TFTLCD模塊分辨率:480*800,驅(qū)動(dòng)IC:NT35510,電容觸摸屏,16位并口驅(qū)動(dòng)4,ATK-7寸TFTLCD模塊(V1版本)
分辨率:480*800,驅(qū)動(dòng)IC:CPLD+SDRAM,電容觸摸屏,16位并口驅(qū)動(dòng)5,ATK-7寸TFTLCD模塊(V2版本)分辨率:480*800,驅(qū)動(dòng)IC:SSD1963,電容觸摸屏,8/9/12/16位并口驅(qū)動(dòng)8.1任務(wù)14TFT-LCD顯示TFTLCD驅(qū)動(dòng)原理1、TFTLCD驅(qū)動(dòng)原理-模塊簡(jiǎn)介ALINETEK2.8寸TFTLCD模塊特點(diǎn)240*320分辨率16位真彩顯示(65536色)自帶電阻觸摸屏自帶背光電路注意:模塊是3.3V供電的,不支持5V電壓的MCU,如果是5VMCU,必須在信號(hào)線串接120R電阻使用。8.1任務(wù)14TFT-LCD顯示TFTLCD驅(qū)動(dòng)原理1、TFTLCD驅(qū)動(dòng)原理-模塊簡(jiǎn)介ALINETEK2.8寸TFTLCD模塊原理圖8.1任務(wù)14TFT-LCD顯示TFTLCD驅(qū)動(dòng)原理1、TFTLCD驅(qū)動(dòng)原理-模塊簡(jiǎn)介ALINETEK2.8寸TFTLCD接口說(shuō)明(16位80并口)注意:DB1~DB8,DB10~DB17,總是按順序連接MCU的D0~D15LCD_CS:LCD片選信號(hào)LCD_WR:LCD寫(xiě)信號(hào)LCD_RD:LCD讀信號(hào)DB[17:1]:16位雙向數(shù)據(jù)線。LCD_RST:硬復(fù)位LCD信號(hào)LCD_RS:命令/數(shù)據(jù)標(biāo)志(0:命令,1:數(shù)據(jù))BL_CTR:背光控制信號(hào)T_MISO/T_MOSI/T_PEN/T_CS/T_CLK,觸摸屏接口信號(hào)8.1任務(wù)14TFT-LCD顯示TFTLCD驅(qū)動(dòng)原理1、TFTLCD驅(qū)動(dòng)原理-模塊簡(jiǎn)介ALINETEK2.8寸TFTLCD
16位80并口驅(qū)動(dòng)簡(jiǎn)介并口寫(xiě)時(shí)序圖并口讀時(shí)序圖模塊的8080并口讀/寫(xiě)的過(guò)程為:先根據(jù)要寫(xiě)入/讀取的數(shù)據(jù)的類型,設(shè)置RS為高(數(shù)據(jù))/低(命令),然后拉低片選,選中ILI9341,接著我們根據(jù)是讀數(shù)據(jù),還是要寫(xiě)數(shù)據(jù)置RD/WR為低,然后:1.讀數(shù)據(jù):在RD的上升沿,讀取數(shù)據(jù)線上的數(shù)據(jù)(D[15:0]);2.寫(xiě)數(shù)據(jù):在WR的上升沿,使數(shù)據(jù)寫(xiě)入到ILI9341里面8.1任務(wù)14TFT-LCD顯示TFTLCD驅(qū)動(dòng)原理1、TFTLCD驅(qū)動(dòng)原理-模塊簡(jiǎn)介ILI9341驅(qū)動(dòng)時(shí)序重點(diǎn)時(shí)序:讀ID低電平脈寬(trdl)讀ID高電平脈寬(trdh)讀FM低電平脈寬(trdlfm)讀FM高電平脈寬(trdhfm)寫(xiě)控制低電平脈寬(twrl)寫(xiě)控制高電平脈寬(twrh)注意:ID指LCD的ID號(hào)FM指幀緩存,即:GRAM右圖為:ILI93418080并口時(shí)序,詳見(jiàn):ILI9341_DS.pdf,232頁(yè)8.1任務(wù)14TFT-LCD顯示TFTLCD驅(qū)動(dòng)原理1、TFTLCD驅(qū)動(dòng)原理-驅(qū)動(dòng)流程8.1任務(wù)14TFT-LCD顯示TFTLCD驅(qū)動(dòng)原理
RGB565格式說(shuō)明模塊對(duì)外接口采用16位并口,顏色深度為16位,格式為RGB565,關(guān)系如下圖:1、TFTLCD驅(qū)動(dòng)原理-指令簡(jiǎn)介ILI9341指令格式說(shuō)明ILI9341所有的指令都是8位的(高8位無(wú)效),且參數(shù)除了讀寫(xiě)GRAM的時(shí)候是16位,其他操作參數(shù),都是8位的。ILI9341的指令很多,這里不一一介紹,僅介紹幾個(gè)重要的指令,他們是:0XD3,0X36,0X2A,0X2B,0X2C,0X2E等6條指令。8.1任務(wù)14TFT-LCD顯示TFTLCD驅(qū)動(dòng)原理
0XD3指令該指令為讀ID4指令,用于讀取LCD控制器的ID。因此,同一個(gè)代碼,可以根據(jù)ID的不同,執(zhí)行不同的LCD驅(qū)動(dòng)初始化,以兼容不同的LCD屏幕。1、TFTLCD驅(qū)動(dòng)原理-指令簡(jiǎn)介8.1任務(wù)14TFT-LCD顯示TFTLCD驅(qū)動(dòng)原理
0X36指令該指令為存儲(chǔ)訪問(wèn)控制指令,可以控制ILI9341存儲(chǔ)器的讀寫(xiě)方向,簡(jiǎn)單的說(shuō),就是在連續(xù)寫(xiě)GRAM的時(shí)候,可以控制GRAM指針的增長(zhǎng)方向,從而控制顯示方式(讀GRAM也是一樣)。1、TFTLCD驅(qū)動(dòng)原理-指令簡(jiǎn)介8.1任務(wù)14TFT-LCD顯示TFTLCD驅(qū)動(dòng)原理
0X2A指令該指令是列地址設(shè)置指令,在從左到右,從上到下的掃描方式(默認(rèn))下面,該指令用于設(shè)置橫坐標(biāo)(x坐標(biāo))1、TFTLCD驅(qū)動(dòng)原理-指令簡(jiǎn)介在默認(rèn)掃描方式時(shí),該指令用于設(shè)置x坐標(biāo),該指令帶有4個(gè)參數(shù),實(shí)際上是2個(gè)坐標(biāo)值:SC和EC,即列地址的起始值和結(jié)束值,SC必須小于等于EC,且0≤SC/EC≤239。一般在設(shè)置x坐標(biāo)的時(shí)候,我們只需要帶2個(gè)參數(shù)即可,也就是設(shè)置SC即可,因?yàn)槿绻鸈C沒(méi)有變化,我們只需要設(shè)置一次即可(在初始化ILI9341的時(shí)候設(shè)置),從而提高速度。8.1任務(wù)14TFT-LCD顯示TFTLCD驅(qū)動(dòng)原理
0X2B指令該指令是頁(yè)地址設(shè)置指令,在從左到右,從上到下的掃描方式(默認(rèn))下面,該指令用于設(shè)置縱坐標(biāo)(y坐標(biāo))1、TFTLCD驅(qū)動(dòng)原理-指令簡(jiǎn)介在默認(rèn)掃描方式時(shí),該指令用于設(shè)置y坐標(biāo),該指令帶有4個(gè)參數(shù),實(shí)際上是2個(gè)坐標(biāo)值:SP和EP,即頁(yè)地址的起始值和結(jié)束值,SP必須小于等于EP,且0≤SP/EP≤319。一般在設(shè)置y坐標(biāo)的時(shí)候,我們只需要帶2個(gè)參數(shù)即可,也就是設(shè)置SP即可,因?yàn)槿绻鸈P沒(méi)有變化,我們只需要設(shè)置一次即可(在初始化ILI9341的時(shí)候設(shè)置),從而提高速度。8.1任務(wù)14TFT-LCD顯示TFTLCD驅(qū)動(dòng)原理
0X2C指令該指令是寫(xiě)GRAM指令,在發(fā)送該指令之后,我們便可以往LCD的GRAM里面寫(xiě)入顏色數(shù)據(jù)了,該指令支持連續(xù)寫(xiě)(地址自動(dòng)遞增)1、TFTLCD驅(qū)動(dòng)原理-指令簡(jiǎn)介在收到指令0X2C之后,數(shù)據(jù)有效位寬變?yōu)?6位,我們可以連續(xù)寫(xiě)入LCDGRAM值,而GRAM的地址將根據(jù)MY/MX/MV設(shè)置的掃描方向進(jìn)行自增。例如:假設(shè)設(shè)置的是從左到右,從上到下的掃描方式,那么設(shè)置好起始坐標(biāo)(通過(guò)SC,SP設(shè)置)后,每寫(xiě)入一個(gè)顏色值,GRAM地址將會(huì)自動(dòng)自增1(SC++),如果碰到EC,則回到SC,同時(shí)SP++,一直到坐標(biāo):EC,EP結(jié)束,其間無(wú)需再次設(shè)置的坐標(biāo),從而大大提高寫(xiě)入速度。8.1任務(wù)14TFT-LCD顯示TFTLCD驅(qū)動(dòng)原理
0X2E指令該指令是讀GRAM指令,用于讀取ILI9341的顯存(GRAM),同0X2C指令,該指令支持連續(xù)讀(地址自動(dòng)遞增)1、TFTLCD驅(qū)動(dòng)原理-指令簡(jiǎn)介ILI9341在收到該指令后,第一次輸出的是dummy數(shù)據(jù)(無(wú)效),第二次開(kāi)始,讀取到的才是有效的GRAM數(shù)據(jù)(從坐標(biāo):SC,SP開(kāi)始),輸出規(guī)律為:每個(gè)顏色分量占8個(gè)位,一次輸出2個(gè)顏色分量。比如:第一次輸出是R1G1,隨后的規(guī)律為:B1R2
G2B2
R3G3
B3R4
G4B4
R5G5...以此類推8.1任務(wù)14TFT-LCD顯示TFTLCD驅(qū)動(dòng)原理3、源碼講解-LCD坐標(biāo)設(shè)置函數(shù)//設(shè)置光標(biāo)位置//Xpos:橫坐標(biāo)//Ypos:縱坐標(biāo)voidLCD_SetCursor(u16Xpos,u16Ypos){ if(lcddev.id==0X9341||lcddev.id==0X5310){ LCD_WR_REG(lcddev.setxcmd);LCD_WR_DATA(Xpos>>8);LCD_WR_DATA(Xpos&0XFF);LCD_WR_REG(lcddev.setycmd); LCD_WR_DATA(Ypos>>8); LCD_WR_DATA(Ypos&0XFF);}elseif(lcddev.id==XXXX) //根據(jù)不同的LCD型號(hào),執(zhí)行不同的代碼{ ……//省略部分代碼}}
8.1任務(wù)14TFT-LCD顯示TFTLCD源碼3、源碼講解-LCD畫(huà)點(diǎn)函數(shù)//畫(huà)點(diǎn)//x,y:坐標(biāo)//POINT_COLOR:此點(diǎn)的顏色voidLCD_DrawPoint(u16x,u16y){LCD_SetCursor(x,y); //設(shè)置光標(biāo)位置
LCD_WriteRAM_Prepare(); //開(kāi)始寫(xiě)入GRAMLCD->LCD_RAM=POINT_COLOR; //非Mini板的操作方式
}LCD_WR_DATA(POINT_COLOR);MiniSTM32;8.1任務(wù)14TFT-LCD顯示TFTLCD源碼3、源碼講解-LCD讀點(diǎn)函數(shù)LCD讀點(diǎn)函數(shù):u16LCD_ReadPoint(u16x,u16y)1,非Mini板的讀點(diǎn)函數(shù)代碼(FSMC方式,適合戰(zhàn)艦、精英、探索者F4板)2,Mini板的讀點(diǎn)函數(shù)代碼(GPIO方式,適合Mini板)8.1任務(wù)14TFT-LCD顯示TFTLCD源碼3、源碼講解-LCD字符顯示函數(shù)//在指定位置顯示一個(gè)字符//x,y:起始坐標(biāo)//num:要顯示的字符:""--->"~"http://size:字體大小12/16/24//mode:疊加方式(1)還是非疊加方式(0)voidLCD_ShowChar(u16x,u16y,u8num,u8size,u8mode){
u8temp,t1,t;u16y0=y;u8csize=(size/8+((size%8)?1:0))*(size/2); //得到字體一個(gè)字符對(duì)應(yīng)點(diǎn)陣集所占的字節(jié)數(shù)
num=num-''; //得到偏移后的值(ASCII字庫(kù)是從空格開(kāi)始取模,所以-''就是對(duì)應(yīng)字符的字庫(kù))
for(t=0;t<csize;t++){if(size==12)temp=asc2_1206[num][t]; //調(diào)用1206字體
elseif(size==16)temp=asc2_1608[num][t]; //調(diào)用1608字體
elseif(size==24)temp=asc2_2412[num][t]; //調(diào)用2412字體
elsereturn; //沒(méi)有的字庫(kù)
for(t1=0;t1<8;t1++){
if(temp&0x80)LCD_Fast_DrawPoint(x,y,POINT_COLOR);
elseif(mode==0)LCD_Fast_DrawPoint(x,y,BACK_COLOR);temp<<=1;y++;
if(y>=lcddev.height)return; //超區(qū)域了
if((y-y0)==size){
y=y0;
x++; if(x>=lcddev.width)return; //超區(qū)域了
break;}}
}
}8.1任務(wù)14TFT-LCD顯示TFTLCD源碼3、源碼講解-LCD字符顯示函數(shù)constunsignedcharoled_asc2_1206[95][12]={{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"",0*/{0x00,0x00,0x00,0x00,0x3F,0x40,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",1*/……{0x40,0x00,0x80,0x00,0x40,0x00,0x20,0x00,0x20,0x00,0x40,0x00},/*"~",94*/};字符碼表constunsignedcharoled_asc2_1608[95][16]={{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"",0*/{0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xCC,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",1*/……{0x00,0x00,0x60,0x00,0x80,0x00,0x80,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x20,0x00},/*"~",94*/}constunsignedcharoled_asc2_2412[95][36]={{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"",0*/{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x80,0x38,0x0F,0xFE,0x38,0x0F,0x80,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",1*/……{0x00,0x00,0x00,0x18,0x00,0x00,0x60,0x00,0x00,0x40,0x00,0x00,0x40,0x00,0x00,0x20,0x00,0x00,0x10,0x00,0x00,0x08,0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x00,0x0C,0x00,0x00,0x10,0x00,0x00},/*"~",94*/}8.1任務(wù)14TFT-LCD顯示TFTLCD源碼3、源碼講解-LCD字符顯示函數(shù)淘寶店鋪:
技術(shù)論壇:8.1任務(wù)14TFT-LCD顯示TFTLCD源碼8.1任務(wù)14TFT-LCD顯示OLEDOLED,即有機(jī)發(fā)光二極管(OrganicLight-EmittingDiode),又稱為有機(jī)電激光顯示(OrganicElectroluminesenceDisplay,OELD)。OLED由于同時(shí)具備自發(fā)光,不需背光源、對(duì)比度高、厚度薄、視角廣、反應(yīng)速度快、可用于撓曲性面板、使用溫度范圍廣、構(gòu)造及制程較簡(jiǎn)單等優(yōu)異之特性,被認(rèn)為是下一代的平面顯示器新興應(yīng)用技術(shù)。OLED顯示技術(shù)具有自發(fā)光的特性,采用非常薄的有機(jī)材料涂層和玻璃基板,當(dāng)有電流通過(guò)時(shí),這些有機(jī)材料就會(huì)發(fā)光,而且OLED顯示屏幕可視角度大,并且能夠節(jié)省電能,從2003年開(kāi)始這種顯示設(shè)備在MP3播放器上得到了應(yīng)用。LCD都需要背光,而OLED不需要,因?yàn)樗亲园l(fā)光的。這樣同樣的顯示,OLED效果要來(lái)得好一些。以目前的技術(shù),OLED的尺寸還難以大型化,但是分辨率確可以做到很高。8.2任務(wù)15OLED顯示ALINETEK0.96寸OLED模塊1)模塊有單色和雙色兩種可選,單色為純藍(lán)色,而雙色則為黃藍(lán)雙色。
單色模塊每個(gè)像素點(diǎn)只有亮與不亮兩種情況,沒(méi)有顏色區(qū)分。2)尺寸小,顯示尺寸為0.96寸,而模塊的尺寸僅為27mm*26mm大小。3)高分辨率,該模塊的分辨率為128*64。4)多種接口方式,該模塊提供了總共4種接口包括:6800、8080兩種并行接口方式、4線的穿行SPI接口方式,、IIC接口方式(只需要2根線就可以控制OLED了?。?)不需要高壓,直接接3.3V就可以工作了。這里要提醒大家的是,該模塊不和5.0V接口兼容,所以請(qǐng)大家在使用的時(shí)候一定要小心,別直接接到5V的系統(tǒng)上去,否則可能燒壞模塊8.2任務(wù)15OLED顯示OLED模塊工作模式選擇4種模式通過(guò)模塊的BS1/BS2設(shè)置,BS1/BS2的設(shè)置與模塊接口模式的關(guān)系如表所示:8.2任務(wù)15OLED顯示OLED模塊原理圖8.2任務(wù)15OLED顯示OLED8080并行接口信號(hào)線說(shuō)明CS:OLED片選信號(hào)。WR:向OLED寫(xiě)入數(shù)據(jù)。RD:從OLED讀取數(shù)據(jù)。D[7:0]:8位雙向數(shù)據(jù)線。RST(RES):硬復(fù)位OLED。DC:命令/數(shù)據(jù)標(biāo)志(0,讀寫(xiě)命令;1,讀寫(xiě)數(shù)據(jù))。OLED控制器為SSD13068.2任務(wù)15OLED顯示OLED8080并口讀寫(xiě)過(guò)程模塊的8080并口讀/寫(xiě)的過(guò)程為:先根據(jù)要寫(xiě)入/讀取的數(shù)據(jù)的類型,設(shè)置DC為高(數(shù)據(jù))/低(命令),然后拉低片選,選中SSD1306,接著我們根據(jù)是讀數(shù)據(jù),還是要寫(xiě)數(shù)據(jù)置RD/WR為低,然后:1.讀數(shù)據(jù):在RD的上升沿,使數(shù)據(jù)鎖存到數(shù)據(jù)線(D[7:0])上;2.寫(xiě)數(shù)據(jù):在WR的上升沿,使數(shù)據(jù)寫(xiě)入到SSD1306里面;并口寫(xiě)時(shí)序圖并口讀時(shí)序圖8.2任務(wù)15OLED顯示OLED模塊顯存SSD1306的顯存總共為128*64bit大小,SSD1306將這些顯存分為了8頁(yè)。每頁(yè)包含了128個(gè)字節(jié),總共8頁(yè),這樣剛好是128*64的點(diǎn)陣大小。8.2任務(wù)15OLED顯示程序顯示原理在STM32的內(nèi)部建立一個(gè)
緩存(共128*8個(gè)字節(jié)),在每次修改的時(shí)候,只是修改STM32上的緩存(實(shí)際上就是SRAM),在修改完了之后,一次性把STM32上的緩存數(shù)據(jù)寫(xiě)入到OLED的GRAM。當(dāng)然這個(gè)方法也有壞處,就是對(duì)于那些SRAM很小的單片機(jī)(比如51系列)就比較麻煩了。8.2任務(wù)15OLED顯示SSD1306的命令命令0X81:設(shè)置對(duì)比度。包含兩個(gè)字節(jié),第一個(gè)0X81為命令,隨后發(fā)送的一個(gè)字節(jié)為要設(shè)置的對(duì)比度的值。這個(gè)值設(shè)置得越大屏幕就越亮。命令0XAE/0XAF:0XAE為關(guān)閉顯示命令;0XAF為開(kāi)啟顯示命令。命令0X8D:包含2個(gè)字節(jié),第一個(gè)為命令字,第二個(gè)為設(shè)置值,第二個(gè)字節(jié)的BIT2表示電荷泵的開(kāi)關(guān)狀態(tài),該位為1,則開(kāi)啟電荷泵,為0則關(guān)閉。在模塊初始化的時(shí)候,這個(gè)必須要開(kāi)啟,否則是看不到屏幕顯示的。命令0XB0~B7:用于設(shè)置頁(yè)地址,其低三位的值對(duì)應(yīng)著GRAM的頁(yè)地址。命令0X00~0X0F:用于設(shè)置顯示時(shí)的起始列地址低四位。命令0X10~0X1F:用于設(shè)置顯示時(shí)的起始列地址高四位。8.2任務(wù)15OLED顯示OLED初始化過(guò)程8.2任務(wù)15OLED顯示OLED初始化//初始化SSD1306 voidOLED_Init(void){…//設(shè)置IO口模式,所有用到的io口設(shè)置為推挽模式。GPIO_Init();…//初始化代碼,寫(xiě)相關(guān)寄存器OLED_WR_Byte(0xAE,OLED_CMD);//關(guān)閉顯示OLED_WR_Byte(0xD5,OLED_CMD);//設(shè)置時(shí)鐘分頻因子,震蕩頻率OLED_WR_Byte(80,OLED_CMD);//[3:0],分頻因子;[7:4],震蕩頻率OLED_WR_Byte(0xA8,OLED_CMD);//設(shè)置驅(qū)動(dòng)路數(shù)OLED_WR_Byte(0X3F,OLED_CMD);//默認(rèn)0X3F(1/64)OLED_WR_Byte(0xD3,OLED_CMD);//設(shè)置顯示偏移OLED_WR_Byte(0X00,OLED_CMD);//默認(rèn)為0……OLED_Clear();}8.2任務(wù)15OLED顯示OLED寫(xiě)一個(gè)字節(jié)//向SSD1306寫(xiě)入一個(gè)字節(jié)。//dat:要寫(xiě)入的數(shù)據(jù)/命令//cmd:數(shù)據(jù)/命令標(biāo)志0,表示命令;1,表示數(shù)據(jù);voidOLED_WR_Byte(u8dat,u8cmd){DATAOUT(dat); if(cmd)
OLED_RS_Set();else
OLED_RS_Clr();
OLED_CS_Clr();
OLED_WR_Clr();
OLED_WR_Set();
OLED_CS_Set();
OLED_RS_Set(); } 8.2任務(wù)15OLED顯示OLED更新緩存,顯示內(nèi)容。u8OLED_GRAM[128][8]; voidOLED_Refresh_Gram(void){u8i,n; for(i=0;i<8;i++){
OLED_WR_Byte(0xb0+i,OLED_CMD);//設(shè)置頁(yè)地址(0~7)
OLED_WR_Byte(0x00,OLED_CMD);//設(shè)置顯示位置—列低地址
OLED_WR_Byte(0x10,OLED_CMD);//設(shè)置顯示位置—列高地址
for(n=0;n<128;n++)
OLED_WR_Byte(OLED_GRAM[n][i],OLED_DATA);}}8.2任務(wù)15OLED顯示OLED畫(huà)點(diǎn)函數(shù)voidOLED_DrawPoint(u8x,u8y,u8t){u8pos,bx,temp=0;if(x>127||y>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 易拉罐打碼機(jī)課程設(shè)計(jì)
- 2024-2030年全球及中國(guó)向上照明吊燈行業(yè)銷售情況及競(jìng)爭(zhēng)趨勢(shì)預(yù)測(cè)報(bào)告
- 2024-2030年全球及中國(guó)傳統(tǒng)流化床干燥機(jī)行業(yè)供需現(xiàn)狀及十四五前景預(yù)測(cè)報(bào)告
- 2024-2030年全球及中國(guó)PET瓶片行業(yè)供需現(xiàn)狀及投資前景預(yù)測(cè)報(bào)告
- 2024-2030年全球與中國(guó)薄荷烷市場(chǎng)供需現(xiàn)狀及未來(lái)競(jìng)爭(zhēng)前景預(yù)測(cè)報(bào)告
- 2024-2030年中國(guó)高端女裝行業(yè)競(jìng)爭(zhēng)現(xiàn)狀及投資經(jīng)營(yíng)模式分析報(bào)告
- 2024-2030年中國(guó)高檔建筑五金行業(yè)市場(chǎng)發(fā)展?jié)摿Ψ治雠c競(jìng)爭(zhēng)策略建議報(bào)告
- 擺架夾具課程設(shè)計(jì)
- 廢品分揀課程設(shè)計(jì)
- 子矩陣之和課程設(shè)計(jì)
- 護(hù)理方案優(yōu)化總結(jié)分析報(bào)告
- 美國(guó)史智慧樹(shù)知到期末考試答案2024年
- 二年級(jí)體育教師工作述職報(bào)告
- 2024年1月電大國(guó)家開(kāi)放大學(xué)期末試題及答案:物流信息系統(tǒng)管理
- 【川教版】《生命 生態(tài) 安全》五上第8課《防患于未“燃”》課件
- 家庭責(zé)任醫(yī)生團(tuán)隊(duì)長(zhǎng)競(jìng)聘專項(xiàng)方案
- 卓有成效的管理者pdf
- 職務(wù)侵占罪預(yù)防
- 新型冠狀肺炎科普知識(shí)講座總結(jié)
- 《芣苢》 統(tǒng)編版高中語(yǔ)文必修上冊(cè)
- JJF 2099-2024光學(xué)接觸角測(cè)量?jī)x校準(zhǔn)規(guī)范
評(píng)論
0/150
提交評(píng)論