at90s8515单片机驱动t6963c lcd 24064 程序

发布者:轻松自在最新更新时间:2017-12-17 来源: eefocus关键字:at90s8515  单片机驱动  t6963c  lcd 手机看文章 扫描二维码
随时随地手机看文章

at90s8515 单片机 驱动t6963c LCD 24064 程序

;************************************************************************
;连线图:  液晶屏分为8行*15列汉字,使用模拟接口方式。            *


;*DB0-----PA0*      *DB4-----PA4*       *Rd ------PC2*      *Cd ------PC0*    *
;*DB1-----PA1*      *DB5-----PA5*       *Wr ------PC1*      *CE ------GND*    *
;*DB2-----PA2*      *DB6-----PA6*       *RST------PC3*      *FS ------GND*    * 
;*DB3-----PA3*      *DB7-----PA7*                        *
;注:S8515的晶振频率为4MHz                                            *
;************************************************************************/


#include
#include
typedef unsigned char uchar;
typedef unsigned int  uint;
/*   定义24064端口   */

//cd=PORTC.0,通道选择,=1为指令通道,=0为数据通道
#define set_cd asm("sbi 0x15,0")
#define clr_cd asm("cbi 0x15,0")
//ce=PORTc.6低电平有效,T6963C片选信号
#define set_ce asm("sbi 0x15,6")
#define clr_ce asm("cbi 0x15,6")
//rd=PORTc.2,读操作,低电平有效
#define set_rd asm("sbi 0x15,2")
#define clr_rd asm("cbi 0x15,2") 
//wr=PORTc.1,写操作,低电平有效
#define set_wr asm("sbi 0x15,1")
#define clr_wr asm("cbi 0x15,1") 
//rst=PORTc.3,写操作,低电平有效
#define set_rst asm("sbi 0x15,3")
#define clr_rst asm("cbi 0x15,3")

 

const uchar hz_001[]=
{
/*------------------------------------------------------------------------------
;  源文件 / 文字 : 肱
;  宽×高(像素): 16×16
------------------------------------------------------------------------------*/
0x00,0x40,0x3C,0x40,0x24,0x40,0x27,0xFE,
0x3C,0x40,0x24,0x40,0x24,0x90,0x24,0x90,
0x3C,0x90,0x25,0x20,0x25,0x28,0x26,0x44,
0x44,0xBE,0x55,0xE6,0x88,0x84,0x00,0x00
};

/* 初始化           */  
void initcomm(void)
{
    DDRA=0xff;    DDRC=0xff;      
    PORTA=0xff; PORTC=0xff; 
}

/*  初始化 lcd240128      */
void initlcd(void)
{            
    dmod(0x00,0x00,0x42);  /*图形显示区域首地址*/
    dmod(0x1e,0x00,0x43);  /*图形显示宽度,一行显示所占字节*/
    dmod(0x03,0x00,0x22);  /*cgram首地址 00011 100000000 000 = 1c00h*/
    nmod(0x88);            /*显示方式:逻辑"或"合成*/
    nmod(0x98);            /*显示开关设置,开文本和图形显示*/
}
/* lcd 清0*/
void clear(void)
{uint  i;
    dmod(0x00,0x00,0x24);        /*显示存储器首地址*/
    nmod(0xb0);                  /*自动写方式*/
    for (i = 0;i < 0x2000;i++)
    {
        r_st(3);                  /*等待自动写状态*/
        wdata(0,0);
    }
    nmod(0xb2);             /*自动写结束*/
}
/****************************************************
读状态字
cd_flag = 1 读命令通到。 = 0 读数据通到。
w = 0 指令读,写状态,   返回1 准备好 返回0 忙。  
w = 1 数据读,写状态,   返回1 准备好 返回0 忙。
w = 2 数据自动读状态,   返回1 准备好 返回0 忙。
w = 3 数据自动写状态,   返回1 准备好 返回0 忙。
w = 5 控制运行检测可能性,返回1 准备好 返回0 忙。  
w = 6 屏读/栲贝出错状态, 返回1 正确 返回0 出错。
w = 7 闪烁状态检测,     返回1 正常显示 返回0 关显示。 
******************************************************/
void r_st (uchar w)       
{
    uchar  i = 0;            
    uchar  c;
    DDRA=0x00;PORTA=0xff;     
    while (--i)
    {   set_cd;
    clr_rd ; set_wr;     
    c =PINA;        
        set_rd;       
        NOP();
        if ((w == 1) && ((c & 3) == 3)) return;
        if ((w == 3) && ((c & 8) == 8))    return;
    }
}
void wdata(uchar cd_flag,uchar d)     /*数据写操作*/
{   DDRA=0xff;
    if (cd_flag == 0) clr_cd;
    else set_cd;
    PORTA = d;    
    clr_wr; set_rd;
    set_wr; 
    NOP(); 
}
/*双参数指令*/
void dmod(uchar x0,uchar x1,uchar c)
{
    r_st(1);    wdata(0,x0);
    r_st(1);    wdata(0,x1);
    r_st(1);    wdata(1,c);
}
/*单参数指令*/
void smod(uchar x1,uchar c)
{
    r_st(1);    wdata(0,x1);
    r_st(1);    wdata(1,c);
}
/*无参数指令*/
void nmod(uchar c)
{
    r_st(1);    wdata(1,c);
}


