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

电子钟实验报告.c.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
电子钟实验报告.c

2011-2012学年上半年工程实训实验报告 ------电子钟制作 姓名:付攀 学号:8000609066 班级:计软092班 实验目的:通过编程与仿真,制作电子钟实物。电子钟实现时钟功能、时钟调整功能、秒表功能、闹钟功能。同时体会制作实物的过程,包括编程、仿真、和焊接。 实验器材: 器件名称 数量 单片机AT89C52 1 共阳极数码管(2个一排) 1 共阳极数码管(4个一排) 1 发光二极管 1 按键 4 晶振12M 1 30P电容 2 10μ电容 1 电阻200Ω 1 电阻5.1K 3 排阻200Ω*8 2 驱动芯片ULN2803 1 40脚IC插座 2 18脚IC插座 1 28脚IC插座 1 排座 180孔 插线 若干 按键说明:一个用于小时加,一个用于分钟加,一个用于功能切换,一个用于复位。 实验流程:总体步骤:1.编程与仿真 2.焊接制作实物。 流程说明:在protues仿真平台上画出仿真图,在keil平台上编写程序,编译运行生成hex文件,把hex文件灌入仿真图中,进行电子钟仿真。 仿真截图如下: 时钟显示 时间调整 秒表计时 闹钟设置 所编写的程序如下: #include reg51.h sbit thour=P1^0; sbit tmin=P1^1; sbit light=P1^2; sbit rst=P1^4; #define uchar unsigned char #define uint unsigned int int flag; uint count1,count2; uchar hour=0,min=0,sec=0; uchar msec=0,se=0,mi=0; uchar h=7,m=10,s=0; uchar table[30]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳极数码管,分别表示0~9 void delay(uint k) //延时函数 { uint i,j; for(i=0;i120;i++) for(j=0;jk;j++); } void display() //时钟显示函数 { delay(1);P2=0xdf;P0=table[hour/10]; delay(1);P2=0xef;P0=table[hour%10]; delay(1);P2=0xf7;P0=table[min/10]; delay(1);P2=0xfb;P0=table[min%10]; delay(1);P2=0xfd;P0=table[sec/10]; delay(1);P2=0xfe;P0=table[sec%10]; } void settime() //时间调整函数,小时加和分加 { if (tmin==0) { delay(1); if (tmin==0) { min++; if(min=60) min=0; } while(tmin==0) display(); } if (thour==0) { delay(1); if (thour==0) { hour++; if(hour=24) hour=0; } while(thour==0) display(); } } void init1() //定时计数器0的初始化 { //TMOD=0x11; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; ET0=1; EA=1; } void display2() //秒表显示函数 { delay(1);P2=0xdf;P0=table[mi/10]; delay(1);P2=0xef;P0=table[mi%10]; delay(1);P2=0xf7;P0=table[se/10]; delay(1);P2=0xfb;P0=table[se%10]; delay(1);P2=0xfd;P0=table[msec/10]; delay(1);P2=0xfe;P0=table[msec%10]; } void init2() //定时计数器1的初始化 { //TMOD=0x11; TH1=(65536-10000)/256; TL1=(65536-10000)%256; TR1=1; ET1=1;

文档评论(0)

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

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

1亿VIP精品文档

相关文档