?? lcd.txt
字號(hào):
// Crystal: 8.0000Mhz
#include <iom128v.h>
#include <macros.h>
#define xtal 8
/********************************************************
液晶控制管腳;
CS1-PC0;RS-PC1;RD-PC2;
WR-PC3;BUSY-PG0;DB0~DB7--PB0-PB7;
*////////////////////////////////////////////////////////
//定義分頻比256
#define BUSY 0
#define uint unsigned int
#define uchar unsigned char
//LCD 初始化定義
#define WLCR 0X00
#define MISC 0X01
#define ADSR 0X03
#define WCCR 0X10
#define CHWI 0X11
#define AWRR 0X20
#define DWWR 0X21
#define AWBR 0X30
#define DWHR 0X31
#define AWLR 0X40
#define AWTR 0X50
#define CURX 0X60
#define BGSG 0X61
#define EDSG 0X62
#define FVHT 0XF1
#define FNCR 0XF0
#define PNTR 0XE0
#define CURY 0X70
#define MAMR 0X12
#define MWCR 0XB0
#define INTR 0X0F
#define BTMR 0X80
#define KSCR1 0XA0
//函數(shù)聲明
void delay_1ms(void); //延時(shí)1ms
void delay_1us(void); //延時(shí)1us
void delay_nms(uint n); //延時(shí)n ms
void delay_nus(uint n);//延時(shí)n us
void LcdDataWrite(uint data);
void CLRVRAM(void);
void CLRSCREEN(void);
void INITLCD(void);
void SetCursor(uchar X,uchar Y);
void WLCDCHR(uchar x,uchar y,uchar *p );
void init_sys(void);
void init_sys(void)
{
DDRA=0XF8;
PORTA=0XFF;
DDRB=0XFF;
PORTB=0X00;
DDRD=0XFF;
PORTD=0X00;
DDRC=0X0F;
PORTC=0X00;
DDRE=0X00;
PORTE=0XFF;
}
void delay_1ms(void) //延時(shí)1ms
{
uint i;
for (i=1;i<(8*143-2);i++);
}
//////////////////////////////////////////////
void delay_1us(void) //延時(shí)1us
{asm("nop");
}
///////////////////////////////////////////////////////
void delay_nms(uint n) //延時(shí)n ms
{uint i=0;
for (i=0;i<n;i++)
delay_1ms();
}
//////////////////////////////////////////////////////
void delay_nus(uint n)//延時(shí)n us
{
uint i=0;
for (i=0;i<n;i++)
delay_1us();
}
///////////////////////////////////////////////////
/****************************************************************************
* 名稱:WLCDCOM
* 功能:寫LCD控制命令
* 入口參數(shù):com
* 出口參數(shù):無(wú)
****************************************************************************/
void LcdCommand(uint com)
//寫LCD控制命令
{
PORTC|=0X02; //RS=1
PORTC&=0XFE; //CS=0
//PORTC|=0X08; //WR=1
PORTC|=0X04; //RD=1
//asm("nop");
PORTB=com;
PORTC&=0XF7; //WR=0
asm("nop");
PORTC|=0X08; //WR=1
asm("nop");
PORTC|=0X01; //CS=1
}
/****************************************************************************
* 名稱:WLCDDATA
* 功能:寫LCD控制參數(shù)和顯示字符數(shù)據(jù)
* 入口參數(shù):ref
* 出口參數(shù):無(wú)
****************************************************************************/
void LcdDataWrite(uint data)
//寫LCD控制參數(shù)和顯示字符數(shù)據(jù)
{
//SEDWRDAT=ref;
//_nop_();
//DDRC|=0X0F;
//DDRD==0XFF;
PORTC&=0XFD; //RS=0
PORTC&=0XFE; //CS=0
PORTC|=0X04; //RD=1
PORTB=data;
PORTC&=0XF7; //WR=0
asm("nop");
PORTC|=0X08; //WR=1
asm("nop");
PORTC|=0X01; //CS=1
}
/****************************************************************************
* 名稱:CLRSCREEN
* 功能:清除顯示屏幕
* 入口參數(shù):無(wú)
* 出口參數(shù):無(wú)
****************************************************************************/
void CLRSCREEN(void)
//清除顯示屏幕
{
uint i,j;
//BYTE a;
LcdCommand(FNCR);
LcdDataWrite(0X08);
LcdCommand(PNTR);
LcdDataWrite(0x00);
LcdCommand(MWCR);
for(i=0;i<4500;i++) //9600
{ //LcdCommand(PNTR);
LcdDataWrite(0x00);
}
}
void CLRVRAM(void)
//顯示存儲(chǔ)器清零
{
int i,j;
LcdCommand(FNCR);
LcdDataWrite(0x88);
LcdCommand(PNTR);
LcdDataWrite(0x00);
LcdCommand(MWCR);
for(i=0;i<=0xff;i++)
{
for(j=0;j<=0xff;j++)
{ //LcdCommand(PNTR);
LcdDataWrite(0x00);
}
}
}
//LCD初始化函數(shù)
//#define LcdCommand XBYTE[0x7f01] //1335CS--->P2.7, A0=1
//#define LcdDataWrite XBYTE[0x7f00] //1335A0--->ADDR0 A0=0
////////////////初始化LCD函數(shù)/////////////////////
void INITLCD(void)
//初始化LCD顯示參數(shù)以及界面
{
//}
LcdCommand(WLCR);
LcdDataWrite(0X0D);
LcdCommand(MISC);
LcdDataWrite(0X84);
LcdCommand(ADSR);
LcdDataWrite(0X80);
//CLRVRAM();
LcdCommand(WCCR);
LcdDataWrite(0X16);
//CLRVRAM();
LcdCommand(CHWI);
LcdDataWrite(0X50);
//CLRVRAM();
//LcdCommand(AWRR);
//LcdDataWrite(0X00);
//LcdCommand(DWWR);
//LcdDataWrite(0X27);
//LcdCommand(AWBR);
//LcdDataWrite(0X00);
//LcdCommand(DWHR);
//LcdDataWrite(0XEF);
//LcdCommand(AWLR);
//LcdDataWrite(0X00);
//LcdCommand(AWTR);
//LcdDataWrite(00);
LcdCommand(FNCR);
LcdDataWrite(0X8B);
LcdCommand(FVHT);
LcdDataWrite(0X00);
//LcdCommand(PNTR);
//LcdDataWrite(0X00);
LcdCommand(CURY);
LcdDataWrite(0X00);
LcdCommand(MAMR);
LcdDataWrite(0X17);
//LcdCommand(PNTR);
//LcdDataWrite(0X00);
LcdCommand(BTMR);
LcdDataWrite(0X10);
LcdCommand(KSCR1);
LcdDataWrite(0X00);
}
//在對(duì)LCD進(jìn)行初始化之后,即可在任意指定位置顯示任意圖形或字符,下面是一段在指定位置顯示漢字的程序:
////////設(shè)定光標(biāo),允許顯示///////
void SetCursor(uchar X,uchar Y)
{ uchar x[]={0,20,40,60,80,100,120,140,160,180,200,220};
//uchar y[]={0,2.5,5,7.5,10,12.5,15,17.5,20,22.5,25,27.5,30,32.5,
// 35,37.5};
//LcdDataWrite(0X0D);
//delay_nus(0x09);
LcdCommand(0X70);
LcdDataWrite(x[X]);//設(shè)定光標(biāo)y坐標(biāo);X<224
LcdCommand(0x60); // 設(shè)定光標(biāo)位置命令
LcdDataWrite(Y-1); //設(shè)定光標(biāo)x坐標(biāo); Y<39
LcdCommand(0xB1);
}
/****************************************************************************
* 名稱:WLCDCHR
* 功能:顯示32×32字符
* 入口參數(shù):...
* 出口參數(shù):無(wú)
****************************************************************************/
void WLCDCHR(uchar x,uchar y,uchar *p )
//功能:顯示32 ×32字符,num為要顯示字符數(shù)組的第一維的值
//x坐標(biāo)寄存器(字節(jié)),y坐標(biāo)寄存器(點(diǎn)行)
{
//delay_nms(50);
while(y<39&&((*p)!='\0'))
{
SetCursor(x,y-1);
LcdCommand(MWCR);
LcdDataWrite(*p++);
//LcdDataWrite(*p++);
delay_nus(2);
//*p++;
y++;
}
}
void main()
{
uchar *num[]={"00","01","02","03","04","05","06","07","08","09","10",
"11","12","13","14","15","16","17","18","19","20","21","22",
"23","24","25","26","27","28","29","30","31","32","33","34",
"35","36","37","38","39","40","41","42","43","44","45","46",
"47","48","49","50","51","52","53","54","55","56","57","58",
"59"};
init_sys();
INITLCD();
//CLRVRAM();
CLRSCREEN();
//delay_nms(50);
delay_nus(10);
//LcdCommand(MWCR);
//SetCursor(0,39);
//WLCDCHR(4,15,"張" );
WLCDCHR(0,3,num[25]);
WLCDCHR(1,0,"測(cè)試人員編號(hào):" );
WLCDCHR(2,0,"測(cè)試閥號(hào):" );
WLCDCHR(3,0,"測(cè)試閥編號(hào): " );
WLCDCHR(4,0,"閥初始電壓設(shè)定: " );
WLCDCHR(5,0,"未定義內(nèi)容:" );
WLCDCHR(6,0,"未定義內(nèi)弄:" );
WLCDCHR(7,0,"未定義顯示內(nèi)容:" );
WLCDCHR(8,0,"未定義顯示內(nèi)容:" );
WLCDCHR(9,0,"未定義顯示內(nèi)容:" );
WLCDCHR(10,0,"未定義顯示內(nèi)容:" );
//WLCDCHR(11,0,"未定義顯示內(nèi)容:" );
//SetCursor(0,13);
//WLCDCHR(0,0,"未定義" );
SetCursor(0,7.5);
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -