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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 30973|回復: 86
打印 上一主題 下一主題
收起左側

51單片機+12864上面實現3級菜單顯示和切換

  [復制鏈接]
跳轉到指定樓層
樓主
用STC12系列的單片機在12864上面實現3級菜單顯示!其中顯示的圖片是用壇子里一網友的LOG改裝了的,但忘記是誰了。感謝那網友。



優酷視頻地址,感興趣的朋友可以去看看。
代碼可能不是很優化,望各位網友拍磚的時候手下留情。
是不是圖片太大了,怎么傳上去后圖片的顏色都變了。感興趣的還是去看看視頻吧視頻的效果比圖片好。

程序和LOG都在此壓縮包里 12864三級菜單.rar (175.29 KB, 下載次數: 914)





















評分

參與人數 3黑幣 +14 收起 理由
almsy + 3 贊一個!
sky日耀 + 7 很給力!
wangyin + 4 贊一個!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏11 分享淘帖 頂1 踩
回復

使用道具 舉報

來自 2#
ID:235868 發表于 2017-9-30 20:09 | 只看該作者
切換了幾個界面,液晶屏突然什么都不顯示了;復位也不行,斷電重啟一下換了幾個界面,又不行啦,是什么問題呀
回復

使用道具 舉報

板凳
ID:51124 發表于 2013-6-20 23:42 | 只看該作者
/**************************************************************
*	+---------------------------------------------------+	  *
*   			   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]);		
	}
}


回復

使用道具 舉報

地板
ID:51124 發表于 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
回復

使用道具 舉報

5#
ID:51265 發表于 2013-6-25 22:14 | 只看該作者
下載看看,很強大的樣子
回復

使用道具 舉報

6#
ID:33668 發表于 2013-11-20 21:51 | 只看該作者
下載看看,很強大的樣子
回復

使用道具 舉報

7#
ID:56710 發表于 2013-11-23 10:03 | 只看該作者
好像很強大
回復

使用道具 舉報

8#
ID:56710 發表于 2013-11-23 10:04 | 只看該作者
下一個看看
回復

使用道具 舉報

9#
ID:56710 發表于 2013-11-23 10:05 | 只看該作者
謝謝樓主的分享
回復

使用道具 舉報

10#
ID:56710 發表于 2013-11-23 10:05 | 只看該作者
真心的感謝樓主
回復

使用道具 舉報

11#
ID:57273 發表于 2013-11-26 00:06 | 只看該作者
謝謝樓主分享,學習一下
回復

使用道具 舉報

12#
ID:57984 發表于 2013-12-18 12:09 | 只看該作者
非常不錯,謝謝樓主,學習了
回復

使用道具 舉報

13#
ID:55219 發表于 2013-12-21 20:46 | 只看該作者
非常不錯的東東。。。。
回復

使用道具 舉報

14#
ID:27161 發表于 2013-12-23 00:32 | 只看該作者
學習學習,謝謝啦。
回復

使用道具 舉報

15#
ID:55772 發表于 2013-12-23 02:11 | 只看該作者
下載看看,很強大的樣子
回復

使用道具 舉報

16#
ID:58995 發表于 2014-2-1 20:59 | 只看該作者
O(∩_∩)O謝謝
回復

使用道具 舉報

17#
ID:58796 發表于 2014-3-6 20:35 | 只看該作者
謝謝學習了
回復

使用道具 舉報

18#
ID:59072 發表于 2014-3-11 09:24 來自觸屏版 | 只看該作者
太強大了,學習了!
回復

使用道具 舉報

19#
ID:59319 發表于 2014-3-14 17:23 | 只看該作者
看看 感謝分享
回復

使用道具 舉報

20#
ID:59780 發表于 2014-3-26 10:53 | 只看該作者
強   人
回復

使用道具 舉報

21#
ID:60316 發表于 2014-4-3 18:29 | 只看該作者
下載看看,謝謝分享。
回復

使用道具 舉報

22#
ID:46750 發表于 2014-4-6 13:34 | 只看該作者
正需要,強頂!!!!
回復

使用道具 舉報

23#
ID:52249 發表于 2014-4-17 21:41 | 只看該作者

努力學習中 
努力學習中 
回復

使用道具 舉報

24#
ID:58110 發表于 2014-4-17 22:09 | 只看該作者
真是不錯,很強大,學習了
回復

使用道具 舉報

25#
ID:61339 發表于 2014-5-2 02:27 | 只看該作者
很不錯,謝謝分享
回復

使用道具 舉報

26#
ID:61761 發表于 2014-5-13 14:55 | 只看該作者

學習學習,謝謝啦。
回復

使用道具 舉報

27#
ID:62636 發表于 2014-6-5 14:02 | 只看該作者
下載看看
回復

使用道具 舉報

28#
ID:64825 發表于 2014-8-7 09:30 | 只看該作者
不錯,學習下,
回復

使用道具 舉報

29#
ID:64910 發表于 2014-8-10 06:57 | 只看該作者
好好好
回復

使用道具 舉報

30#
ID:65585 發表于 2014-9-5 15:57 | 只看該作者
很不錯,正好要用到!
回復

使用道具 舉報

31#
ID:47760 發表于 2014-9-13 05:29 | 只看該作者
感謝樓主分享
回復

使用道具 舉報

32#
ID:66181 發表于 2014-9-15 10:49 | 只看該作者
謝謝分享
回復

使用道具 舉報

33#
ID:67235 發表于 2014-10-11 15:23 | 只看該作者
很強大的樣子
回復

使用道具 舉報

34#
ID:67573 發表于 2014-10-20 20:42 | 只看該作者
下載來研究研究
回復

使用道具 舉報

35#
ID:75994 發表于 2015-4-2 20:07 | 只看該作者
好資料!
回復

使用道具 舉報

36#
ID:77907 發表于 2015-4-24 15:18 | 只看該作者
剛好需要,謝啦~
回復

使用道具 舉報

37#
ID:35471 發表于 2015-6-7 19:58 | 只看該作者
弄二級菜單兩天了,實在是弄不出來了。參考下!
回復

使用道具 舉報

38#
ID:83349 發表于 2015-6-27 19:35 | 只看該作者
xugang 發表于 2013-6-20 23:42
**** 作者被禁止或刪除 內容自動屏蔽 ****

贊兩個
回復

使用道具 舉報

39#
ID:86621 發表于 2015-8-7 18:56 | 只看該作者
你們都自己喜歡寫頭文件啊
回復

使用道具 舉報

40#
ID:57896 發表于 2015-8-7 19:08 | 只看該作者
支持,謝謝分享~~~~!
回復

使用道具 舉報

41#
ID:78507 發表于 2015-8-31 19:45 | 只看該作者
好資料
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线一区二区三区 | 亚洲欧美一区二区三区国产精品 | 精品不卡 | 91社区视频 | 国产精选一区 | 欧美色视频免费 | 国产精品久久一区二区三区 | 亚洲电影一区二区三区 | 成人影院在线 | 一区二区三区四区国产 | 久久免费精品视频 | 日韩中文字幕第一页 | 日本不卡一区二区三区在线观看 | 日韩欧美精品一区 | 精品国产成人 | 亚洲成人三级 | 亚洲一区二区在线 | 伊人青青久久 | 在线一区二区三区 | 欧美久久久久久 | 亚洲一区精品在线 | 香蕉婷婷| 欧美日韩高清在线观看 | 日日碰狠狠躁久久躁婷婷 | 亚洲精品资源 | 久久精品欧美视频 | 国产精品海角社区在线观看 | 国产成人精品a视频一区www | 日韩久久成人 | 国产一在线观看 | 久久狠狠 | 极品久久| www.久久.com | 一级黄片一级毛片 | 亚洲精彩视频 | 亚洲一级毛片 | 午夜久久久久 | 国产精品夜夜春夜夜爽久久电影 | 一区二区三区四区免费在线观看 | 欧美一级毛片免费观看 | 伊人二区 |