![基于STM32-LCD12864驅(qū)動程序_第1頁](http://file4.renrendoc.com/view10/M01/0D/01/wKhkGWXuh4-Ac--6AAK2WCbM4Ps527.jpg)
![基于STM32-LCD12864驅(qū)動程序_第2頁](http://file4.renrendoc.com/view10/M01/0D/01/wKhkGWXuh4-Ac--6AAK2WCbM4Ps5272.jpg)
![基于STM32-LCD12864驅(qū)動程序_第3頁](http://file4.renrendoc.com/view10/M01/0D/01/wKhkGWXuh4-Ac--6AAK2WCbM4Ps5273.jpg)
![基于STM32-LCD12864驅(qū)動程序_第4頁](http://file4.renrendoc.com/view10/M01/0D/01/wKhkGWXuh4-Ac--6AAK2WCbM4Ps5274.jpg)
![基于STM32-LCD12864驅(qū)動程序_第5頁](http://file4.renrendoc.com/view10/M01/0D/01/wKhkGWXuh4-Ac--6AAK2WCbM4Ps5275.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
STM32LCD12864驅(qū)動程序(頭文件)(2012-05-2921:25:08)轉(zhuǎn)載▼標(biāo)簽:雜談 #ifndefLCD12864_H#defineLCD12864_H#defineLCD_CONTROLGPIOD//默認(rèn)LCD12864的控制口在PD口#defineLCD_DATAPORTGPIOD//默認(rèn)LCD12864的數(shù)據(jù)口在PD口#defineLCD_RESET_PinGPIO_Pin_12//默認(rèn)LCD12864的復(fù)位引腳連接到PD.12也可不用#defineLCD_RS_PinGPIO_Pin_13//默認(rèn)LCD12864RS--PD.13#defineLCD_RW_PinGPIO_Pin_14//默認(rèn)LCD12864RW--PD.14#defineLCD_EN_PinGPIO_Pin_15//默認(rèn)LCD12864E--PD.15#defineLCD_CONTROL_CLOCKRCC_APB2Periph_GPIOD//默認(rèn)LCD12864的控制口時鐘#defineLCD_DATAPORT_CLOCKRCC_APB2Periph_GPIOD//默認(rèn)LCD12864的數(shù)據(jù)口時鐘#defineLCD_RS_1LCD_CONTROL->BSRR&=~LCD_RS_Pin;LCD_CONTROL->BSRR|=LCD_RS_Pin//RS置高電平#defineLCD_RS_0LCD_CONTROL->BRR&=~LCD_RS_Pin;LCD_CONTROL->BRR|=LCD_RS_Pin//RS置低電平#defineLCD_RW_1LCD_CONTROL->BSRR&=~LCD_RW_Pin;LCD_CONTROL->BSRR|=LCD_RW_Pin//RW置高電平#defineLCD_RW_0LCD_CONTROL->BRR&=~LCD_RW_Pin;LCD_CONTROL->BRR|=LCD_RW_Pin//RW置低電平#defineLCD_EN_1LCD_CONTROL->BSRR&=~LCD_EN_Pin;LCD_CONTROL->BSRR|=LCD_EN_Pin//EN置高電平#defineLCD_EN_0LCD_CONTROL->BRR&=~LCD_EN_Pin;LCD_CONTROL->BRR|=LCD_EN_Pin//EN置低電平#defineLCD_RESET_0LCD_CONTROL->BRR=LCD_RESET_Pin//復(fù)位#defineLCD_RESET_1LCD_CONTROL->BSRR=LCD_RESET_Pin//復(fù)位腳拉高#defineDATAOUTLCD_DATAPORT->ODR&=0xff00;LCD_DATAPORT->ODR//數(shù)據(jù)輸出寄存器#defineDATAINLCD_DATAPORT->IDR//數(shù)據(jù)輸入寄存器#defineLCD_BF((DATAIN)&0x0080)//忙狀態(tài)voidLCD_delayus(unsignedlongn);//延時n(us)voidLCD_delayms(unsignedlongn);//延時n(ms)voidLCD_WriteInitcmd(uint8_tinitcmd);//寫初始化命令voidLCD_WaitLaisure(void);//一直等待到LCD內(nèi)部操作完成,變?yōu)榭臻e狀態(tài)voidLCD_Writecmd(uint8_tcmd);//寫命令到LCD12864voidLCD_WriteByte(uint8_tbyte);//寫一字節(jié)數(shù)據(jù)到LCD12864voidLCD_pos(uint16_tpos);//LCD顯示位置設(shè)置voidLCD_Setpos(uint16_trow,uint16_tcol);//設(shè)定LCD12864的顯示地址,根據(jù)習(xí)慣voidLCD_DispChar(charch);//顯示一個字符voidLCD_Setpos_DispChar(uint16_trow,uint16_tcol,charch);//在指定位置顯示一個字符voidLCD_DispString(charstr[]);//顯示一個字符串,顯示位置需提前設(shè)定//在指定位置顯示一個字符串voidLCD_Setpos_DispString(uint16_trow,uint16_tcol,charstr[]);voidLCD_Dispnum(uint32_tnum);//顯示一個不超過8位的整數(shù),顯示位置需提前設(shè)置//在指定位置顯示一個不超過8位的整數(shù)voidLCD_Setpos_Dispnum(uint16_trow,uint16_tcol,uint32_tnum);voidLCD_DispDecimal(uint32_tnum,uint16_tdot);//顯示一個有效位不超過8位的浮點數(shù),顯示位置需要提前設(shè)定//在指定位置顯示一個有效位不超過8位的浮點數(shù)voidLCD_Setpos_DispDecimal(uint16_trow,uint16_tcol,uint32_tnum,uint16_tdot);//顯示日歷,顯示日期與時間voidLCD_DispDateTime(uint32_tyear,uint16_tmonth,uint16_tday,uint16_thour,uint16_tmin,uint16_tsec);voidLCD_DispPicture(constunsignedcharpicture[]);//顯示一幅圖像128*64//屏幕整體左移一格,用于滾動顯示voidLCD_ShiftLeft(void);//屏幕整體右移一格,用于滾動顯示voidLCD_ShiftRight(void);//清屏,清除顯示voidLCD_Clear(void);//使光標(biāo)還回原點位置voidLCD_Return(void);//關(guān)顯示voidLCD_Close(void);//開顯示voidLCD_Open(void);voidLCD_FlickerChar(uint16_trow,uint16_tcol);//關(guān)閉字符閃爍voidLCD_CloseFlicker(void);//屏幕秒閃爍一次voidLCD_FlickerScreen(void);voidLCD_PORT_Init(void);//LCD連接端口初始化voidLCD_Init(void);//LCD配置初始化#endif#include"stm32f10x.h"}str[k]='\0';//添加字符串結(jié)束標(biāo)志LCD_DispString(str);//顯示字符串}voidLCD_Setpos_Dispnum(uint16_trow,uint16_tcol,uint32_tnum){LCD_Setpos(row,col);LCD_Dispnum(num);}voidLCD_DispDecimal(uint32_tnum,uint16_tdot){uint32_ti=0,j,k=0,wei;uint32_tq;charstr[10];if(num>=10000000)wei=8;elseif(num>=1000000)wei=7;elseif(num>=100000)wei=6;elseif(num>=10000)wei=5;elseif(num>=1000)wei=4;elseif(num>=100)wei=3;elseif(num>=10)wei=2;elsewei=1;for(i=wei;i>0;i--){q=1;j=1;//i=1時,q=1,得到個位for(;j<i;j++)q*=10;str[k++]=num/q+'0';num%=q;}str[k]='\0';//添加字符串結(jié)束標(biāo)志for(i=8;i>0;i--){if((str[i]>='0')&&(str[i]<='9'))break;}str[i+2]='\0';//添加字符串結(jié)束符for(j=0;j<dot;j++,i--)//小數(shù)點后各位依次右移,準(zhǔn)備插入{str[i+1]=str[i];}str[i+1]='.';//插入小數(shù)點LCD_DispString(str);//顯示浮點小數(shù)}voidLCD_Setpos_DispDecimal(uint16_trow,uint16_tcol,uint32_tnum,uint16_tdot){LCD_Setpos(row,col);LCD_DispDecimal(num,dot);}voidLCD_DispDateTime(uint32_tyear,uint16_tmonth,uint16_tday,uint16_thour,uint16_tmin,uint16_tsec){//externuint16_tenableclock;LCD_Setpos(1,0);LCD_DispString("Date:");LCD_Dispnum((uint32_t)year);LCD_DispChar('-');LCD_Dispnum((uint32_t)month);LCD_DispChar('-');LCD_Dispnum((uint32_t)day);if((month<10)&&(day<10))//清除無效位置可能殘留的顯示{LCD_DispChar('');LCD_DispChar('');}elseif(((month<10)&&(day>9))||((month>9)&&(day<10)))LCD_DispChar('');LCD_Setpos(1,15);//if(enableclock)//如果開啟鬧鈴,顯示鬧鈴標(biāo)志//LCD_DispChar('@');//elseLCD_DispChar('*');//第一行結(jié)束符顯示LCD_Setpos(2,0);LCD_DispString("Time:");LCD_Dispnum((uint32_t)hour);LCD_DispChar(':');LCD_Dispnum((uint32_t)min);LCD_DispChar(':');LCD_Dispnum((uint32_t)sec);if(sec==0)LCD_DispChar('0');LCD_DispChar('');LCD_DispChar('');if((hour<10)&&(min<10)&&(sec>0)&&(sec<10))LCD_DispChar('');//用于消隱LCD_Setpos(2,15);//if(enableclock)//LCD_DispChar('@');//elseLCD_DispChar('*');//第二行結(jié)束符顯示}voidLCD_DispPicture(constunsignedcharpicture[]){uint16_ti,j;LCD_Writecmd(0x34);//寫數(shù)據(jù)時,關(guān)閉圖形顯示LCD_delayms(20);for(i=0;i<32;i++)//32行{LCD_Writecmd(0x80+i);LCD_delayus(150);LCD_Writecmd(0x80);LCD_delayus(150);for(j=0;j<16;j++)//一行,16個字節(jié){LCD_WriteByte(picture[j]);LCD_delayus(150);}LCD_delayus(150);}for(i=0;i<32;i++)//32行{LCD_Writecmd(0x80+i);LCD_delayus(150);LCD_Writecmd(0x80);LCD_delayus(150);for(j=0;j<16;j++)//一行,16個字節(jié){LCD_WriteByte(picture[j]);LCD_delayus(150);}LCD_delayus(150);}LCD_Writecmd(0x36);//寫完數(shù)據(jù),開圖形顯示LCD_delayms(50);}//屏幕整體左移一格,用于滾動顯示voidLCD_ShiftLeft(){LCD_Writecmd(0x18);}//屏幕整體右移一格,用于滾動顯示voidLCD_ShiftRight(void){LCD_Writecmd(0x1C);}//清屏,清除顯示voidLCD_Clear(void){LCD_Writecmd(0x01);}//使光標(biāo)還回原點位置voidLCD_Return(void){LCD_Writecmd(0x02);}//關(guān)顯示voidLCD_Close(void){LCD_Writecmd(0x08);}//開顯示voidLCD_Open(void){LCD_Writecmd(0x0C);}voidLCD_FlickerChar(uint16_trow,uint16_tcol){LCD_Writecmd(0x0D);LCD_Setpos(row,col);}//關(guān)閉字符閃爍voidLCD_CloseFlicker(void){LCD_Writecmd(0x0C);}//屏幕秒閃爍一次voidLCD_FlickerScreen(void){LCD_Writecmd(0x08);//關(guān)顯示LCD_delayms(500);LCD_Writecmd(0x0C);//開顯示LCD_delayms(500);}//LCD連接端口初始化voidLCD_PORT_Init(void){GPIO_InitTypeDefLCD_port;RCC_PCLK2Config(RCC_HCLK_Div1);RCC_PCLK1Config(RCC_HCLK_Div2);//fPCLK1=36MHzRCC_APB2PeriphClockCmd(LCD_CONTROL_CLOCK,ENABLE);//時鐘使能RCC_APB2PeriphClockCmd(LCD_DATAPORT_CLOCK,ENABLE);LCD_port.GPIO_Pin=(uint16_t)0x00ff;LCD_port.GPIO_Speed=GPIO_Speed_50MHz;LCD_port.GPIO_Mode=GPIO_Mode_Out_OD;//OD開路輸出,外接上拉電阻到5VGPIO_Init(LCD_DATAPORT,&LCD_port);LCD_port.GPIO_Pin=LCD_RESET_Pin|LCD_RS_Pin|LCD_RW_Pin|LCD_EN_Pin;LCD_port.GPIO_Speed=GPIO_Speed_50MHz;LCD_port.GPIO_Mode=GPIO_Mode_Out_OD;//OD開路輸出GPIO_Init(LCD_CONTROL,&LCD_port);}voidLCD_Init(void){LCD_RESET_0;LCD_delayms(300);//復(fù)位LCD12864LCD_RESET_1;LCD_delayms(300);LCD_Writecmd(0x34);//寫數(shù)據(jù)時,關(guān)閉圖形顯示LCD_delayus(400);LCD_WriteInitcmd(0x38);//并行,8位,基本指令操作LCD_delayus(200);//150LCD_WriteInitcmd(0x38);LCD_delayus(100);LCD_WriteInitcmd(0x0C);//開顯示,顯示光標(biāo),用于測試LCD_delayus(150);LCD_WriteInitcmd(0x01);//清屏LCD_delayms(12);LCD_Writecmd(0x06);//地址自動增加LCD_delayus(150);}#include"stm32f10x.h"#include"LCD12864.h"externconstunsignedcharpicture1[];externconstunsignedcharpicture2[];voidGPIO_Configuration(void);//延時nusvoiddelay_nus(unsignedlongn){unsignedlongj;while(n--){j=8;while(j--);}}//延時nmsvoiddelay_nms(unsignedlongn){while(n--)delay_nus(1100);}//時鐘配置函數(shù)72MHz端口配置voidRCC_Configuration(){RCC_PCLK2Config(RCC_HCLK_Div1);RCC_PCLK1Config(RCC_HCLK_Div2);//fPCLK1=36MHz//RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|\//RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE,ENABLE);}intmain(void){//uint16_ti;//charstr1[]={"Happyev
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)二年級班主任工作經(jīng)驗總結(jié)
- 蘇科版數(shù)學(xué)八年級上冊4.3《實數(shù)》聽評課記錄1
- 人教版地理八年級上冊《第二章第三節(jié) 河流-黃河的治理與開發(fā)》聽課評課記錄
- 北京課改版歷史八年級上冊第19課《七七事變與全國抗戰(zhàn)》聽課評課記錄
- 川教版歷史七年級下冊第18課《清朝君主專制的極端強(qiáng)化》聽課評課記錄
- 湘教版數(shù)學(xué)九年級下冊《3.1 投影》聽評課記錄
- 2025年展館空間設(shè)計合作協(xié)議書
- 浙江育英職業(yè)技術(shù)學(xué)院《機(jī)器人技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 宿遷學(xué)院《財經(jīng)應(yīng)用文》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西老區(qū)職業(yè)技術(shù)學(xué)院《生物技術(shù)導(dǎo)論》2023-2024學(xué)年第二學(xué)期期末試卷
- 商業(yè)銀行的風(fēng)險審計與內(nèi)部控制
- 2024項目管理人員安全培訓(xùn)考試題及參考答案AB卷
- 2025年與商場合作協(xié)議樣本(5篇)
- 網(wǎng)絡(luò)與社交媒體管理制度
- 2025年新能源汽車銷售傭金返點合同范本6篇
- 2025-2030年中國配電變壓器市場未來發(fā)展趨勢及前景調(diào)研分析報告
- 六年級上第二單元知識結(jié)構(gòu)圖
- 溢流堰穩(wěn)定計算
- 馬曉宏_《法語》_第一冊復(fù)習(xí)(課堂PPT)
- 道路環(huán)衛(wèi)清掃保潔項目應(yīng)急處置預(yù)案
- 東四命與西四命的吉兇表(共4頁)
評論
0/150
提交評論