- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机课程设计报告
题目 交通信号灯控制系统 班级 集成电路设计与集成系统102班 学号 1008040219 姓名 杜彤彤 指导老师 马兴录 完成时间 2013-4-23
目录
第一部分:需求分析
第二部分:设计方案
第三部分:详细设计
第一部分
需
求
分
析
题目要求:
以单片机为核心,设计一个
(1)性价比高,开发周期短,易于产品化,
(2)集成度高,可靠性好,抗干扰性强,
(3)功能完善,接口多样,
(4)低功耗、低电压
一般电源供电电压在5~3V范围内单片机都能正常工作,供电的下限可达1~2V。
(5)总线多样,易于扩展
单片机外部的典型三总线结构,方便系统构扩展,构成各种规模的应用系统。外部总线增加了I2C及SPI等串行总线方式, 可根据需要进行并行或者串行扩展。
二. AT89C51单片机简介AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。主要特性:·与MCS-51 兼容 ·4K字节可编程闪烁存储器 ·寿命:1000写/擦循环 ·数据保留时间:10年·全静态工作:0Hz-24MHz·三级程序存储器锁定·128×8位内部RAM·32可编程I/O线·两个16位定时器/计数器·5个中断源·可编程串行通道·低功耗的闲置和掉电模式·片内振荡器和时钟电路
Proteus 7.5 SP3仿真软件按下列要求绘制仿真实例
用4个共阳极LED数码管的分别表示东、西、南、北四个方向路口,以数码管的上、中、下3个横段分别代表红、黄、绿3盏灯
用控制模拟交通灯的
2. 程序流程图
程序源代码
#includereg51.h
#includeintrins.h
#define uchar unsigned char
#define uint unsigned int
uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar buffer[]={0,0,0,0};
uchar shijian[]={0,0,0,0,0};
sbit red_a=P0^0;
sbit yellow_a=P0^1;
sbit green_a=P0^2;
sbit red_b=P0^3;
sbit yellow_b=P0^4;
sbit green_b=P0^5;
uchar operation_type=1;
uchar dongxi_count=10;
uchar nanbei_count=15;
uchar num=0,n=0,dc,nc,flag=0;
void delay(uint x)
{
uchar i;
while(x--)
{
for(i=0;i120;i++);
}
}
void display(uchar dongxi_count,uchar nanbei_count)
{
uchar i;
P1=0x80;
buffer[0]=dongxi_count/10;
buffer[1]=dongxi_count%10;
buffer[2]=nanbei_count/10;
buffer[3]=nanbei_count%10;
for(i=0;i4;i++)
{
P2=0xff;
P2=seg[buffer[i]];
P1=_crol_(P1,1);
delay(1);
}
}
void init()
{
SCON=0x50;
TMOD=0x21;
TH0=0x3c;
TL0=0xb0;
TH1=0xFD;
TL1=0xFD;
PCON=0X0F;
EA=1;
ES=1;
ET0=1;
TR1=1;
TR0=1;
}
void series() interrupt 4
{
RI=0;
shijian[n]=SBUF;
n++;
if(n==4)
{
dc=(shijian[0]-0x30)*10+
文档评论(0)