




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、main.c#include #includest7565.h sbit key1=P20; sbit key2=P21; sbit key3=P30; sbit key4=P31;keyscan1(); keyscan2(); keyscan3();keyscan4();/k1=0,k2=0,k3=0,k4=0;/-全局變量-/ void Delay10ms(unsigned void delay(uchar z)uchar x,y; for(x=z;x0;x-)for(y=110;y0;y-);c);/z(ms)/*函 數 名函數功能: main: 主函數: 無: 無輸輸入出*/uchar
2、 i = 192; void main()Lcd12864_Init();Lcd12864_ClearScreen();while(1)a1: if(keyscan1()!=1)&(keyscan2()!=1)&(keyscan3()!=1)&(keyscan1()!=1)for (i=0; i192; i += 16)Lcd12864_ClearScreen();/-由于這個函數顯示方向正好相反-/、LCHAR(0, i, 園);Delay10ms(100);if(keyscan2()|keyscan3()|keyscan4()|keyscan1()goto a1;if(keyscan1()
3、=1)Lcd12864_Init(); Lcd12864_ClearScreen();while(1)for (i=0; i128; i += 16)Lcd12864_ClearScreen();/-由于這個函數顯示方向正好相反-/LDelay10ms(100);CHAR(0, i, );if(keyscan2()|keyscan3()|keyscan4()goto a1;if(keyscan2()=1)Lcd12864_Init(); Lcd12864_ClearScreen(); while(1)for (i=0; i128; i += 16)Lcd12864_ClearScreen();
4、/-由于這個函數顯示方向正好相反-/LDelay10ms(100);CHAR(0, i,);if(keyscan1()|keyscan3()|keyscan4()goto a1;if(keyscan3()=1)Lcd12864_Init(); Lcd12864_ClearScreen();while(1)for (i=0; i128; i += 16)Lcd12864_ClearScreen();/-由于這個函數顯示方向正好相反-/LDelay10ms(100);CHAR(0, i,);if(keyscan1()|keyscan2()|keyscan4()goto a1;if(keyscan4
5、()=1)Lcd12864_Init(); Lcd12864_ClearScreen();while(1)for (i=0; i0;c-)for(b=38;b0;b-)for(a=130;a0;a-);keyscan1()if( key1=0)delay(5);if( key1=0)while(!key1); return 1;return 0;return 0;0uskeyscan2()if( key2=0)delay(5);if( key2=0)while(!key2); return 1;return 0;return 0;keyscan3()if( key3=0)delay(5);if
6、( key3=0)while(!key3); return 1;return 0;return 0;keyscan4()if( key4=0)delay(5);if( key4=0)while(!key4); return 1;return 0;return 0;Reg51.h/*REG51.HHeader file feneric 80C51 and 80C31 microcontroller.Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.s.*/#ifndef REG51_H#define REG51
7、_H/*BYTE Register*/sfr P0sfr P1 sfr P2 sfr P3 sfr PSW sfr ACC sfr Bsfr SP sfr DPLsfr DPH= 0 x80;= 0 x90;= 0 xA0;= 0 xB0;= 0 xD0;= 0 xE0;= 0 xF0;= 0 x81;= 0 x82;= 0 x83;sfr PCON = 0 x87;sfr TCON = 0 x88; sfr TMOD = 0 x89;sfr TL0sfr TL1 sfr TH0 sfr TH1 sfr IE sfr IP= 0 x8A;= 0 x8B;= 0 x8C;= 0 x8D;= 0
8、xA8;= 0 xB8;sfr SCON = 0 x98;sfr SBUF = 0 x99;/*BIT Register*/*PSWsbit CY sbit AC sbit F0 sbit RS1 sbit RS0sbit OV*/= 0 xD7;= 0 xD6;= 0 xD5;= 0 xD4;= 0 xD3;= 0 xD2;sbit P= 0 xD0;/*TCON*/sbit TF1sbit TR1 sbit TF0 sbit TR0 sbit IE1 sbit IT1 sbit IE0 sbit IT0= 0 x8F;= 0 x8E;= 0 x8D;= 0 x8C;= 0 x8B;= 0
9、x8A;= 0 x89;= 0 x88;/*IEsbit EA sbit ES sbit ET1 sbit EX1 sbit ET0 sbit EX0*/= 0 xAF;= 0 xAC;= 0 xAB;= 0 xAA;= 0 xA9;= 0 xA8;/*IPsbit PS sbit PT1 sbit PX1 sbit PT0sbit PX0*/= 0 xBC;= 0 xBB;= 0 xBA;= 0 xB9;= 0 xB8;/*P3sbit RD sbit WR sbit T1 sbit T0*/= 0 xB7;= 0 xB6;= 0 xB5;= 0 xB4;sbitsbit1 = 0 xB3;
10、0 = 0 xB2;sbit TXD= 0 xB1;sbit RXD= 0 xB0;/*SCON*/sbit SM0sbit SM1 sbit SM2 sbit REN sbit TB8sbit RB8= 0 x9F;= 0 x9E;= 0 x9D;= 0 x9C;= 0 x9B;= 0 x9A;sbit TIsbit RI= 0 x99;= 0 x98;#endifSt7565.h#ifndef ST7565_H #define ST7565_H#include#include/-包含字庫頭文件 #define CHAR_CODE/-重定義 #ifndef uchar#define ucha
11、r unsigned char#endif-/#ifndef u#define u #endifunsigned/-定時使用的 IO 口-/ #define DATA_PORT P0sbit LCD12864_CS= P32;sbit LCD12864_RSET = P33;sbit LCD12864_RSsbit LCD12864_RW sbit LCD12864_RD= P26;= P27;= P25;/-定義全局函數-/void LcdSt7565_WriteCmd(cmd); void LcdSt7565_WriteData(dat); void Lcd12864_Init();voi
12、d Lcd12864_ClearScreen(void);uchar LCHAR(uchar x, uchar y, uchar *cn);#endifrins.h/*RINS.Hrinsic functions for C51.Copyright (c) 1988-2004 Keil Elektronik GmbH and Keil Software, Inc.s.*/#ifndef #define RINS_HRINS_Hextern voidextern bit_nop_(void);_testbit_ (bit);extern unsigned char _cror_(unsigned
13、 char, unsigned char);extern unsigned_iror_(unsigned,unsigned char);extern unsigned long _lror_extern unsigned char _crol_(unsigned long, unsigned char);(unsigned char, unsigned char);extern unsigned_irol_(unsigned,unsigned char);extern unsigned long _lrol_(unsigned long, unsigned char);extern unsig
14、ned char _chkfloat_(float);extern voidextern void_push_pop_(unsigned char _sfr);(unsigned char _sfr);#endifSt7565.c#includest7565.h/*函 數 名函數功能: LCD12864_WriteCmd: 寫入一個命令到 12864: cmd: 無輸輸入出*/void LcdSt7565_WriteCmd(cmd)/chip select,打開片選/disable read,讀失能LCD12864_CS = 0;LCD12864_RD = 1;LCD12864_RS = 0;
15、LCD12864_RW = 0;d,選擇命令/select/select write,選擇寫模式_nop_();_nop_();ommand,放置命令DATA_PORT = cmd; /p_nop_();_nop_();mand writing ,寫入命令LCD12864_RW = 1;/*函 數 名函數功能: LcdSt7565_WriteData: 寫入一個數據到 12864: dat: 無輸輸入出*/void LcdSt7565_WriteData(dat)LCD12864_CS = 0;/chip select,打開片選 LCD12864_RD = 1;/disable read,讀失
16、能/select data,選擇數據/select write,選擇寫模式LCD12864_RS = 1;LCD12864_RW = 0;_nop_();_nop_();/put data,放置數據DATA_PORT = dat;_nop_();_nop_();LCD12864_RW = 1;/data writing,寫數據/*函 數 名函數功能: LCD12864_Init初始化 12864無無:輸輸說*入出明令指令可以查看例程文件夾下的ST7565p: LCD12864* 的第 51 頁的位置。*/void Lcd12864_Init()uchar i; LCD12864_RSET =
17、0;for (i=0; i100; i+); LCD12864_CS = 0;LCD12864_RSET = 1;/-Star Initial Sequence/-程序初始化設置,具體命令可以看文件夾下/-初始化-/ LcdSt7565_WriteCmd(0 xE2);/resetfor (i=0; i100; i+);/延時一下/-表格第 8 個命令,0 xA0 段(左右)方向選擇正常方向(0 xA1 為反方向)-/LcdSt7565_WriteCmd(0 xA1);/Aelect segment direction/-表格第 15 個命令,0 xC8 普通(上下)方向選擇選擇反向,0 xC
18、0 為正常方向-/LcdSt7565_WriteCmd(0 xC8);mon direction/-表格第 9 個命令,0 xA6 為設置字體為黑色,背景為白色-/-0 xA7 為設置字體為白色,背景為黑色-/ LcdSt7565_WriteCmd(0 xA6);/reverse display/-表格第 10 個命令,0 xA4 像素正常顯示,0 xA5 像素全開-/ LcdSt7565_WriteCmd(0 xA4);/normal display/-表格第 11 個命令,0 xA3 偏壓為 1/7,0 xA2 偏壓為 1/9-/ LcdSt7565_WriteCmd(0 xA2);/bi
19、as set 1/9/-表格第 19 個命令,這個是個雙字節令,0 xF800 選擇增壓為 4X;-/-0 xF801,選擇增壓為 5X,其實效果差不多-/ LcdSt7565_WriteCmd(0 xF8);/Boost ratio setLcdSt7565_WriteCmd(0 x01);/x4/-表格第 18 個命令,這個是個雙字節命令,高字節為 0X81,低字節可以-/-選擇從 0 x00 到 0X3F。用來設置背景光對比度。-/ LcdSt7565_WriteCmd(0 x81);/V0 a setLcdSt7565_WriteCmd(0 x23);/-表格第 17 個命令,選擇調節
20、電阻率-/ LcdSt7565_WriteCmd(0 x25);/Ra/Rb set/-表格第 16 個命令,電源設置。-/ LcdSt7565_WriteCmd(0 x2F);for (i=0; i100; i+);/-表格第 2 個命令,設置顯示開始位置-/ LcdSt7565_WriteCmd(0 x40);/start line/-表格第 1 個命令,開啟顯示-/ LcdSt7565_WriteCmd(0 xAF);/ display onfor (i=0; i100; i+);/*函 數 名函數功能: LCD12864_ClearScreen: 清屏 12864: 無: 無輸輸入出*
21、/void Lcd12864_ClearScreen(void)uchar i, j;for(i=0; i8; i+)/-表格第 3 個命令,設置 Y 的坐標-/-Y 軸/所以一般個,一個坐標 8 位,也就是有 8 個坐標-/使用的也就是從 0 xB0 到 0 x07,就夠了-/LcdSt7565_WriteCmd(0 xB0+i);/-表格第 4 個命令,設置 X 坐標-/-當你的段初始化為 0 xA1 時,X 坐標從 0 x10,0 x04 到 0 x18,0 x04,一共 128 位-/-當你的段初始化為 0 xA0 時,X 坐標從 0 x10,0 x00 到 0 x18,0 x00,一
22、共 128 位-/-在寫入數據之后 X 坐標的坐標是會自動加 1 的,/-的 X 坐標從 0 x10,0 x00 開始-/ LcdSt7565_WriteCmd(0 x10);LcdSt7565_WriteCmd(0 x04);初始化使用 0 xA0 所以-/-X 軸有 128 位,就一共刷 128 次,X 坐標會自動加 1,所以不用再設置坐標-/for(j=0; j 7)return 0;/-X 的坐標只能從 0 到 128,大于則直接返回-/ if(x 128)return 0;/求取 Y 坐標的值y += 0 xB0;/-設置 Y 坐標-/ LcdSt7565_WriteCmd(y);w
23、hile ( *cn != 0)/在 C 語言中字符串結束以0結尾/-設置 Y 坐標-/ LcdSt7565_WriteCmd(y);x1 = (x 4) & 0 x0F;/由于 X 坐標要兩句命令,分高低 4 位,所以這里先取出高4 位/去低四位x2 = x & 0 x0F;/-設置 X 坐標-/LcdSt7565_WriteCmd(0 x10 + x1);/高 4 位LcdSt7565_WriteCmd(0 x04 + x2); /低 4 位for (wordNum=0; wordNum50; wordNum+)/-查詢要寫的字在字庫中的位置-/if (CN16CHARwordNum.In
24、dex0 = *cn) &(CN16CHARwordNum.Index1 = *(cn+1)for (j=0; j32; j+) /寫一個字/由于 16X16 用到兩個 Y 坐標,當大于等于 16 時,切if (j = 16)換坐標/-設置 Y 坐標-/LcdSt7565_WriteCmd(y + 1);/-設置 X 坐標-/ LcdSt7565_WriteCmd(0 x10 + x1);/高 4 位 LcdSt7565_WriteCmd(0 x04 + x2); /低 4 位LcdSt7565_WriteDN16CHARwordNum.Mskj);x += 16;/if 查到字結束 /for
25、 查字結束cn += 2;/while 結束return 1;#endifCharcode.h#ifndef CHARCODE_H #define CHARCODE_H#ifdef CHAR_CODE/ -漢字字模的數據結構定義/ 漢字字模數據結構struct Cn16CharTypeDefunsigned charIndex2; unsigned char Msk32;/ 漢字內碼索引,一個漢字占兩個字節/ 點陣碼數據(16*16 有 32 個數據)struct Cn16CharTypeDef code CN16CHAR=/*-文字:洋 -*/*-宋體 12;此字體下對應的點陣為:寬 x 高
26、=16x16-*/洋,0 x00,0 x04,0 x04,0 xF4,0 x54,0 x54,0 xFF,0 x54,0 x54,0 x54,0 xFF,0 x54,0 x54,0 xF4,0 x04,0 x04, 0 x00,0 x00,0 x00,0 x01,0 xFD,0 x55,0 x55,0 x55,0 x55,0 x55,0 x55,0 x55,0 xFD,0 x01,0 x00,0 x00,/*-文字:雪 -*/*-宋體 12;此字體下對應的點陣為:寬 x 高=16x16-*/雪,0 x00,0 x0C,0 x14,0 x05,0 x55,0 x55,0 x55,0 x05,0
27、x7F,0 x05,0 x55,0 x55,0 x55,0 x05,0 x0C,0 x10, 0 x00,0 x00,0 x00,0 xFF,0 x49,0 x49,0 x49,0 x49,0 x49,0 x49,0 x49,0 x49,0 x49,0 x41,0 x00,0 x00,/*-文字:曹 -*/*-宋體 12;此字體下對應的點陣為:寬 x 高=16x16-*/曹,0 x00,0 x00,0 x10,0 x93,0 x94,0 x90,0 xF0,0 x90,0 x96,0 x91,0 x10,0 x00,0 x8C,0 x02,0 x60,0 x10, 0 x00,0 x04,0
28、x04,0 x04,0 x04,0 x04,0 xFF,0 x04,0 x04,0 x04,0 x04,0 x00,0 x01,0 x7E,0 x04,0 x04,/*-文字:、 -*/*-宋體 12;此字體下對應的點陣為:寬 x 高=16x16-*/、,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00, 0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x30,0 x18,0 x
29、08,0 x04,0 x00,0 x00,/*-文字:蒙 -*/*-宋體 12;此字體下對應的點陣為:寬 x 高=16x16-*/蒙,0 x00,0 x80,0 x84,0 x44,0 x44,0 x24,0 x14,0 x0C,0 xFF,0 x0C,0 x14,0 x24,0 x44,0 x44,0 x84,0 x80, 0 x00,0 x08,0 x08,0 x08,0 x08,0 x09,0 x0B,0 x0D,0 x79,0 x89,0 x49,0 x09,0 x08,0 x08,0 x08,0 x08,/*-文字:李 -*/*-宋體 12;此字體下對應的點陣為:寬 x 高=16x1
30、6-*/李,0 x00,0 x1A,0 xAA,0 x8A,0 x8A,0 xAF,0 xAA,0 xAA,0 xAA,0 xAA,0 xAA,0 xAF,0 x8A,0 x8A,0 x9A,0 x22, 0 x00,0 x40,0 x40,0 x22,0 x24,0 x14,0 x08,0 x7C,0 x8A,0 x53,0 x25,0 x2A,0 x4A,0 x52,0 x50,0 x00,/*-文字:順 -*/*-宋體 12;此字體下對應的點陣為:寬 x 高=16x16-*/順,0 x00,0 x04,0 xC4,0 x24,0 x14,0 x04,0 xFC,0 x04,0 x06,0
31、 x05,0 xFC,0 x04,0 x34,0 x44,0 x84,0 x04, 0 x00,0 x44,0 x44,0 x24,0 x24,0 x14,0 x0C,0 x04,0 xFE,0 x04,0 x0C,0 x14,0 x24,0 x24,0 x44,0 x44,/*-文字:紹 -*/*-宋體 12;此字體下對應的點陣為:寬 x 高=16x16-*/紹,0 x00,0 x00,0 x7E,0 x82,0 x42,0 x02,0 x02,0 x1E,0 x62,0 x82,0 x00,0 x30,0 x63,0 xAC,0 x30,0 x20, 0 x00,0 x00,0 xFE,0
32、 x42,0 x42,0 x42,0 x42,0 x42,0 xFE,0 x00,0 x01,0 x12,0 x12,0 x22,0 x67,0 x22,/*-文字:欒 -*/*-宋體 12;此字體下對應的點陣為:寬 x 高=16x16-*/欒,0 x00,0 x02,0 xF2,0 x12,0 x12,0 xD6,0 x1A,0 x12,0 xF2,0 x00,0 xFF,0 x00,0 xFC,0 x00,0 xFE,0 x00, 0 x00,0 x80,0 x4F,0 x20,0 x10,0 x07,0 x18,0 x20,0 x4F,0 x80,0 xFF,0 x00,0 x3F,0 x00,0 x3F,0 x40,/*-文字:杰 -*/*-宋體 12;此字體下對應的點陣為:寬 x 高=16x16-*/杰,0 x00,0 x80,0 x80,0 x86,0 x88,0 x90,0 xA0,0 x80,0 xFF,0 x80,0 x80,0 x3E,0 x22,0 x22,0 xE2,0 x02
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度關于工程建設的國內競爭性招標合同范本
- 2025建筑工程項目合同協議書范本
- 2025智能設備租賃代理合同
- 鳳崗生鮮蔬菜配送合同范例
- 個人出售房產合同樣本
- 班級學習成果展示活動計劃
- 養殖田螺協議合同樣本
- 京東代理合同樣本
- 農村魚苗出售合同標準文本
- epc裝飾工程合同標準文本
- 2025-2030年中國鉀肥項目可行性研究報告
- 2025-2030年中國中藥保健飲料行業未來發展趨勢及前景調研分析報告
- 2024ESC心房顫動管理指南解讀-完整版
- 模具廠三年規劃
- 中考微機選擇題復習試題有答案
- 活動隔斷施工方案
- 2024年10月自考00015英語二試卷及答案解釋
- 醫務人員思政課課件
- 疫苗管理法培訓課件
- 《塑料材質食品相關產品質量安全風險管控清單》
- 《可可西里》電影賞析
評論
0/150
提交評論