LCD1602和LCD12864程序-并行與串行_第1頁
LCD1602和LCD12864程序-并行與串行_第2頁
LCD1602和LCD12864程序-并行與串行_第3頁
LCD1602和LCD12864程序-并行與串行_第4頁
LCD1602和LCD12864程序-并行與串行_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

.LCD1602和LCD12864的函數(shù)庫,包括并行與串行LCD1602基礎(chǔ)函數(shù)#ifndef__LCD1602_JCK_C__#define__LCD1602_JCK_C__/************************************************感謝閱讀******六哥LCD1602基礎(chǔ)函數(shù)庫****精品文檔放心下載

****************************************************/感謝閱讀//使用請注意定義引腳#include"yscx.c"/*****************************************************************LCD1602判忙函數(shù)謝謝閱讀.******************************************************************/感謝閱讀voidLCD1602_PM(void){unsignedchartemp1;//狀態(tài)信息(判斷是否忙)LCD1602_SJ=0xFF;//記得在包含該頭文件前,定義引腳LCD1602_RS=0;//記得在包含該頭文件前,定義引腳LCD1602_RW=1;//記得在包含該頭文件前,定義引腳LCD1602_E=1;//記得在包含該頭文件前,定義引腳do感謝閱讀{temp1=LCD1602_SJ;//記得在包含該頭文件前,定義引腳精品文檔放心下載LCD1602_SJ=0xFF;}while(temp1&0x80);LCD1602_E=0;//記得在包含該頭文件前,定義引腳精品文檔放心下載YS_us(1); //}/*------------------------------------------------謝謝閱讀LCD1602寫入命令函數(shù)------------------------------------------------*/感謝閱讀voidLCD1602_XZL(unsignedcharml)謝謝閱讀{LCD1602_PM();//忙則等待LCD1602_RS=0;//記得在包含該頭文件前,定義引腳LCD1602_RW=0;//記得在包含該頭文件前,定義引腳謝謝閱讀.LCD1602_E=1;//記得在包含該頭文件前,定義引腳精品文檔放心下載LCD1602_SJ=ml;//記得在包含該頭文件前,定義引腳謝謝閱讀YS_us(1);//稍作延時給LCD反應(yīng)的時間感謝閱讀LCD1602_E=0;//記得在包含該頭文件前,定義引腳感謝閱讀if(ml==0x01|ml==0x02)YS_ms(2);//清屏和地址歸位大概需2ms時間處理謝謝閱讀YS_us(35);//其他指令大概需35us}/*------------------------------------------------感謝閱讀LCD1602寫入數(shù)據(jù)函數(shù)------------------------------------------------*/感謝閱讀voidLCD1602_XSJ(unsignedcharsj)謝謝閱讀{LCD1602_PM();//忙則等待LCD1602_RS=1;//記得在包含該頭文件前,定義引腳謝謝閱讀LCD1602_RW=0;//記得在包含該頭文件前,定義引腳精品文檔放心下載LCD1602_E=1;//記得在包含該頭文件前,定義引腳感謝閱讀LCD1602_SJ=sj;//記得在包含該頭文件前,定義引腳謝謝閱讀YS_us(1);//稍作延時給LCD反應(yīng)的時間精品文檔放心下載LCD1602_E=0;//記得在包含該頭文件前,定義引腳謝謝閱讀}/*------------------------------------------------精品文檔放心下載LCD1602初始化函數(shù)------------------------------------------------*/精品文檔放心下載.voidLCD1602_CSH(void){LCD1602_XZL(0x38); /*顯示模式設(shè)置*/精品文檔放心下載LCD1602_XZL(0x08); /*顯示光標(biāo)移動設(shè)置*/謝謝閱讀LCD1602_XZL(0x01); /*顯示開及光標(biāo)設(shè)置*/精品文檔放心下載LCD1602_XZL(0X06);LCD1602_XZL(0X0c);}#endifLCD1602顯示函數(shù)#ifndef__LCD1602_XSK_C__#define__LCD1602_XSK_C__/************************************************謝謝閱讀***********************六哥LCD1602顯示函數(shù)庫精品文檔放心下載

