導航:首頁 > 操作系統 > 單片機按鍵菜單

單片機按鍵菜單

發布時間:2022-12-14 00:17:30

單片機按鍵進行菜單選擇的編程思想

有以下幾種情況:
1.循環查詢按鍵。當按鍵按第一次時間,進入第一層循環查詢語句內部,執行恢復。不跳出該層循環,繼續查詢按鍵。當第二次按下時間,進入第二層循環查詢語句內部,執行暫停。循環結束。若想反復暫停和恢復,就在外面再加一層while(1)類似的死循環,反復執行其內部的兩層循環查詢語句。
2.用一個標志變數,記住按鍵的狀態。初始化為個值,如「暫停」,按鍵之後檢查標志變數,是「暫停」就執行「恢復」,再讓它變為「恢復」說明當前已經執行了恢復。反之亦然。
3.掉電暫停。這樣需要按鍵能觸發cpu工作。所以,需要按鍵接到外部中斷上面。中斷後可以恢復cpu工作。在中斷中再判斷是否要讓cpu掉電與否。
不知道這種方法你能接受不?還是用外部中斷。此按鍵觸發中斷後,關掉所有其他的中斷,也即ea=0(最好先用個變數記住ea,方便恢復),然後就一直在中斷中等待該按鍵第二次按下再恢復ea,最後退出中斷。

⑵ 請問如何用單片機實現液晶菜單程序中的返回上一級菜單功能

單片機!呵呵,我學的也是51系列那些亂七八糟的,大學專業課是白學了。不過業余的時候學了很多軟體,英語也很感興趣,出來就可以找自己感興趣的工作。
我是去年畢業的,出來換了5份工作,都TNND不稱心,現在還好。

我只想告訴你,公司一般錄用新人不會直接給你項目或者讓你參加一些比較重要的開發。都會給你很多簡單的東西讓你慢慢適應,老闆看中的是你這個人有沒有魄力,有沒有上進心!不會不要緊,不逼迫自己不會知道自己有多優秀,年輕人,不要自己嚇唬自己,破釜沉舟去嘗試,即便有一天你被PASS掉,至少你嘗試過,男人不僅需要責任還有勇氣!

不管你說什麼,記住回答要堅決肯定,簡潔,才能顯得出你的干練。

⑶ 51單片機液晶顯示菜單

這個題目說實在的不難,只是很繁瑣,放到這里我想沒人會給你做的。

⑷ 利用單片機的定時器和數碼管,設計一個電子時鍾

給你個電路和程序,//前幾天幫一個網友寫,單片機定時時鍾在調節功能,可以參考一下我程序

/***************************************************
* 6位數碼管顯示電子鍾
*
* 功能: 按鍵加,按鍵減, 按鍵,啟動和停止。
*
*
***************************************************/
#include "REG52.H"

sbit SHUG_01 = P2^0; //數碼管1
sbit SHUG_02 = P2^1; //數碼管2
sbit SHUG_03 = P2^2; //數碼管3
sbit SHUG_04 = P2^3; //數碼管4
sbit SHUG_05 = P2^4; //數碼管5
sbit SHUG_06 = P2^5; //數碼管6
sbit KEY0_01 = P0^0; //按鍵 啟動或停止sbit KEY0_02 = P0^1; //按鍵 加
sbit KEY0_03 = P0^2; //按鍵減
sbit KEY0_04 = P0^3; //按鍵菜單
#define LED_DATA P1 //P1數據埠
unsigned char value_temp = 0;unsigned char value_Outk = 0;
unsigned char value_shio = 8;
unsigned char value_feno = 40;
unsigned char value_miao = 0;
unsigned char code value_tab0[]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; //共陽極unsigned char code value_tab1[]={0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10}; //共陽極帶點

