/*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
^_^ 深圳市川航电子科技有限公司CH240128 T6963控制器+TP 演示程序 ^_^
Module : 240128 128X240dots COB LCD module
InterfaCS : 8080 8 BIT Bus
soft : KeilC51 Ver7.0
Written by : OU
Control IC : T6963C
Date : 2009.09.30
------------------------------------------------------------------
Note:
1.Parallel bus drive programme.
2.Default Crystal 12.000Mhz.
3.This is a new program.
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/
#include <reg52.h>
#include <intrins.h>
#include "str.h"
#include "pic.h"
#define uchar unsigned char
#define uint unsigned int
uchar Xnow = 0;
uchar Ynow = 0;
tFont1616 code *ptrHanziFont = chuanhang;
sbit CD =P3^4;
sbit WR0 =P3^2;
sbit RD0 =P3^1;
sbit CS =P3^0;
sbit REST=P3^5;
sbit FS =P3^3;
#define lcd_data P1
//汉字"档" 16*16 字体 先横后竖 取模数据
code uchar dang[32]={0x10,0x40,0x10,0x40,0x12,0x44,0x11,0x4C,
0xFD,0x50,0x10,0x44,0x37,0xFE,0x38,0x04,
0x54,0x04,0x50,0x04,0x93,0xFC,0x10,0x04,
0x10,0x04,0x10,0x04,0x17,0xFC,0x10,0x04};
//==============================================================
void RWCheck(void);
uchar readstatus(void );
void DELAY_CLS(void);
void delay_ms(uint ms_value);
void delay_us(uint us_value);
void wr_data(uchar wrdata);
void wr_cmd(uchar cmd);
void wr_cmd_data( uchar cmd,uchar dat1,uchar dat2);
void Gotoxy_Text (uint Y,uint X);
void display(uchar fst, uchar snd);
void reset_cpu(void);
void init_lcd(void);
void Text_cls();
void Graphic_cls();
void disp_ziku();
void display_pic(uchar *pic);
void ShowZiFu(uint Y,uint X,uchar *ptString);
void ShowHanZi(uint Y,uint X,uchar array[]);
void Pixel(uint PointY,uint PointX, bit Mode);
void puts(uchar *ptrS);
void LCD_Gotoxy (uint Y,uint X);
void puthanzi(uint8 *ptrHanziChar);
void putchar(uint8 AscChar);
//-------------------------------------------------
// ^_^ 功 能 说 明: delay about 1 us ^_^
//-------------------------------------------------
void delay_us(uint us_value)
{
while(us_value--)
{
_nop_();
_nop_();
}
}
//-------------------------------------------------
// ^_^ 功 能 说 明: delay about 1 ms ^_^
//-------------------------------------------------
void delay_ms(uint ms_value)
{
uint k;
for(k=0;k<ms_value;k++)
{
delay_us(200);
}
}
//-------------------------------------------------
// ^_^ 功 能 说 明: 读状态位 ^_^
//-------------------------------------------------
uchar readstatus(void )
{
uchar temp;
CD=1; //A0=1 is seted to read 128mand
RD0=0; //to read
delay_us(1);
temp=lcd_data;
RD0=1; //read index to reset
return temp;
}
//-------------------------------------------------
// ^_^ 功 能 说 明: 判忙状态 ^_^
//-------------------------------------------------
void RWCheck(void)
{
lcd_data=0xff;
CD=1;
WR0=1;
RD0=0;
while((lcd_data&0x03)!=0x03);
RD0=1;
}
//-------------------------------------------------
// ^_^ 功 能 说 明: 写命令 ^_^
//-------------------------------------------------
void wr_cmd(uchar cmd)
{
RWCheck();
lcd_data = 0x00;
CS=0;
CD = 1;
RD0 = 1;
WR0 = 0;
lcd_data =cmd;
WR0 = 1;
CS = 1;
}
//-------------------------------------------------
// ^_^ 功 能 说 明: 写数据 ^_^
//-------------------------------------------------
void wr_data(uchar wdata)
{
RWCheck();
lcd_data = 0x00;
CS=0;
CD = 0;
RD0 = 1;
WR0 = 0;
lcd_data = wdata;
WR0 = 1;
CS = 1;
}
//-------------------------------------------------
// 功 能 说 明: 写双字节数据(低位在前,高位在后) ^_^
//-------------------------------------------------
void wr_cmd_data( uchar cmd,uchar dat1,uchar dat2)
{
wr_data(dat1);
wr_data(dat2);
wr_cmd(cmd);
}
//-------------------------------------------------
// ^_^ 功 能 说 明: 延时并清0 ^_^
//-------------------------------------------------
void DELAY_CLS()
{
delay_ms(1000);
Text_cls();
Graphic_cls();
}
//-------------------------------------------------
// ^_^ 功 能 说 明: 复位T6963 ^_^
//-------------------------------------------------
void reset_cpu(void)
{
REST=0;
delay_ms(200);
REST=1;
delay_ms(20);
}
//-------------------------------------------------
// ^_^ 功 能 说 明: 初始化T6963 ^_^
//-------------------------------------------------
void init_lcd (void)
{
wr_cmd_data(0x40,0x00,0x00); //set text home address
wr_cmd_data(0x42,0xe0,0x01); //set graphic home address
//此处因为文本区240*128*/8/8=480=0x01df 所以图形区地址从0x1e开始
wr_cmd_data(0x41,0x1e,0x00); //set text area
wr_cmd_data(0x43,0x1e,0x00); //set graphic area
wr_cmd(0x80); //mode set - initernal character generator mode 或显示
wr_cmd(0x9c); //---9C display mode - text OFF , graphic on , cursor off---
Text_cls(); //文本区清0
Graphic_cls(); //图形区清0
}
//-------------------------------------------------
// ^_^ 功 能 说 明: 文本区清0 ^_^
//-------------------------------------------------
void Text_cls()
{
uint i;
wr_cmd_data(0x24,0x00,0x00);
wr_cmd(0xb0);
for(i=0;i<480;i++)
{
wr_data(0x00);
}
wr_cmd(0xb2);
}
//-------------------------------------------------
// ^_^ 功 能 说 明: 图形区清0 ^_^
//-------------------------------------------------
void Graphic_cls()
{
uint i, j;
wr_cmd_data(0x24,0xe0,0x01);
wr_cmd(0xb0);
for (i=0; i<128; i++)
{
for (j=0; j<30; j++)
{
wr_data(0x00);
}
}
wr_cmd(0xb2);
}
//-------------------------------------------------
// ^_^ 功 能 说 明:设定X,Y坐标位置(文本模式) ^_^
// 显示位置为第Y行,第X*8列
//-------------------------------------------------
void Gotoxy_Text (uint Y,uint X)
{
uint StartAddr;
StartAddr=Y*30+X+0x00; //文本首地址从0X00开始
wr_cmd_data(0x24,StartAddr&0xFF,StartAddr/256);
wr_cmd(0xb0);
Ynow =Y; //更新行地址
Xnow = X; //更新列地址
}
//-------------------------------------------------
// ^_^ 功 能 说 明:设定X,Y坐标位置(图形模式) ^_^
// 显示位置为第Y行,第X*8列
//-------------------------------------------------
void LCD_Gotoxy (uint Y,uint X)
{
uint StartAddr;
StartAddr=Y*30+X+480; //240*128/8/8=480文本空间
wr_cmd_data(0x24,StartAddr&0xFF,StartAddr/256);
Ynow =Y; //更新行地址
Xnow = X; //更新列地址
}
//-------------------------------------------------
// ^_^ 功 能 说 明: 调用字库 ^_^
//-------------------------------------------------
void disp_ziku()
{
uint i, j;
wr_cmd_data(0x24,0x00,0x00);
wr_cmd(0xb0);
for(i=0;i<16;i++)
{
for(j=0;j<30;j++)
{
wr_data(0x00+j);
}
}
wr_cmd(0xb2);
}
//-------------------------------------------------
// ^_^ 功 能 说 明: 显示240*128取模图片 ^_^
//-------------------------------------------------
void display_pic(uchar *pic)
{
uint i, j;
wr_cmd_data(0x24,0xe0,0x01);
wr_cmd(0xb0);
for (i=0; i<128; i++)
{
for (j=0; j<30; j++)
{
wr_data(*pic++);
}
}
wr_cmd(0xb2);
}
//------------------
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
CH240128 T6963控制器 演示程序.rar (19个子文件)
CH240128 T6963控制器 演示程序
STARTUP.lst 12KB
CH240128-T6963.LST 23KB
str.h 13KB
CH240128-T6963.OBJ 32KB
CH240128-T6963_Uv2.Bak 2KB
STARTUP.A51 5KB
CH240128-T6963.Opt 1KB
PIC
波形.bmp 4KB
CH240128CV1-6触摸图片.bmp 4KB
Thumbs.db 9KB
pic.h 38KB
CH240128-T6963.hex 32KB
CH240128-T6963.c 12KB
CH240128-T6963_Opt.Bak 1KB
CH240128-T6963 28KB
CH240128-T6963.M51 25KB
CH240128-T6963.plg 1KB
STARTUP.obj 882B
CH240128-T6963.Uv2 2KB
共 19 条
- 1
资源评论
- 抽刀断水无欲则刚2013-12-16完全可以 在写数据函数适当加延时就ok
- ff9171222013-12-02看过了,写的很详细,有用有用
- bluedeviltear2013-06-06看了,有点帮助!
chuanhang
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功