久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1492|回復: 3
打印 上一主題 下一主題
收起左側

通過8255A實現LCD12864與矩陣按鍵 單片機源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:1020716 發表于 2022-7-18 22:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
大家好,還是那個朦朧的我,最近學習了8255A的運用,嘗試與LCD12864連接起來,求各位大佬看看,求指點

單片機源程序如下:
  1. #include <main.H>


  2. void main()
  3. {
  4. LCD_Init();
  5. LCD_Clear();
  6. while(1)
  7. {
  8. BUTT_4X4_Dat();
  9. }
  10. }
復制代碼
  1. #ifndef __lcd12864_H__
  2. #define __lcd12864_H__

  3. #include <8255A.h>

  4. #define LCD_RS_0 0x08
  5. #define LCD_RS_1 0x09

  6. #define LCD_EN_0 0x0a
  7. #define LCD_EN_1 0x0b

  8. #define LCD_CS1_0 0x0c
  9. #define LCD_CS1_1 0x0d

  10. #define LCD_CS2_0 0x0e
  11. #define LCD_CS2_1 0x0f

  12. extern void LCD_Init();
  13. extern void LCD_Clear();
  14. extern void LCD_Write_hz(uchar x,uchar y,uchar *hz,uchar dat);


  15. #endif
復制代碼
  1. #ifndef __8255A_H__
  2. #define __8255A_H__

  3. #include <absacc.h>
  4. #include <intrins.h>

  5. #define uchar unsigned char
  6. #define uint unsigned int

  7. #define PA XBYTE[0xfcff]
  8. #define PB XBYTE[0xfdff]
  9. #define PC XBYTE[0xfeff]
  10. #define COM XBYTE[0xffff]

  11. #endif
復制代碼
  1. #include <BUTT.h>

  2. uchar key,key_Dat;

  3. void BUTT_4X4_Dat()
  4. {
  5. uchar a;
  6.         
  7.         key=60;
  8.         key_Dat=60;
  9.         
  10.         P1=0x0f;
  11.         
  12.         if(P1!=0x0f)
  13.         {
  14.          _nop_();
  15.                 if(P1!=0x0f)
  16.                 {
  17.                  switch(P1)
  18.                  {
  19.                          case 0x0e:key=0;break;
  20.                          case 0x0d:key=1;break;
  21.                          case 0x0b:key=2;break;
  22.                          case 0x07:key=3;break;
  23.                  }
  24.                  P1=0xf0;
  25.                  switch(P1)
  26.                  {
  27.                          case 0xe0:key=key;break;
  28.                          case 0xd0:key=key+4;break;
  29.                          case 0xb0:key=key+8;break;
  30.                          case 0x70:key=key+12;break;
  31.                  }
  32.                  while((a < 250) && (P1!=0xf0))
  33.                  {
  34.                    _nop_();
  35.                          a++;
  36.                  }
  37.                 }
  38.         }
  39. }
復制代碼
  1. #include <lcd12864.h>

  2. void LCD_Write(bit Way,uchar dat)
  3. {
  4. if(Way == 1) COM=LCD_RS_1; else COM=LCD_RS_0;
  5.         PA=dat;
  6.         _nop_();
  7.         COM=LCD_EN_0;
  8.         _nop_();
  9.         COM=LCD_EN_1;
  10. }

  11. void LCD_Init()
  12. {
  13.         COM=LCD_RS_1;
  14.         COM=LCD_EN_1;
  15.          COM=LCD_CS1_1;
  16.         COM=LCD_CS2_1;
  17.         LCD_Write(0,0x3f);
  18.         LCD_Write(0,0xc0);
  19.         LCD_Write(0,0xb8);
  20.         LCD_Write(0,0x40);
  21. }

  22. void LCD_Clear()
  23. {
  24. uchar i,j;
  25.                 COM=LCD_CS1_1;
  26.         COM=LCD_CS2_1;
  27.         for(i=0;i<8;i++)
  28.         {
  29.          LCD_Write(0,0xb8+i);
  30.                
  31.                 for(j=0;j<64;j++)
  32.                 {
  33.                  LCD_Write(0,0x40+j);
  34.                         LCD_Write(1,0x00);
  35.                 }
  36.         }
  37. }

  38. void LCD_X_Y(uchar x,uchar y)
  39. {
  40. if(x > 7) x = 7;
  41. if(y > 127) y = 127;
  42.         
  43.         if(y<64)
  44.         {
  45.                 COM=LCD_CS1_1;
  46.         COM=LCD_CS2_0;
  47.                 LCD_Write(0,0xb8+y);
  48.         }
  49.         else
  50.         {
  51.          COM=LCD_CS1_0;
  52.         COM=LCD_CS2_1;
  53.                 y&=0xef;
  54.                 LCD_Write(0,0xb8+y);
  55.         }
  56.         LCD_Write(0,0x40+x);
  57. }

  58. void LCD_Write_hz(uchar x,uchar y,uchar *hz,uchar dat)
  59. {
  60. uchar i;
  61.         
  62.         LCD_X_Y(x,y);
  63.         for(i=0;i<16;i++)
  64.   LCD_Write(1,dat[hz+16+i]);
  65.         
  66.                 LCD_X_Y(x+1,y);
  67.         for(i=0;i<16;i++)
  68.   LCD_Write(1,dat[hz+16+8+i]);
  69. }
  70.         

復制代碼

Keil代碼.7z

13.97 KB, 下載次數: 16

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:584814 發表于 2022-7-19 09:18 | 只看該作者
是求表揚還是解疑問 ? 如果是前者,賞你一個小紅花
回復

使用道具 舉報

板凳
ID:1020716 發表于 2022-7-19 18:35 | 只看該作者
man1234567 發表于 2022-7-19 09:18
是求表揚還是解疑問 ? 如果是前者,賞你一個小紅花

哈哈哈,想知道有沒有什么值得改進的地方
回復

使用道具 舉報

地板
ID:1042173 發表于 2022-8-31 07:34 | 只看該作者
怎不加注解呢?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品91久久久久久再现 | 日韩一区二区福利视频 | 亚洲精品久久久一区二区三区 | 337p日本欧洲亚洲大胆精蜜臀 | 成人区精品一区二区婷婷 | 欧美视频 亚洲视频 | 中文字幕一区二区在线观看 | 伊人免费在线观看 | 亚洲一区 | 成人免费观看视频 | 91av在线影院 | 天堂免费看片 | 成人中文字幕在线 | 成人不卡一区二区 | sese视频在线观看 | 国产一区欧美一区 | 8x国产精品视频一区二区 | 91久久| 精品福利在线视频 | 国产91精品久久久久久久网曝门 | 国产欧美日韩久久久 | 精品免费av | 在线免费观看黄色 | a级片在线观看 | 精品视频免费 | 国产欧美在线播放 | 久久精品国产一区 | 在线播放91 | 国产日韩欧美精品一区二区三区 | 久久综合久| 大乳boobs巨大吃奶挤奶 | 中文字幕伊人 | 91精品国产综合久久久久 | 可以免费看的毛片 | 亚洲国产精品美女 | 隔壁老王国产在线精品 | 91伊人 | 欧美中文字幕 | 欧美国产精品一区二区三区 | 欧美成人猛片aaaaaaa | 亚洲综合第一页 |