/*
* 延時1ms延時子函數
**/
void Delay_1ms(unsigned int Time)
{
unsigned int x, y;
for(x = Time; x > 0; x--)
for(y = 120; y > 0; y--);
}
/* * 程序運行【啟動和停止】子函數
**/
void Disp_layledketCmd(void)
{
/***小時***/
SHUG_01 = 1;
LED_DATA = value_tab0[value_shio / 10]; /*******小時的十位數顯示***************/
Delay_1ms(5);
SHUG_01 = 0;
SHUG_02 = 1;
LED_DATA = value_tab1[value_shio % 10]; /*******小時的個位數顯示***************/
Delay_1ms(5);
SHUG_02 = 0;
/***分鍾***/ SHUG_03 = 1;
LED_DATA = value_tab0[value_feno / 10]; /*******分鍾的十位數顯示***************/
Delay_1ms(5);
SHUG_03 = 0;
SHUG_04 = 1;
LED_DATA = value_tab1[value_feno % 10]; /*******分鍾的個位數顯示***************/
Delay_1ms(5);
SHUG_04 = 0;
/***秒鍾***/ SHUG_05 = 1;
LED_DATA = value_tab0[value_miao / 10]; /*******秒鍾的十位數顯示***************/
Delay_1ms(5);
SHUG_05 = 0;
SHUG_06 = 1;
LED_DATA = value_tab0[value_miao % 10]; /*******秒鍾的個位數顯示***************/
Delay_1ms(5);
SHUG_06 = 0;
}
/* * 定時器初始化定時50ms
**/
void Tero_Init(void)
{
TMOD = 0x01;
TH0 = 0x4C;
TL0 = 0x00;
ET0 = 1;
TR0 = 1;
EA = 1;
}
/* * 按鍵開關【啟動和停止】子函數
**/
void Scan_keyoutCmd(void)
{
if(KEY0_01 == 0)
{
Delay_1ms(10);
if(KEY0_01 == 0)
{
TR0 = ~ TR0;
}
while(KEY0_01 == 0);
}
if(KEY0_02 == 0) {
Delay_1ms(10);
if(KEY0_02 == 0)
{
value_miao--;
if(value_miao == -1)
{
value_feno--;
value_miao = 59;
if(value_feno == -1)
{
value_shio--;
value_feno = 59;
if(value_shio == -1)
{
value_shio = 23;
}
}
}
while(KEY0_02 == 0);
}
}
if(KEY0_03 == 0) {
Delay_1ms(10);
if(KEY0_03 == 0)
{
value_miao++;
if(value_miao == 60)
{
value_miao = 0;
value_feno++;
if(value_feno == 60)
{
value_feno = 0;
value_shio++;
if(value_shio == 24)
{
value_shio = 0;
}
}
}
while(KEY0_03 == 0); //檢測鬆手
}
}
}
/* * 函數主體
**/
int main(void)
{
P1 = P2 = P3 = 0x00;
Tero_Init();

while(1)
{
Scan_keyoutCmd();
Disp_layledketCmd(); //執行應運程序
}
}
/* * 定時器中斷服務程序
**/
void Tmero()interrupt 1
{
TH0 = 0x4C;
TL0 = 0x00;
value_temp++;
if(value_temp == 20)
{
value_temp = 0;
value_miao++;
if(value_miao == 60)
{
value_feno++;
value_miao = 0;
if(value_feno == 60)
{
value_shio++;
value_feno = 0;
if(value_shio == 24)
{
value_shio = 0;
}
}
} }
}

⑸ 單片機按鍵進行菜單選擇的編程思想

這一個視頻我看了,思路不錯,可以做一個,至於什麼思想吧!一般只是把狀態值用變數存儲起來,語句嘛!判斷選擇結構之類的,你選擇開始學習程序編輯,相信不久之後,你也能做到這一步!

⑹ 用C語言寫的多級菜單源程序(單片機),自己試驗過,不要網上拷貝過來,謝謝。

程序中首先定義了一個結構體類型,他的名字叫做kbdtabstruct,然後用這個類型定義了一個數組,該數組的長度為size-of-keybd-menu
keytab[1]={1,7,2......}
1給了結構體成員 keystateindex,也就是keytab[1].keystateindex=1;
7給了keydnstate,也就是keytab[1].keydnstate=7;……依此類推。

⑺ c51單片機如何用矩陣實現菜單功能

在完成實現菜單功能,需要在單片機的連接輸入時,更改一下驅動處理的晶元參數。
參數設置為矩陣模式,應用相關數據函數完成。

⑻ 51單片機C語言編程,4×4鍵盤控制LCD12864顯示菜單,如何設計

像這種要求,基本上可以當做一個小項目來開發了。我以前做過,想做成信號源或者示波器的那種菜單,但沒做完,主要是這個程序太大,51的內核做出來效果不好,對外的響應很不好。建議你用ARM來做,這樣看起來確實像一個菜單。

⑼ 急急急請問大家怎麼定義單片機的菜單

恐怕你想問的是怎麼實現吧.4X4的按鍵掃描後應該有個碼,這個碼就是一一對應的按鍵狀態.
我在bbs.eeworld有例子歡迎你來

閱讀全文

與單片機按鍵菜單相關的資料

熱點內容
對外漢語pdf 瀏覽:514
如何用mamp本地web伺服器 瀏覽:869
如何加密自己js代碼 瀏覽:623
排列組合a與c的演算法 瀏覽:534
如何在文件夾中找到同名內容 瀏覽:786
有什麼app文字轉韓文配音 瀏覽:372
循環宏1命令 瀏覽:35
斐波那契數列矩陣演算法 瀏覽:674
公式保護後加密不了 瀏覽:82
java跳轉到jsp 瀏覽:819
327平方根演算法 瀏覽:216
win7美化命令行終端 瀏覽:797
免加密狗圖片 瀏覽:485
一隻透明的鳥是什麼app 瀏覽:817
空氣壓縮機油批發商 瀏覽:69
linuxifexist 瀏覽:4
加密tf卡拷入文件 瀏覽:399
山西php工資 瀏覽:673
福州看病預約用什麼小程序app 瀏覽:238
php保留兩位小數不四捨五入 瀏覽:292