收了幾塊T6963C控制的點(diǎn)陣液晶屏,研究了兩天,終于弄了點(diǎn)小眉目,現(xiàn)在將程序及仿真放上來,供參考
單片機(jī)源程序如下:
- #include<stdio.h> //NULL 的引用
- #include<intrins.h>
- #include<ABSACC.H> //XBYTE[]的引用
- #define uchar unsigned char
- #define uint unsigned int
-
- #define lcmcom XBYTE[0x3fff] /*T6963C 寫命令口地址,讀數(shù)據(jù)口地址*/
- #define lcmdata XBYTE[0x3eff] /*T6963C 寫數(shù)據(jù)口地址*/
- uchar code table[]=
- {
- /*---轉(zhuǎn)換字符 *姓名*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xC6,0x6C,0x38,0x38,0x38,0x6C,0xC6,0x00,0x00,0x00,0x00, // -x-
- /*---轉(zhuǎn)換字符 * 姓名*/
- 0x00,0x00,0x00,0x00,0x00,0xFE,0xCC,0x18,0x30,0x60,0xC6,0xFE,0x00,0x00,0x00,0x00, // -z-
- 0x00,0x00,0x38,0x6C,0x64,0x60,0xF0,0x60,0x60,0x60,0x60,0xF0,0x00,0x00,0x00,0x00, // -f-
- /*---轉(zhuǎn)換字符 制 ---*/
- 0x04,0x24,0x25,0x3F,0x24,0x44,0xFF,0x04,0x3F,0x24,0x24,0x24,0x26,0x25,0x04,0x04,
- 0x04,0x04,0x04,0xA4,0x24,0xA4,0xE4,0x24,0xA4,0xA4,0xA4,0x84,0x84,0x04,0x14,0x08,
- /*---轉(zhuǎn)換字符 作 ---*/
- 0x09,0x09,0x09,0x11,0x12,0x32,0x54,0x98,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x00,0x00,0x04,0xFE,0x80,0x80,0x90,0xF8,0x80,0x80,0x88,0xFC,0x80,0x80,0x80,0x80
- };
- void busy_lcm(uchar flag)
- {
- uchar i;
- i=flag;
- while(i==lcmcom&flag);
- }
- void write_lcm(uchar count,uchar com,uchar data1,uchar data2)
- {
- switch(count)
- {
- case 1: busy_lcm(0x3); lcmcom=com;
- break;
- case 2: busy_lcm(0x3); lcmdata=data1; busy_lcm(0x3); lcmcom=com;
- break;
- case 3: busy_lcm(0x3); lcmdata=data1; busy_lcm(0x3); lcmdata=data2; busy_lcm(0x3);
- lcmcom=com;
- break;
- default:break;
- }
- }
-
- void clear_lcm()
- {
- uint i;
- write_lcm(3,0x24,0x00,0x00); /*設(shè)置顯示RAM 首地址*/
- write_lcm(1,0xb0,NULL,NULL); /*設(shè)置自動(dòng)寫方式*/
- for (i=0;i<3840;i++) /*最大顯示點(diǎn)陣為:240*128/8=3840;128×64/8=1024*/
- {
- busy_lcm(0x0c);
- lcmdata=0x0; /*寫00H 清屏*/
- }
- busy_lcm(0x0c);
- lcmcom=0xb2; /*設(shè)置自動(dòng)寫結(jié)束*/
- }
- void init_lcm()
- {
- write_lcm(1,0xa1,NULL,NULL); //設(shè)置光標(biāo)形狀為8(列)×1(行)
- write_lcm(3,0x21,0x00,0x00); //設(shè)置光標(biāo)指針
- write_lcm(3,0x40,0x00,0x00); //設(shè)置文本顯示區(qū)域首址
- write_lcm(3,0x41,0x01,0x00); // 設(shè)置文本區(qū)寬度
- write_lcm(3,0x42,32,0x00); //設(shè)置圖形顯示區(qū)域首址為32
- write_lcm(3,0x24,32,0x00); // 設(shè)置地址指針位置為32
- write_lcm(3,0x43,30,0x0); //設(shè)置圖形顯示區(qū)域?qū)挾葹?0 字節(jié)
- write_lcm(1,0x80,NULL,NULL); //設(shè)置顯示為邏輯“或”方式
- write_lcm(1,0x9c,NULL,NULL); //設(shè)置顯示開關(guān),圖形/文本顯示均開啟
- }
- /********************************************************************
- 顯示一個(gè)漢字
- *********************************************************************/
- void display_1c(uchar caddr,uchar x,uchar y) //控制漢字
- {
- uchar i,j,*p;uint w;
- p=table+caddr*32;
- x=x<<1; //可靈活調(diào)節(jié)循環(huán)左移
- for(i=0;i<=1;i++)
- {
- x=x+i;
- for(j=0;j<16;j++)
- {
- w=y*16*30+x+32+j*30;
- write_lcm(3, 0x24, w%256, w>>8);
- write_lcm(2, 0xc2, *p, NULL);
- p++;
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
T6963C控制的PG12864,顯示中英文加漢字.rar
(69.96 KB, 下載次數(shù): 140)
2018-9-27 09:23 上傳
點(diǎn)擊文件名下載附件
|