*********.******* *********************************************************/謝謝閱讀#include"yscx.C"#include"LCD1602_JCK_cx.C"感謝閱讀//為保證顯示數(shù)制時的運行效率,制作了0—9,A—F的ascll碼表精品文檔放心下載unsignedcharcodeascll1602[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x感謝閱讀43,0x44,0x45,0x46};/******************************************************謝謝閱讀***************LCD1602數(shù)制顯示(十或十六)************謝謝閱讀*******************************************************謝謝閱讀sj:需要顯示的數(shù)據(jù)ml:顯示地址設(shè)定xsfs:顯示方式,進制和小數(shù)點的判斷依據(jù),*/voidLCD1602_SZXS(signedlongsj,unsignedcharxsfs,ml)///wei為1輸出十六進制,否則輸出十進制精品文檔放心下載{unsignedlongxc; //顯示緩存unsignedchara;.bitxsd,fs,bf=0;xsd=0;fs=0;LCD1602_XZL(0x04);//設(shè)置光標(biāo)向左移精品文檔放心下載LCD1602_XZL(ml);if(xsfs>10){a=16; //輸出十六進制LCD1602_XSJ(0x48);//顯示Hxsfs=0;} //else{a=10; //否則輸出十進制if(xsfs!=0)xsd=1;//顯示小數(shù)點使能謝謝閱讀if(sj<0){sj=~sj+1;fs=1;} //顯示負號使能}xc=sj;if(xc!=0) //顯示數(shù)據(jù)不為0;則顯示{while(xsd) //判是否需要顯示小數(shù){if(xc!=0) //是否還需要計算{ml=xc%a;.if(bf|ml!=0)//小數(shù)部分為0不需要顯示精品文檔放心下載{LCD1602_XSJ(ascll1602[ml]);//取數(shù)的ascll碼并顯示精品文檔放心下載bf=1; //小數(shù)部分不為0標(biāo)志,小數(shù)部分數(shù)字有效精品文檔放心下載}xc/=a; //取剩下的數(shù)}elseif(bf)LCD1602_XSJ(0x30);//判是否需要補0謝謝閱讀else; //小數(shù)部分無效,不需要補0xsfs--;if(xsfs==0) //小數(shù)點位數(shù)減一{xsd=0; //小數(shù)計算部分結(jié)束標(biāo)志if(bf)LCD1602_XSJ(0x2e);//小數(shù)部分存在有效數(shù)字則顯示小數(shù)點謝謝閱讀}}}////////////整數(shù)顯示部分////////////////////////////////////////////精品文檔放心下載do{LCD1602_XSJ(ascll1602[xc%a]);//取數(shù)的ascll碼并顯示謝謝閱讀xc/=a;}while(xc!=0);if(fs)LCD1602_XSJ(0x2d);//判是否需要顯示負號精品文檔放心下載.LCD1602_XZL(0x06);//還原光標(biāo)移動方向謝謝閱讀}/********************************感謝閱讀LCD1602LCD1602字符顯示程序*********************************/精品文檔放心下載voidLCD1602_ZFXS(unsignedchar*SJ,t,ml)/*h:行,SJ:字符串指針,t:間隔時間*/精品文檔放心下載{LCD1602_XZL(ml);//寫指令while(*SJ)//是否顯示完{LCD1602_XSJ(*SJ);//寫數(shù)據(jù)SJ++; //取下一個字符YS_ms(t); //延時}}.#endifLCD12864基礎(chǔ)函數(shù)—并行#ifndef__LCD12864_JCK_C__精品文檔放心下載#define__LCD12864_JCK_C__精品文檔放心下載/************************************************感謝閱讀** **** 六哥LCD12864基礎(chǔ)函數(shù)庫** **

