- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
生产实习 单片机 最小系统 跑马灯 数码管扫描1.doc
基于单片机的交通灯设计
设计目的
1.增加学生对基本电子器件、单片机的感性认识,锻炼学生电路板布局、布线、电路组装、单片机程序编制、焊接与调试的动手能力,培养学生对电子的兴趣。
2.掌握单片机基本应用,如交通灯的设计。
2.基本要求
1.用单片机搭建一个包含4*4矩阵键盘、蜂鸣器、跑马灯、数码管的多功能系统,并最终焊出实物,并要调制成功。
2.将流水灯程序烧进单片机中,验证各功能模块工作良好。
3.设计出.基于单片机的交通灯程序,并下载到单片机中。
3 详细设计
1.硬件电路设计
1.1 跑马灯设计
将8个跑马灯采用共阳接法,分别与单片机的P0口相连,为了防止由于二极管过流而烧坏,每个二极管串接一个1k的电阻,具体设计如图:
图1 流水灯设计电路
数码管电路设计
数码管设计采用的是双位的共阳数码管,所以需要较大的驱动电流,所以利用PNP三极管进行驱动,具体与单片机的连接如图:
矩阵键盘设计
采用4*4的矩阵键盘,具体设计如图:
复位电路设计
采用上电复位加手动复位的电路设计,电容选取10uf的电解电容,电阻阻值为10k,具体电路设计如图:
完整电路设计如图:
程序设计
2.1交通灯程序设计
交通灯流程图
2.2数码管程序设计
数码管扫描流程图
键盘程序设计
程序具体设计
#includereg52.h
#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;
uchar cnt=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;i0;i--)
for(j=110;j0;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=temp0xf0;
if(temp!=0xf0)
{delayms(10);
temp=P1;
temp=temp0xf0;
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)
{led
文档评论(0)