[技术问答] MUC120之T6963C的驱动

[复制链接]
2224|7
 楼主| niuyaliang 发表于 2014-2-28 15:09 | 显示全部楼层 |阅读模式
如题,这个驱动是当年从铭正同创的官网搞得,现在貌似找不到了,绝版的呦
 楼主| niuyaliang 发表于 2014-2-28 15:10 | 显示全部楼层
  1. #define LCD_CS                                E_GPA,5
  2. #define LCD_CS_SET()                GPIOA->DOUT |= (1<<5)
  3. #define LCD_CS_CLR()                GPIOA->DOUT &= ~(1<<5)//片选

  4. #define LCD_RE                                E_GPA,0
  5. #define LCD_RE_SET()                GPIOA->DOUT |= (1<<0)
  6. #define LCD_RE_CLR()                GPIOA->DOUT &= ~(1<<0)//复位

  7. #define LCD_A0                                E_GPA,6
  8. #define LCD_A0_SET()                GPIOA->DOUT |= (1<<6)
  9. #define LCD_A0_CLR()                GPIOA->DOUT &= ~(1<<6)//通道选择

  10. #define LCD_WR                                E_GPA,3
  11. #define LCD_WR_SET()                GPIOA->DOUT |= (1<<3)
  12. #define LCD_WR_CLR()                GPIOA->DOUT &= ~(1<<3)//写

  13. #define LCD_RD                                E_GPA,4
  14. #define LCD_RD_SET()                GPIOA->DOUT |= (1<<4)
  15. #define LCD_RD_CLR()                GPIOA->DOUT &= ~(1<<4)//读

  16. #define LCD_FS                                E_GPC,7
  17. #define LCD_FS_SET()                GPIOC->DOUT |= (1<<7)
  18. #define LCD_FS_CLR()                GPIOC->DOUT &= ~(1<<7)//字体选择


  19. #define LCD_Data_BUS_Clr()                 SendByte_Hc164(0x00)
  20. #define LCD_Data_BUS_Set(n)                 SendByte_Hc164(n)//写1置位


 楼主| niuyaliang 发表于 2014-2-28 15:11 | 显示全部楼层
本帖最后由 niuyaliang 于 2014-2-28 15:12 编辑
  1. //========================================================================
  2. // 函数: void LCD_DataWrite(unsigned int Data)
  3. // 描述: 写一个字节的显示数据至LCD中的显示缓冲RAM当中
  4. // 参数: Data 写入的数据
  5. // 返回: 无
  6. // 备注: Mz 通用版LCD驱动程序 标准子函数
  7. // 版本:
  8. //      2007/01/09      First version
  9. //========================================================================
  10. void LCD_DataWrite(LCDBYTE Dat)
  11. {
  12.         LCD_A0_CLR();
  13.         LCD_CS_CLR();
  14.         LCD_Data_BUS_Clr();
  15.         LCD_Data_BUS_Set(Dat);
  16.         LCD_WR_CLR();
  17.         LCD_WR_SET();
  18.         LCD_CS_SET();
  19. }


 楼主| niuyaliang 发表于 2014-2-28 15:15 | 显示全部楼层
