當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] /*本例程未使用6963的文本模式,使用程序填入字模也足夠快。程序以Youth所提供的51例程移植過(guò)來(lái),同時(shí)對(duì)有些地方做了簡(jiǎn)化處理,增加了畫線畫圓的例程,好在6963的畫點(diǎn)有專用指令,所以不用讀屏就可以直

/*本例程未使用6963的文本模式,使用程序填入字模也足夠快。程序以Youth所提供
的51例程移植過(guò)來(lái),同時(shí)對(duì)有些地方做了簡(jiǎn)化處理,增加了畫線畫圓的例程,好在
6963的畫點(diǎn)有專用指令,所以不用讀屏就可以直接畫點(diǎn)。

;************************************************************************
;連線圖:液晶屏分為8行*15列漢字,使用總線接口方式。*
;*LCM----S8515**LCM----S8515**LCM-----S8515**LCM-----S8515**
;*DB0-----PA0**DB4-----PA4**Rd------/Rd**Cd------PC0**
;*DB1-----PA1**DB5-----PA5**Wr------/Wr**CE------PC1**
;*DB2-----PA2**DB6-----PA6**RST------VCC**FS------Vcc**
;*DB3-----PA3**DB7-----PA7**
;注:S8515的晶振頻率為8MHz,嘗試使用11.0592MHz超頻,發(fā)現(xiàn)偶爾有數(shù)據(jù)丟失*
;************************************************************************/
#include

#defineWDR()asm("wdr")//匯編指令調(diào)用的定義
#defineBIT(x)(1<<(x))

#defineSRE7
#defineSRW6
#defineSE5

#defineulongunsignedlong
#defineuintunsignedint
#defineucharunsignedchar

//ASCII字符控制代碼解釋定義
#defineSTX0x02
#defineETX0x03
#defineEOT0x04
#defineENQ0x05
#defineBS0x08
#defineCR0x0D
#defineLF0x0A
#defineDLE0x10
#defineETB0x17
#defineSPACE0x20
#defineCOMMA0x2C

#defineTRUE1
#defineFALSE0

#defineHIGH1
#defineLOW0

//T6963C端口定義由匯編語(yǔ)言程序定義外部端口
__no_initstatICucharLCMCW@0xF100;//命令口
__no_initstaticucharLCMDW@0xF000;//數(shù)據(jù)口

//T6963C命令定義
#defineLC_CUR_POS0x21//光標(biāo)位置設(shè)置
#defineLC_CGR_POS0x22//CGRAM偏置地址設(shè)置
#defineLC_ADD_POS0x24//地址指針位置
#defineLC_TXT_STP0x40//文本區(qū)首址
#defineLC_TXT_WID0x41//文本區(qū)寬度
#defineLC_GRH_STP0x42//圖形區(qū)首址
#defineLC_GRH_WID0x43//圖形區(qū)寬度
#defineLC_MOD_OR0x80//顯示方式:邏輯“或”
#defineLC_MOD_XOR0x81//顯示方式:邏輯“異或”
#defineLC_MOD_AND0x82//顯示方式:邏輯“與”
#defineLC_MOD_TCH0x83//顯示方式:文本特征
#defineLC_DIS_SW0x90//顯示開關(guān):D0=1/0:光標(biāo)閃爍啟用/禁用;
//D1=1/0:光標(biāo)顯示啟用/禁用;
//D2=1/0:文本顯示啟用/禁用;
//D3=1/0:圖形顯示啟用/禁用;
#defineLC_CUR_SHP0xA0//光標(biāo)形狀選擇:0xA0-0xA7表示光標(biāo)占的行數(shù)
#defineLC_AUT_WR0xB0//自動(dòng)寫設(shè)置
#defineLC_AUT_RD0xB1//自動(dòng)讀設(shè)置
#defineLC_AUT_OVR0xB2//自動(dòng)讀/寫結(jié)束
#defineLC_INC_WR0xC0//數(shù)據(jù)一次寫,地址加1
#defineLC_INC_RD0xC1//數(shù)據(jù)一次讀,地址加1
#defineLC_DEC_WR0xC2//數(shù)據(jù)一次寫,地址減1
#defineLC_DEC_RD0xC3//數(shù)據(jù)一次讀,地址減1
#defineLC_NOC_WR0xC4//數(shù)據(jù)一次寫,地址不變
#defineLC_NOC_RD0xC5//數(shù)據(jù)一次讀,地址不變
#defineLC_SCN_RD0xE0//屏讀
#defineLC_SCN_CP0xE8//屏拷貝
#defineLC_BIT_OP0xF0//位操作:
//D0-D2:定義D0-D7位;D3:1置位;0:清除

