收藏 分销(赏)

单片机数字电子时钟实训.doc

上传人:xrp****65 文档编号:5965176 上传时间:2024-11-24 格式:DOC 页数:12 大小:158.50KB
下载 相关 举报
单片机数字电子时钟实训.doc_第1页
第1页 / 共12页
单片机数字电子时钟实训.doc_第2页
第2页 / 共12页
单片机数字电子时钟实训.doc_第3页
第3页 / 共12页
单片机数字电子时钟实训.doc_第4页
第4页 / 共12页
单片机数字电子时钟实训.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、郑州轻工业学院实 训 报 告实训名称: 单片机数字电子时钟实训 姓 名: 院 (系): 软件学院 专业班级: 学 号: 指导教师: 杨 学 东 成 绩: 时间: 2014年6月9日 至 2013年6月15日单片机数字电子时钟实训报告目 录 一、实训目的 1、时钟设计的要求 2、设计要求 二、工作原理 三、系统的组成 1键盘 2单片机系统 四、电子时钟程序代码编写 1、主程序流程以及部分代码 2、定时器中断流程以及部分代码 3、时间显示流程以及部分代码五、心得体会一、实训目的 本次实训是使用89C51单片机,通过C语言来编写的程序,然后在单片机上来运行程序来实现预定的控制目的。本实训主要是通过单

2、片机的LCD来显示时间(主要是小时、分钟和秒钟的显示)。而且可以通过四个按键来调节时间(主要是开始、暂停、复位和一个备用键)。通过本次的实训(我们的目标是掌握数字电子钟的制作,实现分、秒、毫秒的显示功能)能对单片机编程有熟练的了解和简单的引用,能独立自主的编写简单的高级语言通过单片机来实现一定的功能。 1、时钟设计的要求数字钟是一个将“分”,“ 秒”,“ 毫秒”显示与人的视觉器官的计时装置。它的计时周期为1小时,显示满刻度为59分59秒990时,钟电路主要由译码显示器、“分”,“秒”,“ 毫秒”计数器2设计要求: 设计一个基于51单片机的数字电子钟,画出防真电路图.键盘显示图时钟显示器图二、工

3、作原理 整个系统工作时,毫秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,将标准毫秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60秒,发出一个“时脉冲”信号,该信号将被送到“分钟计数器”。 1、键盘键盘是控制和修改时钟的重要输入模块,通过键盘可以暂停,开始,复位。2、片机系统AT89C51是一种低功耗、高性能的片内含有4K字节闪烁可编程可擦除只读存储器,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MC

4、S-51指令集和输出管脚相兼容。单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力(如算术运算,逻辑运算、数据传送、中断处理)的微处理器(CPU),随机存取数据存储器(RAM),只读程序存储器(ROM),输入输出电路(I/O口),可能还包括定时计数器,串行通信口(SCI),显示驱动电路(LCD或LED驱动电路),脉宽调制电路(PWM),模拟多路转换器及A/D转换器等电路集成到一块单块芯片上,构成一个最小然而完善的计算机系统。这些电路能在软件的控制下准确、迅速高效地完成程序设计者事先规定的任务。四、系统软件设计流程 1、主程序流程主程序先开始,然后启动定时器,启动后在进行按键检测,然后

5、就可以显示时间。主程序流程图2、定时器中断流程 分定时器中断时先检测一毫秒是否到,到的话秒就加1,没到就检测秒,秒到就加1,没到检测分,分到加1,没到就显示时间。 时间定时器中断流程图3、时间显示流程 时间显示是先毫秒十位计算显示,然后是毫秒百位,再是秒个位,秒十位,然后是分个位,然后是分十位。结束时间显示流程图五、心得体会 通过本次单片机电子时钟的实训,确实学到了很多的东西。虽然说实训过程中遇到了很多的问题,但是通过和老师同学的学习和探讨,通过课下图书馆相关书籍的借阅问题都得到了解决。主要是以前没有过这方面的学习,所以说我感觉真正做实验的时候比较吃力,为了弄懂它,不但要学习单片机这方面的知识

