亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
關于單片機lcd1602多級菜單的顯示
[打印本頁]
作者:
圣無名
時間:
2017-4-18 10:46
標題:
關于單片機lcd1602多級菜單的顯示
這是自己寫的一個程序 沒有往上面寫1602的.h文件
不知道哪里出了問題,總是不能實現按下k1進入第一個菜單,按下k2進入第二個菜單,按下k3返回的功能 求大神給看一下吧 萬分感謝
#include<reg51.h>
#include<intrins.h>
#include"lcd.h"
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
typedef unsigned int u16; //對數據類型進行聲明定義
typedef unsigned char u8;
static flag =3; //標記
void delay(u16 i) //延時
{
while(i--);
}
void menu0 ()
{
Lcd1602_Write_Cmd(0x01);
LcdShowStr(0,0," welcome ") ;
}
void menu1 ()
{
Lcd1602_Write_Cmd(0x01);
LcdShowStr(0,0," nihao ") ;
}
void keyvalue()
{
if(k1==0)
{
delay(1000);
if(k1==0)
{
flag=0;
}
}
else
{
flag=3;
}
while(!k1);
if(k2==0)
{
delay(1000) ;
if(k2==0)
{
flag=1;
}
}
else
{
flag=3;
}
while(!k2);
}
void key()
{
keyvalue();
switch(flag)
{
case 0:
{
menu0();
if(k3==0)
{
delay(1000);
if(k3==0)
{
flag=3 ;
}
}
while(!k3);
break;
}
case 1:
{
menu1();
if(k3==0)
{
delay(1000);
if(k3==0)
{
flag=3 ;
}
}
while(!k3);
break;
}
case 3:
{
u8 i;
for(;i<10;i++)
{
Lcd1602_Write_Data('C');
}
break;
}
}
}
void main(void)
{
InitLcd1602();
while(1)
{
key();
}
}
復制代碼
作者:
admin
時間:
2017-4-19 04:00
現在這樣能顯示什么?
作者:
admin
時間:
2017-4-19 04:00
現在這樣能顯示什么?
作者:
octcity
時間:
2017-4-19 08:22
請多描述一下
作者:
圣無名
時間:
2017-4-19 09:54
admin 發表于 2017-4-19 04:00
現在這樣能顯示什么?
不能,應該是賦值出現問題了。具體的還在想....
作者:
bayga456
時間:
2017-4-19 10:07
static flag =3;//這fiag要不要申明是什么類型?
if(k1==0) 當k1按下
{
delay(1000); 防抖
if(k1==0) 確定k1按下
{
flag=0;
}
}
else 如果k1沒按下
{
flag=3;
}
while(!k1); 等待k1松開
意思就是說:k1按下flag=0;當程序再次掃描按鍵檢測子函數時,因為沒有按鍵按下,所以flag=3,如果其它子程序沒問題,很可能一直停止在flag=3的顯示頁面。把if(k==0)后面的else內容都去掉應該就可以了。
以上如不對,請見諒。
作者:
FxMan
時間:
2017-4-19 10:52
看看 ,學習 我是小白。
作者:
XIN_XIN
時間:
2017-4-19 15:43
在多機通信中,主機必須要能對各個從機進行識別,在51系列單片機中可以通過SCON寄存器的SM2位來實現。當串口以方式2或方式3發送數據時,每一幀信息都是11位,第9位是數據可編程位,通過給TB8置1或置0來區別地址幀和數據幀,當該位為1時,發送地址幀;該位為0時,發送數據幀。 在多機通信過程中,主機先發送某一從機的地址,等待從機的應答,所有的從機接收到地址幀后與本機地址進行比較,若相同,則將SM2置0準備接收數據;若不同,則丟棄當前數據,SM2位不變。
作者:
圣無名
時間:
2017-4-19 16:21
#include<reg51.h>
#include<intrins.h>
#include"lcd.h"
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
typedef unsigned int u16; //對數據類型進行聲明定義
typedef unsigned char u8;
static int flag =0; //標記
void delay(u16 i) //延時
{
while(i--);
}
void menu0 ()
{
Lcd1602_Write_Cmd(0x01);
LcdShowStr(0,0," hello ") ;
delay(1000);
}
void menu1 ()
{
Lcd1602_Write_Cmd(0x01);
LcdShowStr(0,0," welcome ") ;
delay(1000);
}
void menu2 ()
{
Lcd1602_Write_Cmd(0x01);
LcdShowStr(0,0," nihao ") ;
delay(1000);
}
void keyscan()
{
if(k1==0)
{
delay(1000);
if(k1==0)
{
flag=1;
}
}
if(k2==0)
{
delay(1000);
if(k2==0)
{
flag=2;
}
}
if(k3==0)
{
delay(1000);
if(k3==0)
{
flag=0;
}
}
}
void menu()
{
keyscan();
switch(flag)
{
case 0:
{
menu0();
}
break;
case 1:
{
menu1();
break;
}
case 2:
{
menu2();
break;
}
}
}
void main(void)
{
InitLcd1602();
while(1)
{
menu();
delay(5000);
}
}
已經改好了具體的功能是一開始顯示第一個菜單hello 當第一按鍵按下時顯示第二個菜單,welcome,當第二個按鍵按下時顯示第第三個菜單,當第三個按鍵按下時,顯示第一個菜單,也就是返回鍵。一開始的程序里面沒想清楚switch語句的用法所以搞錯了 。謝謝各位啦。具體的菜單想要什么就改動就可以了~
作者:
老來所學
時間:
2017-5-19 21:48
想請問, LcdShowStr(0,0," welcome ") ;這句話中的函數在H文件中怎么寫的
作者:
18750930984
時間:
2017-9-24 22:03
謝謝。。。。。。。。
作者:
wxc19960311
時間:
2017-9-26 20:03
keyvalue()這個子函數用了嗎
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1