机械本1303班7组李蒙代码_第1页
机械本1303班7组李蒙代码_第2页
机械本1303班7组李蒙代码_第3页
机械本1303班7组李蒙代码_第4页
机械本1303班7组李蒙代码_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论