利用SED1520實現點陣顯示_第1頁
利用SED1520實現點陣顯示_第2頁
利用SED1520實現點陣顯示_第3頁
利用SED1520實現點陣顯示_第4頁
利用SED1520實現點陣顯示_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、/ 函數聲明 #include"stdio.h"#include"absacc.h"#include"reg51.h"/LCD接口管腳聲明sbit A0=P3A0;/寄存器選擇信號sbit RW=P3A1; /讀/寫選擇信號sbit E1=P3A2; /使能信號 E1sbit E2=P3A3; / 使能信號 E2#define DATA_IO P1#define LCD_DISPLAYON 0xaf#define LCD_DISPLAYOFF 0xae#define LCD_DRIVERON 0xa5#define LCD_DRIVE

2、ROFF 0xa4#define LCD_DUTY16 0xa8#define LCD_DUTY32 0xa9#define LCD_END 0xee#define LCD_RESET 0xe2#define LCD_RWMODE 0xe0#define LCD_STARTLINE0 0xc0#define LCD_PAGE0 0xb8#define LCD_COLUMNADDR0 0x00#define LCD_ON() LCD_Command(LCD_DISPLAYON)#define LCD_OFF() LCD_Command(LCD_DISPLAYOFF)#define LCD_Sta

3、ticON() LCD_Command(LCD_DRIVERON)#define LCD_StaticOFF() LCD_Command(LCD_DRIVEROFF)#define LCD_Select16() LCD_Command(LCD_DUTY16)#define LCD_Select32() LCD_Command(LCD_DUTY32)#define LCD_StartRW() LCD_Command(LCD_RWMODE)#define LCD_EndRW() LCD_Command(LCD_END)#define LCD_Reset() LCD_Command(LCD_RESE

4、T)#define LCD_SetStartLine(i) LCD_Command(LCD_STARTLINE0+i)#define LCD_SetPage(i) LCD_Command(LCD_PAGE0+i)#define LCD_SetColumn(i) LCD_Command(LCD_COLUMNADDR0+i)/ / 函數名稱: LCD_Command1/ 入口參數: nCommand 命令字/ 函數功能: 寫指令代碼子程序 (SED1520-1)/ void LCD_Command1(unsigned char nCommand)unsigned char state_temp;A

5、0=0;RW=1; while(state_temp&0x80=1) / 判"忙"標志為 "0" 否, 否再讀DATA_IO=0xFF ; /P1 口置 "1" E1=1;state_temp=DATA_IO; / 設置讀狀態(tài)字地址 E1=0;RW=0;E1=1; DATA_IO=nCommand; / 寫指令代碼E1=1;E1=0;/ / 函數名稱: WRITE_showDATA1/ 入口參數: show_DATA 寫入 SED1520-1 內部顯示 RAM 的數據/ 函數功能: 寫顯示數據子程序 (SED1520-1)/

6、void WRITE_showDATA1(unsigned char show_DATA) unsigned char state_temp;A0=0;RW=1;while(state_temp&0x80=1) / 判"忙 "標志為 "0" 否, 否再讀 DATA_IO=0xFF ; /P1 口置 "1" E1=1;state_temp=DATA_IO; / 設置讀狀態(tài)字地址 E1=0;A0=1;RW=0;E1=1; DATA_IO=show_DATA; / 寫指令代碼E1=1;E1=0;/ / 函數名稱: READ_show

7、DATA1/ 入口參數: show_DATA 讀出 SED1520-1 內部顯示 RAM 的數據/ 函數功能: 讀顯示數據子程序 (SED1520-1)/ unsigned char READ_showDATA1()unsigned char show_DATA; unsigned char state_temp;A0=0;RW=1;while(state_temp&0x80=1) / 判"忙 "標志為 "0" 否, 否再讀DATA_IO=0xFF ;E1=1;state_temp=DATA_IO;E1=0;A0=1;DATA_IO=0xFF ;

