找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2746|回复: 14
收起左侧

下载了一个LCD12864的程序来学习,然后我用Keil 4总是编译不了,求大神帮忙看看?

[复制链接]
ID:650426 发表于 2020-5-10 00:53 | 显示全部楼层 |阅读模式
2.png

主程序在下面:
程序:MCS-51驱动AMPIRE128*64液晶
内容:LCD12864综合显示--汉字,图片、几何图形
编译器:keil uVision3
开发板:Proteus仿真图

  1. #include<AT89C52.h>
  2. #include "intrins.h"
  3. #include "math.h"
  4. #include "source.h"
  5. #define uchar unsigned char
  6. #define uint  unsigned int

  7. #define LCD_databus P0 //LCD12864的8位数据口

  8. sbit RS=P2^2;         //RS为0---命令;1----数据
  9. sbit RW=P2^1;         //RW为1---写;0---读
  10. sbit EN=P2^0;         //使能端
  11. sbit CS1=P2^4;         //片选1低电平有效,控制左半屏
  12. sbit CS2=P2^3;         //片选1低电平有效,控制右半屏

  13. sbit KEY1=P3^0;
  14. sbit KEY2=P3^1;
  15. sbit KEY3=P3^2;        //三个按键控制口


  16. void delay(uint i)
  17. {
  18.         while(--i);
  19. }
  20. void Read_busy()//读“忙”函数-----数据线的最高位DB71则busy               
  21. {
  22.         P0=0x00;
  23.            RS=0;  
  24.            RW=1;
  25.         EN=1;
  26.         while(P0 & 0x80);
  27.         EN=0;
  28. }

  29. void write_LCD_command(uchar value)        //写命令函数
  30. {
  31.    Read_busy();                                                //对LCD的每次读写都要读忙
  32.    RS=0;                                                         //选择命令
  33.    RW=0;                                                         //读操作
  34.    LCD_databus=value;
  35.    EN=1;                                                        //EN由1----0锁存有效数据
  36.    _nop_();
  37.    _nop_();
  38.    EN=0;
  39. }

  40. void write_LCD_data(uchar value)//写数据函数        
  41. {
  42.    Read_busy();
  43.    RS=1;                                                 //选择数据
  44.    RW=0;        
  45.    LCD_databus=value;
  46.    EN=1;                                                //EN由1----0锁存有效数据
  47.    _nop_();               
  48.    _nop_();
  49.    EN=0;
  50. }

  51. uchar Read_LCD(void)                        //读数据函数
  52. {
  53.         uchar value;
  54.         Read_busy();
  55.         LCD_databus=0xFF;                        //先进行一次空读操作
  56.         RS=1;
  57.         RW=1;
  58.         EN=1;
  59.         _nop_();
  60.         _nop_();
  61.         EN=0;
  62.         
  63.         LCD_databus=0xFF;                        //读取真正的数据
  64.         RS=1;
  65.         RW=1;
  66.         EN=1;
  67.         value=LCD_databus;
  68.         _nop_();
  69.         _nop_();
  70.         EN=0;
  71.         
  72.         return value;
  73. }

  74. void Set_page(uchar page)                //设置“页”LCD12864共8页,一页是8行点阵点        
  75. {
  76.   page=0xb8|page;                                 //页的首地址为0xB8
  77.   write_LCD_command(page);
  78. }

  79. void Set_line(uchar startline)  //设置显示的起始行           
  80. {
  81.   startline=0xC0|startline;     //起始行地址为0xC0
  82.   write_LCD_command(startline); //设置从哪行开始:共0--63;一般从0 行开始显示
  83. }

  84. void Set_column(uchar column)        //设置显示的列        
  85. {
  86.   column=column &0x3f;                         //列的最大值为64
  87.   column= 0x40|column;                         //列的首地址为0x40
  88.   write_LCD_command(column);        //规定显示的列的位置
  89. }

  90. void SetOnOff(uchar onoff)                //显示开关函数:0x3E是关显示,0x3F是开显示   
  91. {
  92.         onoff=0x3e|onoff;                         //onoff:1---开显示;0---关显示
  93.         write_LCD_command(onoff);
  94. }

  95. void SelectScreen(uchar screen)        //选择屏幕
  96. {                                                  
  97.    switch(screen)
  98.    {
  99.             case 0: CS1=0;CS2=0;break; //全屏     
  100.      case 1: CS1=0;CS2=1;break;//左半屏        
  101.      case 2: CS1=1;CS2=0;break;//右半屏      
  102.      default:break;
  103.    }
  104. }

  105. void ClearScreen(uchar screen)        //清屏函数  
  106. {         
  107.      uchar i,j;
  108.      SelectScreen(screen);                //0--全屏;1---左半屏;2---右半屏
  109.          for(i=0;i<8;i++)                         //控制页数0-7,共8页
  110.          {
  111.         Set_page(i);
  112.                 Set_column(0);
  113.               for(j=0;j<64;j++)           //控制列数0-63,共64列
  114.                   {
  115.           write_LCD_data(0x00); //写入0,地址指针自加1
  116.               }
  117.      }                                         
  118. }

  119. void init_LCD()                                         //LCD的初始化  
  120. {
  121.         SetOnOff(1);                                 //开显示
  122.         SelectScreen(0);
  123.         ClearScreen(0);                                //清屏
  124.         Set_line(0);                                 //开始行:0
  125. }
  126. void Draw_dots(uchar x,uchar y,uchar color)
  127. {
  128.         uchar x_byte;
  129.         uchar x_bit;
  130.         uchar Temp_data;                //暂时存放从LCD读出的数据
  131.         x_byte=(y>>3);                  //计算出该点属于哪个字节
  132.         x_bit=y-(x_byte<<3);        //属于字节的哪一位

  133.         
  134.         if(x>63)                                //x>63则显示在右半屏
  135.         {
  136.                 SelectScreen(2);
  137.                 x=x-64;
  138.         }
  139.         else                                        //显示在左半屏
  140.         {
  141.                 SelectScreen(1);
  142.         }
  143.         Set_page(x_byte);                //设置行地址
  144.         Set_column(x);                        //设置列地址
  145.          Temp_data=Read_LCD();        //先读出没打点前LCD中的数据
  146.         switch(color)
  147.         {
  148.                 case 0x01 : Temp_data &= ~(1<<x_bit);break;        //擦除
  149.                 case 0x02 : Temp_data ^= (1<<x_bit); break;        //反白
  150.                 case 0x03 : Temp_data |= (1<<x_bit); break;        //画点
  151.                 default : break;
  152.         }
  153.         
  154.         Set_page(x_byte);
  155.         Set_column(x);
  156.         write_LCD_data(Temp_data);        //将处理后的数据送到LCD中显示
  157.         
  158. }
  159. /**********************************
  160. 两点间画直线:
  161. x1<x2<127,y1<y2<64
  162. ***********************************/                    
  163. void Draw_line(unsigned char x1,y1,x2,y2)
  164. {
  165.         unsigned char i;        
  166.         for(i=x1;i<x2+1;i++)        
  167.                 Draw_dots(i,(y2-y1)*(i-x1)/(x2-x1)+y1,2);
  168. }
  169. /**********************************
  170. 画圆:
  171. (x,y)为圆心,r为半径
  172. ***********************************/
  173. void Draw_circle(unsigned char x,y,r)
  174. {
  175.         unsigned char i;        
  176.         for(i=x-r;i<x+r+1;i++)
  177.         {
  178.                 Draw_dots(i,y-sqrt(r*r-(x-i)*(x-i)),2);               
  179.                 Draw_dots(i,y+sqrt(r*r-(x-i)*(x-i)),2);               
  180.         }
  181. }
  182. /**********************************
  183. 两矩形:
  184. (x1,y1)为矩形左上角坐标点
  185. (x2,y2)为矩形右上角坐标点
  186. ***********************************/
  187. void Draw_retic(uchar x1,uchar y1,uchar x2,uchar y2)//画正方形,x1,y1为左上角坐标,x2,y2为右下角坐标
  188. {
  189.         uchar i;
  190.         for(i=0;i<=x2-x1;i++)
  191.         {  
  192.                 Draw_dots(x1+i,y1,2);  
  193.                 Draw_dots(x1+i,y2,2);  
  194.         }
  195.         for(i=0;i<=y2-y1;i++)
  196.         {  
  197.                 Draw_dots(x1,y1+i,2);  
  198.                 Draw_dots(x2,y1+i,2);  
  199.         }
  200. }


  201. void Display_ASCII(uchar screen,uchar page,uchar column,uchar *p)
  202. {
  203.         uchar i;
  204.         SelectScreen(screen);
  205.         Set_page(page);
  206.         Set_column(column);
  207.         for(i=0;i<8;i++)                        //显示字符上半部分:8*8
  208.         {
  209.                 write_LCD_data(p[i]);
  210.         }
  211.         Set_page(page+1);                        //显示字符下半部分:8*8
  212.         Set_column(column);
  213.         for(i=0;i<8;i++)
  214.         {
  215.                 write_LCD_data(p[i+8]);
  216.         }
  217. }  
  218. void Display_HZ(uchar screen,uchar page,uchar column,uchar *p)
  219. {
  220.         uchar i;
  221.         SelectScreen(screen);
  222.         Set_page(page);                                        //写上半页:16*8
  223.         Set_column(column*16);                         //控制列
  224.         for(i=0;i<16;i++)                                  //控制16列的数据输出
  225.         {
  226.                 write_LCD_data(p[i]);                 //汉字的上半部分
  227.         }
  228.         Set_page(page+1);                                //写下半页:16*8
  229.         Set_column(column*16);                        //控制列
  230.     for(i=0;i<16;i++)                                //控制16列的数据输出
  231.         {
  232.                 write_LCD_data(p[i+16]);        //汉字的下半部分
  233.         }
  234. }

  235. void Display_picture(uchar a[][64])//显示图形—128*64大小
  236. {
  237.         uchar i,j;
  238.         
  239.         for(j=0;j<8;j++)
  240.         {        
  241.                 SelectScreen(1);
  242.                 Set_page(j);
  243.                 Set_column(0);
  244.                 for(i=0;i<64;i++)
  245.                 {
  246.                         write_LCD_data(a[2*j][i]);//每隔一行取一次数组中的数据
  247.                 }
  248.                 SelectScreen(2);
  249.                 Set_page(j);
  250.                 Set_column(0);
  251.                 for(i=0;i<64;i++)
  252.                 {
  253.                         write_LCD_data(a[2*j+1][i]);//每隔一行取一次数组中的数据
  254.                 }        
  255.         }        
  256. }

  257. void key_scan(void)
  258. {
  259.         uchar i;
  260.         if(KEY1==0)                                                //按键1按下,显示汉字
  261.         {
  262.                 delay(5000);
  263.                 if(KEY1==0)
  264.                 {
  265.                         while(!KEY1);
  266.                         ClearScreen(0);
  267.                         for(i=8;i>0;i--)                  //滚屏
  268.                         {
  269.                                 Display_HZ(1,0+i,2,huan);
  270.                                 Display_HZ(1,0+i,3,ying);
  271.                                 Display_HZ(2,0+i,0,fang);
  272.                                 Display_HZ(2,0+i,1,wen);
  273.                                 Display_HZ(1,2+i,0,da);
  274.                                 Display_HZ(1,2+i,1,hai);
  275.                                 Display_HZ(1,2+i,2,xiang);
  276.                                 Display_HZ(1,2+i,3,shu);
  277.                                 Display_HZ(2,2+i,0,bai);
  278.                                 Display_HZ(2,2+i,1,du);
  279.                                 Display_HZ(2,2+i,2,kong);
  280.                                 Display_HZ(2,2+i,3,jian);
  281.                                 delay(30000);
  282.                                 ClearScreen(0);
  283.                         }
  284.                         Display_HZ(1,0+i,2,huan);
  285.                         Display_HZ(1,0+i,3,ying);
  286.                         Display_HZ(2,0+i,0,fang);
  287.                         Display_HZ(2,0+i,1,wen);
  288.                         Display_HZ(1,2+i,0,da);
  289.                         Display_HZ(1,2+i,1,hai);
  290.                         Display_HZ(1,2+i,2,xiang);
  291.                         Display_HZ(1,2+i,3,shu);
  292.                         Display_HZ(2,2+i,0,bai);
  293.                         Display_HZ(2,2+i,1,du);
  294.                         Display_HZ(2,2+i,2,kong);
  295.                         Display_HZ(2,2+i,3,jian);                        
  296.                 }
  297.         }

  298.         if(KEY2==0)                                //按键2按下,显示图片---大海橡树
  299.         {
  300.                 delay(5000);
  301.                 if(KEY2==0)
  302.                 {
  303.                         while(!KEY2);
  304.                         ClearScreen(0);
  305.                         Display_picture(BMP);
  306.                 }
  307.         }

  308.         if(KEY3==0)                                //按键3按下,显示几何图形
  309.         {
  310.                 delay(5000);
  311.                 if(KEY3==0)
  312.                 {
  313.                         while(!KEY3);
  314.                         ClearScreen(0);
  315.                         Display_HZ(1,0,2,zhi);
  316.                         Display_HZ(1,0,3,xian);
  317.                
  318.                         Display_HZ(2,2,1,ju);
  319.                         Display_HZ(2,2,2,xing);
  320.                
  321.                         Display_HZ(1,4,1,yuan);
  322.                
  323.                         Draw_line(0,0,127,63);
  324.                         Draw_retic(70,0,120,33);
  325.                         Draw_circle(30,40,20);
  326.                 }
  327.         }
  328. }
  329. void main()
  330. {  
  331.            init_LCD();                                        //初始12864  
  332.            ClearScreen(0);                                //清屏
  333.            Set_line(0);                                //显示开始行  
  334.         Display_HZ(1,2,1,qing);
  335.         Display_HZ(1,2,2,an);
  336.         Display_HZ(1,2,3,button);
  337.         Display_HZ(2,2,0,xuan);
  338.         Display_HZ(2,2,1,ze);
  339.         Display_HZ(2,2,2,andsoon);        //上电显示:“请按键选择…”
  340.         while(1)
  341.         {
  342.                
  343.                 key_scan();
  344.         }
  345. }


  346. source.h的代码如下:
  347. #ifndef _SOURCE_H_
  348. #define _SOURCE_H_
  349. unsigned char code BMP[][64]={/*--  调入了一幅图像:G:\51 MCU\LCD12864\程序\大海橡树.BMP  --*/
  350. /*--  宽度x高度=128x64  --*/
  351. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xF0,0xE0,0xC0,
  352. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  353. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  354. 0xF0,0xF0,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  355. 0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  356. 0x80,0xF0,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  357. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  358. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
  359. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,
  360. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  361. 0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x7C,0xF8,0xE0,0x00,0x00,0x00,0x00,0xE0,0xFE,
  362. 0x5F,0x67,0x60,0x70,0x70,0x38,0x38,0x1C,0x1C,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
  363. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xC0,0x70,0x1C,
  364. 0x0F,0x07,0x06,0xF6,0x3F,0x1F,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  365. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  366. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
  367. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,
  368. 0x80,0x80,0xC0,0xC0,0xC0,0xE0,0xE0,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  369. 0x00,0x00,0x40,0xC0,0x80,0x00,0x00,0x00,0x01,0x01,0x00,0x60,0x38,0x0F,0x83,0x80,
  370. 0x80,0xC0,0xC0,0xC0,0xE0,0x70,0xF0,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  371. 0x00,0x00,0x00,0x80,0x80,0xC0,0xC0,0xFF,0x6F,0x70,0x30,0x00,0x0C,0xFC,0x0C,0x04,
  372. 0x06,0xE6,0xFF,0x22,0x03,0x03,0xE3,0xFF,0x1F,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,
  373. 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xC0,0xC0,0xC0,0x30,0x38,0x18,0x1C,
  374. 0x0E,0xFF,0xFE,0x08,0x80,0x80,0x80,0xC0,0xFF,0xFF,0xE0,0xF0,0xF0,0x70,0x60,0x00,
  375. 0x00,0x00,0x00,0x00,0x00,0x18,0x38,0x38,0x3C,0x1C,0x1C,0x0E,0x0E,0xFF,0xFF,0x07,
  376. 0x03,0x03,0x03,0x03,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  377. 0x00,0x00,0x00,0x03,0x0F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x01,
  378. 0x01,0x1C,0x78,0x00,0x00,0x00,0x01,0xFF,0x9F,0x80,0x80,0x80,0x80,0x80,0x00,0x00,
  379. 0x00,0x00,0x01,0x01,0x01,0x81,0xF8,0xFF,0x20,0x60,0xE0,0x80,0x00,0x03,0xCE,0xF6,
  380. 0xBE,0x0F,0x03,0x03,0x03,0x03,0x07,0xF0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  381. 0x00,0x00,0x02,0x06,0x07,0x07,0xE3,0xFF,0xFF,0x81,0x00,0x00,0x04,0x18,0xF0,0xC0,
  382. 0xFF,0x3F,0x00,0x61,0xC3,0x03,0x01,0x01,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
  383. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFE,0x7F,0x07,0x3E,
  384. 0xF0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  385. 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x3F,0x10,0x30,0x38,0x18,0xD8,0xFF,0x0D,0x0C,
  386. 0x2C,0xC6,0x86,0x06,0x07,0x03,0xFF,0xFF,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x00,
  387. 0x00,0x00,0x00,0xC0,0xFC,0x1F,0x01,0xFF,0x00,0x00,0x01,0x00,0x04,0xC3,0x71,0x1E,
  388. 0x07,0xDE,0xF8,0xE0,0xF8,0x9C,0x0F,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  389. 0x00,0x00,0x00,0x80,0xF8,0x1F,0x03,0xFF,0x3F,0x03,0x0F,0x1E,0x00,0x00,0xF1,0x3F,
  390. 0x7F,0xF8,0xC0,0x00,0x07,0x1F,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
  391. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0x78,0x1F,0x07,0x00,0x00,0x00,
  392. 0x00,0x07,0x3F,0xF8,0xF0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  393. 0x00,0x00,0x00,0x80,0xF0,0xFE,0x0F,0x00,0x00,0x00,0xC0,0xF8,0xFF,0xE0,0xE0,0xE0,
  394. 0xE0,0xE7,0xE7,0xE0,0xE0,0xE0,0xFF,0xFF,0xE0,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,
  395. 0x00,0x38,0x0E,0x03,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x04,0x03,0x81,0xE0,0x38,
  396. 0x0F,0x03,0x03,0xFF,0x00,0x03,0x07,0x1E,0x7C,0xF8,0xF0,0xF0,0xE0,0xC0,0xC0,0x00,
  397. 0x00,0x30,0x0E,0x03,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xC0,0x38,0x0F,0x03,0x00,
  398. 0x00,0x07,0x3F,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
  399. 0x00,0x00,0x00,0x00,0x60,0x30,0x18,0x0E,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
  400. 0x00,0x00,0x00,0x01,0x0F,0x3F,0xFF,0xFE,0xFC,0xF8,0xF0,0xF0,0xE0,0x60,0x40,0x00,
  401. 0x00,0x00,0x06,0x3F,0x7F,0x03,0x00,0x00,0x00,0x00,0x03,0x03,0x01,0x00,0x00,0x00,
  402. 0x00,0xC0,0x80,0x80,0x80,0xFE,0x7F,0x00,0x01,0x01,0x03,0x03,0x00,0x00,0x00,0x00,
  403. 0x00,0x00,0x00,0x00,0x00,0x00,0x78,0xFF,0x00,0x00,0x08,0x04,0x03,0x01,0x00,0x60,
  404. 0xC0,0xC0,0xF0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
  405. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
  406. 0x00,0x00,0x00,0x00,0x00,0x30,0x70,0xE0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
  407. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  408. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  409. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  410. 0x00,0x00,0x03,0x3F,0x3F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  411. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  412. 0x00,0x07,0x0F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  413. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  414. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x0F,0x03,0x00,0x00,0x00,0x00,0x00,0x00
  415. };


  416. unsigned char code huan[]={/*--  文字:  欢  --*/
  417. /*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
  418. 0x00,0xA0,0x20,0x10,0xF0,0x00,0x40,0x38,0xA7,0x10,0x50,0x30,0x10,0x00,0x00,0x00,
  419. 0x10,0x08,0x05,0x02,0x05,0x20,0x10,0x0C,0x03,0x04,0x08,0x10,0x30,0x20,0x20,0x00};

  420. unsigned char code ying[]={/*--  文字:  迎  --*/
  421. /*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
  422. 0x40,0x40,0x44,0xC8,0x00,0xF8,0x08,0x84,0x06,0xF0,0x08,0x88,0xF8,0x00,0x00,0x00,
  423. 0x08,0x08,0x09,0x0E,0x08,0x09,0x09,0x08,0x10,0x17,0x10,0x30,0x30,0x10,0x10,0x00};

  424. unsigned char code fang[]={/*--  文字:  访  --*/
  425. /*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
  426. 0x40,0x40,0x20,0xE2,0x04,0x00,0x20,0x20,0x22,0xE2,0x94,0x90,0x10,0x10,0x10,0x00,
  427. 0x00,0x00,0x00,0x0F,0x14,0x0A,0x04,0x02,0x11,0x20,0x18,0x07,0x00,0x00,0x00,0x00};

  428. unsigned char code wen[]={/*--  文字:  问  --*/
  429. /*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
  430. 0x00,0x00,0xF8,0x02,0x04,0xC0,0x44,0x24,0x24,0xE2,0x02,0x02,0xFE,0x00,0x00,0x00,
  431. 0x00,0x00,0x1F,0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x10,0x3F,0x00,0x00,0x00};

  432. unsigned char code da[]={/*--  文字:  大  --*/
  433. /*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
  434. 0x00,0x00,0x40,0x40,0x40,0x40,0xFF,0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,
  435. 0x00,0x20,0x10,0x08,0x04,0x03,0x00,0x01,0x02,0x04,0x08,0x10,0x30,0x20,0x20,0x00};

  436. unsigned char code hai[]={/*--  文字:  海  --*/
  437. /*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
  438. 0x00,0x20,0x44,0x08,0x00,0x10,0xE8,0x2F,0xE8,0xA4,0x94,0xF4,0x80,0x80,0x80,0x00,
  439. 0x00,0x18,0x06,0x01,0x01,0x0D,0x0B,0x09,0x2B,0x48,0x38,0x0F,0x08,0x08,0x00,0x00};

  440. unsigned char code xiang[]={/*--  文字:  橡  --*/
  441. /*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
  442. 0x00,0x20,0xA0,0xFE,0x90,0x00,0xB0,0x54,0xBB,0x2A,0x2E,0x98,0x00,0x00,0x00,0x00,
  443. 0x04,0x03,0x00,0x3F,0x00,0x15,0x0A,0x25,0x43,0x3E,0x03,0x04,0x0C,0x08,0x08,0x00};

  444. unsigned char code shu[]={/*--  文字:  树  --*/
  445. /*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
  446. 0x40,0x40,0x40,0xFE,0x20,0x00,0x50,0x88,0x78,0x80,0x20,0x20,0xFE,0x10,0x10,0x00,
  447. 0x04,0x02,0x01,0x3F,0x09,0x04,0x02,0x01,0x02,0x04,0x01,0x20,0x7F,0x00,0x00,0x00};

  448. unsigned char code bai[]={/*--  文字:  百  --*/
  449. /*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
  450. 0x00,0x08,0x08,0x08,0x88,0x48,0x78,0x44,0x44,0x44,0xC4,0x04,0x04,0x04,0x00,0x00,
  451. 0x00,0x00,0x00,0x00,0x1F,0x0A,0x0A,0x09,0x09,0x08,0x3F,0x00,0x00,0x00,0x00,0x00};

  452. unsigned char code du[]={/*--  文字:  度  --*/
  453. /*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
  454. 0x00,0x00,0x00,0xF8,0x08,0x28,0xF8,0xA9,0xA6,0x7C,0x14,0x14,0x00,0x00,0x00,0x00,
  455. 0x20,0x18,0x06,0x21,0x20,0x22,0x16,0x0A,0x09,0x17,0x30,0x20,0x20,0x20,0x20,0x00};

  456. unsigned char code kong[]={/*--  文字:  空  --*/
  457. /*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
  458. 0x00,0x20,0x18,0x08,0x88,0x68,0x09,0x0A,0x08,0x24,0x44,0x04,0x14,0x08,0x00,0x00,
  459. 0x00,0x20,0x20,0x21,0x20,0x22,0x22,0x1E,0x11,0x11,0x11,0x10,0x30,0x20,0x00,0x00};

  460. unsigned char code jian[]={/*--  文字:  间  --*/
  461. /*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
  462. 0x00,0x00,0xF8,0x02,0x04,0xE0,0xA4,0x14,0xF4,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,
  463. 0x00,0x00,0x1F,0x00,0x00,0x07,0x02,0x02,0x07,0x00,0x10,0x20,0x1F,0x00,0x00,0x00};

  464. unsigned char code yuan[]={/*--  文字:  圆  --*/
  465. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  466. 0x00,0xFF,0x01,0x01,0xDD,0x55,0x55,0x55,0x55,0x55,0xDD,0x01,0x01,0xFF,0x00,0x00,
  467. 0x00,0xFF,0x40,0x40,0x67,0x50,0x48,0x47,0x48,0x50,0x67,0x40,0x40,0xFF,0x00,0x00};

  468. unsigned char code ju[]={/*--  文字:  矩  --*/
  469. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  470. 0xA0,0x90,0x8F,0xF8,0x88,0x88,0x88,0x00,0xFE,0x22,0x22,0x22,0x22,0xE2,0x02,0x00,
  471. 0x40,0x20,0x18,0x07,0x02,0x04,0x18,0x00,0x7F,0x42,0x42,0x42,0x42,0x47,0x40,0x00};

  472. unsigned char code xing[]={/*--  文字:  形  --*/
  473. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  474. 0x40,0x42,0x42,0xFE,0x42,0x42,0xFE,0x42,0x42,0x40,0x10,0x88,0xE4,0x47,0x02,0x00,
  475. 0x80,0x40,0x30,0x0F,0x00,0x00,0x7F,0x00,0x84,0x42,0x21,0x10,0x08,0x0E,0x04,0x00};

  476. unsigned char code zhi[]={/*--  文字:  直  --*/
  477. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  478. 0x00,0x04,0x04,0xF4,0x94,0x94,0x9C,0x97,0x94,0x94,0x94,0xF4,0x04,0x04,0x00,0x00,
  479. 0x40,0x40,0x40,0x7F,0x4A,0x4A,0x4A,0x4A,0x4A,0x4A,0x4A,0x7F,0x40,0x40,0x40,0x00};

  480. unsigned char code xian[]={/*--  文字:  线  --*/
  481. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  482. 0x40,0x60,0x58,0xC7,0x62,0x00,0x90,0x90,0x90,0xFF,0x90,0x92,0x9C,0x94,0x80,0x00,
  483. 0x20,0x22,0x23,0x12,0x12,0x12,0x20,0x20,0x10,0x13,0x0C,0x14,0x22,0x40,0xF8,0x00};



  484. unsigned char code qing[]={/*--  文字:  请  --*/
  485. /*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
  486. 0x40,0x40,0x20,0xE2,0x04,0x40,0x40,0x54,0xD4,0xBF,0xAA,0xAA,0x20,0x20,0x20,0x00,
  487. 0x00,0x00,0x18,0x0F,0x04,0x02,0x00,0x3F,0x0A,0x0A,0x20,0x7F,0x00,0x00,0x00,0x00};

  488. unsigned char code an[]={/*--  文字:  按  --*/
  489. /*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
  490. 0x00,0x20,0x20,0xFF,0x90,0x00,0x60,0x20,0x20,0xD2,0x14,0x10,0x50,0x30,0x00,0x00,
  491. 0x02,0x02,0x11,0x3F,0x00,0x22,0x22,0x12,0x17,0x09,0x0D,0x13,0x21,0x21,0x01,0x00};

  492. unsigned char code button[]={/*--  文字:  键  --*/
  493. /*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
  494. 0x80,0x40,0x70,0xCE,0x48,0x18,0xF0,0x00,0xA8,0xA8,0xFF,0x54,0x7C,0x10,0x10,0x00,
  495. 0x00,0x02,0x02,0x1F,0x29,0x14,0x0D,0x0B,0x14,0x15,0x1F,0x25,0x24,0x20,0x20,0x00};

  496. unsigned char code xuan[]={/*--  文字:  选  --*/
  497. /*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
  498. 0x80,0x80,0x44,0xC8,0x00,0xA0,0x98,0x90,0x7F,0xC8,0x48,0x48,0x40,0x00,0x00,0x00,
  499. 0x10,0x10,0x0F,0x08,0x08,0x14,0x12,0x11,0x10,0x27,0x28,0x28,0x28,0x26,0x20,0x00};

  500. unsigned char code ze[]={/*--  文字:  择  --*/
  501. /*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
  502. 0x00,0x20,0x20,0xFF,0x50,0x90,0x40,0x2C,0x14,0xD2,0xAA,0xA6,0x40,0x40,0x40,0x00,
  503. 0x02,0x02,0x09,0x1F,0x00,0x04,0x04,0x05,0x05,0x3F,0x02,0x02,0x02,0x02,0x00,0x00};

  504. unsigned char code andsoon[]={/*--  文字:  …  --*/
  505. /*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
  506. 0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,
  507. 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x00,0x00};

  508. #endif
复制代码


回复

使用道具 举报

ID:213173 发表于 2020-5-10 06:19 | 显示全部楼层
整理了一下,可以通过编译,但未经实物验证。
LCD12864.zip (35.38 KB, 下载次数: 20)
回复

使用道具 举报

ID:568565 发表于 2020-5-10 07:22 来自手机 | 显示全部楼层
换个头文件改成reg52.h试试
回复

使用道具 举报

ID:164602 发表于 2020-5-10 08:51 | 显示全部楼层
其实很简单,问题就是你的Keil没有AT89C52.h这个文件。你可以自己找找看,你自己的电脑keil中,有哪些头文件,找一个相似就可以了。将第一句的头文件名改为你电脑中有的就好。
回复

使用道具 举报

ID:555681 发表于 2020-5-10 15:44 | 显示全部楼层
你这是头文件的我问题 改成reg51.h因该就好了,
回复

使用道具 举报

ID:555681 发表于 2020-5-10 15:47 | 显示全部楼层
我之前试过keil4有时候不认小写的p 我改成大写的P自己就好了 不知道啥原应 你先试试改头文件  不行的话 就换成大写  或这安装kei5
回复

使用道具 举报

ID:650426 发表于 2020-5-10 19:42 | 显示全部楼层
HC6800-ES-V2.0 发表于 2020-5-10 08:51
其实很简单,问题就是你的Keil没有AT89C52.h这个文件。你可以自己找找看,你自己的电脑keil中,有哪些头文 ...

是在Keil4哪里可以查看头文件的,大神
回复

使用道具 举报

ID:650426 发表于 2020-5-10 19:43 | 显示全部楼层
chenyinhu 发表于 2020-5-10 07:22
换个头文件改成reg52.h试试

我试过了,不行的
回复

使用道具 举报

ID:650426 发表于 2020-5-10 19:43 | 显示全部楼层
erye 发表于 2020-5-10 15:44
你这是头文件的我问题 改成reg51.h因该就好了,

我试过了,不行的
回复

使用道具 举报

ID:650426 发表于 2020-5-10 19:44 | 显示全部楼层
wulin 发表于 2020-5-10 06:19
整理了一下,可以通过编译,但未经实物验证。

好滴,谢谢大佬,我下载试一试
回复

使用道具 举报

ID:650426 发表于 2020-5-10 19:56 | 显示全部楼层
wulin 发表于 2020-5-10 06:19
整理了一下,可以通过编译,但未经实物验证。

编译了不行,显示以下结果(是软件问题吗?大大):

生成目标“目标1”

正在编译main.c。。。

正在链接。。。

BL51 BANKED LINKER/LOCATER V6.22-序列号:Eval版本

版权所有KEIL ELEKTRONIK GmbH 1987-2009

“主对象”

到“LCD”

拉姆齐(256)

******************************************************************************

*有0800H字节码大小限制的受限版本;已使用:0D97H字节(169%)*

******************************************************************************

程序大小:数据=20.0扩展数据=0代码=4504

链接/定位运行完成。0个警告,0个错误

***致命错误L250:超出了限制版本中的代码大小限制

模块:F:\C51\C51\LIB\C51S.LIB(--)

限制:0800H字节

未创建目标
回复

使用道具 举报

ID:213173 发表于 2020-5-11 10:29 | 显示全部楼层
一路的花田 发表于 2020-5-10 19:56
编译了不行,显示以下结果(是软件问题吗?大大):

生成目标“目标1”

可能是你的编辑软件没有破解
回复

使用道具 举报

ID:584814 发表于 2020-5-12 08:52 | 显示全部楼层
以上都不行应该是安装问题程序找不到任何头文件罢,试试重装
回复

使用道具 举报

ID:584814 发表于 2020-5-12 09:00 | 显示全部楼层
致命错误L250:超出了限制版本中的代码大小限制
表示破解不成功,或工程文件的过程文件在破解前已生成并一直在用。
回复

使用道具 举报

ID:726693 发表于 2020-5-12 20:42 | 显示全部楼层
***致命错误L250:超出了限制版本中的代码大小限制

很明显的告诉你你使用的是限制版本,就是没有激活,去找许可证文件吧
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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