电子钟设计(c语言设计)_第1页
电子钟设计(c语言设计)_第2页
电子钟设计(c语言设计)_第3页
电子钟设计(c语言设计)_第4页
电子钟设计(c语言设计)_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机工程实践实习报告专 业: 班 级: 姓 名: 学 号: 指导老师: 设计时间:指导教师对实习报告的评语指导教师签字:年一 前 言漫步在繁华的现代化的大都市的大街上,随时都可以看到街上有很多可以用卡取钱的机器(ATM自动柜员机),十字路口的交通灯。我们的手机,我们家里数码电视机、数码音响、遥控器、空调、智能玩具.这些“高科技”看上去是如此的神秘,它到底是怎样构成的,它是通过什么样的程序和什么样的方式来完成这一系列指令的呢?让我们取钱更方便、避免城市的交通混乱和交通阻塞给我们生活带来了处处方便。其实这也是用单片机来控制的,单片机在我们生活中触手可及,它是如此地贴近我们的生活,单片机给我们的生

2、活带来的有如此多的便利。目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。科技越发达,智能化的东西就越多,使用的单片机就越多。看来学单片机是社会发展的需求。据统计,我国的单片机年容量已达13亿片,且每年以

3、大约16%的速度增长,但相对于世界市场我国的占有率还不到1%。特别是沿海地区的玩具厂等生产产品多数用到单片,并不断地辐射向内地, 这说明单片机应用在我国才刚刚起步,有着广阔的前景。培养单片机应用人才,特别是在工程技术人员中普及单片机知识有着重要的现实意义。面对着学习单片机一个终生受用的职业,不受年龄的限制。同时面对着生活的现代化,我们衣、食、住、行也就越来越依赖各式各样的“高科技”了,也就有很多地方都用到高集成电路IC和单片机。学习单片机,做现代生活的领航人,你还在等什么呢?二 要 求设计1个电子钟,用4位7段码LED显示器,显示当前时间时和分。时和分之间用 2个LED作为分隔,每秒钟小数点闪

4、动1次。用89C2051内部定时器定时,每10ms中断1次,中断100次后秒单元+1,秒单元累加到60时自动清零,分单元+1,分单元累加到60时自动清零,小时单元+1,小时单元累加到24时,又回到0时,0分,0秒。设有校表功能,通过按键可与北京时间校准。按一下S1键,进入“校时”状态,在“校时”状态按一下S2键小时单元+1,按一下S3键小时单元-1。再按一下S1键,进入“校分”状态,在“校分”状态,按一下S2键分单元+1,按一下S3键分单元-1。再按一下S1键,退出“校表”状态。三 原 理 图四 编程思路说明及程序流程图1. 编程思路定时器0,1在12MHz晶振频率时,最大的计时能力在80ms

5、左右。所以按50ms计算最好。故首先初始化定时器0如下:TH0 = 0xD8;TL0 = 0xF0;通过中断方法来获取时间的计数,使用变量tim来进行计数,当tim=20时,即为一秒。如此即可得出分,时的值。具体看如下程序流程图。2程序流程图主程序流程图:图 1;按键设置流程图:五 程序清单#include "AT892051.h"#include "stdio.h"#include "string.h"unsigned char num10 = 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80

6、,0x90; unsigned char mins = 0;unsigned char secd = 0;unsigned char hours = 0;unsigned char tim = 0;unsigned char count = 0;void delayms(unsigned int ms);void key(void);void led(unsigned char n);void config(void);/* delayms*/ void delayms(unsigned int ms)unsigned char temp = 125;for(;ms > 0; ms-)w

7、hile(temp > 0)temp-;temp = 125;/* interrupt*/ void timer0(void) interrupt 1TH0 = 0xD8; /reload timer TL0 = 0xF0;tim+;/* display 7seg*/ void led(unsigned char n)unsigned char i;unsigned char x;x = n;for(i = 0; i< 8 ; i+)P3_1 = 0;P3_0 = x & 0x80;P3_1 = 1;x = x<<1;/* if config button is

8、 pressed*/ void key(void)unsigned char temp;P1 = 0xFF;temp = P1 & 0x70; /press config button if(temp = 0x30)delayms(100); /5P1 = 0xFF;temp = P1 & 0x70;if(temp = 0x30)count = 1;elsecount = 0;/*config();*/void config(void)unsigned char temp;P1 = 0xFF;temp = P1 & 0x70;delayms(100);while(cou

9、nt = 1) /config hour P1 = 0xFF;temp = P1 & 0x70;if(temp = 0x60)tim = 0;count = 2;switch(temp) case 0x50: / hour + hours+; if(hours = 24) hours = 0; led(nummins % 10); led(num(unsigned char)mins / 10); led(numhours % 10); led(num(unsigned char)hours / 10); break; case 0x30: /hour - if(hours = 0)

10、hours = 23; else hours-; led(nummins % 10); led(num(unsigned char)mins / 10); led(numhours % 10); led(num(unsigned char)hours / 10); break; default : break; P1 = 0xFF; temp = P1 & 0x70; delayms(100);/100 while(count = 2) P1 = 0xFF; temp = P1 & 0x70; if(temp = 0x60) TH0 = 0xDF; TL0 = 0xF0; TR

11、0 = 1; EA = 1; tim = 0; /config minutescount = 3;switch(temp)case 0x50:mins+;if(mins = 60)mins = 0;led(nummins % 10);led(num(unsigned char)mins / 10); led(numhours % 10);led(num(unsigned char)hours / 10); break;case 0x30: if(mins = 0)mins = 59;else mins-;led(nummins % 10);led(num(unsigned char)mins

12、/ 10); led(numhours % 10);led(num(unsigned char)hours / 10); break;default : break;P1 = 0xFF;temp = P1 & 0x70;delayms(100); /100count = 0;return;void main(void )led(num0);led(num0);led(num0);led(num0); TH0 = 0xD8; TL0 = 0xF0; TMOD = 0x01; /timer0,16bit TR0 = 1; /enable timer0 ET0 = 1; /enable ti

13、mer0 to interrupt EA = 1; / enale interrupt while(1) if(tim = 50) P3_4 = 0; P3_5 = 0; if(tim = 100) P3_4 = 1; P3_5 = 1; tim = 0; secd+; key(); if( count = 1) EA = 0; TR0 = 0; delayms(50);/50 config(); delayms(10); if(secd =60) secd = 0; mins+; if(mins = 60) mins = 0; hours+; if(hours = 24) hours = 0; led(nummins % 10); led(num(unsigned char)mins / 10); led(numhours % 10); led(num(unsigned char)hours / 10); 六 总结通过本电子表系统的设计,我学到了很多东西。首先,了解了怎样去设计一个应用系统。应用系统需要考虑的稳定性、实用性和编软件时的程序优化性,均在设计过程中涉及到了。其次,更深入体会到了模块化设计系统的优越性,在设计电子表的过程中,我们把系统分为了主程序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论