8、E1=1;show_DATA=DATA_IO;E1=0;return(show_DATA);/P1 口置 "1"/ 設置讀狀態(tài)字地址/P1 口置 "1"/ 讀數據/ 返回顯示區(qū)數據/ / 函數名稱: LCD_Command2/ 入口參數: nCommand 命令字/ 函數功能: 寫指令代碼子程序 (SED1520-2)/ void LCD_Command2(unsigned char nCommand)unsigned char state_temp;A0=0;RW=1;while(state_temp&0x80=1) / 判"忙&qu

9、ot;標志為 "0" 否, 否再讀 DATA_IO=0xFF ; /P1 口置 "1" E2=1;state_temp=DATA_IO; / 設置讀狀態(tài)字地址 E2=0;RW=0;/ 寫指令代碼E2=1;DATA_IO=nCommand;E2=1;E2=0;/ / 函數名稱: WRITE_showDATA2/ 入口參數: show_DATA 寫入 SED1520-2 內部顯示 RAM 的數據/ 函數功能: 寫顯示數據子程序 (SED1520-2)/ void WRITE_showDATA2(unsigned char show_DATA) unsigne

10、d char state_temp; A0=0;RW=1; while(state_temp&0x80=1) / 判"忙 "標志為 "0" 否, 否再讀 DATA_IO=0xFF ; /P1 口置 "1" E2=1;state_temp=DATA_IO; / 設置讀狀態(tài)字地址 E2=0;A0=1;RW=0;E2=1;DATA_IO=show_DATA; / 寫指令代碼E2=1;E2=0;/ / 函數名稱: READ_showDATA2/ 入口參數: show_DATA 讀出 SED1520-2 內部顯示 RAM 的數據/ 函數

11、功能: 讀顯示數據子程序 (SED1520-2)/ unsigned char READ_showDATA2()unsigned char show_DATA; unsigned char state_temp;A0=0;RW=1; while(state_temp&0x80=1) / 判"忙 "標志為 "0" 否, 否再讀 DATA_IO=0xFF ;/P1 口置 "1"E2=1;state_temp=DATA_IO; / 設置讀狀態(tài)字地址 E2=0;A0=1;DATA_IO=0xFF ;/ P1 口置 "1&qu

12、ot;E2=1; show_DATA=DATA_IO; / 讀數據 E2=0;return(show_DATA); / 返回顯示區(qū)數據 / 函數聲明#include"stdio.h"#include"absacc.h"#include"reg51.h"/ 定義地址#define CWADD1 XBYTE0x8000 / 寫指令代碼地址 (E1)#define CRADD1 XBYTE0x8200 / 讀狀態(tài)字地址 (E1)#define DWADD1 XBYTE0x8100 / 寫顯示數據地址 (E1)#define DRADD1 X

13、BYTE0x8300 / 讀顯示數據地址 (E1)#define CWADD2 XBYTE0x4000 / 寫指令代碼地址 (E2)#define CRADD2 XBYTE0x4200 / 讀狀態(tài)字地址 (E2)#define DWADD2 XBYTE0x4100 / 寫顯示數據地址 (E2)#define DRADD2 XBYTE0x4300 / 讀顯示數據地址 (E2)/ 定義各命令字 #define LCD_DISPLAYON 0xaf#define LCD_DISPLAYOFF 0xae#define LCD_DRIVERON 0xa5#define LCD_DRIVEROFF 0xa

14、4#define LCD_DUTY16 0xa8#define LCD_DUTY32 0xa9#define LCD_END 0xee#define LCD_RESET 0xe2#define LCD_RWMODE 0xe0#define LCD_STARTLINE0 0xc0#define LCD_PAGE0 0xb8#define LCD_COLUMNADDR0 0x00/ 定義各命令操作 #define LCD_ON() LCD_Command(LCD_DISPLAYON)#define LCD_OFF() LCD_Command(LCD_DISPLAYOFF)#define LCD_S

15、taticON() LCD_Command(LCD_DRIVERON)#define LCD_StaticOFF() LCD_Command(LCD_DRIVEROFF)#define LCD_Select16() LCD_Command(LCD_DUTY16)#define LCD_Select32() LCD_Command(LCD_DUTY32)#define LCD_StartRW() LCD_Command(LCD_RWMODE)#define LCD_EndRW() LCD_Command(LCD_END)#define LCD_Reset() LCD_Command(LCD_RE

