智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1651|回复: 0
打印 上一主题 下一主题

[软件类] 飞思卡尔 k60 iliac25驱动

[复制链接]

13

主题

47

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1000
威望
550
贡献
288
兑换币
335
注册时间
2013-12-3
在线时间
81 小时
毕业学校
上海工程技术大学
跳转到指定楼层
1#
发表于 2014-8-29 21:27:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
10贡献
程序运行, 得到的DeviceCode为6783         求有经验的给点建议

  1. int main(void)
  2. {
  3.   DelayInit();
  4.   LCD_Init();
  5.   while(1);
  6. }
复制代码
  1. #include "ili9325.h"
  2. #include "gpio.h"
  3. uint16_t DeviceCode;         

  4. //PTB0~8 DB0~8 **** PTA8~15 DB8~15
  5. void DataToIO(uint16_t val)
  6. {
  7. uint16_t dat=0;
  8. dat = GPIO_ReadPort(HW_GPIOB);  // DBL
  9. dat = (dat&0xFF00) | (val&0x00FF);
  10. GPIO_WritePort(HW_GPIOB, dat);

  11. dat = GPIO_ReadPort(HW_GPIOA);  // DBH  
  12. dat = (dat&0xFF00) | ((val>>8)&0x00FF);
  13. GPIO_WritePort(HW_GPIOA, dat);       
  14. }
  15. void LCD_WR_DATA(uint16_t data)
  16. {  
  17.         LCD_RS_SET;
  18.         LCD_CS_CLR;
  19.         DataToIO(data);
  20.         LCD_WR_CLR;
  21.         LCD_WR_SET;
  22.         LCD_CS_SET;
  23. }        

  24. void LCD_WR_REG(uint16_t data)  
  25. {
  26.         LCD_RS_CLR;
  27.         LCD_CS_CLR;
  28.         DataToIO(data);
  29.         LCD_WR_CLR;
  30.         LCD_WR_SET;
  31.         LCD_CS_SET;
  32. }

  33. void LCD_WriteReg(uint16_t LCD_Reg, uint16_t LCD_RegValue)
  34. {       
  35.         LCD_WR_REG(LCD_Reg);  
  36.         LCD_WR_DATA(LCD_RegValue);                             
  37. }

  38. uint16_t LCD_ReadReg(uint16_t LCD_Reg)
  39. {                                                                                  
  40.         uint16_t t,i,datH,datL;
  41.         LCD_WR_REG(LCD_Reg);  
  42.         for(i=0;i<7;i++)
  43.         {
  44.           GPIO_QuickInit(HW_GPIOB,i,kGPIO_Mode_IPU);
  45.         }
  46.         for(i=8;i<16;i++)
  47.         {
  48.           GPIO_QuickInit(HW_GPIOA,i,kGPIO_Mode_IPU);
  49.         }
  50.         PTA->PDOR=0XFFFF;
  51.         PTB->PDOR=0XFFFF;
  52.        
  53.         LCD_RS_SET;
  54.         LCD_CS_CLR;
  55.         LCD_RD_CLR;
  56.         DelayUs(5);
  57.        
  58.         datH = PTA->PDIR;  /**< Port Data Input Register, offset: 0x10 */
  59.         datL = PTB->PDIR;  /**< Port Data Input Register, offset: 0x10 */
  60.        
  61.         LCD_CS_SET;
  62.         for(i=0;i<7;i++)
  63.         {
  64.                 GPIO_QuickInit(HW_GPIOB,i,kGPIO_Mode_OPP);
  65.         }
  66.         for(i=8;i<16;i++)
  67.         {
  68.                 GPIO_QuickInit(HW_GPIOA,i,kGPIO_Mode_OPP);
  69.         }
  70.         DataToIO(0XFFFF);
  71.         t = ((datH<<8)&0xFF00) | (datL&0x00FF);
  72.         return t;  
  73. }  

  74. void LCD_Init(void)
  75. {
  76.         uint8_t i;                                                                                   
  77.         for(i=4;i<10;i++)
  78.         {
  79.                 GPIO_QuickInit(HW_GPIOD,i,kGPIO_Mode_OPP);
  80.         }

  81.         LCD_CS_SET;
  82.         LCD_RD_SET;
  83.         LCD_WR_SET;
  84.         DelayMs(50); // delay 50 ms
  85.         LCD_WriteReg(0x0000,0x0001);
  86.         DelayMs(50); // delay 50 ms
  87.         LCD_RD_SET;
  88.         LCD_WR_SET;
  89.        
  90.         DeviceCode = LCD_ReadReg(0x0000);
  91.         DelayMs(20);

  92.         LCD_LED_SET;
  93. }
