1 / 14
文档名称:

生产实习单片机最小系统跑马灯数码管.doc

格式:doc   大小:94KB   页数:14页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

生产实习单片机最小系统跑马灯数码管.doc

上传人:86979448 2017/12/14 文件大小:94 KB

下载得到文件列表

生产实习单片机最小系统跑马灯数码管.doc

文档介绍

文档介绍:基于单片机的交通灯设计
设计目的
、单片机的感性认识,锻炼学生电路板布局、布线、电路组装、单片机程序编制、焊接与调试的动手能力,培养学生对电子的兴趣。
,如交通灯的设计。

*4矩阵键盘、蜂鸣器、跑马灯、数码管的多功能系统,并最终焊出实物,并要调制成功。
,验证各功能模块工作良好。
,并下载到单片机中。
3 详细设计

跑马灯设计
将8个跑马灯采用共阳接法,分别与单片机的P0口相连,为了防止由于二极管过流而烧坏,每个二极管串接一个1k的电阻,具体设计如图:

图1 流水灯设计电路
数码管电路设计
数码管设计采用的是双位的共阳数码管,所以需要较大的驱动电流,所以利用PNP三极管进行驱动,具体与单片机的连接如图:

矩阵键盘设计
采用4*4的矩阵键盘,具体设计如图:
复位电路设计
采用上电复位加手动复位的电路设计,电容选取10uf的电解电容,电阻阻值为10k,具体电路设计如图:

完整电路设计如图:

程序设计

红灯led1亮15s
黄灯led2亮5s
绿灯led3亮10s
交通灯流程图

选低位,送段码
选高位,送段码
延时2ms
延时2ms
数码管扫描流程图
键盘程序设计
=0
扫描键盘1,执行语句
扫描键盘2,按下则加数
扫描键盘3,按下则减数
程序具体设计
#include<>
#define uchar unsigned char
#define uint unsigned int
sbit dw=P3^6;//为0时选低位
sbit gw=P3^7;//为0时选高位
sbit led1=P0^0;
sbit led2=P0^1;
sbit led3=P0^2;
t=0,s1num=0,x,y,z;
uchar a=15,b=5,c=10;
uchar code p2[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管显示0-9
void delayms(uint k)
{uint i,j;
for(i=k;i>0;i--)
for(j=110;j>0;j--);
}
void display(uchar t)
{uchar shi,ge;
shi=t/10;//取data的十位
ge=t%10;//取data的个位
dw=0; //显示个位
gw=1;
P2=p2[ge];
delayms(2);
P2=0xff;
dw=1; //显示十位
gw=0;
P2=p2[shi];
delayms(2);
P2=0xff;
}
void keyscan()
{uchar temp;
P1=0xfe;
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{delayms(10);
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{temp=P1;
switch(temp)
{case 0xbe:
TR0=0;
led1=1;led2=1;led3=1;
s1num++;
if(s1num==1)
led1=0;
if(s1num==2)
led2=0;
if(s1num==3)
led3=0;
if(s1num==4)
{s1num=0;
TR0=1;
}
break;
case 0xde:
if(s1num==1)
{led1=0;led2=1;led3=1;
delayms(100);
led1=1;
a++;
}
if(s1num==2)
{led1=1;led2=0;led3=1;
delayms(100);
led2=1;
b++;
}
if(s1num==3)
{led1=1;led2=1;led3=0;
delayms(100);
led3=1;
c++;
}
break;
case 0xee:
if(s1num==1)
{led1=0;led2=1;led3=1;
delayms(100);
led1=1;
a--;
}
if(s1num==2)