資源簡介
一個基于proteus和keil聯全使用的數碼管仿真電路。

代碼片段和文件信息
#include
#define?uchar?unsigned?char
#define?uint?unsigned?int
//0-9A-F的數碼管段碼最后一個是黑屏
uchar?code?dsy_code[]={0xc00xf90xa40xb00x990x920x820xf80x800x900x880x830x8c0xal0x860x8e0x00};
sbit?BEEP=P3^0;
//上次按鍵和當前按鍵序號該矩陣中序號范圍為0~1516表示無按鍵
uchar?pre_keyno=16keyno=16;
//延時
void?delayms(uint?ms)
{
uchar?t;
while(ms--)for(t=0;t<120;t++);
}
//鍵盤掃描
void?keys_scan()
{
uchar?tmp;
//高4位置1放入4行
P1=0x0f;
delayms(1);
//按鍵后00001111將變成0000xxxxx中有1個為0其它仍為1
//下面的異或操作會把3個1變成0唯一的0變成1
tmp=P1^0x0f;//(^為C中的異或運算符)
//判斷按鍵發生于0~3列中的哪一列
switch(tmp)
{
case?1:keyno=0;break;
case?2:keyno=1;break;
case?4:keyno=2;break;
case?8:keyno=3;break;
default:keyno=16;//無鍵按下
}
//低4位置0放入列
P1=0xf0;
delayms(1);
//按鍵后11110000將變成xxxx0000x中有1個為03個仍為1
//下面的表達式將高4位移到低4位并將其中唯一的0變成1其余為0
?tmp=P1>>4^0x0f;
?//對0-3分別附加起始值
?switch(tmp)
?{
? case?1:keyno+=0;break;
case?2:keyno+=4;break;
case?4:keyno+=8;break;
case?8:keyno+=12;
?}
}
//蜂鳴器
void?Beep()
{
uchar?i;
for(i=0;i<100;i++)
{
delayms(1);
BEEP=~BEEP;
}
BEEP=1;
}
//主程序
void?main()
{
P0=0x00;
while(1)
{
P1=0xf0;
if(P1!=0xf0)keys_scan();//掃描鍵盤獲取按鍵序號keyno
if(pre_keyno!=keyno)
{
P0=~dsy_code[keyno];
Beep();
pre_keyno=keyno;
}
delayms(100);
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1521??2010-03-03?17:42??數碼管顯示鍵盤按鍵\char.c
?????文件???????4089??2010-03-03?17:31??數碼管顯示鍵盤按鍵\char.LST
?????文件???????3679??2010-03-03?17:31??數碼管顯示鍵盤按鍵\char.OBJ
?????文件?????111375??2010-03-03?17:36??數碼管顯示鍵盤按鍵\Last?Loaded?sx.DBK
?????文件???????3917??2010-03-03?17:31??數碼管顯示鍵盤按鍵\proj
?????文件?????????41??2010-03-03?17:31??數碼管顯示鍵盤按鍵\proj.lnp
?????文件???????6993??2010-03-03?17:31??數碼管顯示鍵盤按鍵\proj.M51
?????文件????????170??2010-03-03?22:19??數碼管顯示鍵盤按鍵\proj.plg
????.......?????56474??2010-03-03?22:19??數碼管顯示鍵盤按鍵\proj.uvopt
????.......?????13408??2010-03-03?17:42??數碼管顯示鍵盤按鍵\proj.uvproj
????.......?????57112??2010-03-03?17:42??數碼管顯示鍵盤按鍵\proj_uvopt.bak
????.......?????????0??2010-03-03?14:48??數碼管顯示鍵盤按鍵\proj_uvproj.bak
?????文件???????6376??2009-05-07?14:37??數碼管顯示鍵盤按鍵\STARTUP.A51
?????文件??????14062??2010-03-03?17:30??數碼管顯示鍵盤按鍵\STARTUP.LST
?????文件????????749??2010-03-03?17:30??數碼管顯示鍵盤按鍵\STARTUP.OBJ
?????文件?????111375??2010-03-03?17:42??數碼管顯示鍵盤按鍵\sx.DSN
?????文件????????742??2010-04-12?19:14??數碼管顯示鍵盤按鍵\sx.PWI
?????目錄??????????0??2010-04-12?19:14??數碼管顯示鍵盤按鍵
-----------?---------??----------?-----??----
???????????????392083????????????????????18
評論
共有 條評論