版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机时钟(shzhng)设计报告院系:姓名(xngmng):学号:班级(bnj):日期:2012/11/20摘要(zhiyo)该课程设计是利用STC89C52单片机内部的定时器/计数器、中断系统、以及键盘和LED显示器等部件,设计一个单片机电子时钟。设计的电子时钟通过LED显示器显示,并能通过按键实现时间的设置(shzh)和启动控制。目录(ml)设计(shj)原理1.1 软件(run jin)原理11.2 硬件原理1二、元件的使用说明2.1 STC89C52芯片12.2 按键键盘2 1602液晶屏3三、程序的设计 3.1 时钟程序43.2 程序说明123.3 实物图13四、总结心得体会14设
2、计(shj)原理1.1软件(run jin)原理软时钟是利用单片机内部的定时器/计数器来实现的,他的处理过程如下:首先设定单片机内部的一个定时器/计数器工作于定时方式,对机器周期计数形成基准时间(如10ms),然后(rnhu)用另一个定时器/计数器或者软件计数的方法对基准时间计数形成秒(对10ms计数100次),秒记60次形成分,分记60次形成小时,小时记24次则记满一天,最后通过LCD液晶屏把他们的内容在相应位置显示出来。1.2硬件原理硬件主要包括单片机芯片我用的是STC89C52、1602LCD液晶屏、按键开关电路。系统的时钟采用的12MHz的晶振,机器周期也就为1us。二、元件的使用说明
3、2.1 STC89C52芯片stc89c52具有以下标准功能: 8k字节flash,256字节ram, 32 位i/o 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,stc89c52可降至0hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,cpu 停止工作,允许ram、定时器/计数器、串口、中断继续工作。掉电保护方式下,ram内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。8 位微控制器 8k字节在系统可编程 flash。(stc89c52和at89c52都通用,这里电路图就
4、用at89c52了,就不做过多的介绍了)2.2按键(n jin)键盘这个是用跳线来切换独立按键(n jin)或者矩阵键盘的,因为实验只用了三个按键,所以将跳线接到1,2位置变成独立键盘使用。即对应的口为P30,P31,P32,P33这几个口来控制的。2.3 1602液晶屏1602采用标准(biozhn)的16脚接口,其中:第1脚:VSS为地电源(dinyun)第2脚:VDD接5V正电源第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选
5、择指令寄存器。第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线第1516脚:空脚 1602显示屏的时序(sh x)图如图2.5。三、程序(chngx)的设计3.1时钟(shzhng)程序#include#define uint unsigned int#define uchar unsigned charsbit rs=P24; /*数据
6、、命令选择端*/sbit rw=P25; /*读写选择端*/sbit en=P26; /*使能信号*/sbit key1=P30; /*键盘(jinpn)*/sbit key2=P31;sbit key3=P32;uchar count,miao,fen,shi,key1num; void delay(uchar ms) /*延时程序(chngx) 取决于ms大小*/ uchar x,y; for(x=ms;x0;x-) for(y=110;y0;y-);void writecom(uchar com)/*写液晶命令(mng lng)函数*/ rs=0; rw=0; en=0; delay(5
7、); P0=com;/*送入命令*/ delay(5); en=1; delay(5); en=0;void writedata(uchar date) /*写液晶数据(shj)函数*/ rs=1; rw=0; en=0; delay(5); P0=date;/*送入数据(shj)*/ delay(5); en=1; delay(5); en=0;void write_addr(uchar a,uchar b,uchar *s) /*地址(dzh)处理函数*/ if(b=0) writecom(0 x80+a); /*数据写在液晶第一行*/ else writecom(0 xc0+a); /*
8、数据写在液晶第二行*/while(*s) writedata(*s); /*写入字符串数据*/ s+; void lcd_chushi()/*液晶屏初始化*/ writecom(0 x38); delay(5); writecom(0 x01); delay(5); writecom(0 x0c); delay(5); writecom(0 x06); delay(5); write_addr(0,0,Date 2012-11-20);/*初始显示(xinsh)字幕*/ write_addr(0,1,Time 00:00:00); TMOD=0 x21; /*设定定时器T0,T1工作(gngz
9、u)方式*/ /*T0工作(gngzu)在方式1,T1工作在方式2*/ TH0=(65536-50000)/256; /*设置定时器T0初始值,为50ms定时初值*/ TL0=(65536-50000)%256; TH1=256; /*设定定时器T1初始值,这里设为256其实就是程序每都跳到T1中断去,然后检测按键*/ TL1=256; EA=1; /*打开全局中断*/ ET0=1; /*允许T0中断*/ ET1=1; /*允许(ynx)T1中断*/ TR0=1; /*开启(kiq)T0中断*/ TR1=1; /*开启(kiq)T1中断*/void ex_time(uchar x,uchar
10、shu) /*时间换算函数(将位数分离)*/ uchar shiwei,gewei; shiwei=shu/10; /*十位上的数字*/ gewei=shu%10; /*个位上的数字*/ writecom(0 xc0+x); /*时间Time放在液晶第二行*/ writedata(0 x30+shiwei); writedata(0 x30+gewei); void time0() interrupt 1 /*定时器T0服务子函数*/ TH0=(65536-50000)/256; /*设置定时器T0初始值,设50ms为定时初值*/ TL0=(65536-50000)%256; count+;
11、if(count=20) /*为了实现50*20ms=1s的延时*/ count=0; miao+; /*执行秒开始计数加*/ if(miao=60) miao=0; fen+; /*执行(zhxng)分开始计数加*/ if(fen=60) fen=0; shi+; /*执行(zhxng)时开始计数加*/ if(shi=24) shi=0; ex_time(7,shi); /*时放在液晶(yjng)的第7个位置上*/ ex_time(10,fen); /*分放在液晶的第10个位置上*/ ex_time(13,miao); /*秒放在液晶的第13个位置上*/ void time1() inter
12、rupt 3/*定时器T1服务子函数*/*定时器T0服务子函数*/ TR1=0; /*关闭T1定时器*/ if(key1=0) /*判断key1按键是否按下*/ delay(2); /*延时去抖动(dudng)*/ if(key1=0) /*再一次判断key1按键(n jin)是否被按下*/ while(!key1); /*如果(rgu)按下*/ key1num+; /*记下key1被按下的次数*/ TR0=0; /*关闭定时器T0*/ if(key1num=1) /*如果key1被按下一次*/ writecom(0 x0f); /*光标开始闪烁*/ writecom(0 xc0+14); /
13、*光标在液晶第14个位置上闪烁,也就是在秒的位置上*/ if(key1num=2) /*如果key1被按下二次*/ writecom(0 xc0+11); /*光标在液晶第11个位置上闪烁,也就是在分的位置上*/ writecom(0 x0f); if(key1num=3) /*如果key1被按下三次*/ writecom(0 xc0+8); /*光标在液晶第8个位置上闪烁,也就是在时的位置上*/ writecom(0 x0f); if(key1num=4) /*如果(rgu)key1被按下四次*/ TR0=1; /*定时器T0开始(kish)工作*/ writecom(0 x0c); /*关
14、闭光标(un bio),光标不显示*/ key1num=0; /*记下的次数清零*/ if(key2=0) /*判断key2按键是否按下*/ delay(2); /*延时去抖动*/ if(key2=0) /*再次判断key2按键是否按下*/ while(!key2); switch(key1num) /*switch.case判断语句,实现加1*/ case 1:miao+;if(miao=60)miao=0;writecom(0 xc0+14);ex_time(13,miao);break; case 2:fen+;if(fen=60)fen=0;writecom(0 xc0+11);ex_
15、time(10,fen);break; case 3:shi+;if(shi=24)shi=0;writecom(0 xc0+8);ex_time(7,shi);break; if(key3=0) delay(2); if(key3=0) while(!key3); switch(key1num) /*switch.case判断(pndun)语句,实现减1*/ case 1:miao-;if(miao=-1)miao=59;writecom(0 xc0+14);ex_time(13,miao);break; case 2:fen-;if(fen=-1)fen=59;writecom(0 xc0
16、+11);ex_time(10,fen);break; case 3:shi-;if(shi=-1)shi=23;writecom(0 xc0+8);ex_time(7,shi);break; TH1=256; TL1=256; TR1=1; void main()/*主函数(hnsh)*/ lcd_chushi(); while(1);3.2程序(chngx)说明这个程序是用了两个定时器/计数器来实现的,一个(y )是T0用来定时设置初值为50ms,记20次 50msx20=1s。第二个T1是用来检测键盘是否按下的,选择8位自动重装方式,将初值设为256,其实就是每运行一次中断,跳到中断程序
17、,就检测一次键盘是否按下。其实可以只用一个定时器/计数器就能实现的。键盘key1是用来控制光标的移动,按一次是关闭定时器T0,并且光标开始闪烁,在第14个位置上闪烁,也就是秒的位置。按第二次光标在液晶(yjng)第11个位置上闪烁,也就是在分的位置上。按第三次光标在液晶第8个位置上闪烁,也就是在时的位置上。按第四次定时器T0开始工作,关闭光标显示。Key2,key3则是用来控制+1,-1的。3.3实物图最后做成的实物图(手机(shu j)像素不好)。因为都是用软件写的,没用时钟芯片,所以日历不好做出来(ch li),就没有做日历了。四、总结(zngji)心得体会由于单片机是自己的,所以就比较熟悉各个芯片功能,经过几次调试就做出来了,就没有一一介绍出来,总的来说做这次设计也加深了对时钟的设计流程,也进一步的熟悉了定时器/计数器的使用和中断处理程序的编程。本想用proteus进行仿真,但是由于软件有点问题,最后就照了张实物图。做设计之前必须要对单片机内部的结构进行了解,还要有一个清晰的思路和一个完整的软件设计流程,写程序的时候要先设计好,然后反复修改
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025养殖农场租赁合同
- 2025版杭州智能家居装修合同规范模板
- 2025版加工承揽合同:服装定制与出口贸易2篇
- 2025注册商标的转让合同
- 2025年石油钻探、开采专用设备项目合作计划书
- 2025版水电项目融资与投资承包合同范本3篇
- 二零二五年度9A条款离婚协议子女抚养费及财产分割与监护权协议
- 2024年装修行业清包协议样本版B版
- 2024年大学生实习安全协议及安全风险评估与管理合同3篇
- 2025年度搬家服务与客户增值服务合同3篇
- GB/T 12467.5-2009金属材料熔焊质量要求第5部分:满足质量要求应依据的标准文件
- GB 17740-1999地震震级的规定
- 安全生产事故举报奖励制度
- 冠心病健康教育完整版课件
- 永久避难硐室安装施工组织措施
- 元旦节前安全教育培训-教学课件
- 国家开放大学《理工英语1》单元自测8试题答案
- 芯片工艺流程课件1
- 人教版八年级下册生物期末测试卷带答案
- 《尖利的物体会伤人》安全教育课件
- 大学生自主创业证明模板
评论
0/150
提交评论