本帖最后由 niuyaliang 于 2014-2-28 15:17 编辑
  1. */
  2. //========================================================================
  3. // 函数: void Write_Dot_LCD(int x,int y,unsigned int i)
  4. // 描述: 在LCD的真实坐标系上的X、Y点绘制填充色为i的点
  5. // 参数: x                 X轴坐标
  6. //                 y                 Y轴坐标
  7. //                 i                 要填充的点的颜色
  8. // 返回: 无
  9. // 备注: Mz 通用版LCD驱动程序 标准子函数
  10. // 版本:
  11. //      2006/10/15      First version
  12. //                2007/01/09                V1.2
  13. //========================================================================
  14. void Write_Dot_LCD(DOTBYTE x,DOTBYTE y,LCDBYTE i)
  15. {
  16.         WORD Dot_Addr;                                                        //定义列地址的高低位指令
  17.         Dot_Addr = (x>>3)+0x0800;
  18.         Dot_Addr += (((WORD)y)<<5);//*0x0020;
  19.         LCD_DataWrite((LCDBYTE)(Dot_Addr&0x00ff));
  20.         LCD_DataWrite((LCDBYTE)(Dot_Addr>>8));
  21.         LCD_RegWrite(0x24);
  22.         if(i!=0)
  23.                 i = 0xf8;
  24.         else
  25.                 i = 0xf0;
  26.         i = i+((~x)&0x07);
  27.                 LCD_RegWrite(i);
  28. }

 楼主| niuyaliang 发表于 2014-2-28 15:20 | 显示全部楼层
  1. //========================================================================
  2. // 函数: void PutChar(unsigned char x,unsigned char y,char a)  
  3. // 描述: 写入一个标准字符
  4. // 参数: x  X轴坐标     y  Y轴坐标
  5. //                 a  要显示的字符在字库中的偏移量  
  6. // 返回: 无
  7. // 备注: ASCII字符可直接输入ASCII码即可
  8. // 版本:
  9. //      2006/10/15      First version
  10. //                2007/01/11                V1.1
  11. //                2008/06/12                V2.0
  12. //========================================================================
  13. void PutChar(DOTBYTE x,DOTBYTE y,char a)      
  14. {
  15.         DOTBYTE i,j;                //数据暂存
  16.         FLASH *p_data;
  17.         LCDBYTE Temp;
  18.         BYTE Index = 0;
  19.         if(Font_type==1)
  20.                 p_data = Char_TAB + (a-32)*Font_Wrod;
  21.         else
  22.                 p_data = Char_TAB + a*Font_Wrod;        //要写字符的首地址
  23.         j = 0;
  24.         while((j ++) < Y_Witch)
  25.         {
  26.                 if(y > Dis_Y_MAX) break;
  27.                 i = 0;
  28.                 while(i < X_Witch)
  29.                 {
  30.                         if((i&0x07)==0)
  31.                         {
  32. //                                Temp = *(p_data + (Index>>1));
  33. //                                if((Index&0x01)==0)Temp = Temp>>8;
  34.                                 Temp = *(p_data+Index);
  35.                                 Index++;
  36.                         }
  37.                         if((Temp & 0x80) > 0) Writ_Dot/*Write_Dot_LCD*/((x+i),y,Char_Color);
  38.                         else if(Font_Cover) Writ_Dot/*Write_Dot_LCD*/((x+i),y,Char_BackColor);
  39.                         Temp = Temp << 1;
  40.                         if((x+i) >= Dis_X_MAX)
  41.                         {
  42.                                 Index += (X_Witch-i)>>3;
  43.                                 break;
  44.                         }
  45.                         i++;
  46.                 }
  47.                 y ++;
  48.         }
  49. }

 楼主| niuyaliang 发表于 2014-2-28 15:22 | 显示全部楼层
  1. //========================================================================
  2. // 函数: void PutString(unsigned char x,unsigned char y,char *p)
  3. // 描述: 在x、y为起始坐标处写入一串标准字符
  4. // 参数: x  X轴坐标     y  Y轴坐标
  5. //                 p  要显示的字符串  
  6. // 返回: 无
  7. // 备注: 仅能用于自带的ASCII字符串显示
  8. // 版本:
  9. //      2006/10/15      First version
  10. //========================================================================
  11. void PutString(DOTBYTE x,DOTBYTE y,char *p)
  12. {
  13.         while(*p!=0)
  14.         {
  15.                 PutChar(x,y,*p);
  16.                 x += X_Witch;
  17.                 if((x + X_Witch) > Dis_X_MAX)
  18.                 {
  19.                         x = 0;
  20.                         if((Dis_Y_MAX - y) < Y_Witch) break;
  21.                         else y += Y_Witch;
  22.                 }
  23.                 p++;
  24.         }
  25. }


clyu 发表于 2014-2-28 16:13 | 显示全部楼层
顶,学习一下
 楼主| niuyaliang 发表于 2014-2-28 22:31 | 显示全部楼层
clyu 发表于 2014-2-28 16:13
顶,学习一下

距离版主这么近,激动哇
您需要登录后才可以回帖 登录 | 注册

本版积分规则

212

主题

2427

帖子

7

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