找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3256|回复: 22
打印 上一主题 下一主题
收起左侧

单片机12864不带字库显示问题(汉字上半部分和下半部分错开了)

  [复制链接]
跳转到指定楼层
楼主
ID:379492 发表于 2018-9-13 10:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的显示为什么不正常,错在了哪里啊?程序如下
  1. #include <reg52.h>
  2. #include <string.h>
  3. #include "zf.h"
  4. #include "io.h"
  5. #define  uchar  unsigned char                  
  6. #define  uint   unsigned int
  7. uchar ye=0,lie=0;
  8. #define DB P0
  9. #define chr_width 7
  10. #define chn_width 15
  11. unsigned char disp_no;
  12. unsigned char position,which;


  13. /*****************************延时*************************/
  14. void delay(uint i)
  15. {
  16.   while(--i);
  17. }  
  18. /****************12864液晶写数据命令地址函数*****************/
  19. void writedacm(uchar dat,uchar log)        //写数据 RS=1数据,RS=0命令
  20. {  
  21.         delay(8);      
  22.       
  23.         RW = 0;
  24.         if(log)         RS=1;
  25.         else     RS=0;
  26.         E = 1;
  27.         DB = dat;   
  28.         E = 0;
  29. }
  30. /************************页列设置*************************/
  31. void set_YL( uchar y, uchar x)  //ye -> 0 : 7 页 lie -> 0 :63 列
  32. {
  33.    y= y&0x07|0xb8;
  34.    writedacm(y,0);         
  35.    x= x&0x3f|0x40;
  36.    writedacm(x,0);         
  37. }
  38. /*************************12864液晶屏幕选择函数************/
  39. void setPM(uchar PX) //选择屏幕( 0-左屏,1-右屏,2-全屏  )
  40. {
  41.    switch(PX){
  42.     case 0 :        CS1 = 0;        CS2 = 1;   break;
  43.     case 1 :        CS1 = 1;    CS2 = 0;   break;
  44.     case 2 :    CS1 = 0;    CS2 = 0;
  45.   }
  46. }
  47. /******************左右屏设置*************************/
  48. void chear()  //清屏(0-清左屏1-清右屏,2-清全屏 ),
  49. {    uchar i,j;
  50.          setPM(2);
  51.          for(i = 0;i <8;i++)
  52.          { set_YL(i,0);   
  53.            for(j = 0;j <64 ; j++)
  54.            writedacm(0x00,1);
  55.          }                                         
  56. }
  57. //****************************************
  58. void SetOnOff(uchar onoff) //1-开显示 0-关
  59. {
  60. if(onoff == 1){ setPM(2); writedacm(0x3f,0);}  
  61. if(onoff == 0){ setPM(2); writedacm(0x3e,0);}
  62. }

  63. /******************** 12864液晶复位函数******************/
  64. void init_lcd()
  65. {
  66.         Reset = 0; delay(2);  
  67.     Reset = 1; delay(2);      
  68.     chear();           //清屏
  69.     SetOnOff(1) ;
  70.         delay(100);      
  71.         CS1=1;               //刚开始关闭两屏
  72.         CS2=1;
  73.         delay(100);
  74.         writedacm(0x3e,0);         //显示关
  75.         writedacm(0xb8,0);         //定义Y坐标
  76.         writedacm(0xC0,0);
  77.         writedacm(0x40,0);   //设定X坐标
  78.         writedacm(0x3f,0);   //显示开
  79. }  


  80. void DrawBmp(uchar x0,bit layer,uchar width,uchar *bmp)
  81. {
  82.         uchar x,i=0,j=16; //RAMadr表示显存的物理地址
  83.         uchar page=0;        
  84.         delay(10);
  85.         if (layer) page=2;

  86.         delay(10);
  87.         for (x=x0;x<(x0+width);x++)
  88.         {
  89.             delay(10);
  90.                 setPM(0);//显示左半屏
  91.             writedacm(0xb8,0);//从第一行开始显示
  92.                 writedacm(bmp,1);//写第一行字上半部分
  93.                 i=i+1;        
  94.         }


  95.         for (x=x0;x<(x0+width);x++)
  96.         {
  97.                 delay(10);
  98.                 setPM(0);
  99.                 writedacm(0xb8+1,0);//从第一行开始显示
  100.                 writedacm(bmp[j],1);//写第一行字下半部分
  101.                 j=j+1;
  102.         }
  103. }

  104. #define welcome_hanzi 6
  105. void disp_welcome(void)
  106. {
  107.         unsigned char cyc_counter;
  108.         delay(10);
  109.         for(cyc_counter=0; cyc_counter<6; cyc_counter++)
  110.         {
  111.                 delay(10);
  112.                 DrawBmp(16+cyc_counter*chn_width,0,chn_width,chn_font+(cyc_counter+welcome_hanzi)*chn_width*2);
  113.         delay(10);
  114.         };
  115. disp_no = 0x00;
  116. }

  117. /**********************主函数*****************************/
  118. main()
  119. {        
  120.             init_lcd();
  121.                 chear();
  122.                 disp_welcome();
  123.                 while(1);
  124. }                                                           
  125. /***********************************************************/

  126. /*******************下面是字库摸******************************/

  127. //汉字用的字号是五号字
  128. unsigned char code chn_font[]={
  129. /*
  130. 无(0)  池(1)  流(2)  压(3)  容(4)  量(5)
  131. 新(6)  乡(7)  安(8)  科(9)  电(10) 子(11)  ----这里的6个汉字必须是连续的,给显示公司用
  132. 型(12) 号(13) 异(14) 充(15) 放(16) 次(17)
  133. 数(18) 生(19) 产(20) 额(21) 定(22) 编(23)
  134. 常(24) 满(25) 低(26) 温(27) 度(28) 非(29)
  135. 字(30) 日(31) 期(32) 镉(33) 镍(34) 锂(35)

  136. */

  137. /*--  文字:  无0  --*/
  138. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  139. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  140. 0x00,0x22,0x22,0x22,0x22,0x22,0xFE,0x22,0xE2,0x22,0x22,0x23,0x32,0x20,0x00,0x00,
  141. 0x20,0x20,0x10,0x08,0x06,0x01,0x00,0x1F,0x20,0x20,0x20,0x20,0x3C,0x00,

  142. /*--  文字:  池1  --*/
  143. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  144. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  145. 0x10,0x61,0x86,0x60,0x40,0xFC,0x20,0x20,0xFF,0x10,0x10,0xF8,0x10,0x00,0x00,0x02,
  146. 0x3E,0x01,0x00,0x00,0x1F,0x20,0x20,0x27,0x20,0x22,0x23,0x20,0x38,0x00,

  147. /*--  文字:  流2  --*/
  148. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  149. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  150. 0x10,0x61,0x02,0xC6,0x00,0xA4,0x34,0x2D,0xA6,0x24,0xA4,0x34,0x66,0x04,0x00,0x04,
  151. 0x3C,0x03,0x20,0x10,0x0F,0x00,0x00,0x3F,0x00,0x1F,0x20,0x20,0x38,0x00,

  152. /*--  文字:  压3  --*/
  153. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  154. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  155. 0x00,0x00,0xFE,0x02,0x42,0x42,0x42,0xFA,0x42,0x42,0x42,0x42,0x03,0x02,0x00,0x20,
  156. 0x18,0x07,0x10,0x10,0x10,0x10,0x1F,0x10,0x10,0x11,0x16,0x10,0x10,0x00,

  157. /*--  文字:  容4  --*/
  158. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  159. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  160. 0x10,0x4C,0x44,0x24,0x94,0x44,0x25,0x26,0x44,0x84,0x14,0x24,0x4C,0x04,0x00,0x04,
  161. 0x04,0x02,0x01,0x3E,0x22,0x22,0x22,0x22,0x22,0x3F,0x01,0x02,0x02,0x00,

  162. /*--  文字:  量5  --*/
  163. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  164. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  165. 0x00,0x20,0x20,0xBE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xBF,0x22,0x20,0x00,0x00,
  166. 0x20,0x28,0x2F,0x2A,0x2A,0x2A,0x3F,0x2A,0x2A,0x2A,0x2F,0x28,0x20,0x00,

  167. /*--  文字:  新6  --*/
  168. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  169. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  170. 0x20,0x24,0x2C,0x35,0xE6,0x34,0x2C,0x00,0xFE,0x24,0x24,0xE2,0x33,0x22,0x00,0x10,
  171. 0x09,0x15,0x21,0x1F,0x05,0x29,0x10,0x0F,0x00,0x00,0x3F,0x00,0x00,0x00,

  172. /*--  文字:  乡7  --*/
  173. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  174. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  175. 0x00,0x00,0x00,0x10,0x18,0x94,0x52,0x31,0x10,0x08,0x04,0xC0,0x00,0x00,0x00,0x00,
  176. 0x20,0x20,0x21,0x21,0x11,0x11,0x09,0x05,0x03,0x01,0x00,0x00,0x00,0x00,

  177. /*--  文字:  安8  --*/
  178. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  179. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  180. 0x40,0x50,0x4C,0x44,0x44,0xC4,0x75,0x46,0x44,0xC4,0x44,0x54,0x4C,0x40,0x00,0x00,
  181. 0x20,0x20,0x20,0x13,0x12,0x0C,0x04,0x06,0x09,0x08,0x10,0x30,0x00,0x00,

  182. /*--  文字:  科9  --*/
  183. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  184. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  185. 0x14,0x14,0x94,0xFE,0x93,0x12,0x00,0x20,0xC4,0x18,0x00,0xFF,0x00,0x00,0x00,0x04,
  186. 0x03,0x00,0x3F,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x3F,0x01,0x01,0x00,

  187. /*--  文字:  电10  --*/
  188. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  189. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  190. 0x00,0x00,0xF8,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xFC,0x08,0x00,0x00,0x00,
  191. 0x00,0x07,0x02,0x02,0x02,0x1F,0x22,0x22,0x22,0x22,0x23,0x20,0x38,0x00,

  192. /*--  文字:  子11  --*/
  193. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  194. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  195. 0x40,0x40,0x42,0x42,0x42,0x42,0x42,0xF2,0x52,0x4A,0x46,0x43,0x62,0x40,0x00,0x00,
  196. 0x00,0x00,0x00,0x00,0x10,0x20,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  197. /*--  文字:  型12  --*/
  198. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  199. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  200. 0x00,0x12,0x92,0x7E,0x12,0x12,0xFE,0x12,0x00,0x7E,0x80,0x00,0xFF,0x00,0x00,0x00,
  201. 0x21,0x24,0x24,0x24,0x24,0x25,0x3E,0x24,0x24,0x24,0x25,0x30,0x20,0x00,

  202. /*--  文字:  号13  --*/
  203. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  204. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  205. 0x40,0x40,0x40,0x5E,0xD2,0x52,0x52,0x52,0x52,0x52,0x5F,0x42,0x40,0x40,0x00,0x00,
  206. 0x00,0x00,0x02,0x03,0x01,0x11,0x21,0x21,0x11,0x0F,0x00,0x00,0x00,0x00,

  207. /*--  文字:  异14  --*/
  208. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  209. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  210. 0x00,0x00,0x00,0x3E,0xD2,0x52,0x52,0x52,0x52,0xD2,0x5F,0x42,0x70,0x00,0x00,0x22,
  211. 0x22,0x12,0x0A,0x07,0x02,0x02,0x02,0x02,0x3F,0x02,0x02,0x02,0x02,0x00,

  212. /*--  文字:  充15  --*/
  213. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  214. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  215. 0x00,0x04,0x44,0x44,0x64,0xD4,0x4D,0x46,0xC4,0x54,0x64,0xC4,0x06,0x04,0x00,0x00,
  216. 0x20,0x10,0x08,0x04,0x03,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x38,0x00,

  217. /*--  文字:  放16  --*/
  218. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  219. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  220. 0x08,0x08,0xF9,0x4E,0x48,0xC8,0x08,0x20,0xF8,0x0F,0x08,0xF8,0x0C,0x08,0x00,0x20,
  221. 0x18,0x07,0x10,0x10,0x0F,0x20,0x20,0x10,0x09,0x06,0x09,0x10,0x20,0x00,

  222. /*--  文字:  次17  --*/
  223. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  224. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  225. 0x00,0x02,0x8C,0x60,0x98,0x40,0x30,0x0F,0xE8,0x08,0x08,0x28,0x18,0x00,0x00,0x01,
  226. 0x01,0x1F,0x20,0x20,0x10,0x0C,0x03,0x00,0x03,0x04,0x08,0x30,0x10,0x00,

  227. /*--  文字:  数18  --*/
  228. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  229. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  230. 0x08,0x4A,0x2C,0x18,0xFF,0x2C,0x4A,0x28,0xF0,0x0F,0x08,0x88,0x7C,0x08,0x00,0x21,
  231. 0x21,0x15,0x17,0x09,0x0D,0x13,0x20,0x10,0x0B,0x04,0x0B,0x10,0x20,0x00,

  232. /*--  文字:  生19  --*/
  233. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  234. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  235. 0x80,0x40,0x30,0x1E,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x18,0x10,0x00,0x00,0x20,
  236. 0x20,0x20,0x21,0x21,0x21,0x21,0x3F,0x21,0x21,0x21,0x21,0x30,0x20,0x00,

  237. /*--  文字:  产20  --*/
  238. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  239. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  240. 0x00,0x04,0xC4,0x44,0x4C,0x74,0x45,0x46,0x64,0x5C,0x44,0x44,0x44,0x44,0x00,0x20,
  241. 0x18,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  242. /*--  文字:  额21  --*/
  243. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  244. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  245. 0x4C,0x24,0xBC,0x55,0x56,0xB4,0x0C,0xFA,0x0A,0x0E,0xEA,0x0A,0xFB,0x02,0x00,0x02,
  246. 0x01,0x3E,0x12,0x12,0x1E,0x21,0x27,0x10,0x08,0x07,0x08,0x17,0x20,0x00,

  247. /*--  文字:  定22  --*/
  248. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  249. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  250. 0x00,0x10,0x2C,0xA4,0x24,0x24,0x25,0xE6,0x24,0x24,0x24,0x24,0x14,0x0C,0x00,0x20,
  251. 0x10,0x08,0x07,0x08,0x10,0x10,0x3F,0x22,0x22,0x22,0x22,0x20,0x20,0x00,

  252. /*--  文字:  编23  --*/
  253. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  254. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  255. 0x20,0xB8,0x67,0x30,0x00,0xFC,0xD4,0x54,0xD5,0x56,0xD4,0x54,0xDC,0x00,0x00,0x09,
  256. 0x1B,0x09,0x25,0x18,0x07,0x3F,0x02,0x1F,0x02,0x1F,0x22,0x3F,0x00,0x00,

  257. /*--  文字:  常24  --*/
  258. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  259. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  260. 0x20,0x18,0x08,0x0A,0xEC,0xA8,0xA8,0xAF,0xA8,0xA8,0xEC,0x0A,0x28,0x18,0x00,0x00,
  261. 0x00,0x00,0x1E,0x02,0x02,0x02,0x3F,0x02,0x02,0x12,0x1E,0x00,0x00,0x00,

  262. /*--  文字:  满25  --*/
  263. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  264. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  265. 0x10,0x61,0x86,0x60,0xA4,0xA4,0xA4,0xEF,0xA4,0xE4,0xAF,0xA4,0xB6,0x24,0x00,0x02,
  266. 0x3E,0x01,0x00,0x3F,0x08,0x04,0x03,0x0A,0x07,0x12,0x24,0x1F,0x00,0x00,

  267. /*--  文字:  低26  --*/
  268. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  269. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  270. 0x40,0x20,0xF8,0x07,0x00,0xFC,0x44,0x44,0x44,0xFC,0x42,0x43,0x62,0x40,0x00,0x00,
  271. 0x00,0x3F,0x00,0x00,0x1F,0x10,0x08,0x14,0x21,0x06,0x08,0x10,0x3C,0x00,

  272. /*--  文字:  温27  --*/
  273. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  274. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  275. 0x10,0x61,0x86,0x60,0x00,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x7F,0x02,0x00,0x00,0x02,
  276. 0x3E,0x01,0x20,0x3F,0x21,0x21,0x3F,0x21,0x3F,0x21,0x21,0x3F,0x20,0x00,

  277. /*--  文字:  度28  --*/
  278. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  279. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  280. 0x00,0x00,0xFC,0x04,0x14,0x14,0x7C,0x55,0x56,0x54,0x7C,0x14,0x16,0x04,0x00,0x20,
  281. 0x18,0x07,0x20,0x21,0x21,0x13,0x15,0x09,0x15,0x13,0x21,0x20,0x20,0x00,

  282. /*--  文字:  非29  --*/
  283. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  284. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  285. 0x08,0x48,0x48,0x48,0x48,0xFF,0x00,0x00,0xFF,0x48,0x48,0x48,0x4C,0x08,0x00,0x04,
  286. 0x04,0x04,0x04,0x04,0x3F,0x00,0x00,0x3F,0x04,0x04,0x04,0x06,0x04,0x00,

  287. /*--  文字:  字30  --*/
  288. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  289. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  290. 0x00,0x10,0x0C,0x14,0x14,0x14,0x15,0xD6,0x54,0x34,0x14,0x14,0x8C,0x00,0x00,0x01,
  291. 0x01,0x01,0x01,0x01,0x11,0x21,0x1F,0x01,0x01,0x01,0x01,0x01,0x01,0x00,

  292. /*--  文字:  日31  --*/
  293. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  294. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  295. 0x00,0x00,0x00,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0xFF,0x02,0x00,0x00,0x00,
  296. 0x00,0x00,0x3F,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x3F,0x00,0x00,0x00,

  297. /*--  文字:  期32  --*/
  298. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  299. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  300. 0x00,0x04,0xFF,0x94,0x94,0xFF,0x04,0x00,0xFE,0x12,0x12,0x12,0xFF,0x02,0x00,0x22,
  301. 0x12,0x0B,0x06,0x02,0x07,0x2A,0x10,0x0F,0x01,0x11,0x21,0x1F,0x00,0x00,

  302. /*--  文字:  镉33  --*/
  303. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  304. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  305. 0x60,0x38,0xE7,0x24,0x24,0x00,0x82,0xBA,0xAA,0xAA,0xAA,0xBA,0x83,0x02,0x00,0x01,
  306. 0x01,0x3F,0x11,0x09,0x01,0x3F,0x04,0x06,0x1C,0x06,0x24,0x3F,0x00,0x00,

  307. /*--  文字:  镍34  --*/
  308. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  309. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  310. 0x60,0x38,0xE7,0x24,0x24,0x00,0xFE,0xAA,0xAB,0xAA,0xAA,0xFE,0x00,0x00,0x00,0x01,
  311. 0x01,0x1F,0x11,0x29,0x12,0x0A,0x06,0x02,0x3F,0x06,0x0A,0x12,0x22,0x00,

  312. /*--  文字:  锂35  --*/
  313. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  314. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  315. 0x60,0x38,0xE7,0x24,0x24,0x00,0xFE,0x92,0x92,0xFE,0x92,0x92,0xFF,0x02,0x00,0x01,
  316. 0x01,0x3F,0x11,0x09,0x21,0x24,0x24,0x24,0x3F,0x24,0x24,0x24,0x20,0x00,


  317. /*--  文字:  记36  --*/
  318. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  319. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  320. 0x20,0x20,0x21,0xE6,0x00,0x00,0xC4,0x44,0x44,0x44,0x44,0x44,0x7E,0x04,0x00,0x00,
  321. 0x00,0x00,0x1F,0x08,0x04,0x1F,0x20,0x20,0x20,0x20,0x20,0x20,0x3C,0x00,

  322. /*--  文字:  录37  --*/
  323. /*--  宋体11;  此字体下对应的点阵为:宽x高=15x15   --*/
  324. /*--  高度不是8的倍数,现调整为:宽度x高度=15x16  --*/
  325. 0x20,0x20,0xA2,0xAA,0x2A,0x2A,0x2A,0xEA,0x2A,0x2A,0x3F,0xA2,0x20,0x20,0x00,0x10,
  326. 0x10,0x08,0x08,0x05,0x12,0x22,0x1F,0x01,0x02,0x05,0x08,0x18,0x08,0x00
  327. };
