靜態數碼管顯示、動態數碼管顯示、矩陣按鍵
//靜態數碼管顯示
#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];
}
}
相關文章
- 數碼管動態顯示
- 中斷與數碼管動態顯示程式碼
- proteus模擬數碼管無法動態顯示的問題-解決方法
- 51微控制器實現數碼管顯示
- TMS320F28335實現數碼管顯示S3
- 51微控制器定時器數碼管顯示定時器
- LED驅動晶片(IC)-VK1616 SOP/DIP16,LED數顯/數碼管顯示驅動晶片晶片
- elementui 如果變數為1 顯示 開啟,2顯示關閉。表格怎麼根據狀態碼顯示狀態值UI變數
- VK16K33LED數碼管顯示驅動晶片/LED數顯驅動晶片內建顯示記憶體及RC振盪電路晶片記憶體
- 多位數碼管動態掃描原理分析
- VK1629B LED數碼管顯示驅動晶片顯示模式 12 段×8 位 鍵掃描(8*4bit)3/4線介面晶片模式
- 列舉(矩陣消除、七段數碼管)矩陣
- LED驅動IC,數顯驅動控制電路-數碼管顯示驅動晶片-VK1629 LQFP44技術資料晶片
- TM1650/AIP1650共陰數碼管顯示驅動晶片代換GN1650AI晶片
- 基於EP4CE6F17C8的FPGA數碼管動態顯示例項FPGA
- 點陣LED數碼管驅動VK16K33BA SSOP24高亮數顯驅動晶片/數顯驅動IC廠家晶片
- 手把手教你完成數字動態變化顯示效果
- 動態顯示:文字框字數(輸入還剩多少字)
- 數碼管
- 血氧儀抗干擾LED數顯/數碼管顯示驅動晶片(IC)-VK1S68C SSOP24提供FAE技術支援晶片
- jqgrid動態顯示,隱藏指定列
- javaScript動態顯示當前時間JavaScript
- 永嘉-VK16K33C SOP20高亮數碼管顯示驅動,LED屏驅動原廠技術支援
- 手機直播原始碼,滾動條在滑動時顯示,靜止時恢復隱藏狀態原始碼
- 【資料】靜態/動態顯示LCD液晶驅動晶片VKS232,116SEG*2COM晶片
- chkdsk 命令引數 檢查磁碟並顯示狀態報告
- VsCode顯示左邊摺疊程式碼+-按鈕VSCode
- Qt全屏顯示和按鍵ESC退出全屏QT
- 線上直播原始碼,ui的select顯示數字原始碼UI
- win10快捷鍵怎麼快速顯示桌面_window10按什麼鍵顯示桌面Win10
- unity 分數的顯示Unity
- vue中:is的用法,動態顯示需要的元件Vue元件
- php短視訊原始碼,向左滑動顯示刪除按鈕PHP原始碼
- 靜態動態陣列陣列
- fpga數碼管作業FPGA
- 頁面顯示二進位制數原始據亂碼
- 顯示卡引數知識科普:避免這些顯示卡引數騙局!
- 帶有多選和突出顯示關鍵字的自定義下拉選擇框(靜態)