****************************************************/精品文檔放心下載//使用請注意定義引腳#include"yscx.c"/********************測忙碌**********************/感謝閱讀//測忙碌子程序//RS=0,RW=1,E=H,D0-D7=狀態(tài)字./************************************************/voidLCD12864_PM(void){感謝閱讀unsignedchartemp1;//狀態(tài)信息(判斷是否忙)LCD12864_RS=0;//記得在包含該頭文件前,定義引腳LCD12864_RW=1;//記得在包含該頭文件前,定義引腳LCD12864_E=1;//記得在包含該頭文件前,定義引腳do精品文檔放心下載{temp1=LCD12864_SJ;//記得在包含該頭文件前,定義引腳感謝閱讀LCD12864_SJ=0xFF;}while(temp1&0x80);LCD12864_E=0; //記得在包含該頭文件前,定義引腳精品文檔放心下載YS_us(1); //}/********************寫命令**********************/謝謝閱讀//寫命令子程序///************************************************/精品文檔放心下載voidLCD12864_XZL(unsignedcharml)/*寫命令*/感謝閱讀{LCD12864_PM();LCD12864_RS=0;//記得在包含該頭文件前,定義引腳精品文檔放心下載.LCD12864_RW=0;//記得在包含該頭文件前,定義引腳感謝閱讀LCD12864_E=1;//記得在包含該頭文件前,定義引腳謝謝閱讀LCD12864_SJ=ml;//記得在包含該頭文件前,定義引腳精品文檔放心下載YS_us(0);//稍作延時給LCD反應(yīng)的時間精品文檔放心下載LCD12864_E=0;//記得在包含該頭文件前,定義引腳感謝閱讀if(ml==0x01|ml==0x02)YS_ms(3);//清屏和地址歸位大概需3ms時間處理謝謝閱讀YS_us(50);//其他指令大概需50us}/********************寫數(shù)據(jù)**********************/精品文檔放心下載//寫數(shù)據(jù)子程序///************************************************/精品文檔放心下載voidLCD12864_XSJ(unsignedcharsj)謝謝閱讀{LCD12864_PM();LCD12864_RS=1;//記得在包含該頭文件前,定義引腳精品文檔放心下載LCD12864_RW=0;//記得在包含該頭文件前,定義引腳精品文檔放心下載LCD12864_E=1;//記得在包含該頭文件前,定義引腳感謝閱讀LCD12864_SJ=sj;//記得在包含該頭文件前,定義引腳感謝閱讀YS_us(0);//稍作延時給LCD反應(yīng)的時間精品文檔放心下載LCD12864_E=0;//記得在包含該頭文件前,定義引腳謝謝閱讀}/********************初始化**********************/感謝閱讀.//復(fù)位、通訊方式選擇/************************************************/謝謝閱讀voidLCD12864_CSH(void){P26=1;I/O

//通訊方式為并口PSB=1,在設(shè)計電路時就把PSB端焊好,節(jié)省謝謝閱讀//LCD12864_XZL(0x34);//34H--擴充指令操作感謝閱讀LCD12864_XZL(0x30);//功能設(shè)置,一次送8位數(shù)據(jù),基本指令集LCD12864_XZL(0x0C);//0000,1100整體顯示,游標(biāo)off,游標(biāo)位置offLCD12864_XZL(0x01);//0000,0001清DDRAMLCD12864_XZL(0x02);//0000,0010DDRAM地址歸位謝謝閱讀LCD12864_XZL(0x80);//1000,0000設(shè)定DDRAM7位地址000,0000到地址計數(shù)器AC精品文檔放心下載LCD12864_XZL(0x06);}#endifLCD12864基礎(chǔ)函數(shù)—串行.#ifndef__LCD12864_JCK_CX_C__感謝閱讀#define__LCD12864_JCK_CX_C__謝謝閱讀/************************************************感謝閱讀** **** 六哥LCD12864基礎(chǔ)函數(shù)庫** 串行 **

