基于STM32-LCD12864驅(qū)動程序_第1頁
基于STM32-LCD12864驅(qū)動程序_第2頁
基于STM32-LCD12864驅(qū)動程序_第3頁
基于STM32-LCD12864驅(qū)動程序_第4頁
基于STM32-LCD12864驅(qū)動程序_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論