__flashucharuPowArr[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

//ASCII字模寬度及高度定義
#defineASC_CHR_WIDTH8
#defineASC_CHR_HEIGHT16

//ASCII字模,顯示為8*16
__flashcharASC_MSK[96*16]={

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*----*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x18,0x3C,0x3C,0x3C,0x18,/*--!--*/
0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x66,0x66,0x66,0x00,0x00,/*--"--*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x36,0x36,0x7F,0x36,0x36,/*--#--*/
0x36,0x7F,0x36,0x36,0x00,0x00,0x00,0x00,
0x00,0x18,0x18,0x3C,0x66,0x60,0x30,0x18,/*--$--*/
0x0C,0x06,0x66,0x3C,0x18,0x18,0x00,0x00,
0x00,0x00,0x70,0xD8,0xDA,0x76,0x0C,0x18,/*--%--*/
0x30,0x6E,0x5B,0x1B,0x0E,0x00,0x00,0x00,
0x00,0x00,0x00,0x38,0x6C,0x6C,0x38,0x60,/*--&--*/
0x6F,0x66,0x66,0x3B,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x18,0x18,0x18,0x00,0x00,/*--’--*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0C,0x18,0x18,0x30,0x30,/*--(--*/
0x30,0x30,0x30,0x18,0x18,0x0C,0x00,0x00,
0x00,0x00,0x00,0x30,0x18,0x18,0x0C,0x0C,/*--)--*/
0x0C,0x0C,0x0C,0x18,0x18,0x30,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x36,0x1C,0x7F,/*--*--*/
0x1C,0x36,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x7E,/*--+--*/
0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--,--*/
0x00,0x00,0x1C,0x1C,0x0C,0x18,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,/*-----*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--.--*/
0x00,0x00,0x1C,0x1C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x06,0x06,0x0C,0x0C,0x18,/*--/--*/
0x18,0x30,0x30,0x60,0x60,0x00,0x00,0x00,
0x00,0x00,0x00,0x1E,0x33,0x37,0x37,0x33,/*--0--*/
0x3B,0x3B,0x33,0x1E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0C,0x1C,0x7C,0x0C,0x0C,/*--1--*/
0x0C,0x0C,0x0C,0x0C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x66,0x66,0x06,0x0C,/*--2--*/
0x18,0x30,0x60,0x7E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x66,0x66,0x06,0x1C,/*--3--*/
0x06,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x30,0x30,0x36,0x36,0x36,/*--4--*/
0x66,0x7F,0x06,0x06,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7E,0x60,0x60,0x60,0x7C,/*--5--*/
0x06,0x06,0x0C,0x78,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1C,0x18,0x30,0x7C,0x66,/*--6--*/
0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7E,0x06,0x0C,0x0C,0x18,/*--7--*/
0x18,0x30,0x30,0x30,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x66,0x66,0x76,0x3C,/*--8--*/
0x6E,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,/*--9--*/
0x3E,0x0C,0x18,0x38,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x1C,0x1C,0x00,/*--:--*/
0x00,0x00,0x1C,0x1C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x1C,0x1C,0x00,/*--;--*/
0x00,0x00,0x1C,0x1C,0x0C,0x18,0x00,0x00,
0x00,0x00,0x00,0x06,0x0C,0x18,0x30,0x60,/*--<--*/
0x30,0x18,0x0C,0x06,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,/*--=--*/
0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x60,0x30,0x18,0x0C,0x06,/*-->--*/
0x0C,0x18,0x30,0x60,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x66,0x66,0x0C,0x18,/*--?--*/
0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7E,0xC3,0xC3,0xCF,0xDB,/*--@--*/
0xDB,0xCF,0xC0,0x7F,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x18,0x3C,0x66,0x66,0x66,/*--A--*/
0x7E,0x66,0x66,0x66,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7C,0x66,0x66,0x66,0x7C,/*--B--*/
0x66,0x66,0x66,0x7C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x66,0x66,0x60,0x60,/*--C--*/
0x60,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x78,0x6C,0x66,0x66,0x66,/*--D--*/
0x66,0x66,0x6C,0x78,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7E,0x60,0x60,0x60,0x7C,/*--E--*/
0x60,0x60,0x60,0x7E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7E,0x60,0x60,0x60,0x7C,/*--F--*/
0x60,0x60,0x60,0x60,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x66,0x66,0x60,0x60,/*--G--*/
0x6E,0x66,0x66,0x3E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x7E,/*--H--*/
0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x18,0x18,0x18,0x18,/*--I--*/
0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,/*--J--*/
0x06,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x66,0x66,0x6C,0x6C,0x78,/*--K--*/
0x6C,0x6C,0x66,0x66,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,/*--L--*/
0x60,0x60,0x60,0x7E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x63,0x63,0x77,0x6B,0x6B,/*--M--*/
0x6B,0x63,0x63,0x63,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x63,0x63,0x73,0x7B,0x6F,/*--N--*/
0x67,0x63,0x63,0x63,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,/*--O--*/
0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7C,0x66,0x66,0x66,0x7C,/*--P--*/
0x60,0x60,0x60,0x60,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,/*--Q--*/
0x66,0x66,0x66,0x3C,0x0C,0x06,0x00,0x00,
0x00,0x00,0x00,0x7C,0x66,0x66,0x66,0x7C,/*--R--*/
0x6C,0x66,0x66,0x66,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x66,0x60,0x30,0x18,/*--S--*/
0x0C,0x06,0x66,0x3C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7E,0x18,0x18,0x18,0x18,/*--T--*/
0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,/*--U--*/
0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,/*--V--*/
0x66,0x66,0x3C,0x18,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x63,0x63,0x63,0x6B,0x6B,/*--W--*/
0x6B,0x36,0x36,0x36,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x66,0x66,0x34,0x18,0x18,/*--X--*/
0x2C,0x66,0x66,0x66,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x3C,/*--Y--*/
0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7E,0x06,0x06,0x0C,0x18,/*--Z--*/
0x30,0x60,0x60,0x7E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x30,0x30,0x30,0x30,/*--[--*/
0x30,0x30,0x30,0x30,0x30,0x30,0x3C,0x3C,
0x00,0x00,0x00,0x60,0x60,0x30,0x30,0x18,/*----*/
0x18,0x0C,0x0C,0x06,0x06,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x0C,0x0C,0x0C,0x0C,/*--]--*/
0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x3C,
0x00,0x18,0x3C,0x66,0x00,0x00,0x00,0x00,/*--^--*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--_--*/
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
0x00,0x38,0x18,0x0C,0x00,0x00,0x00,0x00,/*--`--*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x3C,0x06,0x06,/*--a--*/
0x3E,0x66,0x66,0x3E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x60,0x60,0x7C,0x66,0x66,/*--b--*/
0x66,0x66,0x66,0x7C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x60,/*--c--*/
0x60,0x60,0x66,0x3C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x06,0x06,0x3E,0x66,0x66,/*--d--*/
0x66,0x66,0x66,0x3E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x66,/*--e--*/
0x7E,0x60,0x60,0x3C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1E,0x30,0x30,0x30,0x7E,/*--f--*/
0x30,0x30,0x30,0x30,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x3E,0x66,0x66,/*--g--*/
0x66,0x66,0x66,0x3E,0x06,0x06,0x7C,0x7C,
0x00,0x00,0x00,0x60,0x60,0x7C,0x66,0x66,/*--h--*/
0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00,
0x00,0x00,0x18,0x18,0x00,0x78,0x18,0x18,/*--i--*/
0x18,0x18,0x18,0x7E,0x00,0x00,0x00,0x00,
0x00,0x00,0x0C,0x0C,0x00,0x3C,0x0C,0x0C,/*--j--*/
0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x78,0x78,
0x00,0x00,0x00,0x60,0x60,0x66,0x66,0x6C,/*--k--*/
0x78,0x6C,0x66,0x66,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x78,0x18,0x18,0x18,0x18,/*--l--*/
0x18,0x18,0x18,0x7E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x7E,0x6B,0x6B,/*--m--*/
0x6B,0x6B,0x6B,0x63,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x7C,0x66,0x66,/*--n--*/
0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x66,/*--o--*/
0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x7C,0x66,0x66,/*--p--*/
0x66,0x66,0x66,0x7C,0x60,0x60,0x60,0x60,
0x00,0x00,0x00,0x00,0x00,0x3E,0x66,0x66,/*--q--*/
0x66,0x66,0x66,0x3E,0x06,0x06,0x06,0x06,
0x00,0x00,0x00,0x00,0x00,0x66,0x6E,0x70,/*--r--*/
0x60,0x60,0x60,0x60,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x3E,0x60,0x60,/*--s--*/
0x3C,0x06,0x06,0x7C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x30,0x30,0x7E,0x30,0x30,/*--t--*/
0x30,0x30,0x30,0x1E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,/*--u--*/
0x66,0x66,0x66,0x3E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,/*--v--*/
0x66,0x66,0x3C,0x18,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x63,0x6B,0x6B,/*--w--*/
0x6B,0x6B,0x36,0x36,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x3C,/*--x--*/
0x18,0x3C,0x66,0x66,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,/*--y--*/
0x66,0x66,0x66,0x3C,0x0C,0x18,0xF0,0xF0,
0x00,0x00,0x00,0x00,0x00,0x7E,0x06,0x0C,/*--z--*/
0x18,0x30,0x60,0x7E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0C,0x18,0x18,0x18,0x30,/*--{--*/
0x60,0x30,0x18,0x18,0x18,0x0C,0x00,0x00,
0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,/*--|--*/
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
0x00,0x00,0x00,0x30,0x18,0x18,0x18,0x0C,/*--}--*/
0x06,0x0C,0x18,0x18,0x18,0x30,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x71,0xDB,/*--~--*/
0x8E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--.--*/
0x00,0x00,0x1C,0x1C,0x00,0x00,0x00,0x00
};

typedefstruct//漢字字模數(shù)據(jù)結(jié)構(gòu)
{
charIndex[2];
charMsk[32];
}typFNT_GB16;

__flashtypFNT_GB16GB_16[]=
{//顯示為16*16
"中",0x01,0x00,0x01,0x00,0x21,0x08,0x3F,0xFC,
0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,
0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
"文",0x02,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,
0x08,0x20,0x08,0x20,0x08,0x20,0x04,0x40,
0x04,0x40,0x02,0x80,0x01,0x00,0x02,0x80,
0x04,0x60,0x18,0x1E,0xE0,0x08,0x00,0x00,
"測(cè)",0x40,0x02,0x27,0xC2,0x24,0x42,0x84,0x52,
0x45,0x52,0x55,0x52,0x15,0x52,0x25,0x52,
0x25,0x52,0x25,0x52,0xC5,0x52,0x41,0x02,
0x42,0x82,0x42,0x42,0x44,0x4A,0x48,0x04,
"試",0x00,0x20,0x40,0x28,0x20,0x24,0x30,0x24,
0x27,0xFE,0x00,0x20,0xE0,0x20,0x27,0xE0,
0x21,0x20,0x21,0x10,0x21,0x10,0x21,0x0A,
0x29,0xCA,0x36,0x06,0x20,0x02,0x00,0x00
};
ucharconstturnf[8]={7,6,5,4,3,2,1,0};
uchargCurRow,gCurCol;//當(dāng)前行、列存儲(chǔ),行高16點(diǎn),列寬8點(diǎn)

/*取當(dāng)前行數(shù)據(jù)*/
ucharfnGetRow(void)
{
returngCurRow;
}

/*取當(dāng)前列數(shù)據(jù)*/
ucharfnGetCol(void)
{
returngCurCol;
}

/************************************************/
/*狀態(tài)位STA1,STA0判斷(讀寫指令和讀寫數(shù)據(jù))*/
/*在讀寫數(shù)據(jù)或者寫入命令前必須保證均為1*/
/************************************************/
ucharfnSTA01(void)
{
uchari;

for(i=10;i>0;i--)
{
if((LCMCW&0x03)==0x03)//讀取狀態(tài)
break;
}
returni;//若返回零,說(shuō)明錯(cuò)誤
}

/********************************************************/
/*檢查STA2,如果STA2=1為自動(dòng)讀狀態(tài)*/
/********************************************************/
ucharfnSTA2(void)
{
uchari;

for(i=10;i>0;i--)
{
if((LCMCW&0x04)==0x04)
break;
}
returni;//若返回零,說(shuō)明錯(cuò)誤
}

/********************************************************/
/*狀態(tài)位STA3判斷(STA3=1數(shù)據(jù)自動(dòng)寫狀態(tài))*/
/********************************************************/
ucharfnSTA3(void)
{
uchari;

for(i=10;i>0;i--)
{
if((LCMCW&0x08)==0x08)
break;
}
returni;//若返回零,說(shuō)明錯(cuò)誤
}

/********************************************************/
/*狀態(tài)位STA6判斷(STA6=1屏讀/屏拷貝狀態(tài))*/
/********************************************************/
ucharfnSTA6(void)
{
uchari;

for(i=10;i>0;i--)
{
if((LCMCW&0x40)==0x40)
break;
}
returni;//若返回零,說(shuō)明錯(cuò)誤
}

/********************************************************/
/*寫雙參數(shù)的指令*/
/********************************************************/
ucharfnPR1(ucharuCmd,ucharuPar1,ucharuPar2)
{
if(fnSTA01()==0)
return1;
LCMDW=uPar1;
if(fnSTA01()==0)
return2;
LCMDW=uPar2;
if(fnSTA01()==0)
return3;
LCMCW=uCmd;
return0;//返回0成功
}

/********************************************************/
/*寫單參數(shù)的指令*/
/********************************************************/
ucharfnPR11(ucharuCmd,ucharuPar1)
{
if(fnSTA01()==0)
return1;
LCMDW=uPar1;
if(fnSTA01()==0)
return2;
LCMCW=uCmd;
return0;//返回0成功
}

/********************************************************/
/*寫無(wú)參數(shù)的指令*/
/********************************************************/
ucharfnPR12(ucharuCmd)
{
if(fnSTA01()==0)
return1;
LCMCW=uCmd;
return0;//返回0成功
}

/********************************************************/
/*寫數(shù)據(jù)*/
/********************************************************/
ucharfnPR13(ucharuData)
{
if(fnSTA3()==0)
return1;
LCMDW=uData;
return0;//返回0成功
}

/********************************************************/
/*讀數(shù)據(jù)*/
/********************************************************/
ucharfnPR2(void)
{
if(fnSTA01()==0)return1;//獲取狀態(tài),如果狀態(tài)錯(cuò)
returnLCMDW;//返回?cái)?shù)據(jù)
}

/********************************************************/
/*設(shè)置當(dāng)前地址*/
/********************************************************/
voidfnSetPos(ucharurow,ucharucol)
{
uintiPos;

iPos=urow*30+ucol;
fnPR1(LC_ADD_POS,iPos&0xFF,iPos/256);
gCurRow=urow;
gCurCol=ucol;
}

/********************************************************/
/*設(shè)置當(dāng)前顯示行、列*/
/********************************************************/
voidcursor(ucharuRow,ucharuCol)
{
fnSetPos(uRow*16,uCol);
}

/********************************************************/
/*清屏*/
/********************************************************/
voidcls(void)
{
uinti;

fnPR1(LC_ADD_POS,0x00,0x00);//置地址指針為從零開始
fnPR12(LC_AUT_WR);//自動(dòng)寫
for(i=0;i<240*128/8;i++)//清一屏
{
fnSTA3();
fnPR13(0x0);//寫數(shù)據(jù),實(shí)際使用時(shí)請(qǐng)將0x55改成0x0
}
fnPR12(LC_AUT_OVR);//自動(dòng)寫結(jié)束
fnPR1(LC_ADD_POS,0x00,0x00);//重置地址指針
gCurRow=0;//置地址指針存儲(chǔ)變量
gCurCol=0;
}

/********************************************************/
/*LCM初始化*/
/********************************************************/
charfnLCMInit(void)
{
if(fnPR1(LC_TXT_STP,0x00,0x00)!=0)//文本顯示區(qū)首地址
return(0xff);
fnPR1(LC_TXT_WID,0x1E,0x00);//文本顯示區(qū)寬度
fnPR1(LC_GRH_STP,0x00,0x00);//圖形顯示區(qū)首地址
fnPR1(LC_GRH_WID,0x1E,0x00);//圖形顯示區(qū)寬度
fnPR12(LC_CUR_SHP|0x01);//光標(biāo)形狀
fnPR12(LC_MOD_OR);//顯示方式設(shè)置
fnPR12(LC_DIS_SW|0x08);//顯示開關(guān)設(shè)置

return0;
}

/********************************************************/
/*ASCII(8*16)及漢字(16*16)顯示函數(shù)*/
/********************************************************/
uchardprintf(ucharx,uchary,char*ptr)
{

charc1,c2,cData;
uchari,j,uLen,uRow,uCol;
uintk;
uLen=0;
i=0;
uRow=y;
uCol=x;
fnSetPos(uRow*16,uCol);//起點(diǎn)定位
while(ptr[uLen]!=0){uLen++;};//探測(cè)字串長(zhǎng)度

while(i{
c1=ptr[i];
c2=ptr[i+1];
//ascii字符與漢字內(nèi)碼的區(qū)別在于128做分界,大于界線的為漢字碼
uRow=fnGetRow();
uCol=fnGetCol();
if(c1<=128)//ASCII
{
for(j=0;j<16;j++)//寫16行
{
fnPR12(LC_AUT_WR);//寫數(shù)據(jù)(命令)
if(c1>=0x20)
{
fnPR13(ASC_MSK[(c1-0x20)*ASC_CHR_HEIGHT+j-(16-ASC_CHR_HEIGHT)]);
}
else
fnPR13(cData);
fnPR12(LC_AUT_OVR);//寫數(shù)據(jù)結(jié)束
fnSetPos(uRow+j+1,uCol);
}
if(c1!=BS)//非退格
uCol++;//列數(shù)加1
}
else//中文
{
for(j=0;j{
if(c1==GB_16[j].Index[0]&&c2==GB_16[j].Index[1])
break;
}
for(k=0;k{
fnSetPos(uRow+k,uCol);
fnPR12(LC_AUT_WR);//寫數(shù)據(jù)
if(j{
fnPR13(GB_16[j].Msk[k*2]);
fnPR13(GB_16[j].Msk[k*2+1]);
}
else//未找到該字
{
if(k{
fnPR13(0x00);
fnPR13(0x00);
}
else
{
fnPR13(0xff);
fnPR13(0xff);
}
}
fnPR12(LC_AUT_OVR);
}
uCol+=2;
i++;
};
if(uCol>=30)//光標(biāo)后移
{
uRow+=16;
if(uRow<0x80)
uCol-=30;
else
{
uRow=0;
uCol=0;
}
}
fnSetPos(uRow,uCol);
i++;
}
returnuLen;//返回字串長(zhǎng)度,漢字按2字節(jié)計(jì)算
}

/*==============================*/
/*延時(shí)*/
/*==============================*/
voidshortdelay(uinttt)
{
uchari;
while(tt)
{
i=100;
while(i)i--;
tt--;
};
}
/****************************************/
/*畫點(diǎn)*/
/****************************************/

voidpoint(ucharx,uchary,uchars)
{
ucharx1;
x1=x>>3;//取Y方向分頁(yè)地址
fnSetPos(y,x1);//起點(diǎn)定位
x1=turnf[x&0x07];
x1=0xF0|x1|s;//字節(jié)內(nèi)位置計(jì)算
fnPR12(x1);//畫上屏幕,S顯示屬性8畫點(diǎn)0擦除點(diǎn)
}


/************************************************/
/*畫線。任意方向的斜線,直線數(shù)學(xué)方程aX+bY=1*/
/************************************************/
voidLinexy(ucharx0,uchary0,ucharxt,ucharyt,uchars)
{
registeruchart;
intxerr=0,yerr=0,delta_x,delta_y,distance;
intincx,incy,uRow,uCol;

delta_x=xt-x0;//計(jì)算坐標(biāo)增量
delta_y=yt-y0;
uRow=x0;
uCol=y0;
if(delta_x>0)incx=1;//設(shè)置單步方向
elseif(delta_x==0)incx=0;//垂直線
else{incx=-1;delta_x=-delta_x;}

if(delta_y>0)incy=1;
elseif(delta_y==0)incy=0;//水平線
else{incy=-1;delta_y=-delta_y;}

if(delta_x>delta_y)distance=delta_x;//選取基本增量坐標(biāo)軸
elsedistance=delta_y;

for(t=0;t<=distance+1;t++)
{//畫線輸出
point(uRow,uCol,s);//畫點(diǎn)
xerr+=delta_x;
yerr+=delta_y;

if(xerr>distance)
{
xerr-=distance;
uRow+=incx;
}
if(yerr>distance)
{
yerr-=distance;
uCol+=incy;
}
}
}

/************************************************/
/*畫圓。數(shù)學(xué)方程(X-Ox)^2+(Y-Oy)^2=Rx^2*/
/************************************************/
voidcircle(ucharOx,ucharOy,ucharRx,uchars)
{
unsignedintxx,rr,xt,yt,rs,row,col;
yt=Rx;
rr=Rx*Rx+1;//補(bǔ)償1修正方形
rs=(yt+(yt>>1))>>1;//(*0.75)分開1/8圓弧來(lái)畫
for(xt=0;xt<=rs;xt++)
{
xx=xt*xt;
while((yt*yt)>(rr-xx))yt--;
row=Ox+xt;//第一象限
col=Oy-yt;
point(row,col,s);
row=Ox-xt;//第二象限
point(row,col,s);
col=Oy+yt;//第三象限
point(row,col,s);
row=Ox+xt;//第四象限
point(row,col,s);

/***************45度鏡象畫另一半***************/

row=Ox+yt;//第一象限
col=Oy-xt;
point(row,col,s);
row=Ox-yt;//第二象限
point(row,col,s);
col=Oy+xt;//第三象限
point(row,col,s);
row=Ox+yt;//第四象限
point(row,col,s);
}
}


voidmain(void)//測(cè)試用
{
uchari;
shortdelay(1200);
MCUCR|=BIT(SRE)|BIT(SRW);
fnLCMInit();
cls();
cursor(0,0);
dprintf(3,3,"Thisisatest:中文測(cè)試");

dprintf(0,6,"LCMExsampleuse90S8515&6963");
dprintf(15,7,"~Xiaoqi~");
Linexy(10,20,239,110,8);//畫斜線1
Linexy(10,20,217,1,8);//斜線2
Linexy(239,110,217,1,8);//斜線3
circle(185,45,40,8);//畫圓
circle(185,45,41,8);//畫同心圓加粗
shortdelay(24000);

while(1)
{
//變化圓演示,直徑不斷的變化,由大到小再由小到大來(lái)回縮放
for(i=40;i>5;i--)
{
circle(185,45,i+1,0);//擦除外圓
circle(185,45,i,8);
circle(185,45,i-1,8);
shortdelay(3600);
};

shortdelay(8000);

for(i=5;i<40;i++)
{
circle(185,45,i-1,0);//擦除內(nèi)圓
circle(185,45,i,8);
circle(185,45,i+1,8);
shortdelay(1800);
};

shortdelay(4000);

};
}

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