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