- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实用文档
文案大全
基于80C51单片机的交通灯设计
班级:电信1101
姓名:XXXX
学号:0703110107
一、设计说明及材料清单
设计说明:
本交通灯的设计简化了十字路交通灯,只将东西和南北两个路向的交通灯情况表示出来,但也做了很多改进,设计了针对不同时间段不同的控制方案,并且采用串口通讯可将不同的控制方案下载到芯片中,外接掉电保存程序的非易失性存储芯片和掉电仍可计时的时钟芯片,以保证计时的正确性。
材料清单:
二、电路原理图设计
本设计共用到四款主要芯片,分别为单片机芯片80C51、EEPROM芯片AT24C02、时钟芯片DS1302和转串口芯片MAX232。
下图为80C51单片机芯片的管脚图,80C51有两个16位定时计数器,两个外中断,两个定时计数中断,及一个串行中断,并有4个8位并行输入口即I/O口。80C51内部有 时钟电路,但需要石英晶体和微调电容外接,本系统中采用12MHz的晶振频率。
下图为AT24C02芯片的原理图,该芯片是一种带有I2C总线结构的EEPROM芯片,通过SDA和SCL端口与总线连接,具有非易失性,掉电仍可保存程序。其管脚功能如下:
管脚名称 功能 说明
A0、A1、A2 器件地址选择 本设计全部接地
SDA 串行数据、地址 与单片机的P1.6连接进行数据、地址的传输
SCL 串行时钟 与单片机的P1.7相连,串行时钟信号输入
WP 写保护 WP=1,只能对其读,写禁止,所以令WP=0
VCC +1.8V~6.0V工作电压 电源输入
GND 地 接地引脚
下图是时钟芯片的电路原理图,DS1307是一款低功耗,地址和数据通过两线双向的串行总线的传输,节省单片机资源,该芯片可以提供秒,分,小时等信息,芯片有一个内置的电源感应电路,具有掉电检测和电池切换功能,本设计中需要其停电后继续计时。其中的7引脚是方波的输出端,可接入单片机的可引起中断的端口,利用引脚7产生的方波引起中断,从而显示时间的变化。
下图是MAX232芯片的原理图,因为设计要求与电脑有串口通讯,就是将交通灯不同时间段程序控制方案通过串口下载到单片机里,单片机上有一个全双工的串行通讯口,但电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,所以采用了专用芯片MAX232进行转换,下图中的7、8端口分别和电脑上的RS232端口的2、3连接,芯片的9和10端口与单片机的串口相连,如下图所示:
下图为交通灯的总体原理图(不包括上述芯片原理图),根据要求选择六只LED灯作为东西和南北方向的红绿黄交通灯,并且每个方向上有时间计数提示,每个方向有两位数码管动态显示,最大为99,采用共阴极7段数码管,单片机通过驱动器SN7404的放大电流驱动每位数码管。P1.0至P1.5控制六只LED灯,数码管由P0.0至P0.6控制进行段选,P2.0至P2.3控制位选。
三、程序设计
系统框图:
主程序如下:
#includereg51.h
#includeintrins.h
#define EW_H 0
#define EW_L 1
#define SN_H 2
#define SN_L 3
//函数声明
void EW_NONE();
void EW_RED();
void EW_YELLOW();
void EW_GREEN();
void SN_NONE();
void SN_RED();
void SN_YELLOW();
void SN_GREEN();
void LED_INIT();
void LED_WRITE(int dat,int con);
//根据原理图定义交通灯的引脚
sbit EW_LED_RED = P1^0;
sbit EW_LED_YELLOW = P1^1;
sbit EW_LED_GREEN = P1^2;
sbit SN_LED_RED = P1^3;
sbit SN_LED_YELLOW = P1^4;
sbit SN_LED_GREEN = P1^5;
//定义P2^0-P2^3=LED数码管控制
sbit EW_weixuan_H = P2^0;
sbit EW_weixuan_L = P2^1;
sbit SN_weixuan_H = P2^2;
sbit SN_
文档评论(0)