16、SET)#define LCD_SetStartLine(i) LCD_Command(LCD_STARTLINE0+i)#define LCD_SetPage(i) LCD_Command(LCD_PAGE0+i)#define LCD_SetColumn(i) LCD_Command(LCD_COLUMNADDR0+i)/*ASCII字體,大小6X8上到下D0D7,左到右*/unsigned char code ASCII6=0x00,0x7e,0x21,0x21,0x21,0x7e,/*A*/0x00,0x7f,0x49,0x49,0x49,0x36,/*B*/0x00,0x3e,0x4

17、1,0x41,0x41,0x22,/*C*/0x00,0x7f,0x41,0x41,0x22,0x1c,/*D*/0x00,0x7f,0x49,0x49,0x49,0x49,/*E*/0x00,0x7f,0x09,0x09,0x09,0x01,/*F*/0x00,0x3e,0x41,0x49,0x49,0x7a,/*G*/0x00,0x7f,0x08,0x08,0x08,0x7f,/*H*/0x00,0x41,0x7f,0x41,0x00,0x00,/*I*/0x00,0x20,0x40,0x41,0x3f,0x01,/*J*/0x00,0x7f,0x08,0x14,0x22,0x41,/*K

18、*/0x00,0x7f,0x40,0x40,0x40,0x40,/*L*/0x00,0x7f,0x02,0x0c,0x02,0x7f,/*M*/0x00,0x7f,0x04,0x08,0x10,0x7f,/*N*/0x00,0x3e,0x41,0x41,0x41,0x3e,/*O*/0x00,0x7f,0x09,0x09,0x09,0x06,/*P*/ 0x00,0x3e,0x41,0x41,0x41,0x3e,/*Q*/0x00,0x7f,0x09,0x19,0x29,0x46,/*R*/ 0x00,0x46,0x49,0x49,0x49,0x31,/*S*/0x00,0x01,0x01,0

19、x7f,0x01,0x01,/*T*/0x00,0x3f,0x40,0x40,0x40,0x3f,/*U*/0x00,0x1f,0x20,0x40,0x20,0x1f,/*V*/0x00,0x3f,0x40,0x38,0x40,0x3f,/*W*/0x00,0x63,0x14,0x08,0x14,0x63,/*X*/0x00,0x07,0x08,0x70,0x08,0x07,/*Y*/0x00,0x61,0x51,0x49,0x45,0x43,/*Z*/;/ / 函數名稱: LCD_Command1/ 入口參數: nCommand 命令字/ 函數功能: 寫指令代碼子程序 (SED1520-1)

20、/ void LCD_Command1(unsigned char nCommand)unsigned char state_temp; while(state_temp&0x80=1) / 判 "忙 "標志為 "0" 否 , 否再讀 state_temp=CRADD1; / 設置讀狀態(tài)字地址 CRADD1=nCommand; / 寫指令代碼/ / 函數名稱: WRITE_showDATA1/ 入口參數: show_DATA 寫入 SED1520-1 內部顯示 RAM 的數據 / 函數功能: 寫顯示數據子程序 (SED1520-1)/ void

21、WRITE_showDATA1(unsigned char show_DATA)unsigned char state_temp; while(state_temp&0x80=1) / 判 "忙 "標志為 "0" 否 , 否再讀 state_temp=CRADD1; / 設置讀狀態(tài)字地址 DRADD1=show_DATA; / 寫指令代碼/ / 函數名稱: READ_showDATA1/ 入口參數: show_DATA 讀出 SED1520-1 內部顯示 RAM 的數據/ 函數功能: 讀顯示數據子程序 (SED1520-1)/ unsigned

22、char READ_showDATA1() unsigned char show_DATA;unsigned char state_temp;while(state_temp&0x80=1) / 判 "忙 "標志為 "0" 否 , 否再讀 unsigned char show_DATA;state_temp=CRADD1; show_DATA=DRADD1; return(show_DATA);/ 設置讀狀態(tài)字地址/ 讀數據/ 返回顯示區(qū)數據/ / 函數名稱: LCD_Command2/ 入口參數: nCommand 命令字/ 函數功能: 寫指令

