|
#include<reg52.h> // 導(dǎo)入 8052 單片機(jī)頭文件 #include<intrins.h> // 導(dǎo)入 _crol_ 函數(shù)所需的頭文件 #define uchar unsigned char // 定義無符號字符類型 #define uint unsigned int // 定義無符號整數(shù)類型 sbit wela=P2^7; // 定義 WELA 引腳 sbit dula=P2^6; // 定義 DULA 引腳 uchar code tabledu[]= {0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; // 定義顯示表格 uchar i,num,temp,key; // 定義變量 void delay(uint i) { // 延時(shí)函數(shù) uint x,y; for(x=i;x>0;x--) for(y=110;y>0;y--); } void main() { num=0; // 初始化 num 變量 temp=0xfe; // 初始化 temp 變量 wela=1; // 置位 WELA 引腳 P0=0xc0; // 將 "1100 0000"(第一位和第二位為 1)寫入 P0 寄存器中,用于控制數(shù)碼管 wela=0; // 復(fù)位 WELA 引腳 dula=1; // 置位 DULA 引腳 P0=0x00; // 將 "0000 0000" 寫入 P0 寄存器,用于清除數(shù)碼管上次顯示的內(nèi)容 dula=0; // 復(fù)位 DULA 引腳 while(1) { for(i=0;i<4;i++) { // 遍歷四個(gè)數(shù)碼管 P3=_crol_(temp,i); // 將 temp 變量左移 i 位后的值賦給 P3 寄存器 key=P3; // 將 P3 寄存器中的值賦給 key 變量 key=key&0xf0; // 將 key 變量的低四位清零 while(key!=0xf0) { // 如果按鍵沒有被按下,則等待 delay(10); // 延時(shí) 10ms key=P3; // 將 P3 寄存器中的值賦給 key 變量 key=key&0xf0; // 將 key 變量的低四位清零 while(key!=0xf0) { switch(key) { // 根據(jù)按鍵的不同,將對應(yīng)的數(shù)字顯示在數(shù)碼管上 case 0xe0:num=1+(i*4); break; // 按下第一行第一個(gè)按鍵 case 0xd0:num=2+(i*4); break; // 按下第二行第一個(gè)按鍵 case 0xb0:num=3+(i*4); break; // 按下第三行第一個(gè)按鍵 case 0x70:num=4+(i*4); break; // 按下第四行第一個(gè)按鍵 } break; } dula=1; // 置位 DULA 引腳 P0=tabledu[num-1]; // 在數(shù)碼管上顯示 num 變量對應(yīng)的數(shù)字 dula=0; // 復(fù)位 DULA 引腳 break; } } } } |
|