本帖最后由 wulin 于 2018-3-2 13:33 編輯
仿真軟件里的元件都是按理想狀態(tài)使用的,有沒有防抖語句無所謂,你按一次出現(xiàn)多次計數(shù)是你的程序缺陷。單片機的電源、地、復位及外部晶振都是默認存在,不需要畫出來,你的圖畫錯了,地線標志要放在兩個振蕩電容之間。想要改變晶振頻率只要在單片機屬性里修改即可,不信你試試這個程序。把注釋掉的防抖語句添加回去效果還是一樣的,但在實際電路中必須要防抖。#include <AT89X52.H>
#define uint unsigned int //宏定義變量uint為無符號整型數(shù)據(jù)
#define uchar unsigned char //宏定義變量uchar為無符號字符型數(shù)據(jù)
sbit key=P3^0; //按鍵端口定義
uchar code table[]={ //共陽數(shù)碼管段碼0~F
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
uchar i; //按鍵計數(shù)變量
bit key_sign=0; //按鍵有效標志
//uchar count=0; //消抖計數(shù)變量
void main()
{
while(1)
{
if(key==0) //檢測按鍵如果為0
{
// count++; //消抖計數(shù)
// if(count>=250)
// {
if(key_sign==0)
{
key_sign=1; //按鍵有效標志置1,防止重復計數(shù)
i++;
if(i>=16)
i=0;
}
// }
}
else //按鍵抬起
{
key_sign=0; //按鍵有效標志清0
// count=0; //消抖計數(shù)清0
}
P2=table;
}
}
無標題.jpg (105.77 KB, 下載次數(shù): 71)
下載附件
2018-3-2 13:24 上傳
|