****************************************************/精品文檔放心下載//使用請注意定義引腳#include"yscx.c"/*******************串行通信*********************謝謝閱讀分別發(fā)送三個字節(jié),11111AB0,DDDD0000,SSSS000,精品文檔放心下載A:即表示并行的RW,1為讀,0為寫B(tài):即表示并行的RS,1為數(shù)據(jù),0為指令D:即表示并行的高四位數(shù)據(jù)S:即表示并行的低四位數(shù)據(jù)注:串行要把PSB端為低電平*************************************************/謝謝閱讀voidLCD12864_CXTX(unsignedcharfs,sj)感謝閱讀{unsignedchari;LCD12864_E=0;//時鐘SCLK.LCD12864_RS=1;///CS片選do ////LCD判忙=============謝謝閱讀{for(i=0;i<8;i++){YS_us(1);//MCU與LCD速率匹配if(i<6)LCD12864_RW=1;//讀LCD數(shù)據(jù),前6位為1;后兩位為0elseLCD12864_RW=0;//命令格式11111100B,0xfc感謝閱讀YS_us(1);//MCU與LCD速率匹配LCD12864_E=1;//時鐘SCLKYS_us(1);//MCU與LCD速率匹配LCD12864_E=0;//時鐘SCLK}YS_us(5);//給LCD反應(yīng)的時間LCD12864_E=1;//時鐘SCLKYS_us(1);//給LCD反應(yīng)的時間}while(LCD12864_RW);//判忙只需要取最高位,而不管后面7位謝謝閱讀LCD12864_E=0;//時鐘SCLKLCD12864_RS=0;///CS片選YS_us(1);//給LCD反應(yīng)的時間.LCD12864_RS=1;///CS片選for(i=0;i<24;i++)//、、、、送3字節(jié)精品文檔放心下載{LCD12864_RW=fs&0x80;//數(shù)據(jù)SID精品文檔放心下載fs<<=1;YS_us(1); //MCU與LCD速率匹配精品文檔放心下載LCD12864_E=1; //時鐘SCLKYS_us(1); //MCU與LCD速率匹配謝謝閱讀if(i==7)fs=sj&0xf0;//取數(shù)據(jù)高四位謝謝閱讀if(i==15)fs=sj<<4;//取數(shù)據(jù)低四位謝謝閱讀LCD12864_E=0; //時鐘SCLKYS_us(1); //MCU與LCD速率匹配謝謝閱讀}LCD12864_RS=0;///CS片選LCD12864_E=1;//恢復(fù)高電平不影響其他用途謝謝閱讀LCD12864_RW=1;//恢復(fù)高電平不影響其他用途精品文檔放心下載}/********************寫命令**********************/精品文檔放心下載voidLCD12864_XZL(unsignedcharml)/*寫命令*/謝謝閱讀{LCD12864_CXTX(0xf8,ml);//命令格式11111000B,0xf8if(ml==0x01|ml==0x02)YS_ms(4);//清屏和地址歸位大概需4ms時間處理YS_us(50);//其他指令大概需50us謝謝閱讀.}/********************寫數(shù)據(jù)**********************/感謝閱讀voidLCD12864_XSJ(unsignedcharsj)精品文檔放心下載{LCD12864_CXTX(0xfa,sj);//命令格式11111010B,0xfa精品文檔放心下載}/********************初始化**********************/謝謝閱讀//復(fù)位、通訊方式選擇/************************************************/感謝閱讀voidLCD12864_CSH(void){P26=0; //通訊方式為串行通信PSB=0,在設(shè)計電路時就把PSB端焊好,節(jié)感謝閱讀省I/O//LCD12864_XZL(0x34);//34H--擴充指令操作感謝閱讀LCD12864_XZL(0x30);//功能設(shè)置,一次送8位數(shù)據(jù),基本指令集LCD12864_XZL(0x0C);//0000,1100整體顯示,游標(biāo)off,游標(biāo)位置offLCD12864_XZL(0x01);//0000,0001清DDRAM謝謝閱讀LCD12864_XZL(0x80);//1000,0000設(shè)定DDRAM7位地址000,0000到地址計數(shù)器AC謝謝閱讀LCD12864_XZL(0x06);}#endif.LCD12864顯示函數(shù)#ifndef__LCD12864_XSK_C__謝謝閱讀#define__LCD12864_XSK_C__精品文檔放心下載/************************************************謝謝閱讀***********************六哥LCD12864顯示函數(shù)庫****************謝謝閱讀

