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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8677|回復: 7
收起左側

單片機驅動不帶字庫的液晶12864顯示源程序(有詳細注釋)

[復制鏈接]
ID:422071 發表于 2018-11-6 22:50 | 顯示全部樓層 |閱讀模式
  1. #include <REG52.H>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. delay(uint i){ while(i--);}
  5. //12864引腳定義
  6. #define lcdDat P0  /* LCD12864 數據線 */
  7. sbit cs1= P2^3;    /* 右屏片選,高電平有效 */
  8. sbit cs2= P2^4;    /* 左屏片選,高電平有效 */
  9. sbit en = P2^0;    /* 讀,寫使能,高電平有效,下沿鎖定數據 */
  10. sbit rw = P2^1;    /* 1讀\0寫 */
  11. sbit rs = P2^2;    /* 1數據\0指令 */
  12. /** LCM忙檢測 **/
  13. busy12864(){
  14. lcdDat=0xff;    //口線置1,防止干擾
  15. rs=0; rw=1;    //置“命令、讀”模式
  16. //en=1; while(lcdDat&0x80); en=0;//忙等待
  17. }
  18. /** 寫命令 參數:comDat為要發送的命令 **/
  19. WriteCom(uchar comDat){  
  20.     busy12864();       //忙,則等待
  21. rs=0;rw=0;    //置“命令、寫”模式
  22.     lcdDat=comDat;en=1;en=0;//送出命令,并使之有效
  23. }
  24. /** 寫數據 參數:dat為要發送的數據 **/
  25. WriteDat(uchar dat){  
  26.     busy12864();      //忙,則等待
  27. rs=1;rw=0;      //置“數據、寫”模式
  28.     lcdDat=dat;en=1;en=0; //送出數據,并使之有效
  29. }
  30. //清屏函數
  31. void clrLCD(){
  32. uchar i,j;
  33. cs1=cs2=1;      //同時選中左右屏
  34. for(i=0;i<8;i++){    //共8頁
  35.   WriteCom(0xB8+i);  //光標到i頁
  36.   WriteCom(0x40);    //光標到頁首
  37.   for(j=0;j<64;j++)WriteDat(0); //寫0清屏
  38. }
  39. }
  40. /** 初始化12864 **/
  41. Init12864(){
  42. lcdDat=0xff;   //口線置1,防止干擾
  43. rs=0; rw=1;    //置“命令、讀”模式
  44. //en=1; while(lcdDat&0x10); en=0;//等待復位完成
  45. WriteCom(0x3f);   //開顯示
  46. WriteCom(0xc0);   //設置顯示起始行
  47. clrLCD();    //清屏
  48. }
  49. uchar code zm8x16_index[]="ABC"; //索引字串
  50. uchar code zm8x16_Table[][16]={  //字串字模
  51. 0xE0,0xF0,0x98,0x8C,0x98,0xF0,0xE0,0,15,15,0x0,0,0,15,15,0,//A
  52. 0x04,0xFC,0xFC,0x44,0x44,0xFC,0xB8,0, 8,15,0xF,8,8,15, 7,0,//B
  53. 0xF0,0xF8,0x0C,0x04,0x04,0x0C,0x18,0,0x03,7,0xC,8,8,12,6,0 //C
  54. };
  55. uchar code zm16x16_index[]="您好";//字串索引
  56. uchar code zm16x16_Table[][32]={  //字串字模
  57. 0x40,32,16,0xFC,0x23,16,0x8C,0x67,4,0xF4,4,0x44,0x94,0x8C,0,0,//您
  58. 64,48,0,0x77,0x80,0x81,0x88,0x92,0xB4,0x83,128,0xE0,0,17,96,0,
  59. 16,16,15,31,16,0xF0,128,130,130,130,0xE2,0x92,0x8A,0xC6,128,0,//好
  60. 0x40,0x22,0x15,0x08,0x14,0x63,0,0,0x40,0x80,0x7F,0x00,0,0,0,0
  61. };
  62. /******** 任意尺寸點陣顯示函數 ***********|
  63. |參數:顯示位置:row頁數,col列號,    |
  64. |    字符大。簒橫向像素,y縱向頁數   |
  65. |    顯示內容:tab字模表          ******/
  66. showXY(uchar row,uchar col,uchar x,uchar y,uchar *tab){
  67. uchar i,j;
  68. bit right;
  69. if(col<64){right=0;} //置左右屏標志
  70. else {col-=64;right=1;}
  71. for(i=0;i<y;i++){
  72.   if(right)cs1=0,cs2=1;
  73.   else  cs1=1,cs2=0;
  74.   WriteCom(0xb8+row+i); //行
  75.   WriteCom(0x40+col);   //列
  76.   for(j=0;j<x;j++){
  77.    if(col+j<64)WriteDat(tab[i*x+j]); //未跨屏
  78.    else if(right==0){    //從左屏跨右屏
  79.      cs1=0,cs2=1;    //選中右屏
  80.      WriteCom(0xb8+row+i);    //設置行
  81.      WriteCom(0x40+(col+j-64));
  82.      WriteDat(tab[i*x+j]);
  83.    }       //在右屏越界不顯示
  84.   }
  85. }
  86. }
  87. /* 返回一個8*16字符索引位置 */     
  88. uchar enN(uchar *s){
  89. uchar i;
  90. for(i=0;zm8x16_index[i]!=0;i++)if(zm8x16_index[i]==s[0])break;
  91. return i;
  92. }
  93. /* 返回一個16*16字符索引位置 */
  94. uchar cnN(uchar *s){
  95. uchar i;
  96. for(i=0;zm16x16_index[i]!=0;i+=2)
  97.   if(zm16x16_index[i]==*s&&zm16x16_index[i+1]==*(s+1))break ;
  98. return i/2;
  99. }
  100. /* 顯示字符串 */
  101. void showStr(uchar row,uchar col,uchar *s){
  102.   uchar i;
  103.   for(i=0;s[i]!=0;i++){
  104.    if(s[i]<0x80){  //英文
  105.    showXY(row,col,8,2,zm8x16_Table[enN(&s[i])]);
  106.    col+=8;
  107.   }else{   
  108.    showXY(row,col,16,2,zm16x16_Table[cnN(&s[i])]);
  109.    col+=16;i+=1;  
  110.   }
  111.   if(col>120){  //換行處理
  112.    col=0;
  113.    row+=2;
  114.   }
  115.   }
  116. }
  117. void main(){
  118. Init12864();    //初始化
  119. showStr(0,0,"您好好ABC好");
  120. while(1);
  121. }