复制代码








分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:379492 发表于 2018-9-13 10:58 | 只看该作者
12864仿真画面

12864仿真画面.jpg (33.81 KB, 下载次数: 41)

12864仿真画面.jpg
回复

使用道具 举报

板凳
ID:379492 发表于 2018-9-13 11:00 | 只看该作者
显示目的是“新乡”,但是汉字是上半部分和下半部分错开了,不知道为啥
回复

使用道具 举报

地板
ID:379492 发表于 2018-9-13 11:02 | 只看该作者
void DrawBmp(uchar x0,bit layer,uchar width,uchar *bmp)
X0代表离开左边起始位置的位数
layer代表页
width代表字体的宽度
*bmp数组指针
回复

使用道具 举报

5#
ID:379492 发表于 2018-9-13 13:14 | 只看该作者
我在
void DrawBmp(uchar x0,bit layer,uchar width,uchar *bmp)
函数里面加了一个X坐标地址
writedacm(0x40,0),注:writedacm(0x40,0)0代表写命令,1代表写数据
以后,屏就变成白屏了,不再显示字体
回复

使用道具 举报

6#
ID:387733 发表于 2018-9-14 07:28 | 只看该作者
850787641@qq.co 发表于 2018-9-13 11:02
void DrawBmp(uchar x0,bit layer,uchar width,uchar *bmp)
X0代表离开左边起始位置的位数
layer代表页

