(分享文件)普中科技開發教程12864
顯示圖片效果圖.JPG (2.01 MB, 下載次數: 71)
下載附件
2019-1-5 20:39 上傳
單片機源程序如下:
- #include"st7565.h"
- /*******************************************************************************
- * 函 數 名 : LCD12864_WriteCmd
- * 函數功能 : 寫入一個命令到12864
- * 輸 入 : cmd
- * 輸 出 : 無
- *******************************************************************************/
- void LcdSt7565_WriteCmd(cmd)
- {
- LCD12864_CS = 0; //chip select,打開片選
- LCD12864_RD = 1; //disable read,讀失能
- LCD12864_RS = 0; //select command,選擇命令
- LCD12864_RW = 0; //select write,選擇寫模式
- _nop_();
- _nop_();
- DATA_PORT = cmd; //put command,放置命令
- _nop_();
- _nop_();
- LCD12864_RW = 1; //command writing ,寫入命令
- }
- /*******************************************************************************
- * 函 數 名 : LcdSt7565_WriteData
- * 函數功能 : 寫入一個數據到12864
- * 輸 入 : dat
- * 輸 出 : 無
- *******************************************************************************/
- void LcdSt7565_WriteData(dat)
- {
- LCD12864_CS = 0; //chip select,打開片選
- LCD12864_RD = 1; //disable read,讀失能
- LCD12864_RS = 1; //select data,選擇數據
- LCD12864_RW = 0; //select write,選擇寫模式
- _nop_();
- _nop_();
- DATA_PORT = dat; //put data,放置數據
- _nop_();
- _nop_();
- LCD12864_RW = 1; //data writing,寫數據
- }
- /*******************************************************************************
- * 函 數 名 : LCD12864_Init
- * 函數功能 : 初始化12864
- * 輸 入 : 無
- * 輸 出 : 無
- * 說 明 : LCD12864的命令指令可以查看例程文件夾下的《ST7565p數據手冊》
- * * 的第51頁的位置。
- *******************************************************************************/
- void Lcd12864_Init()
- {
- uchar i;
- LCD12864_RSET = 0;
- for (i=0; i<100; i++);
- LCD12864_CS = 0;
- LCD12864_RSET = 1;
-
- //----------------Star Initial Sequence-------//
- //------程序初始化設置,具體命令可以看文件夾下---//
- //--軟件初始化--//
- LcdSt7565_WriteCmd(0xE2); //reset
- for (i=0; i<100; i++); //延時一下
- //--表格第8個命令,0xA0段(左右)方向選擇正常方向(0xA1為反方向)--//
- LcdSt7565_WriteCmd(0xA1); //ADC select segment direction
-
- //--表格第15個命令,0xC8普通(上下)方向選擇選擇反向,0xC0為正常方向--//
- LcdSt7565_WriteCmd(0xC8); //Common direction
-
- //--表格第9個命令,0xA6為設置字體為黑色,背景為白色---//
- //--0xA7為設置字體為白色,背景為黑色---//
- LcdSt7565_WriteCmd(0xA6); //reverse display
- //--表格第10個命令,0xA4像素正常顯示,0xA5像素全開--//
- LcdSt7565_WriteCmd(0xA4); //normal display
-
- //--表格第11個命令,0xA3偏壓為1/7,0xA2偏壓為1/9--//
- LcdSt7565_WriteCmd(0xA2); //bias set 1/9
-
- //--表格第19個命令,這個是個雙字節的命令,0xF800選擇增壓為4X;--//
- //--0xF801,選擇增壓為5X,其實效果差不多--//
- LcdSt7565_WriteCmd(0xF8); //Boost ratio set
- LcdSt7565_WriteCmd(0x01); //x4
-
- //--表格第18個命令,這個是個雙字節命令,高字節為0X81,低字節可以--//
- //--選擇從0x00到0X3F。用來設置背景光對比度。---/
- LcdSt7565_WriteCmd(0x81); //V0 a set
- LcdSt7565_WriteCmd(0x23);
- //--表格第17個命令,選擇調節電阻率--//
- LcdSt7565_WriteCmd(0x25); //Ra/Rb set
-
- //--表格第16個命令,電源設置。--//
- LcdSt7565_WriteCmd(0x2F);
- for (i=0; i<100; i++);
- //--表格第2個命令,設置顯示開始位置--//
- LcdSt7565_WriteCmd(0x40); //start line
- //--表格第1個命令,開啟顯示--//
- LcdSt7565_WriteCmd(0xAF); // display on
- for (i=0; i<100; i++);
- }
- /*******************************************************************************
- * 函 數 名 : LCD12864_ClearScreen
- * 函數功能 : 清屏12864
- * 輸 入 : 無
- * 輸 出 : 無
- *******************************************************************************/
- void Lcd12864_ClearScreen(void)
- {
- uchar i, j;
- for(i=0; i<8; i++)
- {
- //--表格第3個命令,設置Y的坐標--//
- //--Y軸有64個,一個坐標8位,也就是有8個坐標--//
- //所以一般我們使用的也就是從0xB0到0x07,就夠了--//
- LcdSt7565_WriteCmd(0xB0+i);
- //--表格第4個命令,設置X坐標--//
- //--當你的段初始化為0xA1時,X坐標從0x10,0x04到0x18,0x04,一共128位--//
- //--當你的段初始化為0xA0時,X坐標從0x10,0x00到0x18,0x00,一共128位--//
- //--在寫入數據之后X坐標的坐標是會自動加1的,我們初始化使用0xA0所以--//
- //--我們的X坐標從0x10,0x00開始---//
- LcdSt7565_WriteCmd(0x10);
- LcdSt7565_WriteCmd(0x04);
-
- //--X軸有128位,就一共刷128次,X坐標會自動加1,所以我們不用再設置坐標--//
- for(j=0; j<128; j++)
- {
- LcdSt7565_WriteData(0x00); //如果設置背景為白色時,清屏選擇0XFF
- }
- }
- }
- /*******************************************************************************
- * 函 數 名 : LCD12864_Write16CnCHAR
- * 函數功能 : 在12864上面書寫16X16的漢字
- * 輸 入 : x, y, cn
- * 輸 出 : 無
- * 說 明 : 該函數可以直接書寫字符串,但是書寫是從右到左,所以輸入的時
- * * 侯注意輸入。漢字的取模方式請觀看文件夾下的《漢字取模軟件的
- * * 使用說明》
- *******************************************************************************/
- #ifdef CHAR_CODE
- #include"charcode.h"
- uchar Lcd12864_Write16CnCHAR(uchar x, uchar y, uchar *cn)
- {
- uchar j, x1, x2, wordNum;
- //--Y的坐標只能從0到7,大于則直接返回--//
- if(y > 7)
- {
- return 0;
- }
- //--X的坐標只能從0到128,大于則直接返回--//
- if(x > 128)
- {
- return 0;
- }
- y += 0xB0; //求取Y坐標的值
- //--設置Y坐標--//
- LcdSt7565_WriteCmd(y);
- while ( *cn != '\0') //在C語言中字符串結束以‘\0’結尾
- {
-
- //--設置Y坐標--//
- LcdSt7565_WriteCmd(y);
- x1 = (x >> 4) & 0x0F; //由于X坐標要兩句命令,分高低4位,所以這里先取出高4位
- x2 = x & 0x0F; //去低四位
- //--設置X坐標--//
- LcdSt7565_WriteCmd(0x10 + x1); //高4位
- LcdSt7565_WriteCmd(0x04 + x2); //低4位
- for (wordNum=0; wordNum<50; wordNum++)
- {
- //--查詢要寫的字在字庫中的位置--//
- if ((CN16CHAR[wordNum].Index[0] == *cn)
- &&(CN16CHAR[wordNum].Index[1] == *(cn+1)))
- {
- for (j=0; j<32; j++) //寫一個字
- {
- if (j == 16) //由于16X16用到兩個Y坐標,當大于等于16時,切換坐標
- {
- //--設置Y坐標--//
- LcdSt7565_WriteCmd(y + 1);
-
- //--設置X坐標--//
- LcdSt7565_WriteCmd(0x10 + x1); //高4位
- LcdSt7565_WriteCmd(0x04 + x2); //低4位
- }
- LcdSt7565_WriteData(CN16CHAR[wordNum].Msk[j]);
- }
- x += 16;
- }//if查到字結束
- } //for查字結束
- cn += 2;
- } //while結束
- return 1;
- }
- #endif
復制代碼
所有資料51hei提供下載:
程序.zip
(27.41 KB, 下載次數: 257)
2019-1-5 20:40 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|