亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? z12864.c

?? 12864 proteus c 菜單仿真 89C51
?? C
字號:


//[字符圖象輸出文件=hzk.c]
//[字體名稱=宋體]
//[字體大小=16]
//[字節方向=垂直]
//[字位順序=從低到高]

#include <reg51.h>
#include <math.h>
#include <hzk.c>


#define UP 0xfe
#define DOWN 0xfd
#define LEFT 0xfb
#define RIGHT 0xf7
#define ESC 0xdf
#define ENTER 0xef

#define BLACK   1
#define WHITE	0


#define MENU_BACK_COLOR  WHITE   //定義菜單系統當中的背景色 
#define MENU_FONT_COLOR  BLACK   //定義菜單系統當中的文字色 
#define MENU_SELE_COLOR   BLACK//定義菜單系統當中被選擇的菜單項背景色 
#define MENU_SELF_COLOR    WHITE //定義菜單系統當中被選擇的菜單項文字色 


#define Y_WIDTH_MENU 16
#define Dis_Menu_Num  4


#define	 Dis_X_MAX   127
#define  Dis_Y_MAX	  64
#define Key  P1

 unsigned char First_Index_old=0xff ;
 unsigned char y_Index_old=0xff	 ;


code unsigned char Menu_String01[]={"繪點"}; 
code unsigned char Menu_String02[]={"繪直線"}; 
code unsigned char Menu_String03[]={"繪矩形"}; 
code unsigned char Menu_String04[]={"字符顯示"}; 
code unsigned char Menu_String05[]={"幫助"}; 

code unsigned char Menu_String06[]={"單個西文字符"};
code unsigned char Menu_String07[]={"西文字符串"}; 
code unsigned char Menu_String08[]={"中文字符"}; 
code unsigned char Menu_String09[]={"返回"}; 


 code unsigned char Menu_List01_Config[]={5}; 
code unsigned char Menu_List02_Config[]={4}; 



code unsigned char *Menu_List01[]=// 
{
(unsigned char *)Menu_List01_Config,
(unsigned char *)Menu_String01, 
(unsigned char *)Menu_String02,
(unsigned char *)Menu_String03, 
(unsigned char *)Menu_String04,
(unsigned char *)Menu_String05
}; 
code unsigned char *Menu_List02[]=// 
{
(unsigned char *)Menu_List02_Config,
(unsigned char *)Menu_String06, 
(unsigned char *)Menu_String07,
(unsigned char *)Menu_String08, 
(unsigned char *)Menu_String09
}; 


