380A-A.rar

  • WGSXSZ
    了解作者
  • C/C++
    开发工具
  • 665KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 2
    下载次数
  • 2015-05-16 09:22
    上传日期
实现AC升压功能,电线阻值估算,系统工作状态检测,以太网通讯的功能。
380A-A.rar
内容介绍
#include "config.h" #include "zimo.h" u8 line; u8 CMDCODE,DAT; u8 outx,outy; const u8 *putaddr; const u8 *zi_table; u8 LcdByteH; u8 LcdByteL; u8 ModificationFlag ; //修改标志 u8 TempFlag; //临时标志 u8 fh_wei; //符号位 u8 KeyCounter; //长按 uint16 Key_Cjnum; //按键计数器 uint16 key_time; //按键时间的主周期次数 u8 key_in; //检测到的临时按键值 u8 Key_Num; //本次键码 u8 Key_Backup; //备份键码 u8 key_change; //按键改变值 u8 LongKeyFlag; uint16 temp; //子函数局部变量 uint16 RerurnPage; //返回页 uint16 PageChange; //翻页前的页面号 uint16 lcdpage; //当前LCD页面号 uint16 lcd_new; //新的LCD页面号 uint8 auto_jump; uint8 first_time; uint8 lcd_flag; uint8 BitFlag; //临时位标志 uint8 BitStorage; //需要存储位标志 uint16 *addr; //变量地址 uint8 MinusStorage; //负数标志 uint8 edit_enable; uint8 mima_flag; uint8 alm_no; uint16 Cur_RM_No; //当前选择的模块号 uint16 history_No; //历史记录编号 uint8 relay_no; u8 switch_no; /********************************************************************************************************** ** 函数名称 :delay() ** 函数功能 :软件延时 **********************************************************************************************************/ void delay(uint16 kk) { for(;kk>0;kk--); } //*********************************************************** u8 getkey() { u8 i,k,kk; kk = FIO0PIN2; kk = (kk >> 3) & 0x07; k = kk; for(i=0;i<10;i++) { delay(50); kk = FIO0PIN2; kk = (kk >> 3) & 0x07; if(kk != k) { k = kk; i=0; } } k = k^0x07; return(k); } //********************************************* void KeyDeal(void) { Key_Num = getkey(); //获得最新按键值 if(Key_Num == Key_Backup) { if(key_in&Key_Num) { Key_Cjnum++; if((Key_Cjnum >3)&&(Key_Cjnum <10)) { Key_Cjnum=10; key_change=key_in; key_time=100; } } } else { key_in=Key_Num^Key_Backup; Key_Backup=Key_Num; Key_Cjnum=0; LongKeyFlag=0; KeyCounter=0; LcdLightFlag=1; //开背光 LcdLightDelay=0; //背光计时清零 } // 计数器自加 if(Key_Cjnum>key_time) //当大于1s时:判断为长按键 { key_change=Key_Num; //存储键值 Key_Cjnum=10; key_time=30; LongKeyFlag=1; } } /*********************************************************** *20110330 * 函数功能 :按键功能响应 *入口参数:PageUp:上翻页 PageDown:下翻页 ***********************************************************/ void KeyChange(uint16 PageDown,uint16 PageUp) { switch(key_change) { case OK:if(LongKeyFlag){LongKeyFlag=0x5A;} break; case DOWN: { lcdpage=PageDown; lcd_new=1; }break; case UP: { lcdpage=PageUp; lcd_new=1; }break; default: break; } key_change=0; }/**/ /*********************************************************** *LXH20110331 * 函数功能 :按键功能响应 *入口参数:PageUp:上翻页 PageDown:下翻页 OK:确认 ***********************************************************/ void KeyChange_OK(uint16 ok,uint16 PageDown,uint16 PageUp) { switch(key_change) { case OK:if(LongKeyFlag){LongKeyFlag=0x5A;break;} lcdpage = ok; lcd_new = 1; break; case DOWN: { lcdpage = PageDown; lcd_new = 1; }break; case UP: { lcdpage = PageUp; lcd_new = 1; }break; default: break; } key_change=0; }/**/ //********************************************* void hextobcd2(u8 i) { u8 k; k=i%100; LcdByteL=k/10; LcdByteL<<=4; LcdByteL+=k%10; } //********************************************* void hextobcd(uint16 i) { u8 k; k=i/100; LcdByteH=k/10; LcdByteH<<=4; LcdByteH+=k%10; k=i%100; LcdByteL=k/10; LcdByteL<<=4; LcdByteL+=k%10; } //********************************************* uint16 bcdtohex() { uint16 i; u8 k; k=LcdByteH>>4; k*=10; k+=LcdByteH&0x0f; i=k*100; k=LcdByteL>>4; k*=10; k+=LcdByteL&0x0f; i+=k; return(i); } //********************************************* u8 bcdtohex2() { u8 i; u8 k; k=LcdByteL>>4; k*=10; i=LcdByteL&0x0f; i+=k; return(i); } //********************************************* void printmcmd() { FIO1CLR = A0; delay(25); FIO1SET = E1; delay(50); FIO1CLR = PORT; FIO1SET = CMDCODE<<18; delay(50); FIO1CLR = E1; delay(25); FIO1SET = PORT; delay(5); FIO1SET = E1; delay(2); } //********************************************* void printmdat() //在显示屏左边(主驱动)输出数据 { FIO1SET = A0; delay(25); FIO1SET = E1; delay(50); FIO1CLR = PORT; FIO1SET = DAT<<18; delay(50); FIO1CLR = E1; delay(25); FIO1SET = PORT; delay(5); FIO1SET = E1; delay(2); } //********************************************* void printscmd() ////在显示屏右边输出指令 { FIO1CLR = A0; delay(25); FIO1SET = E2; delay(50); FIO1CLR = PORT; FIO1SET = CMDCODE<<18; delay(50); FIO1CLR = E2; delay(25); FIO1SET = PORT; delay(5); FIO1SET = E2; delay(2); } //********************************************* void printsdat() //在显示屏右边输出数据 { FIO1SET = A0; delay(25); FIO1SET = E2; delay(50); FIO1CLR = PORT; FIO1SET = DAT<<18; delay(50); FIO1CLR = E2; delay(25); FIO1SET = PORT; delay(5); FIO1SET = E2; delay(2); } //********************************************* void clear() //清屏 { u8 i,j; for(i=0;i<4;i++) { CMDCODE=0xB8|i; //Page Address set printmcmd(); printscmd(); CMDCODE=0X00; printmcmd(); printscmd(); for(j=0;j<61;j++) { CMDCODE=j; printmcmd(); printscmd(); DAT=0x00; printmdat(); printsdat(); } } } //********************************************* void clearline0() //清屏 { u8 i,j; for(i=0;i<2;i++) { CMDCODE=0XB8|i; //Page Address set printmcmd(); printscmd(); CMDCODE=outx; printmcmd(); printscmd(); for(j=outx;j<61;j++) { CMDCODE=j; printmcmd(); printscmd(); DAT=0x00; printmdat(); printsdat(); } } } //********************************************* void clearline1() //清屏 { u8 i,j; for(i=0;i<2;i++) { CMDCODE=0XBA|i; //Page Address set printmcmd(); printscmd(); CMDCODE=outx; printmcmd(); printscmd(); for(j=outx;j<61;j++) { CMDCODE=j; printmcmd(); printscmd(); DAT=0x00; printmdat(); printsdat(); } } } //********************************************* void init_1520() //初始化显示屏 { CMDCODE=0xE2; printmcmd(); printscmd(); CMDCODE=0xA9; printmcmd();printscmd(); CMDCODE=0xD0; printmcmd();printscmd(); //START LINE clear(); CMDCODE=0xAF; printmcmd();printscmd(); //DISP ON } //********************************************* void put_char(u8 k) //输出一个字节 { u8 i; u8 l; if(outx<61) //如果在左屏显示 { if((outx+k)<=61) { CMDCODE=0xB8; //设置显示页地址 X address if(outy)
评论
    相关推荐