[Kinetis] YL-KL26Z实验-3

[复制链接]
1165|12
 楼主| 奥德赛 发表于 2015-12-25 17:55 | 显示全部楼层 |阅读模式
由于寄存器方式需要学习的太多,只好采用现成的函数编写程序。
首先实验128x64.dot的黑白LCD,这款用的焦躁,其中的初始化LCD程序已能在多款类似芯片下成功显示。
此次驱显得是类0108芯片的LCD。采用两款:大屏幕的和小屏幕的,尽管芯片不同,但采用0108 驱动都正常,仅仅是在控制电压上改改而已。
按照原GPIO程序中的口定义函数,将PORTD0~D3定义为输出方式,以控制4线制的LCD。
定义如下:
选择I/O口:
  1. IO_FUN_SEL(MKL_PORTD,0,1);//LCD Clock
  2. IO_FUN_SEL(MKL_PORTD,1,1);//LCD Data
  3. IO_FUN_SEL(MKL_PORTD,2,1);//Cmd:1=Data & 0=Command
  4. IO_FUN_SEL(MKL_PORTD,3,1);//Reset LCD


 楼主| 奥德赛 发表于 2015-12-25 17:56 | 显示全部楼层
定义为输出I/O口:
  1. GPIO_DDR_OUTPUT(MKL_PORTD,0);//LCD Clock
  2. GPIO_DDR_OUTPUT(MKL_PORTD,1);//LCD Data
  3. GPIO_DDR_OUTPUT(MKL_PORTD,2);//Cmd:1=Data & 0=Command
  4. GPIO_DDR_OUTPUT(MKL_PORTD,3);//Reset LCD:- Enable

其中
LCD Clock为LCD写时钟,下沿有效
LCD Data为LCD数据,保持后由Clock锁存
Cmd:1=Data & 0=Command为命令数据描述,1写入LCD的是数据,0写入的是控制命令
Reset LCD为LCD复原信号,0有效,1还原。
 楼主| 奥德赛 发表于 2015-12-25 17:57 | 显示全部楼层