復制代碼
回復

使用道具 舉報

ID:199427 發表于 2018-11-7 09:11 | 顯示全部樓層
謝謝樓主分享的液晶12864顯示源程序!
回復

使用道具 舉報

ID:403593 發表于 2018-11-7 11:18 | 顯示全部樓層
請問這個屏是什么驅動芯片?是KS0108驅動的么?
回復

使用道具 舉報

ID:285143 發表于 2018-12-23 09:36 | 顯示全部樓層
你好,請問
0x40,32,16,0xFC,0x23,16,0x8C,0x67,4,0xF4,4,0x44,0x94,0x8C,0,0,//您
64,48,0,0x77,0x80,0x81,0x88,0x92,0xB4,0x83,128,0xE0,0,17,96,0,

這些數據是怎么取得的,我用的那個取模軟件取出的不能正常顯示
回復

使用道具 舉報

ID:285143 發表于 2018-12-24 15:18 來自觸屏版 | 顯示全部樓層
已解決,謝謝你的源碼
回復

使用道具 舉報

ID:541690 發表于 2019-6-9 11:27 | 顯示全部樓層
正好在學習液晶顯示,學習下
回復

使用道具 舉報

ID:114701 發表于 2019-12-3 09:42 來自觸屏版 | 顯示全部樓層
謝謝分享!
回復

使用道具 舉報

ID:685851 發表于 2020-1-13 21:51 | 顯示全部樓層
你好,請問
0x40,32,16,0xFC,0x23,16,0x8C,0x67,4,0xF4,4,0x44,0x94,0x8C,0,0,//您
64,48,0,0x77,0x80,0x81,0x88,0x92,0xB4,0x83,128,0xE0,0,17,96,0,

這些數據是怎么取得的,我用的那個取模軟件取出的也不能正常顯示
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产电影一区二区 | 午夜精品久久久 | 精品欧美一区免费观看α√ | 欧美aaa级 | 手机日韩 | 精品综合 | 国产视频三区 | 日韩午夜网站 | 精品欧美一区二区三区久久久 | 岛国av在线免费观看 | 亚洲国产成人精品久久久国产成人一区 | 精品一区二区在线观看 | 久久精品国产精品青草 | 热re99久久精品国99热观看 | 日韩精品成人一区二区三区视频 | 欧美 日本 国产 | 久久精品a级毛片 | 免费国产黄 | 日韩精品在线免费观看视频 | 欧美日韩一区在线播放 | 午夜丁香视频在线观看 | 国产成人一区 | 免费一区| 亚洲国产成人精品女人久久久 | 丝袜美腿av | 伊人久久免费 | 国产精品av久久久久久毛片 | 久草青青 | 国产a级毛片 | 黑人巨大精品欧美一区二区免费 | a毛片 | 亚洲欧洲小视频 | 麻豆亚洲 | 久久99这里只有精品 | 国产午夜精品一区二区三区四区 | 久久久国产一区二区三区 | www.久久久久久久久久久久 | 国产91色在线 | 亚洲 | 久久97精品| 欧美在线a | 欧美国产视频一区二区 |