网站大量收购独家精品文档,联系QQ:2885784924

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

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

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

书屋 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档