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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1596|回復: 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

回復

使用道具 舉報

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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲午夜精品 | 日韩美女一区二区三区在线观看 | 伊人网在线播放 | 欧美一区二区三区在线看 | 国产三级一区二区三区 | 久久久综合久久 | 青青草在线视频免费观看 | 久久婷婷国产香蕉 | 欧美一区二区三区在线看 | 精品国产一区探花在线观看 | 久久中文字幕一区 | www.激情.com| 99久久精品免费看国产四区 | 久久久蜜臀国产一区二区 | 99久久婷婷国产综合精品电影 | 欧美一区免费在线观看 | 99久久婷婷 | 亚洲协和影视 | 亚洲精品免费视频 | 日韩精品一区二区三区在线播放 | 日韩快播电影 | 伊人啪啪网 | 欧美日韩视频一区二区 | 亚洲 自拍 另类 欧美 丝袜 | 欧美精品久久久 | 精品国产乱码久久久久久牛牛 | 亚洲一区二区三区在线免费观看 | 日韩中文字幕免费 | 日韩欧美精品一区 | 国产欧美日韩视频 | 波波电影院一区二区三区 | 亚洲国产精品一区二区第一页 | xx性欧美肥妇精品久久久久久 | 亚洲国产一区二区三区四区 | 亚洲一区| 黄色网页在线 | 日本黄色大片免费看 | 成人av一区二区三区 | 欧美11一13sex性hd| 国产在线一区观看 | av性色|