?? zk.c
字號:
#include<REG51.H>
#include "INTRINS.H"
#define LCD_BUS P0
sbit RS= P2^5;
sbit RW=P2^6;
sbit E =P2^7;
/*
sbit pcb=P1^3;
sbit RS= P1^0;
sbit RW=P1^1;
sbit E =P1^2;
*/
////////////////////////////////////
////////////////////////////////////
void delay(unsigned int t) ; //延時t倍///
unsigned char check_bf(unsigned char Address_AC); //LCD標志位查詢//
void write_data(unsigned char dispdata); //寫數據//
void write_comand(unsigned char cmdcode); //寫命令//
void lcd_init(); ///LCD初始化//
void stringdisp (unsigned char code *str,unsigned char adress); //顯示字符串//
void disp_graph(); //總界面:教室燈控系統
void disp_graph_password(); //密碼輸入登錄界面
void disp_graph_set(); //系統設置總界面
/////////////////////////////////////////////////////
unsigned char code str[]=" 教室燈控系統 "; //登陸總界面
unsigned char code str1[]=" ●登陸界面 →";
unsigned char code str2[]=" ●設置界面 →";
unsigned char code str_password1[]="請輸入登錄密碼:"; //輸入密碼界面
unsigned char code str_password2[]=" ****** ";
unsigned char code str_password3[]=" 1 2 3 4 5 6 ";
unsigned char code str_password4[]=" 6 7 8 9 ";
unsigned char code str_set1[]="設置選項: "; //設置總界面
unsigned char code str_set2[]="●密碼設置 →";
unsigned char code str_set3[]="●系統時間設置→";
unsigned char code str_set4[]="●定時時間設置→";
// unsigned char code str3[]="1234567891234567";
// unsigned char code str12[14][3]={"1 ","2 ","3 ","4 ","5 ","6 ","7 ","8 ","9 ","10","11","12","13","14",};
//////////////////////////////////////////////////////////////////
void main()
{
LCD_BUS=0XFF;
LCD_BUS=LCD_BUS
lcd_init();
stringdisp("1",0x8b);
//disp_graph(); //登陸總界面
//disp_graph_password();
// disp_graph_set();
//stringdisp(&str3,0x80); ///////顯示開機畫面//////
//write_comand(0x85);
// stringdisp("1",0x88);
// data_disp(198,0x98); //數字顯示
delay(100);
}
/**********************************************************************
函數原型: void delay(unsigned int t)
入口參數:
t : 延時程序t倍的100us
出口參數: 無
返 回 值: 無
說 明: LCD液晶延時子程序t倍100us
**********************************************************************/
///////////////////延時程序/////////////////////////////////////
void delay(unsigned int t) //延時程序t倍100us
{
unsigned char j;
unsigned int i;
for(i=0;i<t;i++)
for(j=0;j<29;j++);
}
/***********************************************************************
函數原型:check_bf(unsigned char Address_AC)
入口參數:無
出口參數:無
返回值:
Address_AC:當前狀態的地址(一個無符號字符)
功能說明:LCD液晶的狀態BF查詢和DDRAM的地址查詢
************************************************************************/
////////////////////////////查詢BF///////////////////////////////////////
unsigned char check_bf(unsigned char Address_AC)
{
unsigned char BF; ////忙標志位,BF是某字節的一位,是D7位,如果為1,則忙//////
LCD_BUS=0x00 ;
do
{
RS=0;
RW=1;
E=1;
BF=LCD_BUS; /////此處BF定義不是一個位,而是一個字節,不過在處理中代表標志位bf///
_nop_();
E=0;
Address_AC=BF;
BF=BF&0x80; ////取出BF////
}while( BF!=0x00 ) ; //////判斷是否忙?///////
Address_AC=Address_AC&0x7f; ///讀出DDRAM的地址指針AC的值
delay(5) ;
return(Address_AC);
}
/**********************************************************************
函數原型:write_comand(unsigned char cmdcode)
入口參數:
cmdcode : 命令字 (0x01:清屏)
出口參數: 無
返 回 值: 無
說 明: 對lcd寫命令字
**********************************************************************/
/////////////////////////寫命令子程序//////////////////////////////////
void write_comand(unsigned char cmdcode)
{
check_bf();
RS=0;
RW=0;
E=1;
LCD_BUS=cmdcode;
_nop_();
_nop_();
_nop_();
_nop_();
E=0;
delay(5) ;
}
/***********************************************************************
函數原型:write_data(unsigned char dispdata)
入口參數:
dispdata:寫入lcd要顯示內容
出口參數:無
返回值: 無
功能說明:LCD液晶的數據寫入指令
************************************************************************/
//////////////////////////寫數據子程序///////////////////////////////////
void write_data(unsigned char dispdata)
{
check_bf();
RS=1;
RW=0;
E=1;
LCD_BUS=dispdata;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
E=0;
}
/******************************************************************
函數:lcd_init()
入口參數:無
出口參數:無
返回值:無
功能說明:LCD液晶的初始化
********************************************************************/
/////////////////////////液晶初始化////////////////////////////////
void lcd_init()
{
delay(100);
write_comand(0x30); //8并,基本指令
delay(10);
write_comand(0x30); //8并,
delay(5);
// write_comand(0x0c); //整體顯示開,游標關不反白
// write_comand(0x0d); //整體顯示開,游標關反白
write_comand(0x0f); //整體顯示開,游標開反白
delay(10);
write_comand(0x01); //清屏
delay(5);
write_comand(0x06); //游標移動方向及地址AC的增減方式
}
/***********************************************************************
函數原型:stringdisp(unsigned char code *str,unsigned char adress)
入口參數:
str:要寫入lcd顯示的字符串數組
adress :要設定字符串在液晶顯示中地址
出口參數:無
返回值: 無
功能說明:LCD液晶的字符串顯示子程序
************************************************************************/
///////////////////////////字符串顯示////////////////////////////////////
void stringdisp(unsigned char code *str,unsigned char adress) //字符串顯示
{
write_comand(0x30);
write_comand(adress);
while(*str>0)
{
write_data(*str) ;
str++;
delay(1);
}
}
///////////////////////////系統登陸界面///////////////////////////////////
void disp_graph()
{
lcd_init();
stringdisp(&str,0x80); //////總界面:教室燈控系統////////
delay(100);
stringdisp(&str1,0x88); //////總界面:登陸界面////////////
delay(100);
// stringdisp(&str2,0x88); //////總界面:設置界面////////////
// delay(100);
write_comand(0x8f);
// write_comand(0x34); ////設置為全反白顯示
// write_comand(0x05);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -