找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6855|回复: 3
收起左侧

普中51单片机开发板,12864和矩阵键盘源程序

[复制链接]
ID:189450 发表于 2017-4-18 09:58 | 显示全部楼层 |阅读模式
QQ图片20170418095459.jpg QQ图片20170418095438.jpg QQ图片20170418095506.jpg

main.c(参考了好多大神的源码,结合矩阵键盘和LCD12864,显示相应的数字)
  1. #include<AT89X52.h>
  2. #include"12864.h"
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar code dazi[9][64]=
  6. {
  7.         { //1
  8.         0x00,0x10,0x10,0x10,0x18,0x38,0xFC,0xFE,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  9.         0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  10.         0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  11.         0x00,0x40,0x40,0x40,0x60,0x70,0x7F,0x7F,0x7F,0x70,0x60,0x40,0x40,0x40,0x00,0x00,        
  12.         },

  13.         {//2
  14.         0x00,0xE0,0xF8,0xFC,0x8C,0x06,0x06,0x02,0x02,0x06,0x0E,0x1E,0xFC,0xF8,0xF0,0x00,
  15.         0x00,0x07,0x07,0x07,0x07,0x00,0x00,0x00,0x00,0x00,0xC0,0xF8,0xFF,0x7F,0x1F,0x00,
  16.         0x00,0x00,0x00,0x80,0xC0,0xE0,0x70,0x3C,0x1E,0x0F,0x03,0x01,0x00,0x00,0x80,0x80,
  17.         0x70,0x7C,0x7E,0x77,0x73,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x78,0x7E,0x7F,0x01,
  18.         },

  19.         {//3
  20.         0x00,0xF0,0xF8,0xFC,0xCE,0x06,0x02,0x02,0x06,0x06,0x1E,0xFC,0xF8,0xF0,0xC0,0x00,
  21.         0x00,0x01,0x01,0x01,0x01,0x00,0x80,0x80,0xC0,0xE0,0xF0,0x7F,0x3F,0x1F,0x03,0x00,
  22.         0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x01,0x01,0x03,0x07,0xFF,0xFE,0xF8,0xE0,
  23.         0x00,0x0F,0x1F,0x3F,0x77,0x60,0x40,0x40,0x40,0x60,0x70,0x38,0x3F,0x1F,0x0F,0x01,
  24.         },

  25.         {//4
  26.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xF0,0xF8,0xFE,0xFF,0xFE,0x00,0x00,0x00,
  27.         0x00,0x00,0x00,0xC0,0xF0,0x7C,0x1F,0x07,0x01,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,
  28.         0x70,0x7C,0x7F,0x77,0x71,0x70,0x70,0x70,0x70,0xFF,0xFF,0xFF,0xFF,0x70,0x70,0x70,
  29.         0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0xC0,0xFF,0xFF,0xFF,0xFF,0xE0,0xC0,0xC0,

  30.         },

  31.         {//5
  32.         0x00,0x00,0xFE,0xFE,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,
  33.         0x00,0x00,0xFF,0xFF,0xE0,0x70,0x70,0x30,0x30,0x70,0x70,0xF0,0xE0,0xC0,0x80,0x00,
  34.         0x00,0xC0,0xC3,0xC3,0xC1,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFC,
  35.         0x00,0x0F,0x1F,0x3F,0x73,0x60,0x60,0x40,0x40,0x60,0x70,0x78,0x3F,0x1F,0x07,0x00,
  36.         },

  37.         {//6
  38.         0x00,0x00,0xE0,0xF0,0xF8,0x1C,0x0E,0x06,0x02,0x02,0x06,0x7E,0x7E,0x7C,0x70,0x00,
  39.         0xF0,0xFF,0xFF,0xFF,0xC1,0xE0,0x70,0x70,0x30,0x30,0x70,0xF0,0xF0,0xE0,0xC0,0x00,
  40.         0x3F,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFE,
  41.         0x00,0x03,0x0F,0x1F,0x3F,0x78,0x70,0x60,0x40,0x40,0x60,0x70,0x3F,0x1F,0x0F,0x03,
  42.         },

  43.         {//7
  44.         0x00,0xF8,0xFE,0x1E,0x0E,0x06,0x06,0x06,0x06,0x06,0x06,0xC6,0xF6,0x7E,0x1E,0x06,
  45.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xF8,0x7F,0x0F,0x03,0x00,0x00,0x00,
  46.         0x00,0x00,0x00,0x00,0x00,0x80,0xF8,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,
  47.         0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  48.         },

  49.         {//8
  50.         /*--  ¿í¶èx¸ß¶è=16x32  --*/
  51.         0x00,0xF0,0xF8,0xFC,0x0E,0x06,0x06,0x02,0x02,0x06,0x06,0x0E,0xFC,0xF8,0xF0,0x80,
  52.         0x00,0x0F,0x1F,0x3F,0xFC,0xF8,0xF0,0xE0,0xE0,0xC0,0xE0,0xF0,0x3F,0x1F,0x0F,0x01,
  53.         0xE0,0xFC,0xFE,0x1F,0x03,0x01,0x00,0x01,0x03,0x03,0x07,0x0F,0x7F,0xFE,0xFC,0xE0,
  54.         0x03,0x0F,0x1F,0x3C,0x70,0x60,0x60,0x40,0x40,0x60,0x60,0x70,0x3C,0x1F,0x0F,0x03,
  55.         },

  56.         {//9
  57.         0x80,0xF0,0xF8,0xFC,0x1E,0x06,0x06,0x02,0x02,0x06,0x0E,0x3C,0xFC,0xF0,0xE0,0x00,
  58.         0x7F,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0xFE,
  59.         0x00,0x03,0x07,0x07,0x0F,0x0E,0x0E,0x0C,0x0E,0x0E,0x07,0x83,0xFF,0xFF,0xFF,0x0F,
  60.         0x00,0x0C,0x3E,0x7E,0x7E,0x70,0x40,0x40,0x60,0x70,0x3C,0x1F,0x0F,0x07,0x00,0x00,
  61.         }
  62. };
  63. void delay1ms(uchar x)
  64. {
  65.         uint i,j;
  66.         for(i = x;i > 0;i --)
  67.                 for(j = 110;j > 0;j --);
  68. }
  69. /**************Ö¸¶¨μú¼¸oáÅÅÏÔê¾ÄúèY 16*32********************/
  70. void WRITE_STRING1632(uchar plat,uchar column,uchar p)
  71. {
  72.         uchar page,page1,col,col_h,col_l;
  73.         uchar i,a,jj=0;
  74.         page1= plat*2;
  75.         page=page1+Page0;
  76.         col=column*16;
  77.         col_h=((col>>4)|0xf0)&0x1f;
  78.         col_l=col&0x0f;
  79.         for(a = 0; a < 4; a++)
  80.         {
  81.                 LCD_WRITE_COM(col_h);
  82.                 LCD_WRITE_COM(col_l);
  83.                 LCD_WRITE_COM(page+a);
  84.                 for(i = 0;  i < 16; i ++ )
  85.                  {
  86.                         LCD_WRITE_DATA(dazi[p][jj++]);        
  87.                 }
  88.         }         
  89. }
  90. void keyscanf()
  91. {
  92.         uchar temp, key;
  93.         P2 = 0Xef;
  94.         temp = P2;
  95.         temp = temp & 0x0f;
  96.         if(temp != 0x0f)
  97.         {
  98.                 delay1ms(5);//襶¶¶ˉ
  99.                 temp=P2;
  100.                 temp = temp & 0x0f;
  101.                 if(temp != 0x0f)
  102.                 {
  103.                         temp = P2;
  104.                         switch(temp)//′Ëê±°′¼üòѾ-¶¨Î»μ½μúò»DDáË
  105.                         {
  106.                                 case 0xe7: key = 1; break;//′Ëê±′ú±íμúò»DDμÄμúò»¸ö°′¼ü°′Ï£¬¼′11100111
  107.                                 case 0xeb: key = 2; break;
  108.                                 case 0xed: key = 3; break;
  109.                         }
  110.                         while(temp != 0x0f)//°′¼üËé¿a
  111.                         {
  112.                                 temp = P2;
  113.                                 temp = temp & 0x0f;
  114.                         }
  115.                         WRITE_STRING1632(1,3,key-1);
  116.                 }
  117.         }
  118.         P2 = 0Xdf;
  119.         temp = P2;
  120.         temp = temp & 0x0f;
  121.         if(temp != 0x0f)
  122.         {
  123.                 delay1ms(5);//襶¶¶ˉ
  124.                 temp = P2;
  125.                 temp = temp & 0x0f;
  126.                 if(temp != 0x0f)
  127.                 {
  128.                         temp = P2;
  129.                         switch(temp)
  130.                         {
  131.                                 case 0xd7: key = 4; break;
  132.                                 case 0xdb: key = 5; break;
  133.                                 case 0xdd: key = 6; break;

  134.                         }
  135.                         while(temp != 0x0f)//°′¼üËé¿a
  136.                         {
  137.                                 temp = P2;
  138.                                 temp = temp & 0x0f;
  139.                         }
  140.                         WRITE_STRING1632(1,3,key-1);
  141.                 }
  142.         }
  143.         P2 = 0Xbf;
  144.         temp = P2;
  145.         temp = temp & 0x0f;
  146.         if(temp != 0x0f)
  147.         {
  148.                 delay1ms(5);//襶¶¶ˉ
  149.                 temp=P2;
  150.                 temp = temp & 0x0f;
  151.                 if(temp != 0x0f)
  152.                 {
  153.                         temp = P2;
  154.                         switch(temp)
  155.                         {
  156.                                 case 0xb7: key = 7; break;
  157.                                 case 0xbb: key = 8; break;
  158.                                 case 0xbd: key = 9; break;

  159.                         }
  160.                         while(temp != 0x0f)//°′¼üËé¿a
  161.                         {
  162.                                 temp = P2;
  163.                                 temp = temp & 0x0f;
  164.                         }


  165. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
下载:
LCD1602显示1-9.zip (39.61 KB, 下载次数: 49)

评分

参与人数 2黑币 +57 收起 理由
sheng7533967 + 7 赞一个!
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:257024 发表于 2017-12-10 13:13 | 显示全部楼层
我也有这个开发板。马上试试楼主的代码。谢谢分享!
回复

使用道具 举报

ID:257024 发表于 2017-12-10 13:17 | 显示全部楼层
实验了在我的开发板上不能显示。仔细看不是同一版本。
回复

使用道具 举报

ID:472268 发表于 2019-3-13 11:14 | 显示全部楼层
你掌握的很好,值得表扬!后面继续努力!

评分

参与人数 3黑币 +25 收起 理由
春风十里吹 + 10
正规007 + 5 很给力!
shuisheng60 + 10 很给力!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表