?? 1602.c
字號:
#include "reg52.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit RS=P3^7;
sbit RW=P3^6;
sbit EN=P3^5;
static void delay(uint j);
//************************
void initlcd(); /*LCD初始化*/
void writecom(uchar c);
void writedata(uchar c);
void showchar(uchar pos,uchar c); /*顯示一個字符 pos為位置 范圍0-31 c為字符*/
void showstring(uchar line,uchar *ptr);/*顯示一行字符 line為行號 范圍0,1 *ptr為首地址*/
void disp_1602(uchar line,uchar *add);/*顯示一行數(shù)字line為行號 范圍0,1 *add為首地址*/
code uchar disp1[16]={0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5};
code uchar disp2[]="ABCDEFGHIJKLMNOP";
//************************
void writecom(uchar c)
{ delay(100);
EN=0;
RS=0;
RW=0;
_nop_();
P0=c;
EN=1;
_nop_();
EN=0;
}
//*************************
void writedata(uchar c)
{ delay(100);
EN=0;
RS=1;
RW=0;
_nop_();
P0=c;
EN=1;
_nop_();
EN=0;
RS=1;
}
//*****************
void showchar(uchar pos,uchar c)
{ uchar p;
if(pos>=0x10)
p=pos+0xb0;
else
p=pos+0x80;
writecom(p);
writedata(c);
}
//****************************
void showstring(uchar line,char *ptr)
{ uchar l,i;
l=line<<4;
for(i=0;i<16;i++)
{showchar(l++,*(ptr+i));}
}
//***************************
void initlcd()
{
writecom(0x38);
writecom(0x38);
writecom(0x06);
writecom(0x0c);
writecom(0x01);
}
//*********************
void delay(uint j)
{
while(j--);
}
//***************************************
void disp_1602(uchar line,uchar *add)
{
uchar k;
for(k=0;k<16;k++)
showchar(16*line+k,*(add+k)+0x30);
}
//*************************
void delayms(uint j)
{
uchar i;
while(j--)
{
for(i=0;i<125;i++)
;
}
}
//************************
main()
{
delayms(1);
initlcd();
disp_1602(0,disp1);
showstring(1,disp2);
while(1)
;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -