单片机实验报告-数字时钟设计报告.pdfVIP

单片机实验报告-数字时钟设计报告.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

单片机实验报告-数字时钟设计报告

一、实验目的

1、掌握单片机的主要原理及相关的功能和特点。

2、熟悉单片机测试与调试的一般步骤与操作。

3、掌握定时/计数功能在单片机系统中的实现方法。

4、领会单片机实验模块设计思想。

二、实验内容

本次实验主要是利用STC89C52单片机实现数字时钟设计,实验从硬件电路组成和单

片机编程两个部分来实现数字时钟的设计。

(1)硬件电路设计

该系统的硬件电路设计主要包括PCB板的设计、电源的设置、单片机与外设的连接以

及时钟芯片的接入。利用AltiumDesigner软件来进行电路板设计,将STC89C52芯片与

时钟模块(DS1302)以及屏幕连接,整个电路如图1所示。

图1数字时钟使用STC89C52的电路图

(2)单片机程序设计

本实验使用keil软件对单片机程序进行编程,主要的部分如下:

(2.1)定义单片机IO口

首先定义单片机IO口,其定义方式如下:

#includereg52.h

sbitRow0=P1^0;//定义P1.0作为数码管的Row0控制端

sbitRow1=P1^7;//定义P1.7作为数码管的Row1控制端

sbitRow2=P1^1;//定义P1.1作为数码管的Row2控制端

sbitRow3=P2^0;//定义P2.0作为数码管的Row3控制端

sbitCol0=P1^2;//定义P1.2作为数字管的Col0控制端

sbitCol1=P1^3;//定义P1.3作为数字管的Col1控制端

sbitCol2=P1^4;//定义P1.4作为数字管的Col2控制端

sbitCol3=P1^5;//定义P1.5作为数字管的Col3控制端

sbitCol4=P1^6;//定义P1.6作为数字管的Col4控制端

(2.2)定义LED数码管数据和定义变量

//定义LED数码管数据

unsignedcharcode

table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

unsignedchari,j,k,m,n,s;

(2.3)调用初始化函数

再调用初始化函数,用于完成I/O口、定时器0/1及外部中断的初始化,代码如下:

voidinit(void){

TMOD=0x01;//定时器0的模式1

TH0=0x3c;//定时器0赋初值

TL0=0xb0;

EA=1;//外部总中断开启

ET0=1;//允许定时器0中断

ET1=0;//不允许定时器1中断

TR0=1;//开启定时器0

TR1=1;//关闭定时器1

}

(2.4)主函数

最后我们考虑到,应该实现的LED点阵的显示函数和定时更新时钟的函数,本实验的

核心代码如下:

voidmain(){

init();//调用初始化函数

while(1){

display();//调用LED点阵显示函数

number_refresh();//调用定时更新时钟函数

}

}

(2.5)LED点阵显示函数

为保证LED点阵的正常工作,可利用多次延时函数,定义LED点阵显示函数,每次显

示一位数字,实现数字从左往右以及从右往左的滚动移动显示,具体实现如下:

voiddisplay(int){

P2=0xfe;//定义P2这一行位先低电平,控制第一位显示

P0=table[m];//将得到的数字m显示在第一位数码管

Delay_1ms(2);//延时1ms

P2=0xf

文档评论(0)

172****0535 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档