久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

立即注冊 登錄
返回首頁

uid:305283的個人空間

日志

12864三級菜單顯示,網上找的資源,求頂

已有 848 次閱讀2018-4-12 20:21 | 12864


/**************************************************************
* +---------------------------------------------------+  *
*     12864三級菜單顯示  *
* +---------------------------------------------------+    *
*  *
*  此源碼版權屬 小牛 全權享有,如欲引用,敬請署名并告知  *
*        嚴禁隨意用于商業目的,違者必究,后果自負  *
*             Q Q:513696765  *
*        *
*  運行環境:STC12C5A60S2單片機 12M晶振  *
*  程序說明:在12864上面實現三級菜單顯示  *
**************************************************************/
#include<reg52.h>
#include<intrins.h>
#include"def.h"
#include"mode.h"
#include"fuction.h"

void main()
{

init();
while(1)
{
menucut(0,mun,table10,table0sub[0]);
menucut(1,table0,table9,table1sub[0]);
menucut(2,table1,table8,table2sub[0]);
menucut(3,table2,table7,table3sub[0]);
menucut(4,table3,table6,table4sub[0]);
menucut(5,table4,table11,table5sub[0]);
menucut(6,table5,table12,table6sub[0]);
}
}


回復 評分 舉報

1
主題
3
帖子
31
黑幣
實習生
Rank: 1
收聽TA 發消息
地板
  樓主| xugang 發表于 2013-6-20 23:42 | 只看該作者
#ifndef _fuction_h_
#define _fuction_h_

void init()
{
w_com(0x01); //清屏
w_com(0x02); //地址-》00H
w_com(0x0c); //顯示狀態設置
w_com(0x30); //功能設定
w_com(0x80);
w_com(0x01); //清屏

}
//——————————讀忙!—————————————//
void r_busy()
{
IO=0xff;
R_S=0;
W_R=1;
E=1;
while(IO&0x80);
E=0;
}
//——————————寫指令—————————————//
void w_com(uchar com)
{
r_busy();
R_S=0;
W_R=0;
E=0;
E=1;
IO=com;
E=0;
}
//——————————擴充指令——————————————//
void w_ecom(uchar ecom)
{
w_com(0x34); //選擇8位數據發送,選擇為擴充指令 
r_busy();
R_S=0;
W_R=0;
E=0;
E=1;
IO=ecom;
E=0;
}
//——————————寫數據—————————————//
void w_dat(uchar dat)
{
r_busy();

R_S=1;
W_R=0;
E=0;
E=1;
IO=dat;
E=0;
}

void delay(uchar x)
{
uchar i,j;
for(i=0;i<x;i++)
for(j=0;j<124;j++);
}

void draw_pic(uchar *pic)
{
uchar i,j; 
w_com(0x01); //清屏

for(i=0;i<32;i++)
{
w_ecom(0x80+i);   //擴充指令,設定繪圖RAM垂直地址
w_ecom(0x80);   //擴充指令,設定繪圖RAM水平地址
for(j=0;j<16;j++)
{
w_dat(*(pic++));
}
}

for(i=0;i<32;i++)
{
w_ecom(0x80+i); //擴充指令,設定繪圖RAM垂直地址
w_ecom(0x88); //擴充指令,設定繪圖RAM水平地址
for(j=0;j<16;j++)
{
w_dat(*(pic++));
}
}
w_com(0x36);
flag=1;
}

void draw_submune(uchar *pic,uchar row)   //定義兩個變量*pic-->圖片字模的首地址;row-->子菜單要選擇的行
{
uchar i,j;
flag=0; 
w_com(0x01); //清屏

for(i=0;i<32;i++)
{
w_ecom(0x80+i);   //擴充指令,設定繪圖RAM垂直地址
w_ecom(0x80);   //擴充指令,設定繪圖RAM水平地址
for(j=0;j<16;j++)
{
if((i>(16*(row-1))) && (i<(row*16)) && row<3) //用于判斷LCD前32行的行反白
w_dat(~(*(pic++))); //如果是選擇的反白行就反顯其數據
else //否則就正常顯示其數據
w_dat(*(pic++));
}
}

for(i=0;i<32;i++)
{
w_ecom(0x80+i); //擴充指令,設定繪圖RAM垂直地址
w_ecom(0x88); //擴充指令,設定繪圖RAM水平地址
for(j=0;j<16;j++)
{
if((i>(16*(row-3))) && (i<((row-2)*16)) && row>2) //用于判斷LCD后32行的行反白
w_dat(~(*(pic++))); //如果是選擇的反白行就反顯其數據
else //否則就正常顯示其數據
w_dat(*(pic++));
}
}
w_com(0x36);   
flag=1;   //子菜單顯示標志位
}