/*************************************************************
汉字写入函数(图形方式)16*16
    o_y  Y 坐标 0-29
    o_x  X 坐标 0-63
    *p 写入字符代码
*************************************************************/
void wri_hz(uchar add_x ,uchar add_y,const uchar *p)
{
    uint c,i,j;
    c = add_y*(0x1e)+add_x;
    for (i=0;i<16;i++)
      {  dmod(c,c>> 8,0x24);
         nmod(0xb0);                  /*自动写方式*/
         for (j = 0;j < 4;j++)
           {  r_st(3);                /*等待自动写状态*/
              wdata(0,*p++);
           }
         nmod(0xb2);             /*自动写结束*/
         c += 0x1e;
       }    
}


/****   主函数   ****/
void main(void) 
{
    initcomm();             /*初始化*/
    clr_rst;               
    NOP();NOP();
    set_rst ;                 /*复位*/
    initlcd();               /*初始化 lcd240128 */
    clear();                 /* lcd 清0*/
    while(1)
    {wri_hz(2,0,hz_001);    
    }
}


关键字:at90s8515  单片机驱动  t6963c  lcd 引用地址:at90s8515单片机驱动t6963c lcd 24064 程序

上一篇:AVR 单片机数码管显示时钟程序
下一篇:12864(ST7902)串口C51程序

推荐阅读最新更新时间:2024-03-16 15:49

