📄 lcdexper.c
字号:
#include <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
#define DB PORTA
/******************************************************************** */
#define SETBIT(x,y) (x|=(1<<y)) //set bit y in byte x
#define CLRBIT(x,y) (x&=(~(1<<y))) //clear bit y in byte x
#define CHKBIT(x,y) (x&(1<<y)) //check bit y in byte x
/******************************************************************** */
#define RS 0
#define RW 1
#define E 2
#define PSB 3
#define RST 4
unsigned flash char Chanping1[]={"简易信号采集系统"};
unsigned flash char jieguo_1[]={"南方医科大学"};
unsigned flash char jieguo_2[]={"生物医学工程学院"};
unsigned flash char jieguo_3[]={"2005级影像工程"};
unsigned flash char jieguo_4[]={"欧阳斌"};
//***************延时*********************************/
void Delay(uint t)
{
uint i=0;
for(i=0;i<=t;i++);
}
void delay_ms(unsigned int t)
{
unsigned char t2=200;
while(t--)while(t2--);
}
void port_init(void)
{
PORTA = 0xFF;
DDRA = 0xFF;
PORTB = 0xFF;
DDRB = 0xFF;
}
/*-----------------------------------------------------
状态检查函数,判断是否处于忙状态
-------------------------------------------------------*/
void Check_Busy(void)
{
unsigned char dat;
CLRBIT(PORTB,RS); //RS=0
SETBIT(PORTB,RW); //RW=1
DDRA=0x00; // portA as input
do
{
SETBIT(PORTB,E);
CLRBIT(PORTB,E);
}
while (PINA&0x80);
}
//**********************写命令到LCD***************************/
void Write_Command(uchar cmdcode)
{
Check_Busy();
DDRB=0xff;
CLRBIT(PORTB,RS);//RS=0;
CLRBIT(PORTB,RW);//RW=0;
DDRA=0xff;
DB=cmdcode;
Delay(1);//Delay(1);
SETBIT(PORTB,E);//E=1;
Delay(1);//Delay(1);Delay(1);
CLRBIT(PORTB,E);//E=0;
}
//**************************写数据到LCD*************************/
void Write_Data(uchar datacode)
{
Check_Busy();
DDRB=0xff;
SETBIT(PORTB,RS);//RS=1;
CLRBIT(PORTB,RW);//RW=0;
DDRA=0xff;
DB=datacode;
Delay(1);//Delay(1);
SETBIT(PORTB,E);//E=1;
Delay(1);//Delay(1);Delay(1);
CLRBIT(PORTB,E);//E=0;
}
//**************************初始化LCD***********************/
void Initial_LCD(void)
{
Delay(10);
Write_Command(0x30);//30H--基本指令操作
Delay(5);
Write_Command(0x0c);//开显示,关光标,不闪烁.
Delay(10);
Write_Command(0x02);
Delay(10);
Write_Command(0x06);//指定在资料写入或读取时,光标的移动方向,DDRAM的地址计数器(AC)加1。
Delay(10);
Write_Command(0x01);//清除显示
Delay(10);
Write_Command(0x80);//光标复位
}
//*************************写一串字符到LCM**************************/
void Write_String(unsigned flash char datacode[])
{
uchar i=0;
while(datacode[i])
{
Write_Data(datacode[i]);
i++;
if(i==0xff)break;
}
}
/**********************设置坐标*****************/
void Location_XY(uchar x,uchar y)
{
switch(y)
{
case 0:
y=0x80;break;
case 1:
y=0x90;break;
case 2:
y=0x88;break;
case 3:
y=0x98;break;
default:
y=0x80;
}
x=x&0x07;
Write_Command(x+y);
}
//************************在(x,y)处显示字符串string*************/
void Write_String_atXY(uchar x,uchar y,unsigned flash char string[])
{
Location_XY(x,y);
Write_String(string);
}
//***********清屏******************************/
void Clear_Lcd( void )
{
uchar i,j;
Write_Command(0x34);
Write_Command(0x36);
for(i=0;i<32;i++)
{
Write_Command(0x80|i);
Write_Command(0x80);
for(j=0;j<32;j++)
Write_Data(0);
}
}
//***************清除“文字”函数**********************/
void LcmClearTXT( void )
{
unsigned char i;
Write_Command(0x30);
Write_Command(0x80);
for(i=0;i<64;i++)
Write_Data(0x20);
}
void LcmClearBMP( void )
{
unsigned char i,j;
Write_Command(0x34);
Write_Command(0x36);
for(i=0;i<32;i++)
{
Write_Command(0x80|i);
Write_Command(0x80);
for(j=0;j<32;j++)
Write_Data(0);
}
}
void PutBMP(unsigned flash char *puts)
{
unsigned int x=0,y=0;
unsigned char i,j;
Write_Command(0x34);
Write_Command(0x36);
for(i=0;i<32;i++)
{
Write_Command(0x80|i);
Write_Command(0x80);
for(j=0;j<16;j++)
{
Write_Data(puts[x]);
x++;
}
y=x-16;
for(j=0;j<16;j++)
{
Write_Data(puts[y+512]);
y++;
}
}
}
//*******************显示初始界面******************************/
void StartView(void)
{
Write_String_atXY(0,1,Chanping1);
delay_ms(3000);
//Delay(50000);
}
unsigned flash char bmp8[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x04,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,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,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,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x0F,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF8,0x00,0x7F,0xC0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0x07,0xFF,0xF0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x1F,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,
0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,
0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,
0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,
0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xC0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,
0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,
0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,
0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xF0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xF0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xE0,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFC,0x01,0xFF,0xC0,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xF8,0x00,0x3F,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x70,0x30,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x11,0x08,0x48,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x11,0x08,0x84,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x11,0x08,0x84,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x11,0x08,0xFC,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x11,0x08,0x84,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x11,0x08,0x84,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,
0x08,0x84,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
void main(void)
{ port_init();
SETBIT(PORTB,PSB);//PSB=1;
SETBIT(PORTB,RST);//RST=1;
LcmClearTXT();
Initial_LCD();
StartView();
LcmClearTXT();
while(1)
{
Write_String_atXY(1,0,jieguo_1);
delay_ms(600);
/*Write_String_atXY(0,1,Chanping1);
delay_ms(10000);*/
Write_String_atXY(0,1,jieguo_2);
delay_ms(600);
Write_String_atXY(0,2,jieguo_3);
delay_ms(600);
Write_String_atXY(2,3,jieguo_4);
delay_ms(2000);
LcmClearTXT();
LcmClearBMP();
PutBMP(bmp8);
delay_ms(6000);
LcmClearBMP();
LcmClearTXT();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -