proteus软件使用
在新建工程一直默认,点击下一步。
在原理图界面先导入元器件:选择第二个“元件模式”,点击右面蓝色的“P”,搜索需要的元件点击确定后,元件被添加到"DEVICES"下,选中即可放置到图纸上。单片机选用AT89C52,按键选择BUTTON。
在图纸上任意空白处右击->放置->终端->选择POWER或GROUND。
proteus每个引脚都会自动显示引脚电平状态:红色为高电平,蓝色为低电平,灰色为不定态或高阻态。
51单片机
晶振
XTAL1和XTAL2这两个引脚用于接“晶振”,电容的选择一般根据晶振频率来确定。AT89C52晶振为11.0592MHz,电容取22pF;12MHz,电容取30pF。
复位电路
复位电路一般外接RC串联支路,少部分外接RC并联,去抖动等,根据实际情况选择不同的接法。
P0系列引脚
P0口作为I/O输出的时候输出低电平为0,输出高电平为高阻态(不是5V,相当于悬空状态),内部没有上拉电阻,是开漏的,即P0口不能真正输出高电平。必须接上拉电阻,由电源通过上拉电阻给负载提供电流。
数码管
在proteus中“CC”为共阳级数码管,“CA”为共阴级数码管,一般使用共阴级数码管。
在proteus中,数码管“A-DP”共八个段选(点亮数码管内的LED,高电平有效),“1-8”共八个片选(选择要点亮的数码管,低电平有效)。
段选信号接锁存器这里使用74HC245,CE接低电平,AB/BA接高电平,可将A端的数据传输至B端。
片选信号接译码器这里使用74LS138,E1接高电平,E2、E3接低电平,可将八个不同三位二进制数输出。代码如下:
//数码管段码表
unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
char t=0,s=0;
//数码管显示子函数
void Nixie(unsigned char Location,Number)
{
switch(Location) //位码输出
{
case 1:P3_0=0;P3_1=0;P3_2=0;break;
case 2:P3_0=1;P3_1=0;P3_2=0;break;
case 3:P3_0=0;P3_1=1;P3_2=0;break;
case 4:P3_0=1;P3_1=1;P3_2=0;break;
case 5:P3_0=0;P3_1=0;P3_2=1;break;
case 6:P3_0=1;P3_1=0;P3_2=1;break;
case 7:P3_0=0;P3_1=1;P3_2=1;break;
case 8:P3_0=1;P3_1=1;P3_2=1;break;
}
P2=NixieTable[Number]; //段码输出
Delay(1); //显示一段时间
P2=0x00; //段码清0,消影
}
上面封装了数码管段码表与数码管显示函数,在主程序调用即可:
Nixie(1,0);
以上为在数码管第一个位置显示“0”.
代码
按键扫描函数
unsigned char Key()
{
unsigned char KeyNumber=0;
if(P1_0==0){Delay(20);while(P1_0==0);Delay(20);KeyNumber=1;}
if(P1_1==0){Delay(20);while(P1_1==0);Delay(20);KeyNumber=2;}
if(P1_2==0){Delay(20);while(P1_2==0);Delay(20);KeyNumber=3;}
if(P1_3==0){Delay(20);while(P1_3==0);Delay(20);KeyNumber=4;}
return KeyNumber;
}
1
void main()
{
Nixie(1,0);
Nixie(2,0);
Nixie(3,0);
Nixie(4,0);
Nixie(5,0);
Nixie(6,0);
Nixie(7,0);
Nixie(8,0);
while(1)
{
show();
KeyNum=Key(); //获取独立按键键码
if(KeyNum) //如果按键按下
{
P2=0x00; //段码清0,消影
if(KeyNum==1) //如果K1按键按下
{
t++;
s++;
P1_6=1;
P1_7=0;
Delay(100);
P1_6=0;
P1_7=0;
}
if(KeyNum==2) //如果K1按键按下
{
t--;
P1_6=0;
P1_7=1;
Delay(100);
P1_6=0;
P1_7=0;
}
if(KeyNum==3) //如果K1按键按下
{
s=0;
}
if(KeyNum==4) //如果K1按键按下
{
t=0;
}
}
}
}
14