标题: 字库LCD12864 指定位置显示一个数字,但占据的是半个汉字位置,剩下的乱码 [打印本页]

作者: 黑猫2610    时间: 2018-5-9 18:18
标题: 字库LCD12864 指定位置显示一个数字,但占据的是半个汉字位置,剩下的乱码


这是主要程序:

按指定位置显示一个字符,怎样修改才能 显示正常数字

  1. //写数据

  2. void WriteDataLCD(unsigned char WDLCD)

  3. {

  4. ReadStatusLCD(); //检测忙

  5. LCD_RS = 1;

  6. LCD_RW = 0;

  7. LCD_Data = WDLCD;

  8. LCD_E = 1;

  9. LCD_E = 1;

  10. LCD_E = 1;

  11. LCD_E = 0;

  12. }

  13. //写指令

  14. void WriteCommandLCD(unsigned char WCLCD,BuysC) //BuysC为0时忽略忙检测

  15. {

  16. if (BuysC) ReadStatusLCD(); //根据需要检测忙

  17. LCD_RS = 0;

  18. LCD_RW = 0;

  19. LCD_Data = WCLCD;

  20. LCD_E = 1;

  21. LCD_E = 1;

  22. LCD_E = 1;

  23. LCD_E = 0;  

  24. }

  25. //读数据

  26. unsigned char ReadDataLCD(void)

  27. {

  28. LCD_RS = 1;

  29. LCD_RW = 1;

  30. LCD_E = 0;

  31. LCD_E = 0;

  32. LCD_E = 1;

  33. return(LCD_Data);

  34. }

  35. //读状态

  36. unsigned char ReadStatusLCD(void)

  37. {

  38. LCD_Data = 0xFF;

  39. LCD_RS = 0;

  40. LCD_RW = 1;

  41. LCD_E = 1;

  42. while (LCD_Data & Busy); //检测忙信号

  43. LCD_E = 0;

  44. return(LCD_Data);

  45. }

  46. void LCDInit(void) //LCM初始化

  47. {

  48. WriteCommandLCD(0x30,1); //显示模式设置,开始要求每次检测忙信号

  49. WriteCommandLCD(0x01,1); //显示清屏

  50. WriteCommandLCD(0x06,1); // 显示光标移动设置

  51. WriteCommandLCD(0x0C,1); // 显示开及光标设置

  52. }

  53. void LCDClear(void) //清屏

  54. {

  55. WriteCommandLCD(0x01,1); //显示清屏

  56. WriteCommandLCD(0x34,1); // 显示光标移动设置

  57. WriteCommandLCD(0x30,1); // 显示开及光标设置

  58. }

  59. //按指定位置显示一个字符

  60. void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)

  61. {

  62. if(Y<1)

  63.         Y=1;

  64. if(Y>4)

  65.         Y=4;

  66. X &= 0x0F; //限制X不能大于16,Y不能大于1

  67. switch(Y){

  68.         case 1:X|=0X80;break;

  69.         case 2:X|=0X90;break;

  70.         case 3:X|=0X88;break;

  71.         case 4:X|=0X98;break;

  72.         }

  73. WriteCommandLCD(X, 0); //这里不检测忙信号,发送地址码

  74. WriteDataLCD(DData);

  75. }
复制代码



作者: 枭奇电子    时间: 2020-2-27 20:51
遇到同样的问题

作者: zhanguang    时间: 2021-4-20 14:26
这个屏不好用坐标只能控制1-4行1-8列,每个坐标都是以一个汉字大小,字符和数字没法任意位置
作者: 303229655    时间: 2022-4-7 18:27
//unsigned char code data[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};//"0123456789"
unsigned char data[10] = {'0','1','2','3','4','5','6','7','8','9'};
使用这两个都可以




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1