总算写出了第一个C51程序,虽然简单,还是值得庆祝!
源码:
#include <reg51.h>
#define EPIN P3_5
#define RWPIN P3_6
#define RSPIN P3_7
#define uint unsigned int
#define uchar unsigned char
uchar *p = "The first C51!By";
uchar *q = "lanzix 08-04-16";
sbit P3_5 = P3^5;
sbit P3_6 = P3^6;
sbit P3_7 = P3^7;
void lcdwc(uchar lcdcode);
void lcdwcn(uchar lcdcode);
void lcdwd(uchar lcddata);
void delay(uint n);
void waitidle();
void lcdreset();
void main()
{
EPIN =0;
lcdreset();
while ((*p )!= '/0')
{
lcdwd(*p);
p++;
}
lcdwc(0xc0);
while ((*q )!= '/0')
{
lcdwd(*q);
q++;
}
while(1);
}
//дָÁ¼ì²âæÐźÅ
void lcdwc(uchar lcdcode)
{
// waitidle();
RSPIN = 0;
RWPIN = 0;
P0 = lcdcode;
EPIN = 0;
delay(5);
EPIN = 1;
}
//дָÁ²»¼ì²âæÐźÅ
void lcdwcn(uchar lcdcode)
{
RSPIN = 0;
RWPIN = 0;
P0 = lcdcode;
EPIN = 0;
delay(5);
EPIN = 1;
}
//дÊý¾Ý
void lcdwd(uchar lcddata)
{
RSPIN = 1;
RWPIN = 0;
P0 = lcddata;
EPIN = 0;
delay(5);
EPIN = 1;
}
//µÈ´ýÒº¾§¿ÕÏÐ
void waitidle()
{
P0 = 0XFF;
delay(5);
RSPIN = 0;
RWPIN = 1;
EPIN = 1;
ACC = P0;
while(P0^7);
EPIN = 0;
}
//Òº¾§³õʼ»¯
void lcdreset()
{
delay(15);
lcdwcn(0x38);
delay(5);
lcdwcn(0x38);
delay(5);
lcdwcn(0x38);
delay(5);
lcdwc(0x38);
lcdwc(0x08);
lcdwc(0x01);
lcdwc(0x06);
lcdwc(0x0c);
}
void delay(uint n)
{
uint i;
while(n--)
{
for(i=0;i<125;i++)
{}
}
}
源码:
#include <reg51.h>
#define EPIN P3_5
#define RWPIN P3_6
#define RSPIN P3_7
#define uint unsigned int
#define uchar unsigned char
uchar *p = "The first C51!By";
uchar *q = "lanzix 08-04-16";
sbit P3_5 = P3^5;
sbit P3_6 = P3^6;
sbit P3_7 = P3^7;
void lcdwc(uchar lcdcode);
void lcdwcn(uchar lcdcode);
void lcdwd(uchar lcddata);
void delay(uint n);
void waitidle();
void lcdreset();
void main()
{
EPIN =0;
lcdreset();
while ((*p )!= '/0')
{
lcdwd(*p);
p++;
}
lcdwc(0xc0);
while ((*q )!= '/0')
{
lcdwd(*q);
q++;
}
while(1);
}
//дָÁ¼ì²âæÐźÅ
void lcdwc(uchar lcdcode)
{
// waitidle();
RSPIN = 0;
RWPIN = 0;
P0 = lcdcode;
EPIN = 0;
delay(5);
EPIN = 1;
}
//дָÁ²»¼ì²âæÐźÅ
void lcdwcn(uchar lcdcode)
{
RSPIN = 0;
RWPIN = 0;
P0 = lcdcode;
EPIN = 0;
delay(5);
EPIN = 1;
}
//дÊý¾Ý
void lcdwd(uchar lcddata)
{
RSPIN = 1;
RWPIN = 0;
P0 = lcddata;
EPIN = 0;
delay(5);
EPIN = 1;
}
//µÈ´ýÒº¾§¿ÕÏÐ
void waitidle()
{
P0 = 0XFF;
delay(5);
RSPIN = 0;
RWPIN = 1;
EPIN = 1;
ACC = P0;
while(P0^7);
EPIN = 0;
}
//Òº¾§³õʼ»¯
void lcdreset()
{
delay(15);
lcdwcn(0x38);
delay(5);
lcdwcn(0x38);
delay(5);
lcdwcn(0x38);
delay(5);
lcdwc(0x38);
lcdwc(0x08);
lcdwc(0x01);
lcdwc(0x06);
lcdwc(0x0c);
}
void delay(uint n)
{
uint i;
while(n--)
{
for(i=0;i<125;i++)
{}
}
}