[Kinetis] YL-KL26Z实验-3

[复制链接]
 楼主| 李香兰 发表于 2015-12-23 17:26 | 显示全部楼层 |阅读模式
由于寄存器方式需要学习的太多,只好采用现成的函数编写程序。
首先实验128x64.dot的黑白LCD,这款用的焦躁,其中的初始化LCD程序已能在多款类似芯片下成功显示。
此次驱显得是类0108芯片的LCD。采用两款:大屏幕的和小屏幕的,尽管芯片不同,但采用0108 驱动都正常,仅仅是在控制电压上改改而已。
按照原GPIO程序中的口定义函数,将PORTD0~D3定义为输出方式,以控制4线制的LCD。
定义如下:
选择I/O口:
IO_FUN_SEL(MKL_PORTD,0,1);//LCD Clock
IO_FUN_SEL(MKL_PORTD,1,1);//LCD Data
IO_FUN_SEL(MKL_PORTD,2,1);//Cmd:1=Data & 0=Command
IO_FUN_SEL(MKL_PORTD,3,1);//Reset LCD
定义为输出I/O口:
GPIO_DDR_OUTPUT(MKL_PORTD,0);//LCD Clock
GPIO_DDR_OUTPUT(MKL_PORTD,1);//LCD Data
GPIO_DDR_OUTPUT(MKL_PORTD,2);//Cmd:1=Data & 0=Command
GPIO_DDR_OUTPUT(MKL_PORTD,3);//Reset LCD:- Enable
 楼主| 李香兰 发表于 2015-12-23 17:27 | 显示全部楼层
其中
LCD Clock为LCD写时钟,下沿有效
LCD Data为LCD数据,保持后由Clock锁存
Cmd:1=Data & 0=Command为命令数据描述,1写入LCD的是数据,0写入的是控制命令
Reset LCD为LCD复原信号,0有效,1还原。
说明:经过测试,LCD Select chip set——cs信号用处不大,只有这个LCD,省略了。
将以前在M051上成功运行显示符号的程序改吧改吧直接移过来,就Ok了。
  1. //I/O Initial
  2. void ioInit(void){
  3. IO_FUN_SEL(MKL_PORTB,18,1);//Test led1
  4. IO_FUN_SEL(MKL_PORTB,19,1);//Test led2
  5. IO_FUN_SEL(MKL_PORTD,0,1);//LCD Clock
  6. IO_FUN_SEL(MKL_PORTD,1,1);//LCD Data
  7. IO_FUN_SEL(MKL_PORTD,2,1);//Cmd:1=Data & 0=Command
  8. IO_FUN_SEL(MKL_PORTD,3,1);//Reset LCD
  9. GPIO_DDR_OUTPUT(MKL_PORTB,18);
  10. GPIO_DDR_OUTPUT(MKL_PORTB,19);
  11. GPIO_DDR_OUTPUT(MKL_PORTD,0);//LCD Clock
  12. GPIO_DDR_OUTPUT(MKL_PORTD,1);//LCD Data
  13. GPIO_DDR_OUTPUT(MKL_PORTD,2);//Cmd:1=Data & 0=Command
  14. GPIO_DDR_OUTPUT(MKL_PORTD,3);//Reset LCD:- Enable
  15. }
 楼主| 李香兰 发表于 2015-12-23 17:27 | 显示全部楼层
  1. //Delayer Longer Time:32768X32767 Clock
  2. void delay(INT16U count){
  3. INT16U i,j;              
  4. for(i=0;i<count;i++){for(j=0;j<i;j++);}            
  5. }
  6. //Write Plus
  7. void wri(){
  8. GPIO_CLR(MKL_PORTD,0);
  9. GPIO_SET(MKL_PORTD,0);
  10. }
  11. //不同大小的图形符号,圆,WYD
  12. const unsigned char hanzi[]={
  13. //16X16
  14. 0X03,0X08,0X20,0X00,0X40,0X00,0X80,0X81,0X81,0X80,0X00,0X40,0X00,0X20,0X08,0X03,
  15. 0XC0,0X10,0X04,0X00,0X02,0X00,0X01,0X81,0X81,0X01,0X00,0X02,0X00,0X04,0X10,0XC0,
  16. //32X32
  17. 0X00,0X00,0X01,0X03,0X04,0X08,0X18,0X38,0X20,0X40,0X40,0X40,0X80,0X80,0X80,0XE0,
  18. 0XE0,0X80,0X80,0X80,0X40,0X40,0X40,0X30,0X30,0X10,0X08,0X04,0X03,0X01,0X00,0X00,
  19. 0X0F,0X71,0X81,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,
  20. 0X01,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X80,0X81,0X71,0X0F,
  21. 0XF0,0X8E,0X81,0X01,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X80,
  22. 0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X81,0X8E,0XF0,
  23. 0X00,0X00,0X80,0XC0,0X20,0X10,0X18,0X1C,0X04,0X02,0X02,0X02,0X01,0X01,0X01,0X07,
  24. 0X07,0X01,0X01,0X01,0X02,0X02,0X02,0X04,0X1C,0X18,0X10,0X20,0XC0,0X80,0X00,0X00,
  25. //32X32-DOT
  26. 0X00,0X00,0X01,0X03,0X04,0X08,0X18,0X38,0X20,0X40,0X43,0X43,0X80,0X80,0X80,0XE6,
  27. 0XE6,0X80,0X80,0X80,0X40,0X43,0X43,0X30,0X30,0X10,0X08,0X04,0X03,0X01,0X00,0X00,
  28. 0X0F,0X71,0X81,0X80,0X00,0X01,0X31,0X30,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,
  29. 0X01,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X30,0X31,0X01,0X00,0X80,0X81,0X71,0X0F,
  30. 0XF0,0X8E,0X81,0X01,0X00,0X80,0X8C,0X0C,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X80,
  31. 0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0C,0X8C,0X80,0X00,0X01,0X81,0X8E,0XF0,
  32. 0X00,0X00,0X80,0XC0,0X20,0X10,0X18,0X1C,0X04,0X02,0XC2,0XC2,0X01,0X01,0X01,0X67,
  33. 0X67,0X01,0X01,0X01,0XC2,0XC2,0X02,0X04,0X1C,0X18,0X10,0X20,0XC0,0X80,0X00,0X00,
  34. //16X16-Nothing
  35. 0X03,0X08,0X20,0X00,0X40,0X00,0X80,0X81,0X81,0X80,0X00,0X40,0X00,0X20,0X08,0X03,
  36. 0XC0,0X10,0X04,0X00,0X02,0X00,0X01,0X81,0X81,0X01,0X00,0X02,0X00,0X04,0X10,0XC0,
  37. //64X64
  38. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X03,0X03,0X07,0X0F,
  39. 0X0F,0X1C,0X18,0X38,0X30,0X70,0X60,0X60,0X60,0X60,0X60,0XE0,0XC0,0XC0,0XF8,0XF8,
  40. 0XF8,0XF8,0XC0,0XC0,0XE0,0X60,0X60,0X60,0X60,0X60,0X70,0X30,0X38,0X18,0X1C,0X0F,
  41. 0X07,0X07,0X03,0X03,0X01,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  42. 0X00,0X00,0X00,0X00,0X00,0X03,0X0F,0X1E,0X38,0X70,0XE0,0XC0,0X80,0X00,0X00,0X00,
  43. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  44. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  45. 0X00,0X00,0X00,0X80,0XC0,0XE0,0X70,0X38,0X1E,0X0F,0X03,0X01,0X00,0X00,0X00,0X00,
  46. 0X00,0X07,0X1F,0X7C,0XF0,0XE0,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  47. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  48. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  49. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0XC0,0XF0,0X7C,0X1F,0X07,0X00,
  50. 0X3F,0XFF,0XE3,0X03,0X03,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  51. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X03,
  52. 0X03,0X03,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  53. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X03,0XE3,0XFF,0X3F,
  54. 0XFC,0XFF,0XC7,0XC0,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  55. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0XC0,
  56. 0XC0,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  57. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0XC0,0XC7,0XFF,0XFC,
  58. 0X00,0XE0,0XF8,0X3E,0X0F,0X03,0X01,0X01,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  59. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  60. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  61. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0X07,0X0F,0X3E,0XF8,0XE0,0X00,
  62. 0X00,0X00,0X00,0X00,0X80,0XC0,0XF0,0XF8,0X1C,0X0E,0X07,0X03,0X01,0X00,0X00,0X00,
  63. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  64. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  65. 0X00,0X00,0X00,0X01,0X03,0X07,0X0E,0X1C,0X78,0XF0,0XC0,0X00,0X00,0X00,0X00,0X00,
  66. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X80,0XC0,0XC0,0XE0,0X60,
  67. 0X70,0X78,0X78,0X1C,0X0C,0X0E,0X06,0X06,0X06,0X06,0X06,0X07,0X03,0X03,0X1F,0X1F,
  68. 0X1F,0X1F,0X03,0X03,0X07,0X06,0X06,0X06,0X06,0X06,0X0E,0X0C,0X1C,0X18,0X38,0XF0,
  69. 0XF0,0XE0,0XC0,0XC0,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  70. //wyd
  71. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  72. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  73. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  74. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
  75. 0X03,0X03,0X03,0X03,0X03,0X03,0X03,0X03,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  76. 0X00,0X00,0X00,0X03,0X03,0X03,0X03,0X03,0X03,0X03,0X03,0X03,0X03,0X00,0X00,0X00,
  77. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X03,0X03,0X03,0X07,0X07,0X0F,0X0F,
  78. 0X0F,0X0F,0X1F,0X1F,0X1F,0X1F,0X0F,0X0F,0X07,0X07,0XFD,0XFF,0XFF,0XFF,0XFF,0XFF,
  79. 0XC0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X7F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  80. 0X00,0X0F,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0X1F,0X00,
  81. 0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,
  82. 0XF8,0XC0,0X80,0X80,0X80,0X80,0XC0,0XE0,0XF8,0XF8,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
  83. 0X00,0X00,0X7C,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X3F,
  84. 0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0XD8,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,
  85. 0X1F,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0XC0,0X00,
  86. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
  87. 0X00,0X00,0X00,0X00,0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3E,0X7F,0XFF,
  88. 0XFF,0XFF,0XFF,0XFF,0XF8,0XF8,0X00,0X00,0X00,0X00,0XF8,0XF8,0XFF,0XFF,0XFF,0XFF,
  89. 0XFF,0X7F,0X00,0X7F,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X07,0X07,0X00,
  90. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X02,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
  91. 0X00,0X00,0X00,0X00,0X00,0X00,0XF0,0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
  92. 0XFF,0XFF,0XE0,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XF0,0XFF,0XFF,0XFF,
  93. 0XFF,0XFF,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XF8,0XE0,0XE0,0XF8,0XF8,0XFC,0XFC,
  94. 0XFC,0X7E,0X7E,0X3E,0X3E,0X7E,0X7C,0XFC,0XF8,0XF8,0XFC,0XFC,0XFC,0XFC,0XFC,0XFC,
  95. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,
  96. 0XC0,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC1,0XC1,0XFF,
  97. 0XFF,0XFF,0XFF,0XFF,0XFC,0XFC,0XC0,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  98. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  99. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  100. 0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0X3F,0X3F,0X1F,0X1F,0X1F,0X3F,0XBF,0XFF,0XFE,
  101. 0XFE,0XFC,0XF8,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  102. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  103. };
 楼主| 李香兰 发表于 2015-12-23 17:29 | 显示全部楼层
  1. //Like 0108LCD Initial
  2. void lcdInit(void){
  3. delay(2000);
  4. GPIO_CLR(MKL_PORTD,3);
  5. delay(2000);
  6. GPIO_SET(MKL_PORTD,3);
  7. delay(2000);
  8. btol(0xAE,0);//AE= Off/AF=On
  9. btol(0xE2,0);//LCD Initial
  10. delay(500);
  11. btol(0xA0,0);//A0=1~132/A1=132~1
  12. btol(0xC0,0);//C0=1~64/C8=64~1||A0+C8 col+4
  13. btol(0xA3,0);//A2=1大/65=1/7_A3=1小/65=1/9
  14. delay(500);
  15. btol(0x2F,0);//Base Vol 28+VC+VR+VF
  16. delay(1000);
  17. btol(0x22,0);//20~27=1.9,2.19,2.55,3.02,3.61,4.35,5.29,6.48V/
  18. delay(1000);
  19. btol(0x81,0);//V0-Next Num//大20小2C
  20. btol(0x2C,0);//000000~111111=0~63=8.83~11.17V/30=10V
  21. delay(1000);
 楼主| 李香兰 发表于 2015-12-23 17:30 | 显示全部楼层
  1. btol(0xA4,0);//A4-Off/A5-On[??]
  2. btol(0x10,0);//Column40x10+0000~1111
  3. btol(0x00,0);//Column40x10+0000~1111
  4. btol(0xAF,0);//LCD On
  5. btol(0xAD,0);//AC=Cursor on/AD= off
  6. btol(0x02,0);//??00=OFF/01=1S/02=0.5S/03=AllOn
  7. delay(2000);
  8. }
  9. 按照LCD初始化,引线在下,左上角为坐标0,0;右下角为127,63
  10. //MAIN
  11. int main(void){
  12. //uint32_t i;
  13. SystemCoreClockUpdate();
  14. SIM_SCGC5 |=(SIM_SCGC5_PORTA_MASK|SIM_SCGC5_PORTB_MASK|SIM_SCGC5_PORTC_MASK|SIM_SCGC5_PORTD_MASK|SIM_SCGC5_PORTE_MASK);
  15. //for(i=20000;i>0;i--){;};
  16. ioInit();
  17. lcdInit();
  18. //uart0Init(9600,0,0,8,1);
  19. //printf("YL-KL25Z128 GPIO for ISP Test 2.4Inch TFT LCD\r\n");
 楼主| 李香兰 发表于 2015-12-23 17:30 | 显示全部楼层
  1. GPIO_SET(MKL_PORTB,18);
  2. GPIO_CLR(MKL_PORTB,19);
  3. delay(1000);
  4. GPIO_CLR(MKL_PORTB,18);
  5. GPIO_SET(MKL_PORTB,19);
  6. delay(2000);
  7. while(1){
  8.   GPIO_SET(MKL_PORTB,18);
  9.   GPIO_CLR(MKL_PORTB,19);
  10.   dispOut();
  11.   delay(1000);
  12.   GPIO_CLR(MKL_PORTB,18);
  13.   GPIO_SET(MKL_PORTB,19);
  14.   delay(2000);
  15. }
  16. }
 楼主| 李香兰 发表于 2015-12-23 17:32 | 显示全部楼层
主程序中的系统时钟等照旧,只是增加了LCD显示部分。dispOut(),以及将8位字符转成1bit写入LCD的相关程序先不给出,希望先自己尝试编程。上述LCD初始化之后,LCD屏幕应该能看到变化的,说明已能控制LCD了。过几天忙完后给出完整程序。
小屏幕128x64LCD





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

本版积分规则

26

主题

248

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部