23、代碼子程序 (SED1520-2)/ void LCD_Command2(unsigned char nCommand)unsigned char state_temp;while(state_temp&0x80=1) / 判 "忙 "標志為 "0" 否 , 否再讀 state_temp=CRADD2; / 設置讀狀態(tài)字地址CRADD2=nCommand; / 寫指令代碼/ / 函數名稱: WRITE_showDATA2/ 入口參數: show_DATA 寫入 SED1520-2 內部顯示 RAM 的數據/ 函數功能: 寫顯示數據子程序 (SED

24、1520-2)/ void WRITE_showDATA2(unsigned char show_DATA) unsigned char state_temp; while(state_temp&0x80=1) / 判 "忙 "標志為 "0" 否 , 否再讀 state_temp=CRADD2;/ 設置讀狀態(tài)字地址DRADD2=show_DATA; / 寫指令代碼 / / 函數名稱: READ_showDATA2/ 入口參數: show_DATA 讀出 SED1520-2 內部顯示 RAM 的數據/ 函數功能: 讀顯示數據子程序 (SED1520

25、-2)/ unsigned char READ_showDATA2() unsigned char state_temp;while(state_temp&0x80=1) / 判 "忙 "標志為 "0" 否 , 否再讀 state_temp=CRADD2; / 設置讀狀態(tài)字地址 show_DATA=DRADD2; / 讀數據 return(show_DATA); / 返回顯示區(qū)數據/ / 函數名稱: LCD_Command/ 入口參數: nCommand 命令字/ 函數功能: 把命令字寫入兩個 SED1520/ void LCD_Command(

26、unsigned char nCommand)LCD_Command1(nCommand);LCD_Command1(nCommand);/ /函數名稱:LCD_SetRam/入口參數:bChip2, ndata/bChip2 用于選擇控制器bChip2=0 選擇 SED1520-1/bChip2=1 選擇 SED1520-2/; ndata 是要寫入的數據/函數功能:把顯示數據寫入其中一個SED1520/ void LCD_SetRam(bit bChip2,unsigned char ndata)if(!bChip2)WRITE_showDATA1(ndata);elseWRITE_sho

27、wDATA2(ndata);/ / 函數名稱: LCD_Write/ 入口參數: npage, ncolumn , ndata/ npage 取值 07;當取 03 時在 SED1520-1;/ 當取 41 時在 SED1520-2;/ ncolumn 取 060/; ndata 是要寫入的數據/ 函數功能: 把顯示數據寫入指定的位置/ void LCD_Write(unsigned char npage,unsigned char ncolumn,unsigned char ndata) LCD_SetPage(npage%4);LCD_SetColumn(ncolumn); LCD_Set

28、Ram(npage>3,ndata);/ / 函數名稱: LCD_PageWrite/ 入口參數: npage ,*ndata/npage 取值 07;當取 03 時在 SED1520-1;/當取 41 時在 SED1520-2;/ *ndata 是要寫入的數據的地址指針/ 函數功能: 把顯示數據寫入指定的位置/ void LCD_PageWrite(unsigned char npage,unsigned char idata *ndata)unsigned char i;bit bChip2=npage>3;LCD_SetPage(npage%4);LCD_SetColumn(

29、0); for(i=0;i<61;i+)LCD_SetRam(bChip2,ndatai);/ / 函數名稱: LCD_Init/ 函數功能: 初始化 SED1520/ void LCD_Init()LCD_Command(LCD_RESET); LCD_Command(0xa0);LCD_Command(LCD_DUTY32); LCD_Command(0xa4);/ /函數名稱:GetIndex/入口參數:szText/szText表示要顯示的子符/返回值:GetIndex/要顯示的字符在字摩存儲區(qū)的位置(第幾個子模)/函數功能:查詢字符在字模存儲區(qū)的位置/ unsigned cha

30、r GetIndex(unsigned char szText) unsigned char code TAB100= 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q' ,'R','S','T','U','V','W',

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論