亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
51單片機12864三級菜單圖形菜單程序,很6的一個程序哦!
[打印本頁]
作者:
13976778401
時間:
2017-3-1 13:43
標題:
51單片機12864三級菜單圖形菜單程序,很6的一個程序哦!
0.png
(72.27 KB, 下載次數: 151)
下載附件
2017-3-1 23:22 上傳
完整源碼下載:
caidan12864 .zip
(207.75 KB, 下載次數: 354)
2017-3-1 13:41 上傳
點擊文件名下載附件
12864菜單
下載積分: 黑幣 -5
單片機主程序預覽:
/**************************************************************
* +---------------------------------------------------+ *
* 12864三級菜單顯示 *
* +---------------------------------------------------+ *
* *
* 此源碼版權屬 小牛 全權享有,如欲引用,敬請署名并告知 *
* 嚴禁隨意用于商業目的,違者必究,后果自負 *
* *
* 運行環境: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]);
}
}
復制代碼
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
復制代碼
作者:
wxszx
時間:
2017-9-28 20:42
下載了,參考一下
作者:
asusyt
時間:
2017-9-29 08:35
下載了學習學習
作者:
一束光的旅程
時間:
2017-9-30 09:03
謝謝樓主,學習一下
作者:
gpdt3209
時間:
2017-9-30 10:35
下載了,參考一下
作者:
1182687819
時間:
2017-9-30 19:39
樓主,切換了幾個界面,液晶屏突然就死機了,是怎么回事啊
作者:
zhaozonghui
時間:
2017-11-14 18:10
45k啊,這可是個大程序!
作者:
gengchengli
時間:
2018-6-3 20:29
謝謝樓主,學習一下
作者:
longxiuchun
時間:
2018-7-17 10:35
非常好的資料
作者:
tjpugyl
時間:
2018-7-24 14:25
正好在研究菜單,下載下來好好學習下
作者:
DX123456
時間:
2018-8-10 14:36
下載試試
作者:
luo713ok
時間:
2018-8-19 10:15
謝謝樓主分享
作者:
csy010101
時間:
2018-10-13 10:28
哈哈 好好學習一下!!
作者:
583703056A
時間:
2018-10-13 18:18
留下腳印
作者:
csy010101
時間:
2018-10-21 21:54
學習一下,看看如何搞定菜單。
作者:
周鵬
時間:
2019-5-17 18:35
不知如何移植STM32
作者:
陳仕祥
時間:
2019-6-18 22:40
樓主能貼圖片出來看看嗎
作者:
剛好中意
時間:
2019-7-7 10:08
對于我來說超牛啊,51黑有你更精彩。
作者:
user2402163
時間:
2019-7-24 14:16
看看,學習學習,
作者:
cug_zhang
時間:
2019-7-29 16:58
下載了,參考一下
作者:
aycma
時間:
2020-2-26 07:40
下載了,參考一下
作者:
神出沒
時間:
2020-2-26 10:15
不錯,記錄一下:12864多級菜單
作者:
871359508
時間:
2020-4-7 16:26
移植OLED 屏幕試試額 多謝博主
作者:
waerdeng
時間:
2020-4-7 17:18
12864多級菜單學了很久還沒弄明白,希望這次好學。
作者:
wjfw
時間:
2024-6-20 22:48
請教,我下載后怎么看不到第二圖片的代碼
作者:
joyb
時間:
2024-6-21 11:10
程序是帶字庫的,能否改成ks0108的學習下
作者:
CHUANLIUBUXI
時間:
2024-7-31 10:21
相見恨晚啊,收藏一下,以后下載
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1