unsigned char data Lcd_CurrentX,Lcd_CurrentY,Lcd_Mask;
unsigned char code LeftMask[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80};
unsigned char code RightMask[]={0xff,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f};
unsigned char code Mask1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char code Mask2[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

//前兩位由5個口線決定,見SMG12864說明書 基本操作時序
//Epin—p2.7 R/W—p2.1 cs1—p2.3 cs2—p2.2 RS—p2.0
unsigned char xdata Lcd_Chip1_Cmd_W_Reg _at_ 0x8800;
unsigned char xdata Lcd_Chip2_Cmd_W_Reg _at_ 0x8400;
unsigned char xdata Lcd_Chip1_Data_W_Reg _at_ 0x8900;
unsigned char xdata Lcd_Chip2_Data_W_Reg _at_ 0x8500;
unsigned char xdata Lcd_Chip1_Data_R_Reg _at_ 0x8b00;
unsigned char xdata Lcd_Chip2_Data_R_Reg _at_ 0x8700;
unsigned char xdata Lcd_Chip1_Sta_R_Reg _at_ 0x8a00;
unsigned char xdata Lcd_Chip2_Sta_R_Reg _at_ 0x8600;

#define LCD_CMD_COL  0x40
#define LCD_CMD_PAGE 0xB8
#define LCD_CMD_ON   0x3F
#define LCD_CMD_OFF  0x3E
#define LCD_CMD_STARTLINE 0xC0
#define LCD_LEFT 0
#define LCD_TOP  0
#define LCD_RIGHT 127
#define LCD_BOTTOM 63

//延時子程序
void delay(unsigned int t)
{  unsigned int i,j;
   for(i=0;i<t;i++)
      for(j=0;j<10;j++)
         ;
}

//片1測忙
void lcdwaitidle1(void)
{  while(((Lcd_Chip1_Sta_R_Reg)&0x80)==0x80);
}

//片2測忙
void lcdwaitidle2(void)
{  while(((Lcd_Chip2_Sta_R_Reg)&0x80)==0x80);
}

//寫指令代碼到片1
void lcdwc1(unsigned char cmdcode)
{  lcdwaitidle1();
   Lcd_Chip1_Cmd_W_Reg=cmdcode;
}

//寫指令代碼到片2
void lcdwc2(unsigned char cmdcode)
{  lcdwaitidle2();
   Lcd_Chip2_Cmd_W_Reg=cmdcode;
}

//寫數據到片1
void lcdwd1(unsigned char dispdata)
{  lcdwaitidle1();
   Lcd_Chip1_Data_W_Reg=dispdata;
}

//寫數據到片2
void lcdwd2(unsigned char dispdata)
{  lcdwaitidle2();
   Lcd_Chip2_Data_W_Reg=dispdata;
}

//讀片1數據
unsigned char lcdrd1(void)
{  lcdwaitidle1();
   return Lcd_Chip1_Data_R_Reg;
}

//讀片2數據
unsigned char lcdrd2(void)
{  lcdwaitidle2();
   return Lcd_Chip2_Data_R_Reg;
}

//寫指令代碼
void lcdwc(unsigned char cmdcode)
{  if((Lcd_CurrentX)<0x40)
      lcdwc1(cmdcode);
   else
      lcdwc2(cmdcode);
}

//寫數據
void lcdwd(unsigned char dispdata)
{  if(Lcd_CurrentX<64)
      lcdwd1(dispdata);
   else
      lcdwd2(dispdata);
}

//內部數據地址指針定位
void lcdpos(void)
{  lcdwc(LCD_CMD_COL|(Lcd_CurrentX&0x3f));      //設置地址列指針
   lcdwc(LCD_CMD_PAGE|((Lcd_CurrentY/8)&0x7));  //設置地址頁指針
}

//讀數據
unsigned char lcdrd(void)
{  unsigned char i;
   lcdpos();
   if(Lcd_CurrentX<64)
   {  i=lcdrd1();
      i=lcdrd1();        //讀兩次
   }
   else
   {  i=lcdrd2();
      i=lcdrd2();
   }
   lcdpos();
   return i;
}

//當前坐標移動到下一個點
void lcdcursornext(void)
{  Lcd_CurrentX++;
   if(Lcd_CurrentX>LCD_RIGHT)
   {  Lcd_CurrentX=LCD_LEFT;
      Lcd_CurrentY+=8;
      if(Lcd_CurrentY>LCD_BOTTOM)
         Lcd_CurrentY=LCD_TOP;
   }
}

void displaybyte(unsigned char dispdata)
{  lcdpos();         //內部數據地址指針定位
   lcdwd(dispdata);  //寫數據
   lcdcursornext();  //當前坐標移動到下一個點
}

//整屏顯示
void lcdfill(unsigned char FillData)
{  for(Lcd_CurrentX=LCD_LEFT,Lcd_CurrentY=LCD_TOP;1;)
   {  displaybyte(FillData);
      if((Lcd_CurrentX==LCD_LEFT)&&(Lcd_CurrentY==LCD_TOP))
         break;
   }
}
/*//填充矩形
void rectfill(signed char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char FillData)
{  for(Lcd_CurrentX=x0,Lcd_CurrentY=y0;1;)
   {  displaybyte( FillData);
      if((Lcd_CurrentX==x1)&&(Lcd_CurrentY==y1))
         break;
   }
}

  */























#include <display.c>
#include <point.c>


 
//=====================================================================//
//函數:void UpDate_Menu(unsigned char First_Index,unsigned char Menu_Index, unsigned char ** Menu_List) 
//描述:刷新整屏菜單顯示函數 
//參數:First_Index  當面顯示頁的第一條菜單號 
//   Menu_Index   當前處于選用的菜單項 
//    Menu_List    菜單資源鏈表指針 
//返回:無 
//注意:無         
//=====================================================================//
void UpDate_Menu(unsigned char First_Index,unsigned char Menu_Index,unsigned char** Menu_List) 
{ 
 unsigned int y_width,y_Index; 
 unsigned char List_Num,i,x; 
  List_Num = (unsigned int)**Menu_List; 
 y_width = Y_WIDTH_MENU; 
  y_Index = 0; 
  while(First_Index>List_Num) First_Index = List_Num; 
  if(List_Num>Dis_Menu_Num) List_Num = Dis_Menu_Num; 
  if(First_Index_old!=First_Index)             
 { 
  lcdfill(WHITE);         //清屏 
   if(y_Index_old==0xff)              
   { 
   rectfill(0,0,Dis_X_MAX, y_width-1,MENU_SELE_COLOR); 
   i=First_Index+1; 
   put_str_xy(x,y_Index,(unsigned char *)Menu_List[i++],MENU_FONT_COLOR);
   y_Index = y_Index+Y_WIDTH_MENU; 
   for(;i<List_Num+1;i++) 
   { 
   put_str_xy(x,y_Index,(unsigned char *)Menu_List[i],MENU_SELF_COLOR) ;
   y_Index = y_Index+Y_WIDTH_MENU; 
   } 						  
   } 
    else      
   { 
   y_Index_old = Menu_Index-First_Index; 
   rectfill(0,y_Index_old*Y_WIDTH_MENU,Dis_X_MAX, 
      y_Index_old*Y_WIDTH_MENU+Y_WIDTH_MENU-1,WHITE); 
   i=First_Index+1; 
   while(List_Num) 
   { 
    if((i-1)==Menu_Index) put_str_xy(x,y_Index,(unsigned char *)Menu_List[i],MENU_FONT_COLOR);       
   else put_str_xy(x,y_Index,(unsigned char *)Menu_List[i],MENU_SELF_COLOR);
    y_Index = y_Index+Y_WIDTH_MENU; 
    i++; 
	     List_Num--; 
   } 
   } 
   First_Index_old = First_Index;   
 } 
 else              
 { 
   y_Index = y_Index_old-First_Index_old; 
   y_Index = y_Index*Y_WIDTH_MENU; 
   
   rectfill(0,y_Index,Dis_X_MAX, y_Index+Y_WIDTH_MENU-1,MENU_BACK_COLOR); 
   put_str_xy(x,y_Index,(unsigned char *)Menu_List[y_Index_old+1],MENU_SELF_COLOR); 
    y_Index = Menu_Index-First_Index; 
   y_Index = y_Index*Y_WIDTH_MENU; 
	    rectfill(0, y_Index,Dis_X_MAX, y_Index+Y_WIDTH_MENU-1,MENU_SELE_COLOR); 
   put_str_xy(x,y_Index,(unsigned char *)Menu_List[Menu_Index+1],MENU_FONT_COLOR); 
 } 

  y_Index_old = Menu_Index; 
} 


//=====================================================================// 
void Redraw_Menu(unsigned char First_Index,unsigned char Menu_Index,unsigned char** Menu_List) 
{ 
// unsigned char *Menu_Config; 
 //First_Index_old=0xff; 
 UpDate_Menu(First_Index,Menu_Index,Menu_List); 
} 
//=====================================================================// 


//初始化
void lcdreset()
{  lcdwc1(LCD_CMD_ON);
   lcdwc2(LCD_CMD_ON);               //開顯示
   lcdwc1(LCD_CMD_STARTLINE);
   lcdwc2(LCD_CMD_STARTLINE); //設置顯示初始行
}







//初始化菜單
void Init_Menu (unsigned char* Menu_List)
{
    
  UpDate_Menu(0,0,Menu_List);

}

//=====================================================================// 
//函數:unsigned char GetMLNum(unsigned char ** Menu_List) 
//描述:獲取菜單資源的菜單項個數函數 
//參數: Menu_List    菜單資源鏈表指針 
//返回:菜單項個數 
//注意:無         
//=====================================================================// 

unsigned char GetMLNum(unsigned char **Menu_List) 
{ 
 unsigned char uiTemp; 
  uiTemp = (unsigned char)**Menu_List; 
 return uiTemp-1; 
} 

//=====================================================================// 
//函數:unsigned char GetMLiNum_Page(unsigned char ** Menu_List) 
//描述:獲取菜單資源在一屏可以顯示的菜單項個數函數 
//參數: Menu_List    菜單資源鏈表指針 
//返回:菜單項個數 
//注意:無         
//=====================================================	//
unsigned char GetMLiNum_Page(unsigned char** Menu_List) 
{ 
 unsigned char uiTemp; 
 unsigned char *Menu_Config; 
  Menu_Config = (unsigned char *)(Menu_List[0]); 
  uiTemp = *(Menu_Config+3); 
  uiTemp = (Dis_Y_MAX+1)/uiTemp;      // 
 return uiTemp; 
} 


void  Show_DotTest()
{
 unsigned char i;
 lcdfill(WHITE);
 for(i=0;i<100;i++)
 {
  pointxy(i*3,i*i,1);
 }
 }
 
 void Show_LineTest()
 {

   unsigned char uikey,key_flag;
   lcdfill(WHITE);
   for(i=1;i<10;i++)
   {
    linexy(0,0,100,11*i,1);
   }
 }
  void  Show_RectangleTest()
  {
    unsigned char i;
	lcdfill(WHITE);
	for(i=1;i<40;i++)
	{
	  rect(i,i,i*2,i*2,1);
	}
  
  }
 /* void Show_HelpTest(); 
  {
    put_str_xy(0,0,)
  }
  */


main()
 
{
 unsigned char uiKey=0; 
 unsigned char Item_Num,Update_Flag,Enter_Flag=0; 
 unsigned char PageItem_Num; 
 unsigned char First_Index=0,Active_Index=0,Temp_Index=0; 
   
  //  Key_Initial();           //鍵盤掃描初始化(端口) 
  //  LCD_Init();            //初始化LCD 
  Item_Num = GetMLNum(Menu_List01);      //獲取要顯示的菜單的菜單項個數 
  PageItem_Num = GetMLiNum_Page((unsigned char **)Menu_List01);//獲取顯示的菜單的頁數 
  Init_Menu((unsigned char**)Menu_List01); 
 while(1) 
 { 
  uiKey = Key;     //獲取鍵值 
  if(uiKey)       //如有鍵按下則響應 
   { 
   switch(uiKey)     //判斷鍵值進行分支控制界面 
   { 
    case ENTER:    //確定鍵按下 
     Enter_Flag=1;   //enter flag set 
     break; 
    case DOWN:    //down  向下鍵按下 
     if(Active_Index<Item_Num)  
     { 
      Active_Index++; 
      if(Temp_Index<PageItem_Num-1) Temp_Index++; 
	      else if(First_Index<Item_Num) First_Index++; 
      Update_Flag = 1; 
     } 
     break; 
    case UP:    //up  向上鍵按下 
     if(Active_Index>0) 
     { 
      Active_Index--; 
      if(Temp_Index>0) Temp_Index--; 
      else if(First_Index>0) First_Index--; 
      Update_Flag = 1; 
     } 
     break; 
    default:break; 
   } 
   } 
  if(Update_Flag)      //Update_Flag 為1時刷新菜單 
   { 
   UpDate_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01); 
   Update_Flag=0; 
   } 
  if(Enter_Flag)      //有確定鍵按下時,則進入相應的功能函數 
   { 
   Enter_Flag = 0; 
	   switch(Active_Index) 
   { 
    case 0:      //”繪點”菜單項 
	 Show_DotTest();
	 Redraw_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01); 
     Update_Flag = 1; 
     break;  
    case 1:       //”繪直線”菜單項 
     Show_LineTest(); 
     Redraw_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01); 
     Update_Flag = 1; 
     break;  
    case 2:       //”繪矩形”菜單項 
   Show_RectangleTest(); 
     Redraw_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01); 
     Update_Flag = 1; 
     break; 
    case 3:       //進入二級菜單 
 //    CharTest_Menu(); 
     Redraw_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01); 
     Update_Flag = 1; 
     break;  
    case 4:       //”幫助”菜單項 
    Show_HelpTest(); 
     Redraw_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01); 
     Update_Flag = 1; 
     break; 
    default:break; 
   }  
   } 
       // KeyScan_Service();   //鍵盤掃描的服務程序,最好在1KHz的定時/時基中斷調用 
 } 
} 
 
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品乱码久久久久久黑人| 精一区二区三区| 免费观看在线综合| 99久久婷婷国产综合精品| 9191成人精品久久| 日韩伦理电影网| 国产一区二区女| 91精品国产欧美一区二区成人| 成人欧美一区二区三区1314| 久久99精品国产麻豆婷婷洗澡| 色香蕉成人二区免费| 国产欧美日韩卡一| 国产伦精品一区二区三区免费| 欧美精品国产精品| 亚洲精品大片www| 成人一区二区三区| 国产亚洲一区二区在线观看| 日本美女一区二区| 欧美电影在线免费观看| 依依成人综合视频| 在线中文字幕一区| 亚洲一区二区精品久久av| 夫妻av一区二区| 久久精品夜色噜噜亚洲aⅴ| 久久国产生活片100| 欧美一区永久视频免费观看| 日韩精品视频网| 欧美美女一区二区| 日韩在线一区二区三区| 欧美日韩在线直播| 亚洲一区二区在线免费看| 欧美精品一卡两卡| 午夜伦欧美伦电影理论片| 欧美性xxxxxxxx| 亚洲国产精品久久不卡毛片| 色综合久久综合网| 亚洲综合一区二区| 一本久久a久久免费精品不卡| 日本一二三四高清不卡| 大白屁股一区二区视频| 国产精品青草综合久久久久99| 国产·精品毛片| 中文字幕日韩一区| 91成人免费在线视频| 一级做a爱片久久| 欧美人与禽zozo性伦| 婷婷丁香激情综合| 精品入口麻豆88视频| 国产高清精品网站| 亚洲乱码国产乱码精品精小说 | 欧美日本高清视频在线观看| 天堂va蜜桃一区二区三区| 日韩免费高清av| 国产黄色精品网站| 亚洲精品欧美在线| 欧美成人video| 国产福利不卡视频| 亚洲男帅同性gay1069| 欧美三级中文字| 激情综合色播五月| 国产精品久久夜| 欧美伦理视频网站| 国内偷窥港台综合视频在线播放| 亚洲国产高清在线| 欧美巨大另类极品videosbest| 久久国产麻豆精品| 一色桃子久久精品亚洲| 欧美日产在线观看| www.66久久| 偷窥少妇高潮呻吟av久久免费| 2020国产精品自拍| 欧美亚洲国产一区二区三区| 免费成人在线观看视频| 亚洲欧洲精品一区二区精品久久久 | 99国产精品久| 肉丝袜脚交视频一区二区| 久久精品这里都是精品| 欧美性感一区二区三区| 国产成人一区在线| 青娱乐精品视频| 亚洲欧洲国产日本综合| 日韩精品影音先锋| 91免费视频网| 国产精品综合av一区二区国产馆| 亚洲国产日韩精品| 国产精品电影一区二区三区| 欧美一级在线免费| 欧美日韩视频第一区| 99久久国产综合精品麻豆| 久久99久久99精品免视看婷婷| 亚洲综合色成人| 国产精品天美传媒| 久久先锋影音av| 欧美一区午夜视频在线观看 | 亚洲色图一区二区三区| 久久人人97超碰com| 欧美一区二区三区四区视频| 欧美亚洲图片小说| 99久久精品国产麻豆演员表| 国产成人免费在线观看不卡| 免费欧美高清视频| 日韩黄色一级片| 一区二区三区不卡视频在线观看| 国产精品久久久久久久久免费丝袜 | 亚洲国产欧美在线人成| 国产精品动漫网站| 国产日韩欧美a| 精品国产制服丝袜高跟| 日韩一级大片在线观看| 欧美日韩精品一区视频| 在线这里只有精品| 欧美性欧美巨大黑白大战| 色综合久久中文字幕综合网| 成人国产在线观看| 成人免费视频caoporn| 国产精品18久久久久久vr| 91麻豆swag| 一本大道久久a久久精二百| 色综合咪咪久久| 日本福利一区二区| 欧美网站一区二区| 欧美精品在线观看播放| 日韩亚洲欧美一区二区三区| 日韩美一区二区三区| 久久亚洲一区二区三区明星换脸| 精品女同一区二区| 国产喂奶挤奶一区二区三区 | 精品久久久久一区| 久久久www成人免费无遮挡大片| 精品国精品国产| 久久久国际精品| 国产精品久久久久影院老司 | 日本特黄久久久高潮| 麻豆高清免费国产一区| 国产一区二区三区四区在线观看| 国产精品夜夜爽| 91丨九色丨国产丨porny| 欧美性三三影院| 精品日韩欧美一区二区| 国产精品色在线观看| 亚洲一区二区视频在线观看| 美女尤物国产一区| 国产不卡视频一区| 欧美手机在线视频| 欧美大片顶级少妇| 亚洲天堂网中文字| 日韩av电影免费观看高清完整版 | 91久久精品一区二区| 欧美三级午夜理伦三级中视频| 日韩一区二区三区av| 国产视频一区不卡| 亚洲综合色自拍一区| 久久99国产精品久久99果冻传媒| 成人高清在线视频| 欧美日韩一卡二卡| 国产婷婷一区二区| 亚洲成人av在线电影| 国产乱码精品一区二区三区忘忧草| 91小视频免费观看| 久久这里都是精品| 亚洲图片欧美一区| 成人精品视频一区二区三区| 欧美色视频在线观看| 国产精品污www在线观看| 亚洲丰满少妇videoshd| 成人一区二区三区视频在线观看| 欧美精品黑人性xxxx| 最新国产の精品合集bt伙计| 久久9热精品视频| 欧美视频三区在线播放| 国产精品午夜电影| 蜜臀av国产精品久久久久| 97精品久久久午夜一区二区三区| 精品久久久久久久人人人人传媒 | 国产精品五月天| 蜜臂av日日欢夜夜爽一区| 欧美在线观看一区二区| 欧美国产97人人爽人人喊| 美女视频黄久久| 欧美日韩一区中文字幕| 亚洲蜜臀av乱码久久精品蜜桃| 国产精品资源在线看| 日韩欧美亚洲另类制服综合在线| 亚洲午夜在线电影| 97成人超碰视| 中文字幕一区二区三区色视频 | 91搞黄在线观看| 日韩美女视频19| 高清久久久久久| 国产精品入口麻豆原神| 成人av中文字幕| 国产欧美精品一区二区色综合| 国产尤物一区二区| 久久欧美一区二区| 国产一区二区三区免费观看| 日韩一区二区三区免费看| 五月婷婷综合在线| 777奇米四色成人影色区| 午夜视频一区二区三区| 欧美一区二区三区视频在线|