6、还要学习电学的知识。所以我借阅了80C51单片机和电路基础,学习之后对很多知识都能基本了解。代码#include#define uint unsigned int#define uchar unsigned charsbit LEN1 = P26;sbit LEN2 = P27;sbit KEY1 = P34;sbit KEY2 = P35;sbit KEY3 = P36;sbit KEY4 = P37;uint counter;uchar xsh6=0;ucharcode duanma=0XED,0X81,0XF4,0XB5,0X99,0X3D,0X7D,0X85,0XFD,0XBD;uch

7、arcode weima=0XFE,0XFD,0XFB,0XF7,0XEF,0XDF;void display(uchar disp,uchar num);void xianshi(void);void delay1ms(uint ms);void Timer0Init(void);uchar key();uchar key1();uchar key2();uchar key3();uchar key4();void main()Timer0Init();P3=0xff;ET0 =1;EA =1;LEN1 =1;LEN2 =1;while(1)uchar a;uint counterbuf;c

8、ounterbuf=counter;xianshi();a=key();if(a=1)TR0=0;else if(a=2)TR0=1;else if(a=3)counter=0;else if(a=4);else ;void timer0() interrupt 1 /中断 TL0 = (65536-11000)%256;TH0 = (65536-11000)/256;counter+;xsh5=counter%10;if(xsh0=5 & xsh1=9 & xsh2=5 & xsh3=9 & xsh4=9 & xsh5=9)delay1ms(10);counter=0;if(xsh1=9 &

9、 xsh2=5 & xsh3=9 & xsh4=9 & xsh5=9)delay1ms(10);xsh0+;xsh1=0;xsh2=0;xsh3=0;xsh4=0;if(xsh2=5 & xsh3=9 & xsh4=9 & xsh5=9)delay1ms(10);xsh1+;xsh2=0;xsh3=0;xsh4=0;if(xsh3=9 & xsh4=9 & xsh5=9)delay1ms(10);xsh2+;xsh3=0;xsh4=0;if(xsh4=9 & xsh5=9)delay1ms(10);xsh3+;xsh4=0;if(xsh5=9)delay1ms(10);xsh4+;/void

10、xianshi(void)display(0,xsh0);delay1ms(2);display(1,xsh1);delay1ms(2);display(2,xsh2);delay1ms(2);display(3,xsh3);delay1ms(2);display(4,xsh4);delay1ms(2);display(5,xsh5);delay1ms(2);void display(uchar disp,uchar num)LEN2=1;P0=weimadisp;/P0=weima1;LEN2=0;LEN1=1;P0=duanmanum;/P0=duanma8;LEN1=0;uchar ke

11、y()if (key1()=1) return 1;else if (key2()=1) return 2;else if (key3()=1) return 3;else if (key4()=1) return 4;else return 0;uchar key1()if(KEY1=0&KEY2=1&KEY3=1&KEY4=1)delay1ms(50);if(KEY1=0&KEY2=1&KEY3=1&KEY4=1)while(KEY1=0&KEY2=1&KEY3=1&KEY4=1);P1=P1;return 1; / 暂停else return 0;else return 0;uchar

12、key2()if(KEY1=1&KEY2=0&KEY3=1&KEY4=1)delay1ms(50);if(KEY1=1&KEY2=0&KEY3=1&KEY4=1)while(KEY1=1&KEY2=0&KEY3=1&KEY4=1);P1=P1;return 1; / 开始else return 0;else return 0;uchar key3()if(KEY1=1&KEY2=1&KEY3=0&KEY4=1)delay1ms(50);if(KEY1=1&KEY2=1&KEY3=0&KEY4=1)while(KEY1=1&KEY2=1&KEY3=0&KEY4=1);P1=P1;return 1

13、; / 复位else return 0;else return 0;uchar key4()if(KEY1=1&KEY2=1&KEY3=1&KEY4=0)delay1ms(50);if(KEY1=1&KEY2=1&KEY3=1&KEY4=0)while(KEY1=1&KEY2=1&KEY3=1&KEY4=0);P1=P1;return 1; / 备用else return 0;else return 0;void Timer0Init(void)TMOD &= 0xF0;TMOD |= 0x01;TL0 = (65536-10000)%256;TH0 = (65536-10000)/256;TF0 = 0;TR0 = 1;void delay1ms(uint ms)uint j,k;for(j=ms;j0;j-)for(k=120;k0;k-);

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服