靜態數碼管顯示、動態數碼管顯示、矩陣按鍵
//靜態數碼管顯示
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//顯示0~F的值
void main()
{
P0=~smgduan[0];//顯示0
while(1);
}
//動態數碼管顯示
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//顯示0~F的值
void delay(u16 i)
{
while(i--);
}//i=1時,大約延時10us
void DigDisplay()//數碼管動態掃描函式,迴圈掃描8個數碼管顯示
{
u8 i;
for(i=0;i<8;i++)
{
switch(i) //位選,選擇點亮的數碼管,
{
case(0):
LSA=0;LSB=0;LSC=0; break;//顯示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//顯示第1位
case(2):
LSA=0;LSB=1;LSC=0; break;//顯示第2位
case(3):
LSA=1;LSB=1;LSC=0; break;//顯示第3位
case(4):
LSA=0;LSB=0;LSC=1; break;//顯示第4位
case(5):
LSA=1;LSB=0;LSC=1; break;//顯示第5位
case(6):
LSA=0;LSB=1;LSC=1; break;//顯示第6位
case(7):
LSA=1;LSB=1;LSC=1; break;//顯示第7位
}
P0=smgduan[i];//傳送段碼
delay(100); //間隔一段時間掃描
P0=0x00;//消隱********************************
}
}
void main()
{
while(1)
{
DigDisplay();
}
}
//矩陣按鍵
/*實現現象:下載程式後數碼管顯示0,按下矩陣按鍵上的按鍵顯示對應的數字
S1-S4:0-3
S5-S8:4-7
S9-S12:8-B
S13-S16:C-F。
*/
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
#define GPIO_DIG P0
#define GPIO_KEY P1
u8 KeyValue; //用來存放讀取到的鍵值
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//顯示0~F的值
void delay(u16 i)
{
while(i--);
}
void KeyDown(void)//檢測有按鍵按下並讀取鍵值
{
char a=0;
GPIO_KEY=0x0f;
if(GPIO_KEY!=0x0f)//讀取按鍵是否按下
{
delay(1000);//延時10ms進行消抖
if(GPIO_KEY!=0x0f)//再次檢測鍵盤是否按下
{
//測試列
GPIO_KEY=0X0F;
switch(GPIO_KEY)
{
case(0X07): KeyValue=0;break;
case(0X0b): KeyValue=1;break;
case(0X0d): KeyValue=2;break;
case(0X0e): KeyValue=3;break;
}
//測試行
GPIO_KEY=0XF0;
switch(GPIO_KEY)
{
case(0X70): KeyValue=KeyValue;break;
case(0Xb0): KeyValue=KeyValue+4;break;
case(0Xd0): KeyValue=KeyValue+8;break;
case(0Xe0): KeyValue=KeyValue+12;break;
}
while((a<50)&&(GPIO_KEY!=0xf0)) //檢測按鍵鬆手檢測
{
delay(1000);
a++;
}
}
}
}
void main()
{
while(1)
{
KeyDown();
GPIO_DIG=~smgduan[KeyValue];
}
}
相關文章
- 數碼管顯示動態資料
- 8位數碼管動態掃描顯示
- 51微控制器開發系列三_數碼管動態掃描顯示
- jQuery 動態數字顯示jQuery
- TMS320F28335實現數碼管顯示S3
- LED驅動晶片(IC)-VK1616 SOP/DIP16,LED數顯/數碼管顯示驅動晶片晶片
- VK16K33LED數碼管顯示驅動晶片/LED數顯驅動晶片內建顯示記憶體及RC振盪電路晶片記憶體
- elementui 如果變數為1 顯示 開啟,2顯示關閉。表格怎麼根據狀態碼顯示狀態值UI變數
- 多位數碼管動態掃描原理分析
- 列舉(矩陣消除、七段數碼管)矩陣
- VK1629B LED數碼管顯示驅動晶片顯示模式 12 段×8 位 鍵掃描(8*4bit)3/4線介面晶片模式
- LED驅動IC,數顯驅動控制電路-數碼管顯示驅動晶片-VK1629 LQFP44技術資料晶片
- VB原始碼推薦: 動態的顯示/隱藏start按鈕 (轉)原始碼
- 自定義progressBar顯示靜態資料
- alv動態顯示列
- Tree動態顯示Icon
- 基於EP4CE6F17C8的FPGA數碼管動態顯示例項FPGA
- 動態顯示:文字框字數(輸入還剩多少字)
- 手把手教你完成數字動態變化顯示效果
- 血氧儀抗干擾LED數顯/數碼管顯示驅動晶片(IC)-VK1S68C SSOP24提供FAE技術支援晶片
- 動態內表及動態ALV顯示(轉)
- TM1650/AIP1650共陰數碼管顯示驅動晶片代換GN1650AI晶片
- VC單按鍵控制輸入輸出程式實驗 並顯示狀態標誌變數值變數
- javaScript動態顯示當前時間JavaScript
- 動態顯示資料庫圖片資料庫
- 動態引數,靜態引數
- 樹莓派GPIO入門05-驅動數碼管顯示數字(嵌入式很好的連結平臺,見解深刻)樹莓派
- 永嘉-VK16K33C SOP20高亮數碼管顯示驅動,LED屏驅動原廠技術支援
- CSS實現限制顯示的字數,超出顯示"..."CSS
- 動態隱藏/顯示選擇螢幕
- javascript動態隱藏顯示技術(轉)JavaScript
- 手機直播原始碼,滾動條在滑動時顯示,靜止時恢復隱藏狀態原始碼
- chkdsk 命令引數 檢查磁碟並顯示狀態報告
- jquery實現的點選按鈕改變可用狀態和顯示文字程式碼jQuery
- unity 分數的顯示Unity
- grail中數字顯示AI
- 線上直播原始碼,ui的select顯示數字原始碼UI
- vue中:is的用法,動態顯示需要的元件Vue元件