void key()
{

if((s3==0) || (s2==0) )
{
delay(10);
if(s3==0)
{
temp++;
if(temp>6)
temp=0;
while(!s3);
}

else if(s2==0)
{
temp--;
if(temp>6)
temp=6;
while(!s2);
}
}
}

void keycut()
{
if((s1==0) || (s0==0) )
{
delay(10);
if(s1==0)
{
submune=1;
if(sub && subflag)
subflag1=1;

while(!s1);
}
if(submune==0)
return;

else if(s0==0) 
{

sub=0;
submune=0;
subflag1=0;
submune1=1;

if(sub1)
{
submune=1;
sub1=0;
sub=0;
flag=1;
subflag=0;
}
else 
{
flag=0;
submune=0;
subflag=0;
}
 
while(!s0);
}
}


}

void key_submune()
{

if((s3==0) || (s2==0))
{
delay(10);
if(s3==0) 
{
submune1++;
if(submune1>4)
submune1=1;
while(!s3);
}

else if(s2==0) 
{
submune1--;
if(submune1==0)
submune1=4;
while(!s2);
}
subflag=0;
}
}

void key_submune1()
{

if((s3==0) || (s2==0))
{
delay(10);
if(s3==0) 
{
submune2++;
if(submune2>4)
submune2=1;
while(!s3);
}

else if(s2==0) 
{
submune2--;
if(submune2==0)
submune2=4;
while(!s2);
}
subflag=0;
}
}

/****************************************************************************
* num-->第一級菜單的標志位;*add-->第一級菜單的圖片的地址入口 *
* *sbuadd第二級菜單的圖片的地址入口;*sbuadd1第三級菜單的圖片的地址入口; *
*****************************************************************************/
void menucut(uchar num,uchar *add,uchar *sbuadd,uchar *sbuadd1)  
{
while(num==temp)   //第一級菜單的標志位判斷條件
{
draw_pic(add);   //畫第一級菜單的圖形界面

/*第一級菜單界面等待時的要支持第一級菜單的切換和第二級界面的進入和返回 */
while((num==temp) && flag)
{
key(); //第一級菜單界面的切換
keycut(); //第二級界面的進入
while((num==temp) && (submune==1)) //第二級菜單的標志位判斷條件
{
draw_submune(sbuadd,submune1); //畫第二級菜單的圖形界面
subflag=1; //畫完第二級菜單的圖形界面要置位進入可以進行界面切換的循環
/*第二級菜單界面等待時的要支持第二級菜單的切換和第三級界面的進入和返回 */
while((num==temp) && (submune==1) && subflag)
{
sub=1; //第三級菜單的標志位用于區分其級數
keycut(); //第二級菜單界面的進入第三級菜單切換和返回第一級菜單
key_submune(); //第二級界面的進入
while(subflag1 && sub)
{
/*第三級菜單是一個二維數組所以在第二級進入第三級的時候要根據第二級的標志位選擇進入第三級的的地址入口*/
draw_submune(sbuadd1+((submune1-1)*1024),submune2);  //畫第三級菜單的圖形界面
subflag=1;
sub1=1;  //畫完第三級菜單的圖形界面要置位進入可以進行界面切換的循環
while(subflag1 && sub && subflag)
{
key_submune1();   //第三級界面的切換
keycut();   //第三級界面的返回
}
}
}
}
}
}
}

#endif

路過

雞蛋

鮮花

握手

雷人

評論 (0 個評論)

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

返回頂部
主站蜘蛛池模板: caoporn国产精品免费公开 | 日韩一区中文字幕 | 精品久久久久一区二区国产 | 国产成人精品一区二区三区视频 | 国产在线观 | 在线伊人网 | 国产精品国产精品国产专区不片 | 91精品国产91久久久久久 | 成人在线免费视频 | 91中文在线观看 | 男人的天堂在线视频 | 国户精品久久久久久久久久久不卡 | 欧美视频在线看 | 成年人免费网站 | 99福利视频| 女女百合av大片一区二区三区九县 | 麻豆精品国产免费 | 国产a视频 | 欧美一级在线观看 | 色综合久久久久 | 中国黄色毛片视频 | 天堂资源 | 亚洲成人自拍 | 一级大片网站 | www.国产精 | 成人小视频在线观看 | 91视频在线观看免费 | 久久久久久综合 | 一区二区三区亚洲 | 国产日韩视频 | 欧美一级在线免费 | 午夜资源 | 一区二区三区精品视频 | 日本电影免费完整观看 | 中文字幕高清 | 中文字幕视频免费 | 亚洲成人第一页 | 欧美久久一区 | 国产成人精品久久二区二区91 | 欧美日韩a | 国产免费一区二区三区最新6 |