[技术问答]

MUC120之T6963C的驱动

[复制链接]
1401|7
手机看帖
扫描二维码
随时随地手机跟帖
niuyaliang|  楼主 | 2014-2-28 15:09 | 显示全部楼层 |阅读模式
如题,这个驱动是当年从铭正同创的官网搞得,现在貌似找不到了,绝版的呦
niuyaliang|  楼主 | 2014-2-28 15:10 | 显示全部楼层
#define LCD_CS                                E_GPA,5
#define LCD_CS_SET()                GPIOA->DOUT |= (1<<5)
#define LCD_CS_CLR()                GPIOA->DOUT &= ~(1<<5)//片选

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

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

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

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

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


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


使用特权

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


使用特权

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

使用特权

评论回复
niuyaliang|  楼主 | 2014-2-28 15:20 | 显示全部楼层
//========================================================================
// 函数: void PutChar(unsigned char x,unsigned char y,char a)  
// 描述: 写入一个标准字符
// 参数: x  X轴坐标     y  Y轴坐标
//                 a  要显示的字符在字库中的偏移量  
// 返回: 无
// 备注: ASCII字符可直接输入ASCII码即可
// 版本:
//      2006/10/15      First version
//                2007/01/11                V1.1
//                2008/06/12                V2.0
//========================================================================
void PutChar(DOTBYTE x,DOTBYTE y,char a)      
{
        DOTBYTE i,j;                //数据暂存
        FLASH *p_data;
        LCDBYTE Temp;
        BYTE Index = 0;
        if(Font_type==1)
                p_data = Char_TAB + (a-32)*Font_Wrod;
        else
                p_data = Char_TAB + a*Font_Wrod;        //要写字符的首地址
        j = 0;
        while((j ++) < Y_Witch)
        {
                if(y > Dis_Y_MAX) break;
                i = 0;
                while(i < X_Witch)
                {
                        if((i&0x07)==0)
                        {
//                                Temp = *(p_data + (Index>>1));
//                                if((Index&0x01)==0)Temp = Temp>>8;
                                Temp = *(p_data+Index);
                                Index++;
                        }
                        if((Temp & 0x80) > 0) Writ_Dot/*Write_Dot_LCD*/((x+i),y,Char_Color);
                        else if(Font_Cover) Writ_Dot/*Write_Dot_LCD*/((x+i),y,Char_BackColor);
                        Temp = Temp << 1;
                        if((x+i) >= Dis_X_MAX)
                        {
                                Index += (X_Witch-i)>>3;
                                break;
                        }
                        i++;
                }
                y ++;
        }
}

使用特权

评论回复
niuyaliang|  楼主 | 2014-2-28 15:22 | 显示全部楼层
//========================================================================
// 函数: void PutString(unsigned char x,unsigned char y,char *p)
// 描述: 在x、y为起始坐标处写入一串标准字符
// 参数: x  X轴坐标     y  Y轴坐标
//                 p  要显示的字符串  
// 返回: 无
// 备注: 仅能用于自带的ASCII字符串显示
// 版本:
//      2006/10/15      First version
//========================================================================
void PutString(DOTBYTE x,DOTBYTE y,char *p)
{
        while(*p!=0)
        {
                PutChar(x,y,*p);
                x += X_Witch;
                if((x + X_Witch) > Dis_X_MAX)
                {
                        x = 0;
                        if((Dis_Y_MAX - y) < Y_Witch) break;
                        else y += Y_Witch;
                }
                p++;
        }
}


使用特权

评论回复
clyu| | 2014-2-28 16:13 | 显示全部楼层
顶,学习一下

使用特权

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

距离版主这么近,激动哇

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

212

主题

2427

帖子

7

粉丝