- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
系 统 实 验 报 告
学院 XXXXXXXXX
专业 XXXXXX
姓名 XXXXX
学号 XXXXXXX
一、本设计拟实现的功能
1.时钟:四只数码管低二位0~59计数后给高二位0~59计数(即分秒计时),一只按键控制开始、结束;
2.交通灯:灯和数码管结合,模拟十字路口的交通灯的点亮与熄灭,数码管倒计时显示时间。
二、所用器件的功能、引脚图
1.所用器件:AT89S51、74LS47、LM7085
2.所用器件功能、引脚图
a)AT89S51
AT89S51引脚图
AT89S51是一个低功耗,高性能CMOS?8位单片机,片内含4k Bytes?ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。
主要性能特点1、4k Bytes Flash片内程序存储器;
2、128 bytes的随机存取数据存储器(RAM);
3、32个外部双向输入/输出(I/O)口;
4、5个中断优先级、2层中断嵌套中断;
5、6个中断源;
6、2个16位可编程定时器/计数器;
7、2个全双工串行通信口;
8、看门狗(WDT)电路;
9、片内振荡器和时钟电路;
10、与MCS-51兼容;
11、全静态工作:0Hz-33MHz;
12、三级程序存储器保密锁定;
13、可编程串行通道;
14、低功耗的闲置和掉电模式。74LS47是一种常用的七段数码管译码驱动器74LS47的输入端是四位二进制信号(8421BCD码),a、b、c、d、e、f、g是七段译码器的输出驱动信号,电平有效。可直接驱动共阴极七段数码管, 是使能端,起辅助控制作用。
使能端的作用如下:
(1) LT是试灯输入端,当 LT=0, BI=1时,不管其它输入是什么状态,a~g七段全亮;
(2)BI静态灭灯输入 ,当 BI=0,不论其它输入状态如何,a~g均为0,显示管熄灭;
(3)RBI动态灭零输入 ,当 LT=1, RBI=0时,如果 A3A2A1A0(ABCD)=0000时,a~g均为各段熄灭;
(4) RBO动态灭零输出 ,它与灭灯输入BI 共用一个引出端。当 在动态灭零时输出才为0。片间与 RBI配合,可用于熄灭多位数字前后所不需要显示的零。7805是常用到的稳压芯片
四、源程序
#include reg51.h
#define uchar unsigned char
#define uint unsigned int
#define TH_SET 0x4C
#define TL_SET 0x00 //定时50ms时的初始值(65536-19456)(Atmel@11.0592MHz)
#define RTime 20
#define GTime 20
#define YTime 5 //红绿灯初始值,黄灯=5s,绿的=20s,红灯=20s
sbit KEY_A=P1^0;sbit KEY_B=P1^1;
sbit KEY_C=P1^2;sbit KEY_D=P1^3;
sbit GREEN1=P2^0; sbit GREEN2=P2^3;
sbit RED1=P2^1; sbit RED2=P2^4;
sbit YELLOW1=P2^2;sbit YELLOW2=P2^5; //位定义
uchar IntCount,Status=1, time1,keyflag,p=0; //状态标志定义:IntCount定时一秒标志,Status交通灯状态显示标志,keyflag按键选择标志,P黄灯闪烁定时标志
uint time2,time3; //time1,time2,time3分别为键1、键2、键3功能实现的时间变量
bit k1=0,k2=0,k3=0,k4=0; //四个按键状态标志
////////////////////////////
//键扫描消抖和输出延时函数//
////////////////////////////
void Delay(int n)
{
uint i;
uint j;
for(i=0;in;i++)
{for(j=0;j200;j++);}
}
////////////////////////////
//定时器0///////////////////
////////////////////////////
void Timer0_SVR() inter
文档评论(0)