displayWord下载.docx
《displayWord下载.docx》由会员分享,可在线阅读,更多相关《displayWord下载.docx(19页珍藏版)》请在冰豆网上搜索。
0xAD,//5
0xAF,//6
0xE0,//7
0xEF,//8
0xEC,//9
};
SendBit_1621
发送一个字节的数据
发送一个字节的数据,低位在前
voidSendBit_1621(unsignedchardata,unsignedcharcnt)
{
unsignedchari;
for(i=0;
i<
cnt;
i++)
{
if((data&
0x80)==0)
LCD_DATA=0;
else
LCD_DATA=1;
LCD_WR=0;
NOP();
LCD_WR=1;
data<
<
=1;
}
}
SendDataBit_1621
发送一个字节的数据,高位在前
voidSendDataBit_1621(unsignedchardata,unsignedcharcnt)
{
0x01)==0)
data>
>
SendCmd
发送命令
voidSendCmd(unsignedcharcommand)
LCD_CS=0;
SendBit_1621(0x80,3);
SendBit_1621(command,9);
LCD_CS=1;
}
Write_1621
写一个字节的数据
voidWrite_1621(unsignedcharaddr,unsignedchardata)
SendBit_1621(0xa0,3);
addr<
=2;
SendBit_1621(addr,6);
SendDataBit_1621(data,4);
CLRFLCD1621
清屏
voidCLRFLCD1621(void)
unsignedcharaddr;
for(addr=0;
addr<
=10;
addr=addr+2)
Write_1621(addr,0);
init_LCD
初始化LCD
voidinit_LCD(void)
MSDelay(100);
SendCmd(SYSEN);
SendCmd(LCD_WDT_DIS);
SendCmd(BIAS);
SendCmd(LCDON);
CLRFLCD1621();
Test_LCD
测试LCD显示
voidTest_LCD(void)
Write_1621(0,LCD_BUF[0]);
Write_1621(2,LCD_BUF[1]);
Write_1621(4,LCD_BUF[2]);
Write_1621(6,LCD_BUF[3]);
Write_1621(8,LCD_BUF[4]);
_Write_Display
送显示
void_Write_Display(void)
if(F_Temp==1)
LCD_BUF[4]|=0x08;
}
if(F_Step5==1)
LCD_BUF[2]|=0x08;
if(F_Step4==1)
LCD_BUF[0]|=0x01;
if(F_Step3==1)
LCD_BUF[0]|=0x02;
if(F_Step2==1)
LCD_BUF[0]|=0x04;
if(F_Step1==1)
LCD_BUF[0]|=0x08;
_DispProcB01
正常显示
void_DispProcB01(void)
LCD_BUF[1]=(DigitTable[(KeyUpDown_Press_times)&
0x0F]&
&
0x0F);
LCD_BUF[2]=((DigitTable[(KeyUpDown_Press_times)&
0x0F]>
4)&
LCD_BUF[3]=(DigitTable[(KeyUpDown_Press_times>
4)&
LCD_BUF[4]=((DigitTable[(KeyUpDown_Press_times>
_Write_Display();
_DispProcB02
报警显示
显示E1+红屏
void_DispProcB03(void)
_DispProcB04
显示E2+红屏
void_DispProcB04(void)
_DispProcB05
显示E3+红屏
void_DispProcB05(void)
_DispProcB06
显示出水温度、淋浴时间、冷水温度
void_DispProcB06(void)
_DispProcB07
关机显示00
光机时液晶屏只显示00,提示关机
void_DispProcB07(void)
_DispProcB08
显示LE+红屏
void_DispProcB08(void)
_DispProcB09
显示==,提示加热器正在使用中。
。
void_DispProcB09(void)
_Disp_Deal
处理显示的数据
void_Disp_Deal(void)
;
constPROC_FUNCDisplayProc[]=
_DispProcB01,//满屏
_DispProcB07,//显示00
_DispProcB06,//正常显示
_DispProcB03,//E1+红屏
_DispProcB04,//E2+红屏
_DispProcB05,//E3+红屏
_DispProcB08,//LE+红屏
_DispProcB09,//==
//_DispProcB00,//清屏
_display_next
显示下一屏数据
void_display_next(void)
DisplayPointer=0;
DisplayProcess
显示内容
voidDisplayProcess(void)
DisplayProc[DisplayPointer]();
LED_Refresh
显示年和月份
voidLCD_Refresh(void)
if(LCD_interval==0)
LCD_interval=1;
_display_next();
LCD_interval--;
#ifndef_display_H_
#define_display_H_
PIC.H"
#defineBIAS0x29
#defineSYSEN0x01
#defineLCDOFF0x02
#defineLCDON0x03
#defineLCD_WDT_DIS0x05
//符号显示标志位定义
typedefunion_Dispflag
unsignedcharbyte;
struct
unsignedTemp_flag:
1;
unsignedStep5_flag:
unsignedStep4_flag:
unsignedStep3_flag:
unsignedStep2_flag:
unsignedStep1_flag:
unsignedNouse6:
unsignedNouse7:
}bits;
}_Disp;
_DispDisp_flag;
#defineF_TempDisp_flag.bits.Temp_flag//温度符号标志位
#defineF_Step5Disp_flag.bits.Step5_flag//流量5标志位
#defineF_Step4Disp_flag.bits.Step4_flag//流量4标志位
#defineF_Step3Disp_flag.bits.Step3_flag//流量3标志位
#defineF_Step2Disp_flag.bits.Step2_flag//流量2标志位
#defineF_Step1Disp_flag.bits.Step1_flag//流量1标志位
externunsignedcharLCD_interval,DisplayPointer;
externunsignedcharLCD_BUF[5];
typedefvoid(*PROC_FUNC)(void);
//函数指针类型定义
externvoid_DispProcB01(void);
externvoid_DispProcB02(void);
externvoid_DispProcB03(void);
externvoid_DispProcB04(void);
externvoid_Disp_Deal(void);
externvoidDisplayProcess(void);
externvoidLCD_Refresh(void);
externvoid_Write_Display(void);
externvoid_Display_TEST(void);
externvoidinit_LCD(void);
externvoidTest_LCD(void);
externvoidWrite_1621(unsignedcharaddr,unsignedchardata);
#endif
Even_serve.h"
/*系统配置
/*
/*
voidSYS_CONFIG(void)
//CONFIG1=0b0000111111110100;
//CONFIG2=0b0000111000011111;
/*初始化时钟
/*使用内部定时器8MHZ
voidClock_init(void)
OSCCON=0b01110011;
//内部时钟8MHZ
OSCTUNE=0X00;
//选择中心频率
/*初始化定时器0
/*定时5ms
voidTime0_init(void)
OPTION=0b00000101;
//1:
64预分频比
TMR0=0x07;
//2ms定时
T0IF=0;
//清中断标志
T0IE=1;
//开定时器0中断使能
/*初始化定时器2
voidTime2_init(void)
T2CON=0b00000001;
//1:
1预分频比;
后分频比为1:
1
PR2=0XF9;
//定时500us
TMR2IE=1;
/*初始化看门狗
//voidWDT_init(void)
//{
//WDTCON=0b00010111;
//间隔2s
//}
/*初始化串口
voidUART_init(void)
TXSTA=0b01000101;
RCSTA=0b11010000;
SPBRG=0x33;
//9600波特率,偶校验
TXIE=1;
//使能发送中断
RCIE=1;
//使能接收中断
UART_flag.byte=0x00;
//清串口标志位
TXD=1;
/*初始化复位