单片机89S52小游戏1602显示

上传人:油条 文档编号:107586915 上传时间:2019-10-20 格式:DOCX 页数:14 大小:163.93KB
返回 下载 相关 举报
单片机89S52小游戏1602显示_第1页
第1页 / 共14页
单片机89S52小游戏1602显示_第2页
第2页 / 共14页
单片机89S52小游戏1602显示_第3页
第3页 / 共14页
单片机89S52小游戏1602显示_第4页
第4页 / 共14页
单片机89S52小游戏1602显示_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《单片机89S52小游戏1602显示》由会员分享,可在线阅读,更多相关《单片机89S52小游戏1602显示(14页珍藏版)》请在金锄头文库上搜索。

1、百度贴吧,中国南车1985编写C程序源码:/*猜图案小游戏,通过4*4矩阵键盘下注,键值按从上到下,从左到右依次为016。*/#include#include stdlib.h /后面ran()随机函数调用,必须先声明#include#include /后面要调用strlen()函数,必须声明#define uchar unsigned char#define uint unsigned intsbit key_a=P10;sbit key_b=P11;sbit key_c=P12;sbit key_d=P13;sbit key_1=P14;sbit key_2=P15;sbit key_3=

2、P16;sbit key_4=P17;sbit rs=P25;sbit rw=P26;sbit ep=P27;unsigned char code dis_num=0123456789abcdef;unsigned char code dis2=7,4,1,.,8,5,2,0,9,6,3,=,/,*,-,+,0;/键盘按键值unsigned char a8;uchar code zf188= /自定义字符字模表1 0x04,0x0e,0x0f,0x1f,0x1e,0x0e,0x04,0x00, /方块0x04,0x0e,0x1f,0x1f,0x1f,0x04,0x0e,0x00,0x0e,0x

3、0e,0x1f,0x1f,0x1f,0x04,0x0e,0x00,0x00,0x0a,0x1f,0x1f,0x1f,0x0e,0x04,0x00,0x04,0x04,0x0e,0x1f,0x0e,0x04,0x04,0x00,0x1b,0x1b,0x00,0x1b,0x00,0x1b,0x1b,0x00,0x04,0x04,0x1b,0x04,0x1b,0x04,0x04,0x00,0x04,0x0c,0x1c,0x1e,0x0f,0x06,0x04,0x00 ;uchar code zf288=/自定义字符字模表2 0x04,0x0e,0x1e,0x1b,0x0f,0x0e,0x04,0x0

4、0,0x09,0x1b,0x1f,0x0e,0x1f,0x1b,0x12,0x00, 0x0e,0x1f,0x1f,0x1f,0x1f,0x1f,0x0e,0x00,0x1f,0x1f,0x15,0x1f,0x15,0x1f,0x1f,0x00,0x0e,0x0a,0x04,0x15,0x15,0x0e,0x04,0x00,0x04,0x1f,0x15,0x04,0x0e,0x1b,0x0e,0x00,0x00,0x00,0x0a,0x00,0x11,0x0e,0x00,0x00,0x0e,0x11,0x1b,0x11,0x15,0x1b,0x0e,0x00 ;void delay(unsig

5、ned char ms)/延时函数 unsigned char i; while(ms-) for(i=0;i=2) /是否显示在第二行(若在第一行Y=0,不进入IF语句,若在第二行,进入IF语句 x+=0x40; /第二行起始地址加上列数为字符显示地址 x+=0x80; /设置数据指针位置 lcd_wcmd(x); lcd_wdat(z); /写入数据void dis_lcd_text(unsigned char y,unsigned char x,unsigned char table) /Y,X同上字符显示,table字符串数组 unsigned char z=0; unsigned c

6、har t; t=strlen(table)+x; / 求得字符串长度加上起始列位置 while(xt) /功能为LCD显示到字符串最后一个字符,防止字符串 /没有16个字符,从而不够位产生乱码; dis_lcd_byte(y,x,tablez); /逐位显示数组内字符 x+; z+; void lcd_init() /初始化LCD函数 delay(15); lcd_wcmd(0x38); delay(5); lcd_wcmd(0x38); delay(5); lcd_wcmd(0x38); delay(5); lcd_wcmd(0x38); delay(1); lcd_wcmd(0x08);

7、 delay(1); lcd_wcmd(0x0c); delay(1); lcd_wcmd(0x06); delay(1); lcd_wcmd(0x01); delay(1);void lcd_cls() /清屏函数 lcd_wcmd(0x01);unsigned char key_scan() /键盘扫描函数,4*4键盘扫描返回结果为015 unsigned char i,key; unsigned char k=88; P1=0xf0; if(P1!=0xf0) P1=0xfe; for(i=0;i4;i+) key=P1&0xf0; switch(key) case 0xe0:k=i;b

8、reak;case 0xd0:k=i+4;break;case 0xb0:k=i+8;break;case 0x70:k=i+12;break;default: ; P1=(P11)+1; if(k!=88)break; P1=0xf0; while(P1!=0xf0); return(k); else return 16;void my_word(uchar wei,uchar *zf) /自定义字符函数 uchar j; wei=wei3; for(j=0;j8;j+) lcd_wcmd(0x40|wei+j); /自定义字符地址 delay(1); /延迟,否则容易出错 lcd_wdat

9、(*zf+); /自定义字符字模 void main(void) unsigned int j,i,HP,ran,sum8; lcd_init();/初始化LCD P1=0xf0; dis_lcd_text(0,0, Made by:); dis_lcd_text(2,0, CSR1985); while(P1=0xf0); while(P1!=0xf0); start:lcd_wcmd(0x01); HP=100; while(1) for(i=0;i8;i+) my_word(i,zf1i); /将自定义字符字模表1写入CGRAM dis_lcd_text(0,0,Ready go !); lcd_wcmd(0x0f); /光标闪烁 while(P1=0xf0); delay(10); while(P1!=0xf0); lcd_wcmd(0x0c); /关光标 lcd_cls(); delay(5);lcd_wdat(H);delay(5); /延迟一下,否则容易出错显示不出来lcd_wdat(P);delay(5);lcd_wdat(=);delay(5);lcd_wdat(dis_numHP/100);delay(5);lcd_wdat(dis_numH

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号