display.docx
- 文档编号:3519106
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:19
- 大小:17.69KB
display.docx
《display.docx》由会员分享,可在线阅读,更多相关《display.docx(19页珍藏版)》请在冰豆网上搜索。
display
#include"initial.h"
#include"main.h"
#include"public.h"
#include"display.h"
unsignedcharLCD_BUF[5];
unsignedchardisp_pointer,LCD_interval,DisplayPointer;
unsignedchari2c_data;
unsignedcharSDA_SCL;
/***********************************************
*名称:
DigitTable1
*说明:
显示表格
*功能:
提起显示数据用
*调用:
*输入:
*返回值:
/***********************************************/
constunsignedcharDigitTable[]=
{
0xEB,//0
0x60,//1
0xC7,//2
0xE5,//3
0x6C,//4
0xAD,//5
0xAF,//6
0xE0,//7
0xEF,//8
0xEC,//9
};
/***********************************************
*名称:
SendBit_1621
*说明:
发送一个字节的数据
*功能:
发送一个字节的数据,低位在前
*调用:
*输入:
*返回值:
/***********************************************/
voidSendBit_1621(unsignedchardata,unsignedcharcnt)
{
unsignedchari;
for(i=0;i { if((data&0x80)==0) LCD_DATA=0; else LCD_DATA=1; LCD_WR=0; NOP(); LCD_WR=1; NOP(); data<<=1; } } /*********************************************** *名称: SendDataBit_1621 *说明: 发送一个字节的数据 *功能: 发送一个字节的数据,高位在前 *调用: *输入: *返回值: /***********************************************/ voidSendDataBit_1621(unsignedchardata,unsignedcharcnt) { unsignedchari; for(i=0;i { if((data&0x01)==0) LCD_DATA=0; else LCD_DATA=1; LCD_WR=0; NOP(); LCD_WR=1; NOP(); data>>=1; } } /*********************************************** *名称: SendCmd *说明: 发送命令 *功能: 发送命令 *调用: *输入: *返回值: /***********************************************/ voidSendCmd(unsignedcharcommand) { LCD_CS=0; SendBit_1621(0x80,3); SendBit_1621(command,9); LCD_CS=1; } /*********************************************** *名称: Write_1621 *说明: 写一个字节的数据 *功能: 写一个字节的数据 *调用: *输入: *返回值: /***********************************************/ voidWrite_1621(unsignedcharaddr,unsignedchardata) { LCD_CS=0; SendBit_1621(0xa0,3); addr<<=2; SendBit_1621(addr,6); SendDataBit_1621(data,4); LCD_CS=1; } /*********************************************** *名称: CLRFLCD1621 *说明: 清屏 *功能: 清屏 *调用: *输入: *返回值: /***********************************************/ voidCLRFLCD1621(void) { unsignedcharaddr; for(addr=0;addr<=10;addr=addr+2) Write_1621(addr,0); } /*********************************************** *名称: init_LCD *说明: 初始化LCD *功能: 初始化LCD *调用: *输入: *返回值: /***********************************************/ voidinit_LCD(void) { MSDelay(100); SendCmd(SYSEN); SendCmd(LCD_WDT_DIS); SendCmd(BIAS); SendCmd(LCDON); CLRFLCD1621(); } /*********************************************** *名称: Test_LCD *说明: 测试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; } Write_1621(2,LCD_BUF[1]); Write_1621(4,LCD_BUF[2]); Write_1621(6,LCD_BUF[3]); Write_1621(8,LCD_BUF[4]); } /*********************************************** *名称: _DispProcB01 *说明: 正常显示 *功能: 正常显示 *调用: *输入: *返回值: /***********************************************/ void_DispProcB01(void) { LCD_BUF[1]=(DigitTable[(KeyUpDown_Press_times)&0x0F]&&0x0F); LCD_BUF[2]=((DigitTable[(KeyUpDown_Press_times)&0x0F]>>4)&&0x0F); LCD_BUF[3]=(DigitTable[(KeyUpDown_Press_times>>4)&0x0F]&&0x0F); LCD_BUF[4]=((DigitTable[(KeyUpDown_Press_times>>4)&0x0F]>>4)&&0x0F); _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_ #include"PIC.H" #defineBIAS0x29 #defineSYSEN0x01 #defineLCDOFF0x02 #defineLCDON0x03 #defineLCD_WDT_DIS0x05 //符号显示标志位定义 typedefunion_Dispflag { unsignedcharbyte; struct { unsignedTemp_flag: 1; unsignedStep5_flag: 1; unsignedStep4_flag: 1; unsignedStep3_flag: 1; unsignedStep2_flag: 1; unsignedStep1_flag: 1; unsignedNouse6: 1; unsignedNouse7: 1; }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 #include"initial.h" #include"main.h" #include"public.h" #include"Even_serve.h" #include"display.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 /*定时5ms /* /***********************************************/ 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; } /*********************************************** /*初始化复位 /* /* /***********************************************/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- display