创意电子密码锁程序分享
时间:10-02
整理:3721RD
点击:
#include <reg51.h>
#define lcd_data P0
sbit RS = P2^0;
sbit RW = P2^1;
sbit E = P1^6;
sbit PSB = P2^2;
void delay(unsigned int k)
{
unsigned int i;
unsigned char j;
for(i=0;i<k;i++)
{
for(j=0;j<10;j++);
}
}
//********************************************************
//延时1ms函数
//********************************************************
void delay_ms(unsigned int k)//延时0.994us,晶振12M
{
unsigned int x,y;
for(x=k;x>0;x--)
for(y=121;y>0;y--);
}
//********************************************************
//写命令函数
//********************************************************
void LcdWcom(unsigned char WCom)
{
delay(1);
RS=0; //指明操作对象为指令寄存器
RW=0; //指明为写操作
E=1;
lcd_data=WCom; //将命令写入总线
E=0;
}
//********************************************************
//写数据函数
//********************************************************
void LcdWdata(unsigned char WData)
{
delay(1);
RS=1; //指明操作对象为数据寄存器
RW=0; //指明为写操作
E=1;
lcd_data=WData; //将数据写入总线
E=0;
}
//********************************************************
//显示初始化函数
//********************************************************
void Display_Init(void)
{
delay_ms(45); //延时45ms
PSB=1; //8位并行口
//功能设定
LcdWcom(0x30); //设置为8位并行口,基本指令集
delay(10);
LcdWcom(0x30); //再次设置为8位并行口,基本指令集
delay(5);
// //显示开关控制
// LcdWcom(0x0c); //游标显示关,正常显示,整体显示开
// delay(10);
//清除显示
LcdWcom(0x01);
delay_ms(12); //延时12ms
//进入点设置
LcdWcom(0x06); //设置为游标右移,DDRAM位地址加1,画面不移动
delay(5);
LcdWcom(0x0C); //开显示
}
//********************************************************
//设置光标函数
//参数说明:x为行号,y为列号
//********************************************************
void Set_Cursor(unsigned char x, unsigned char y)
{
unsigned char i;
switch(x)//确定行号
{
case 0x00: i=0x80; break;//第一行
case 0x01: i=0x90; break;//第二行
case 0x02: i=0x88; break;//第三行
case 0x03: i=0x98; break;//第四行
default : break;
}
i = y+i;//确定列号
LcdWcom(i);//写地址
}
//********************************************************
//显示字符函数
//********************************************************
void Display_Char(unsigned char Alphabet)
{
delay(1);
LcdWdata(Alphabet); //写入需要显示字符的显示码
}
/**********************显示单个字符*************************/
void main()
{
while(1)
{
Set_Cursor(0,0); //光标地址设定
Display_Char(0x21); //显示字符!
}
}
#define lcd_data P0
sbit RS = P2^0;
sbit RW = P2^1;
sbit E = P1^6;
sbit PSB = P2^2;
void delay(unsigned int k)
{
unsigned int i;
unsigned char j;
for(i=0;i<k;i++)
{
for(j=0;j<10;j++);
}
}
//********************************************************
//延时1ms函数
//********************************************************
void delay_ms(unsigned int k)//延时0.994us,晶振12M
{
unsigned int x,y;
for(x=k;x>0;x--)
for(y=121;y>0;y--);
}
//********************************************************
//写命令函数
//********************************************************
void LcdWcom(unsigned char WCom)
{
delay(1);
RS=0; //指明操作对象为指令寄存器
RW=0; //指明为写操作
E=1;
lcd_data=WCom; //将命令写入总线
E=0;
}
//********************************************************
//写数据函数
//********************************************************
void LcdWdata(unsigned char WData)
{
delay(1);
RS=1; //指明操作对象为数据寄存器
RW=0; //指明为写操作
E=1;
lcd_data=WData; //将数据写入总线
E=0;
}
//********************************************************
//显示初始化函数
//********************************************************
void Display_Init(void)
{
delay_ms(45); //延时45ms
PSB=1; //8位并行口
//功能设定
LcdWcom(0x30); //设置为8位并行口,基本指令集
delay(10);
LcdWcom(0x30); //再次设置为8位并行口,基本指令集
delay(5);
// //显示开关控制
// LcdWcom(0x0c); //游标显示关,正常显示,整体显示开
// delay(10);
//清除显示
LcdWcom(0x01);
delay_ms(12); //延时12ms
//进入点设置
LcdWcom(0x06); //设置为游标右移,DDRAM位地址加1,画面不移动
delay(5);
LcdWcom(0x0C); //开显示
}
//********************************************************
//设置光标函数
//参数说明:x为行号,y为列号
//********************************************************
void Set_Cursor(unsigned char x, unsigned char y)
{
unsigned char i;
switch(x)//确定行号
{
case 0x00: i=0x80; break;//第一行
case 0x01: i=0x90; break;//第二行
case 0x02: i=0x88; break;//第三行
case 0x03: i=0x98; break;//第四行
default : break;
}
i = y+i;//确定列号
LcdWcom(i);//写地址
}
//********************************************************
//显示字符函数
//********************************************************
void Display_Char(unsigned char Alphabet)
{
delay(1);
LcdWdata(Alphabet); //写入需要显示字符的显示码
}
/**********************显示单个字符*************************/
void main()
{
while(1)
{
Set_Cursor(0,0); //光标地址设定
Display_Char(0x21); //显示字符!
}
}
学习