这个模块有问题,X0参数没起作用,在setPM();后面还应加上set_YL(),给行、列定位。另外,当列超过63以后,还需要切换到右半屏。
回复

使用道具 举报

7#
ID:379492 发表于 2018-9-14 09:01 | 只看该作者
sxhwdz 发表于 2018-9-14 07:28
这个模块有问题,X0参数没起作用,在setPM();后面还应加上set_YL(),给行、列定位。另外,当列超过63以后 ...

行家一眼看到问题所在,是的,X0没有起作用,说实话也不知道怎么弄,刚上手单片机,一遍学习一遍调程序,理论和实践结合,然后跟在你们大师级别的屁股后面这样进步快点
回复

使用道具 举报

8#
ID:267330 发表于 2018-9-14 09:24 | 只看该作者
这个模块有问题,X0参数没起作用,在setPM();后面还应加上set_YL(),给行、列定位。另外,当列超过63以后,还需要切换到右半屏。
回复

使用道具 举报

9#
ID:379492 发表于 2018-9-14 10:16 | 只看该作者
本帖最后由 850787641@qq.co 于 2018-9-14 10:59 编辑
lie=x0;ye=layer;
set_YL( ye, lie);                  
           for(g = 0;g < 16;g++)
        {
                if(lie==63)
                        {
                        setPM(1);
                        set_YL( ye,0);
                        }         
                writedacm(bmp,1);
        }
      
           
           
           
           set_YL( ye+1, lie);
           for(g = 16;g < 32;g++)
        {
               if(lie==63)
                   {
                   setPM(1);
                   set_YL(ye+1, 0);
                   }
               
            writedacm( bmp,1);
        }

我的思维只能到这里了,但是不知道怎么衔接我的程序,你能帮我指点一下吗?求你了
回复

使用道具 举报

10#
ID:379492 发表于 2018-9-14 10:44 | 只看该作者
jiangkeqin_sy 发表于 2018-9-14 09:24
这个模块有问题,X0参数没起作用,在setPM();后面还应加上set_YL(),给行、列定位。另外,当列超过63以后, ...

虽然你和sxhwdz说的一字不差,但是还是谢谢你的回复
回复

使用道具 举报

11#
ID:397874 发表于 2018-9-14 12:07 | 只看该作者
应该是这个模件有问题,换个元件试试看
回复

使用道具 举报

12#
ID:379492 发表于 2018-9-14 16:40 | 只看该作者
void DrawBmp(uchar x0,bit layer,uchar width,uchar *bmp)
{
        uchar i=0,j=0, g=0;
        delay(10);
    hang=layer;
        lie=x0;
   
        if(lie < 63)       
         {
                setPM(0);
               
                set_YL( hang, lie);
            for(g = 0;g < width ; g++)
                        {
                          writedacm(bmp[g],1);
                        }
                
                set_YL( hang+1, lie+1);
                for(g = 16;g < 30;g++)
                        {
                          writedacm( bmp[g],1);
                        }
         }       



else               
{       

   for(i=0;i<2*width;i++)
    {
        set_YL( hang, i);
        }
       
        setPM(1);
        for(g = 0;g < width ; g++)
                {
                  writedacm(bmp[g],1);
                }
          
         set_YL( hang+1, i);
         for(g = 16;g < 30;g++)
                {
                  writedacm( bmp[g],1);
                }
  }       
       
       
}       
       
#define welcome_hanzi 6
void disp_welcome(void)
{
        unsigned char cyc_counter;
        delay(10);
        for(cyc_counter=0; cyc_counter<5; cyc_counter++)
        {
                delay(10);
                DrawBmp(18+cyc_counter*chn_width,0,chn_width,chn_font+(cyc_counter+welcome_hanzi)*chn_width*2);
        delay(10);
        };

        disp_no = 0x00;
}




/**********************主函数*****************************/
main()
{       
            init_lcd();
                chear();
                disp_welcome();
                while(1);
}

显示不正常,本来是显示“新乡安科电子”,“科少了下半部分”,“电”和“科”隔了一个字符,然后“子”显示不出来,是咋回事啊?

12864仿真画面.jpg (37 KB, 下载次数: 38)

12864仿真画面.jpg
回复

使用道具 举报

13#
ID:397477 发表于 2018-9-14 17:32 | 只看该作者
跪求个多功能万年日历
回复

使用道具 举报

14#
ID:111634 发表于 2018-9-14 21:54 | 只看该作者
本帖最后由 zl2168 于 2018-9-15 21:36 编辑

LCD12864显示屏显示汉字
Proteus仿真一下,确认有效。
实验25 LCD12864显示屏显示.rar (60.48 KB, 下载次数: 10)

以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行,可演示,可观测,程序语句条条有注解。
回复

使用道具 举报

15#
ID:135253 发表于 2018-9-15 10:32 | 只看该作者
1:程序有点乱,2:字符不是标准的16X16,请注意修改,这个效果是按照你的15X16的字符写的

QQ截图20180915102935.png (12.15 KB, 下载次数: 37)

QQ截图20180915102935.png

新建文件夹.rar

14.13 KB, 下载次数: 13

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

16#
ID:379492 发表于 2018-9-20 18:06 | 只看该作者
xzf586 发表于 2018-9-15 10:32
1:程序有点乱,2:字符不是标准的16X16,请注意修改,这个效果是按照你的15X16的字符写的

哇塞,这几天有点忙,没有进论坛看这个帖子,没想到你给我搞好了,实在是太感谢你了,论坛里高手真多,并且很热心,谢谢啊
回复

使用道具 举报

17#
ID:379492 发表于 2018-9-20 18:08 | 只看该作者
xzf586 发表于 2018-9-15 10:32
1:程序有点乱,2:字符不是标准的16X16,请注意修改,这个效果是按照你的15X16的字符写的

能给我分享你的源程序吗?大佬
回复

使用道具 举报

18#
ID:7485 发表于 2018-9-21 07:48 | 只看该作者
这种屏没有字库,每一个点的位置都是由程序的地址所决定。这种情况肯定是地址发送错误。
回复

使用道具 举报

19#
ID:303383 发表于 2018-9-21 09:17 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

20#
ID:135253 发表于 2018-9-21 10:36 | 只看该作者
850787641@qq.co 发表于 2018-9-20 18:06
哇塞,这几天有点忙,没有进论坛看这个帖子,没想到你给我搞好了,实在是太感谢你了,论坛里高手真多,并 ...

拿去不谢!

12864 显示非标准15X16字符.rar

46.62 KB, 下载次数: 10

回复

使用道具 举报

21#
ID:379492 发表于 2018-9-25 08:42 | 只看该作者

谢谢,万分感谢
回复

使用道具 举报

22#
ID:379492 发表于 2018-9-25 08:44 | 只看该作者

里面只有HEX文件,没有看到程序代码?发错了?XZF老师
回复

使用道具 举报

23#
ID:537530 发表于 2024-1-13 17:45 | 只看该作者

漂亮!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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