复制代码
  1. #include "ili9325.h"
  2. #include "gpio.h"
  3. uint16_t DeviceCode;         

  4. //PTB0~8 DB0~8 **** PTA8~15 DB8~15
  5. void DataToIO(uint16_t val)
  6. {
  7. uint16_t dat=0;
  8. dat = GPIO_ReadPort(HW_GPIOB);  // DBL
  9. dat = (dat&0xFF00) | (val&0x00FF);
  10. GPIO_WritePort(HW_GPIOB, dat);

  11. dat = GPIO_ReadPort(HW_GPIOA);  // DBH  
  12. dat = (dat&0xFF00) | ((val>>8)&0x00FF);
  13. GPIO_WritePort(HW_GPIOA, dat);       
  14. }
  15. void LCD_WR_DATA(uint16_t data)
  16. {  
  17.         LCD_RS_SET;
  18.         LCD_CS_CLR;
  19.         DataToIO(data);
  20.         LCD_WR_CLR;
  21.         LCD_WR_SET;
  22.         LCD_CS_SET;
  23. }        

  24. void LCD_WR_REG(uint16_t data)  
  25. {
  26.         LCD_RS_CLR;
  27.         LCD_CS_CLR;
  28.         DataToIO(data);
  29.         LCD_WR_CLR;
  30.         LCD_WR_SET;
  31.         LCD_CS_SET;
  32. }

  33. void LCD_WriteReg(uint16_t LCD_Reg, uint16_t LCD_RegValue)
  34. {       
  35.         LCD_WR_REG(LCD_Reg);  
  36.         LCD_WR_DATA(LCD_RegValue);                             
  37. }

  38. uint16_t LCD_ReadReg(uint16_t LCD_Reg)
  39. {                                                                                  
  40.         uint16_t t,i,datH,datL;
  41.         LCD_WR_REG(LCD_Reg);  
  42.         for(i=0;i<7;i++)
  43.         {
  44.           GPIO_QuickInit(HW_GPIOB,i,kGPIO_Mode_IPU);
  45.         }
  46.         for(i=8;i<16;i++)
  47.         {
  48.           GPIO_QuickInit(HW_GPIOA,i,kGPIO_Mode_IPU);
  49.         }
  50.         PTA->PDOR=0XFFFF;
  51.         PTB->PDOR=0XFFFF;
  52.        
  53.         LCD_RS_SET;
  54.         LCD_CS_CLR;
  55.         LCD_RD_CLR;
  56.         DelayUs(5);
  57.        
  58.         datH = PTA->PDIR;  /**< Port Data Input Register, offset: 0x10 */
  59.         datL = PTB->PDIR;  /**< Port Data Input Register, offset: 0x10 */
  60.        
  61.         LCD_CS_SET;
  62.         for(i=0;i<7;i++)
  63.         {
  64.                 GPIO_QuickInit(HW_GPIOB,i,kGPIO_Mode_OPP);
  65.         }
  66.         for(i=8;i<16;i++)
  67.         {
  68.                 GPIO_QuickInit(HW_GPIOA,i,kGPIO_Mode_OPP);
  69.         }
  70.         DataToIO(0XFFFF);
  71.         t = ((datH<<8)&0xFF00) | (datL&0x00FF);
  72.         return t;  
  73. }  

  74. void LCD_Init(void)
  75. {
  76.         uint8_t i;                                                                                   
  77.         for(i=4;i<10;i++)
  78.         {
  79.                 GPIO_QuickInit(HW_GPIOD,i,kGPIO_Mode_OPP);
  80.         }

  81.         LCD_CS_SET;
  82.         LCD_RD_SET;
  83.         LCD_WR_SET;
  84.         DelayMs(50); // delay 50 ms
  85.         LCD_WriteReg(0x0000,0x0001);
  86.         DelayMs(50); // delay 50 ms
  87.         LCD_RD_SET;
  88.         LCD_WR_SET;
  89.        
  90.         DeviceCode = LCD_ReadReg(0x0000);
  91.         DelayMs(20);

  92.         LCD_LED_SET;
  93. }
复制代码



回复

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-27 22:06 , Processed in 0.041796 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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