为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

简单的51单片机数字钟设计

2017-10-22 9页 doc 38KB 55阅读

用户头像

is_833902

暂无简介

举报
简单的51单片机数字钟设计简单的51单片机数字钟设计 题目:C51单片机数字时钟设计 专 业:电子信息工程 班 级:080611 姓 名:吴尚蔚 学 号:08061143 老 师:李越忠 2011-6 - 1 - 设计内容 利用单片机的定时,计数器,中断系统,以及阵列键盘和LED显示器进行设计。在数码管显示器上实现电子时钟,并且能进行设置时间和暂停、启动控制。 MCS-51单片机系统简介 MCS51是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,...
简单的51单片机数字钟设计
简单的51单片机数字钟设计 目:C51单片机数字时钟设计 专 业:电子信息 班 级:080611 姓 名:吴尚蔚 学 号:08061143 老 师:李越忠 2011-6 - 1 - 设计内容 利用单片机的定时,计数器,中断系统,以及阵列键盘和LED显示器进行设计。在数码管显示器上实现电子时钟,并且能进行设置时间和暂停、启动控制。 MCS-51单片机系统简介 MCS51是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。以后我们将用89C51、89S51来完成一系列的实验。 课程设计背景 近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。 课程设计目的 1、综合利用所学单片机知识完成一个单片机应用系统设计并在实验室实现,从而加深对 软硬知识的理解,获得初步的应用经验。 2、学习AT89C51定时/计数器的原理及基本应用。 3、掌握多为数码管动态显示方法。 4、掌握Keil uVision2 IDE的使用方法。【包括项目文件的建立,给项目添加程序文件,编 译、连接项目,形成目标文件,运行调试观察结果,多文件的处理,仿真环境的设置。】 5、掌握Keil C51的调试技巧。【包括如何设置和删除断点,如何查看和修改寄存器的内 容,如何观察和修改变量,如何观察存储器区域,并行口的使用,定时/计数器的使用, 串行口的使用,外中断的使用。】 6、掌握PROTEUS软件使用过程。 - 2 - MCS-51单片机中断系统的结构 5个中断源的符号、名称及产生的条件如下。 INT0:外部中断0,由P3(2端口线引入,低电平或下跳沿引起。 INT1:外部中断1,由P3(3端口线引入,低电平或下跳沿引起。 T0:定时器,计数器0中断,由T0计满回零引起。 T1:定时器,计数器l中断,由T1计满回零引起。 TI,RI:串行I,O中断,串行端口完成一帧字符发送,接收后引起。 MCS-51单片机中断系统的结构 课程设计原理 单片机控制的数字钟的硬件结构与软件设计,给出了汇编语言源程序。此数字钟是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。显示器件选用LED七段数码管。在译码显示电路输出的驱动下,显示出清晰、直观的数字符号。针对数字钟会产生走时误差的现象,在电路中就设计有有校准时间功能的电路。使用动态数码显示的方法,运用独立式按键识别过程,按“时”,“分”,“秒”数据送出显示处理方法。 设计代码 简要说明:实现24小时制电子钟,4位数码管显示,显示时分 P0口输出段选信号,P2口输出位选信号 P1.0为调时按钮,P1.1为调分按钮;晶振12M #include sbit ksec=P3^0; //定义端口,秒的调整按键对应p3.0 sbit kmin=P3^1; //分的调整按键对应p3.1 sbit khour=P3^2; //时的调整按键对应p3.2 - 3 - unsigned char secshi=0,secge=0,minshi=0,minge=0,hourshi=0,hourge=0; unsigned int num=0,sec=0,min=0,hour=0; unsigned char code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //定义数码管显示的0-9的代码 void delay(unsigned int z) { //延时程序 unsigned int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);//如果是12MHz晶振,就是110us对应z=1 } void keyscan(); void display(); void main() {TMOD=0x01;//T0定时器,模式1定时,13位定时 TH0=(65536-50000)/256; //定时1S的数据设置,定时50000个机器周期后中断一次 TL0=(65536-50000)%256; EA=1;ET0=1;TR0=1;//开启总中断,允许T0中断,开启T0中断 while(1) {display();//显示 keyscan();//读取按键 } } void time0() interrupt 1 {num++;//T0中断服务程序,定时中断一次后num加一 TH0=(65536-50000)/256; TL0=(65536-50000)%256;//重装计数值,因为模式1是非自动重装的 } void display() {if(num==20) {num=0; //定时20次后sec加一,那应该是6MHz的晶振,机器周期为2us, 50000*2us*20=1s sec++; if(sec==60) {sec=0; min++;//到60s,min加一,sec清零 if(min==60) {min=0; hour++;//到60分,hour加一,分清零 if(hour==24) - 4 - {hour=0; min=0;//到24小时则所有时间清零,新的一天从零时开始计时 sec=0; } } } } secge=sec%10;//秒的个位,秒除以10的余数 secshi=sec/10;//十位,秒整除10的商 minge=min%10; minshi=min/10; hourge=hour%10; hourshi=hour/10; P2=0xfe;//1111 1110,0选通一位数码管, P0=table[secge];//送秒的各位显示 delay(5);//延时一会儿 P2=0xfd;//选通下一位数码管,1111 1101 P0=table[secshi];//送秒的十位显示 delay(5); P2=0xfb;//1111 1011,选通再下一位 P0=0x40;//显示分与秒之间的那个点 delay(5); P2=0xf7;//1111 0111,再下一位 P0=table[minge];//分的个位 delay(5); P2=0xef;//1110 1111 P0=table[minshi];//分的十位 delay(5); P2=0xdf;//1101 1111 P0=0x40;//分与时间的点 delay(5); P2=0xbf;//1011 1111 P0=table[hourge];//小时的个位 delay(5); P2=0x7f;//0111 1111 P0=table[hourshi];//小时的十位 delay(5); } void keyscan() {if(ksec==0) {delay(10);//延时防抖动 if(ksec==0)//这里应该按键上接地的,有按键按下就是0 {sec++;//有秒对应的按键按下,则秒加一 if(sec>=60)//秒数到60则清零 - 5 - sec=0; } while(ksec==0)//等待按键释放, display();}//不做别的操作,就一直显示,等待按键释放,防止一次按键多次操作 if(kmin==0) {delay(10);//分对应的按键 if(kmin==0) {min++; if(min>=60) min=0; } while(kmin==0) display(); } if(khour==0) {delay(10);//小时对应的按键 if(khour==0) {hour++; if(hour>=60) hour=0; } while(khour==0) display(); } } 实验心得 这次数字钟的设计与制作,我做的很辛苦。对于以前的软件操作淡忘了,所以开始的时候需要对系统软件进一步熟悉,通过自己慢慢深入学习,让我对于操作软件有了大概的思路。在实际操作中,了解了设计电路的程序,同时也让我了解了关于数字钟的原理与设计理念。看着复杂的程序被我设计完成, 倍感欣慰。当设计电路完成还要实际接线。我在做这项工作的时候,犯了这样一个错误,连线时找不到相应的标示符号,其实老师已将标示的符号写在黑板上了,我却在疑惑。这其实也考验了实验者的细心与动手能力,遇到自己不懂的除了先发动大脑细胞想想之外,询问老师同学的却也受益匪浅,通过讨论,综合几个人的见解,能发现更多的知识。 通过这次学习,让我的视野从课本之外延伸。多看书是好的。可是要想学好一门课光看书是不行的,还要在课外进行多多的实际操作。对于以前遗忘的知识, - 6 - 要抽时间复习,这样才会有更深刻的体会。 - 7 -
/
本文档为【简单的51单片机数字钟设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索