*********************************************************/精品文檔放心下載//使用請注意定義引腳#include"LCD12864_JCK_cx.C"http://包含基礎(chǔ)庫精品文檔放心下載//為保證顯示數(shù)制時的運行效率,制作了0—9,A—F的ascll碼表精品文檔放心下載unsignedcharcodeascll12864[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0謝謝閱讀x43,0x44,0x45,0x46};./*****************************************************感謝閱讀**********LCD12864設(shè)置顯示地址函數(shù)*********************謝謝閱讀******************************************************/感謝閱讀unsignedcharLCD12864_SZDZ(unsignedcharx,y)//精品文檔放心下載{switch(y){case0:x|=0x80;break;case1:x|=0x90;break;case2:x|=0x88;break;case3:x|=0x98;break;default:;}return(x);}/*****************************************************感謝閱讀**********LCD12864數(shù)制顯示函數(shù)************************精品文檔放心下載******************************************************精品文檔放心下載sj:需要顯示的數(shù)據(jù),取值范圍:十進制:-2147483648-2147483647,十六進制:0H-7FFFFFFFH謝謝閱讀xsfs:顯示方式,進制和小數(shù)點的判斷依據(jù),.x:顯示列,取值范圍0-7y:顯示行,取值范圍0-3*/voidLCD12864_SZXS(signedlongsj,unsignedcharxsfs,x,y)感謝閱讀{unsignedlongxc; //顯示緩存unsignedchard[13];bitxsd,fs,bf=0;xsd=0;fs=0;LCD12864_XZL(0x04);//設(shè)置光標(biāo)左移精品文檔放心下載LCD12864_XZL(LCD12864_SZDZ(x,y));//寫入顯示地址謝謝閱讀y=0;if(xsfs>10){x=16; //輸出十六進制d[y]=0x48; //十六進制顯示Hy++;} //else{if(sj<0) //十進制正負數(shù)判斷{sj=~sj+1;.fs=1;} //負號顯示使能if(xsfs!=0)xsd=1;//小數(shù)點顯示使能謝謝閱讀x=10;} //xc=sj;if(xc!=0) //顯示數(shù)據(jù)不為0;則顯示{while(xsd) //判是否需要顯示小數(shù){if(xc!=0) //是否還需要計算{sj=xc%x;if(bf|sj!=0) //小數(shù)部分為0不需要顯示謝謝閱讀{d[y]=ascll12864[xc%x];y++; //取數(shù)的ascll碼并顯示bf=1; //小數(shù)部分不為0標(biāo)志,小數(shù)部分數(shù)字有效感謝閱讀}xc/=x; //取剩下的數(shù)}elseif(bf){d[y]=0x30; //判是否需要補0y++;}else; //小數(shù)部分無效,不需要補0xsfs--;if(xsfs==0) //小數(shù)點位數(shù)減一.{xsd=0; //小數(shù)計算部分結(jié)束標(biāo)志if(bf){d[y]=0x2e;//小數(shù)部分存在有效數(shù)字則顯示小數(shù)點y++;}精品文檔放心下載}}}do{d[y]=ascll12864[xc%x]; //取數(shù)的ascll碼謝謝閱讀y++;xc/=x;}while(xc!=0);if(fs){d[y]=0x2d;//取負號ascll碼y++;}if(y&&0x01) //如果顯示的位數(shù)為奇數(shù){d[y]=0x20; //顯示一個空格y++;}x=y;.y=1;///////////////顯示數(shù)據(jù)//////////////精品文檔放心下載do{LCD12864_XSJ(d[y]);//顯示一個地址的前一個字符感謝閱讀y--;LCD12864_XSJ(d[y]);//顯示一個地址的后一個字符精品文檔放心下載y+=3; //跳到下一個要顯示的兩個字符}while(y<x); //判斷是否顯示完畢LCD12864_XZL(0x06);//設(shè)置光標(biāo)右移精品文檔放心下載}/*****************************************************感謝閱讀**********LCD12864字符顯示函數(shù)************************精品文檔放心下載******************************************************精品文檔放心下載*zfc:需要顯示的字符串指針,字符數(shù)不得超過64個謝謝閱讀x:顯示列,取值范圍0-7y:顯示行,取值范圍0-3*/voidLCD12864_ZFXS(unsignedchar*zfc,x,y)謝謝閱讀.{unsignedchark1,k2,k3;k3=x*2;k1=16-k3;k2=32-k3;k3=48-k3;switch(y) //設(shè)置顯示地址x和換行標(biāo)志y謝謝閱讀{case0:x|=0x80;y=0;break;精品文檔放心下載case1:x|=0x90;y=

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論