说明:经过测试,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-25 17:57 | 显示全部楼层
  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. }
  1. //不同大小的图形符号,圆,WYD
  2. const unsigned char hanzi[]={
  3. //16X16
  4. 0X03,0X08,0X20,0X00,0X40,0X00,0X80,0X81,0X81,0X80,0X00,0X40,0X00,0X20,0X08,0X03,
  5. 0XC0,0X10,0X04,0X00,0X02,0X00,0X01,0X81,0X81,0X01,0X00,0X02,0X00,0X04,0X10,0XC0,
 楼主| 奥德赛 发表于 2015-12-25 17:58 | 显示全部楼层
  1. //32X32
  2. 0X00,0X00,0X01,0X03,0X04,0X08,0X18,0X38,0X20,0X40,0X40,0X40,0X80,0X80,0X80,0XE0,
  3. 0XE0,0X80,0X80,0X80,0X40,0X40,0X40,0X30,0X30,0X10,0X08,0X04,0X03,0X01,0X00,0X00,
  4. 0X0F,0X71,0X81,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,
  5. 0X01,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X80,0X81,0X71,0X0F,
  6. 0XF0,0X8E,0X81,0X01,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X80,
  7. 0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X81,0X8E,0XF0,
  8. 0X00,0X00,0X80,0XC0,0X20,0X10,0X18,0X1C,0X04,0X02,0X02,0X02,0X01,0X01,0X01,0X07,
  9. 0X07,0X01,0X01,0X01,0X02,0X02,0X02,0X04,0X1C,0X18,0X10,0X20,0XC0,0X80,0X00,0X00,
 楼主| 奥德赛 发表于 2015-12-25 17:59 | 显示全部楼层
  1. //32X32-DOT
  2. 0X00,0X00,0X01,0X03,0X04,0X08,0X18,0X38,0X20,0X40,0X43,0X43,0X80,0X80,0X80,0XE6,
  3. 0XE6,0X80,0X80,0X80,0X40,0X43,0X43,0X30,0X30,0X10,0X08,0X04,0X03,0X01,0X00,0X00,
  4. 0X0F,0X71,0X81,0X80,0X00,0X01,0X31,0X30,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,
  5. 0X01,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X30,0X31,0X01,0X00,0X80,0X81,0X71,0X0F,
  6. 0XF0,0X8E,0X81,0X01,0X00,0X80,0X8C,0X0C,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X80,
  7. 0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0C,0X8C,0X80,0X00,0X01,0X81,0X8E,0XF0,
  8. 0X00,0X00,0X80,0XC0,0X20,0X10,0X18,0X1C,0X04,0X02,0XC2,0XC2,0X01,0X01,0X01,0X67,
  9. 0X67,0X01,0X01,0X01,0XC2,0XC2,0X02,0X04,0X1C,0X18,0X10,0X20,0XC0,0X80,0X00,0X00,
 楼主| 奥德赛 发表于 2015-12-25 18:00 | 显示全部楼层
  1. //16X16-Nothing
  2. 0X03,0X08,0X20,0X00,0X40,0X00,0X80,0X81,0X81,0X80,0X00,0X40,0X00,0X20,0X08,0X03,
  3. 0XC0,0X10,0X04,0X00,0X02,0X00,0X01,0X81,0X81,0X01,0X00,0X02,0X00,0X04,0X10,0XC0,
  4. //64X64
  5. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X03,0X03,0X07,0X0F,
  6. 0X0F,0X1C,0X18,0X38,0X30,0X70,0X60,0X60,0X60,0X60,0X60,0XE0,0XC0,0XC0,0XF8,0XF8,
  7. 0XF8,0XF8,0XC0,0XC0,0XE0,0X60,0X60,0X60,0X60,0X60,0X70,0X30,0X38,0X18,0X1C,0X0F,
  8. 0X07,0X07,0X03,0X03,0X01,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  9. 0X00,0X00,0X00,0X00,0X00,0X03,0X0F,0X1E,0X38,0X70,0XE0,0XC0,0X80,0X00,0X00,0X00,
  10. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  11. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  12. 0X00,0X00,0X00,0X80,0XC0,0XE0,0X70,0X38,0X1E,0X0F,0X03,0X01,0X00,0X00,0X00,0X00,
  13. 0X00,0X07,0X1F,0X7C,0XF0,0XE0,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  14. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  15. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  16. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0XC0,0XF0,0X7C,0X1F,0X07,0X00,
  17. 0X3F,0XFF,0XE3,0X03,0X03,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  18. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X03,
  19. 0X03,0X03,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  20. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X03,0XE3,0XFF,0X3F,
  21. 0XFC,0XFF,0XC7,0XC0,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  22. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0XC0,
  23. 0XC0,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  24. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0XC0,0XC7,0XFF,0XFC,
  25. 0X00,0XE0,0XF8,0X3E,0X0F,0X03,0X01,0X01,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  26. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  27. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  28. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0X07,0X0F,0X3E,0XF8,0XE0,0X00,
  29. 0X00,0X00,0X00,0X00,0X80,0XC0,0XF0,0XF8,0X1C,0X0E,0X07,0X03,0X01,0X00,0X00,0X00,
  30. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  31. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  32. 0X00,0X00,0X00,0X01,0X03,0X07,0X0E,0X1C,0X78,0XF0,0XC0,0X00,0X00,0X00,0X00,0X00,
  33. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X80,0XC0,0XC0,0XE0,0X60,
  34. 0X70,0X78,0X78,0X1C,0X0C,0X0E,0X06,0X06,0X06,0X06,0X06,0X07,0X03,0X03,0X1F,0X1F,
  35. 0X1F,0X1F,0X03,0X03,0X07,0X06,0X06,0X06,0X06,0X06,0X0E,0X0C,0X1C,0X18,0X38,0XF0,
  36. 0XF0,0XE0,0XC0,0XC0,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 楼主| 奥德赛 发表于 2015-12-25 18:01 | 显示全部楼层
  1. //wyd
  2. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  3. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  4. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  5. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
  6. 0X03,0X03,0X03,0X03,0X03,0X03,0X03,0X03,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  7. 0X00,0X00,0X00,0X03,0X03,0X03,0X03,0X03,0X03,0X03,0X03,0X03,0X03,0X00,0X00,0X00,
  8. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X03,0X03,0X03,0X07,0X07,0X0F,0X0F,
  9. 0X0F,0X0F,0X1F,0X1F,0X1F,0X1F,0X0F,0X0F,0X07,0X07,0XFD,0XFF,0XFF,0XFF,0XFF,0XFF,
  10. 0XC0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X7F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  11. 0X00,0X0F,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0X1F,0X00,
  12. 0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,
  13. 0XF8,0XC0,0X80,0X80,0X80,0X80,0XC0,0XE0,0XF8,0XF8,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
  14. 0X00,0X00,0X7C,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X3F,
  15. 0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0XD8,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,
  16. 0X1F,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0XC0,0X00,
  17. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
  18. 0X00,0X00,0X00,0X00,0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3E,0X7F,0XFF,
  19. 0XFF,0XFF,0XFF,0XFF,0XF8,0XF8,0X00,0X00,0X00,0X00,0XF8,0XF8,0XFF,0XFF,0XFF,0XFF,
  20. 0XFF,0X7F,0X00,0X7F,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X07,0X07,0X00,
  21. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X02,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
  22. 0X00,0X00,0X00,0X00,0X00,0X00,0XF0,0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
  23. 0XFF,0XFF,0XE0,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XF0,0XFF,0XFF,0XFF,
  24. 0XFF,0XFF,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XF8,0XE0,0XE0,0XF8,0XF8,0XFC,0XFC,
  25. 0XFC,0X7E,0X7E,0X3E,0X3E,0X7E,0X7C,0XFC,0XF8,0XF8,0XFC,0XFC,0XFC,0XFC,0XFC,0XFC,
  26. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,
  27. 0XC0,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC1,0XC1,0XFF,
  28. 0XFF,0XFF,0XFF,0XFF,0XFC,0XFC,0XC0,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  29. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  30. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  31. 0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0X3F,0X3F,0X1F,0X1F,0X1F,0X3F,0XBF,0XFF,0XFE,
  32. 0XFE,0XFC,0XF8,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  33. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  34. };
 楼主| 奥德赛 发表于 2015-12-25 18:02 | 显示全部楼层
  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-25 18:02 | 显示全部楼层
  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();
 楼主| 奥德赛 发表于 2015-12-25 18:04 | 显示全部楼层
  1. //uart0Init(9600,0,0,8,1);
  2. //printf("YL-KL25Z128 GPIO for ISP Test 2.4Inch TFT LCD\r\n");
  3. GPIO_SET(MKL_PORTB,18);
  4. GPIO_CLR(MKL_PORTB,19);
  5. delay(1000);
  6. GPIO_CLR(MKL_PORTB,18);
  7. GPIO_SET(MKL_PORTB,19);
  8. delay(2000);
  9. while(1){
  10.   GPIO_SET(MKL_PORTB,18);
  11.   GPIO_CLR(MKL_PORTB,19);
  12.   dispOut();
  13.   delay(1000);
  14.   GPIO_CLR(MKL_PORTB,18);
  15.   GPIO_SET(MKL_PORTB,19);
  16.   delay(2000);
  17. }
  18. }
 楼主| 奥德赛 发表于 2015-12-25 18:07 | 显示全部楼层
主程序中的系统时钟等照旧,只是增加了LCD显示部分。dispOut(),以及将8位字符转成1bit写入LCD的相关程序先不给出,希望先自己尝试编程。上述LCD初始化之后,LCD屏幕应该能看到变化的,说明已能控制LCD了。过几天忙完后给出完整程序。再下来的实验大致为:
将ADC测试的数值显示在LCD上。以后有时间了再玩其他实验。
 楼主| 奥德赛 发表于 2015-12-25 18:07 | 显示全部楼层


小屏幕128x64LCD




大屏幕128x64 LCD



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

本版积分规则

46

主题

397

帖子

3

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