51单片机驱动PS2键盘完整程序
// PS2键盘测试程序5(完整程序) // 功能:1602显示PS2键盘第1类按键的键值,可以显示大小写,显示在第2行 // 显示pageup、pagedown、方向键(上、下、左、右)的按下次数,显示在第1行 // 显示capslock、numlock的状态,显示在第1行 // 指示灯: 接收按键值 P30(run) 取反。 键盘上电P31亮,接收按键值,P31灭。 // Caps 对大写字母起作用 , 收到非字母,caps不起作用 // 按下capslock 和 numlock 键,键盘指示灯做出相应变化。即实现了单片机向键盘发送命令 // 中断接收采用电平触发,如果用下降沿触发,单片机向键盘发送命令正常,但发
[单片机]
在液晶面板行业,LCD机器人可以大展身手了
简单地说,液晶面板是两层很薄的玻璃基板中间包裹一层液晶分子构成的。生产时,采用的玻璃基板有一个固定的尺寸,再通过切割形成各种尺寸的液晶面板。 这就涉及到一个问题:如何切割玻璃基板会使原材料利用率较高,最终成品的经济效益较好。 因此,根据经济切割尺寸的不同,液晶生产线也被分成了不同的代数。 五代线以下多是9-15寸的移动产品使用。 五代线最多能切割6片27英寸宽屏LCD-TV用,上限是27英寸宽屏电视机。 六代线最适合切割的尺寸是32英寸。 七代线基板可切割八片40英寸或42英寸面板、六片46英寸或47英寸面板。 第八代面板线,基板可切割成八片46英寸、六片52英寸面板。 八点五代液晶面板生产线
[机器人]
iPhone 今年新 3 款,传亲民 LCD 版受苹果青睐
苹果新款 iPhone 动向备受瞩目。 外媒报导,苹果今年可能着重销售更多的 LCD 版 iPhone 新品,主要是消费者价格敏感度提高。 苹果今年可能推出 3 款新 iPhone。 华尔街日报(WSJ)引述供应链消息人士报导,苹果已经针对新款 iPhone 提出量产计划,相较于高价的有机发光二极管(OLED)版 iPhone,苹果有意销售更多的 LCD 版 iPhone 新品。 报导指出,苹果着重价格较低廉的 LCD 版 iPhone 新品,主要是消费者对于智能型手机价格敏感度提高。 今年新款 iPhone 系列中,LCD 版 iPhone 销售量可望占大部分比重,超乎分析师预期。 不过,报导也分析,若苹果着重 LCD 版 iP
[手机便携]
了解LCD驱动(FrameBuffer)的实例开发
一、开发环境 主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand, Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2 二、背景知识 1. LCD工作的硬件需求: 要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以COF/COG的形式与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电路来实现,现在很多的MCU内部都集成了LCD控制器,如S3C2410/2440等。通过LCD控制器就可以产生LCD驱动器所需要的控制信号来控制STN/TFT屏了。 2. S3C2440内部LCD控
[单片机]
了解<font color='red'>LCD</font><font color='red'>驱动</font>(FrameBuffer)的实例开发
荣耀Magic4 Lite渲染图与规格揭秘:6.81英寸LCD
采用了高通骁龙 8 Gen 1 芯片组和强大摄像头模组的荣耀 Magic4 / Magic4 Pro 智能机,已经给不少人留下深刻的印象。但是对于预算有限的消费者来说,900 / 1100 欧元的定价还是让人望而生畏。好消息是,你对外形设计和硬件配置的要求不高,那传说中的 Magic4 Lite 新机,或许会是一个更加合理的选择。   由分享的消息可知,Magic4 Lite 将沿用 6.81 英寸的屏幕,面板从 OLED(LTPO)换成 LCD、分辨率也稍低一些(1080×2388 像素),但仍支持 120Hz 高刷新率。   此外由 @Sudhanshu1414 分享的推测渲染图可知,Magic4 Lite 也可能沿
[手机便携]
51单片机入门 - 按键驱动程序设计实验
独立按键原理是这样的:按键没按下的时候,相应端口是高电平状态,而当按键按下的时候,相应的端口则是低电平。所以可以根据这个现象,实现相应的功能。 还有一点应该注意的是:按键在闭合和断开时,触点会存在抖动现象。 在实际情况下,我们需要的是稳定闭合的那部分状态。所以可以采用延时的方法来解决这个问题,具体的过程就是先看看有没有键按下,有键按下了,再延迟一段时间,再看看有没有键按下, 这时候如果还是有键按下的话那就真的是有键按下了。 而这个抖动的时间大概是10ms,所以只要用一个延时10ms的子函数就行。 上面代码的第66行那个判断按键是否松开也是必要的,虽然在这个程序中
[单片机]
51<font color='red'>单片机</font>入门 - 按键<font color='red'>驱动</font>程序设计实验
友达华映或在本周宣布合并,联合抵制鸿海系
12月1日消息,据台湾媒体报道,市场有消息传出,华映将先大幅度减资,再与友达合并,友达通过华映,结盟仁宝,再加上原来的盟友广达,全球前两大笔记型计算机(NB)代工厂全力支持,四位一体,“防鸿”急先锋俨然成军。    报道称,华映董事长林蔚山昨日对于是否与友达合并的问题,没有正式响应,但也没有否认。他面带微笑,语带玄机地说,“会有更好的消息再宣布”。这与林蔚山过去每次被问到合并、总是板起脸孔的不悦神情,大不相同。    对于合并华映一事,友达昨天表示,这些传闻很有趣,友达目前没有具体合并计划,但对合并与策略结盟,一直都抱持开放态度。   市场传出,友达可能合并华映,借此结盟仁宝,再与目前盟友
[半导体设计/制造]
友达华映或在本周宣布合并,联合抵制鸿海系
用AT89C系列单片机实现5英寸TFT-LCD的遥控
LCD由于具有薄、轻及功耗低的特点,已广泛应用在计算机显示器、VCD显示板、便携式医疗设备等工业和民用领域。在这些产品中,应用单片机能大大地提高其智能性、易用性,给人们的生活带来舒适和方便。本文采用美国Atmel公司的单片机AT89C2051和AT89C51,为5英寸的TFT-LCD设计了遥控系统。该系统主要由遥控发射、遥控接受、TFT-LCD驱动电路3部分组成,可以遥控TFT-LCD的电源开关、亮度、色饱和度、对比度和音量,并具有扩展功能。 1   硬件设计 硬件总体设计框图如图1所示。 1.1 遥控发射电路设计 遥控发射电路由AT89C2051单片机、键盘、红外发射电路和电源组成。这里选用4×4键盘,用于控
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved