已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
xxx职业技术学院 课题名称:单片机数字时钟设计 学生姓名: 专业班级: 学 号: 指导教师: 一. 硬件设计.51.系统原理分析.52.硬件电路图及功能.63.特殊功能.8二. 软件设计.91.程序流程图.92.实现主程序.10三.结束语.16三. 参考文献.16前言在信息技术急速发展的今天,计算机科学日新月异。而单片机作为计算机科学的一个分支,在微机控制领域得到长足发展。在计算机网络,通讯方面是微机的天下;而在微控制领域,小到电子表,大到家用电器,到处都有单片机的用武之地. 在当代繁忙的工作与生活中,时间与我们每一个人都有非常密切的关系,每个人都受到时间的影响。为了更好的利用我们自己的时间,我们必须对时间有一个度量,因此产生了钟表。钟表的发展是非常迅速的,从刚开始的机械式钟表到现在普遍用到的数字式钟表,即使现在钟表千奇百怪,但是它们都只是完成一种功能计时功能,只是工作原理不同而已,在人们的使用过程中,逐渐发现了钟表的功能太单一,没有更大程度上的满足人们的需求。因此在这里,我想能不能把一些辅助功能加入钟表中去。在此设计中所设计的钟表不但具有普通钟表的功能,它还能实现多个额外的功能:温度测量、电网频率测量,而且还能进行遥控止闹。本设计主要分为硬件电路设计和软件实现两大部分。硬件电路设计采用模块设计:中央处理电路、时钟电路、电压与电网频率测量电路、v/f转换电路、音乐闹钟电路、键盘电路和液晶显示电路、指示灯电路、通信电路以及电源电路几大部分;软件采用汇编语言编程实现.基于单片机数字钟设计摘 要: 数字钟在日常生活中最常见,应用也最广泛。本文主要就是设计一款数字钟,以89c51单片机为核心,配备液晶显示模块、时钟芯片、等功能模块。数字钟采用12/24小时制方式显示时间,定时信息,am、pm提示以及年月日显示等功能。文章的核心主要从硬件设计和软件编程两个大的方面。硬件电路设计主要包括中央处理单元电路、时钟电路、人机接口电路、信号处理电路、执行电路等几部分组成,为了用电池作电源,采用低功耗的cmos芯片及液晶显示器.软件用汇编语言来实现。关键词: 单片机 液晶显示器模块 数字钟abstract: digital clock in their daily lives the most common, is the most widely applied. the main section is designed digital bell to shanpianji 89c51 core, with lcd modules, clock chips, and other functional modules. 12/24 hours using digital bell system display time, regular information, am, pm and the presentation . shows, and other functions. the article primarily from the core hardware design and software programming two major aspects. hardware circuit design include central processing units circuits, clock circuits, computer interface circuits, signal processing circuits, implementation of several components, such as circuits to batteries for power, the use of low consumption of cmos chips and liquid crystal displays. software used for the compilation of language.keywords:single chip computer; liquid crystal display modules; figures bell在信息技术急速发展的今天,计算机科学日新月异。而单片机作为计算机科学的一个分支,在微机控制领域得到长足发展。在计算机网络,通讯方面是微机的天下;而在微控制领域,小到电子表,大到家用电器,到处都有单片机的用武之地. 在当代繁忙的工作与生活中,时间与我们每一个人都有非常密切的关系,每个人都受到时间的影响。为了更好的利用我们自己的时间,我们必须对时间有一个度量,因此产生了钟表。钟表的发展是非常迅速的,从刚开始的机械式钟表到现在普遍用到的数字式钟表,即使现在钟表千奇百怪,但是它们都只是完成一种功能计时功能,只是工作原理不同而已,在人们的使用过程中,逐渐发现了钟表的功能太单一,没有更大程度上的满足人们的需求。因此在这里,我想能不能把一些辅助功能加入钟表中去。在此设计中所设计的钟表不但具有普通钟表的功能,它还能实现多个额外的功能:温度测量、电网频率测量,而且还能进行遥控止闹。本设计主要分为硬件电路设计和软件实现两大部分。硬件电路设计采用模块设计:中央处理电路、时钟电路、电压与电网频率测量电路、v/f转换电路、音乐闹钟电路、键盘电路和液晶显示电路、指示灯电路、通信电路以及电源电路几大部分;软件采用汇编语言编程实现.ds181320温度传感器液晶显示键盘输入与控制 8051 ds12887实时时钟闹铃指示门控电 路波形整形电 源基准时钟信号发生器图1.系统结构图一.硬件设计1.系统原理分析系统设计中用到89c51单片机的部分功能:包括内部定时器,键盘扩展,程序中断,口通信等。用一个四联体的共阴极八段显示器,可通过一个输入输出口作为显示器数据发送端;另一个输入输出口的四位作为显示器各位的片选信号,另四位作为键盘扩展口使用。采用一个频率为32.768 khz的晶振构成时钟电路。系统原理图如图1:显示器单片机串口键盘图2. 系统原理图2.硬件电路图及其功能图3.硬件电路图其功能为: 功能说明(1).内定时间为12点00分00秒,提供新产品或换电池时使用.如里没有内定时间在首次开机进,会造成时间乱码,至于开机时是使用内定时间还是rtc内部时间由rtc使用者ram 0e地址的内容来决定,其内容为1表示rtc内部已有时间值,读取rtc内部时间表示,非1则表示rtc内部尚末有时间值,定入内定时间并显示(2).时间调整每按p3.0(rxd)一次加1秒每按p3.1(rxd)一次加1分每按p3.2(rxd)一次加1时(3).硬件电路说明(a)8054alr为电位检测器,引脚1-out,引脚2-vcc,引脚3-gnd当vcc大于4.5时,out为hi,小于4.5v为l0(b)当外部电源存在时,3906三极管饱和,使vb约为+5v,8054alr的out脚为hi,由8051的p2.0控制ml146818的ke脚,p2.0=0时使能,可进行存取(c)当外部电源消失时,3906三极管截止,使vb由镍镉电池提供为3.6v使8054alr的out脚为l0,此时mc146818的ke必为hi,只进行时钟计时功能及保留其内部ram的数据(d)本电路mc146818 osc1 osc2时基脉冲输入方式与个人电脑相同采用外部时基脉冲输入,由4069 32.768khz 10p 2m组成时钟输入osc1(osc2开路)(e)8051 p1口接6个七段显示器分别显示时分秒,由timer1每3ms中断一次执行扫描显示工作(4).读取mc146818时间读取mc146818的时钟值有下列3种方法:(a)检查a寄存器的uip=0,表示未进行周期更新,至少有244us的时间可读取.(b)更新周期结束中断(设定b寄存器uie=1),约有1秒的时间可读取.(c)周期性中断法(设定b寄存器pie=1),约有1984+244us的时间可读.(5).本专题采用更新周期结束中断时,约有1秒的时间可读mc146818的时间值,其步骤如下:(a)硬件:mc146818的/irq接8051int1,当更新周期结束时,由/irq产生低电平,对8051int1产生中断.(b)设定mc146818b寄存器的uie=1,更新周期结束中断使能位,中断时由/irq输出低电平.(c)产生中断后,须读取mc146818c寄存器一次,将/riq清除为0,否则会产生中断错误.(6).rtc地址设置:p27 p26 p25 p24 p23 p22 p20 p07 p06 p05 p04 p03 p02 p01 p00x x x x x x 0 x x x x x x x xrtc equ 0000;定义mc146818起始地址=秒地址各寄存器读写地址如下:rtc 秒;rtc+2 分;rtc+4 时;rtc+0ah a寄存器;rtc+0bh b寄存器;rtc+0ch c寄存器;3.特殊功能1. 温度检测方案选择采用集成温度传感器 ds18b20 。该传感器结构简单,不需外接电路,数据传输采用 one-wire总线,可用一根 i/o数据线即供电又传输数据,在-10 -+85范围内精度为0.5,完全能满足题目1的要求,且分辨率较高,重复性和可靠性好。2、 闹铃响及报警模块 闹铃响采用带音乐芯片的扬声器,过、欠压报警采用不同声音的蜂鸣器完成报警功能。二.软件设计1. 程序流程图图4.程序流程图2.实现主程序ptc equ 0000h ;定义mc146818起始地址=秒地址time equ 30h ;存放时分秒起始地址30h50hptr equ20h ;显示器扫描指针 org 00hjmp startorg 13hjmp exet1 ;int1中断子程序org 1bhjmp timer1 ;timer1中断子程序start: mov sp,#70h ;设置堆栈 mov tmod,#10 mov tl1,#low(65536-3000);3ms中断一次扫描七段显示器 mov th1,#high(65536-3000) mov ptr,#00h ;显示扫描指针为0 mov ie,#8ch ;timer1 int1中断使能 setb tr1 ;启动timer1 mov dptr,#rtc+0ah ;a寄存器32.768khz dv2=0 dv1=1 dv0=0 mov a,#20h movx dptr,#rtc+0bh;b寄存器set=1更新周期停止,进行时钟设定 mov a,#80h movx dptr,a mov dptr,#rtc+0eh ;读取rtc 0e地址内容判断是否为1? movx a,dptr cjnz a,#01h,start0 jmp start1start0: ;不是则写入内定时间12:00:00 mov dptr,#rtc ;秒地址 mov a,#00h ;00秒 movx dptr,a mov dptr,#rtc+2 ;分地址 mov a,#00h ;00分 movx dptr,a mov dptr,#rtc+4 ;时地址 mov a,#12h ;12时 movx dptr,a mov dptr,#rtc+0eh ;rtc 0e地址写入1,表示内部已有时间值的识别码 mov a,#01h movx dptr,astart1: mov dptr,#rtc+0bh ;是则b寄存器uie=1,rtc中断使能开始计时(十进制,24小时制) mov a,#12h movx dptr,aloop: jnb p3.0,sec0 ;是否按p3.0?是则秒加1 jnb p3.1,min0 ;是否按p3.1?是则分加1 jnb p3.2,hur0 ;是否按p3.2?是则时加1 jnb loopsec0: jmp sec ;间接跳跃 min0: jmp min ;间接跳跃hur0: jmp hur ;间接跳跃sec: call delay ;按钮消除抖动 jnb p3.0,$ ;检测按钮是否放开? call delay ;按钮消除抖动 mov dptr,#rtc+0bh mov a,#80h ;b寄存器set=1更新周期停止,进行时钟设定 movx dptr,a mov dptr,#rtc ;读取秒寄存器内的值 movx a,dptr cjne a,#59h,sec1 ;是否为59h,是则存入0 mov a,00h jmp sec2sec1: add a,#01h ;不是则秒加1,做十进制调整 da asec2: mov dptr,#rtc ;写入秒寄存器 movx dptr,a mov b,#10h ;将秒个位数与十位数分别写入ram 30h 31h div ab mov time+1,a mov time,bsec3: mov dptr,#rtc+0bh ;b寄存器uie=1 rtc中断使能开始计时(十进制,24小时制) mov a,#12h movx dptr,a jmp loopmin: call delay ;按钮消除抖动 jnb p3.1,$ ;检测按钮是否放开? call delay ;按钮消除抖动 mov dptr,#rtc+0bh mov a,#80h ;b寄存器set=1更新周期停止,进行时钟设定 movx dptr,a mov dptr,#rtc+2 ;读取分寄存器内的值 movx a,dptr cjne a,#59h,min1 ;是否为59,是则存入0 mov a,#00h jmp min2min1: add a,#01h ;不是则分加1,作十进制调整 da amin2: mov dptr,#rtc+2 ;写入分寄存器 movx dptr,a mov b,#10h ;将分个位数与十位数分别写入ram 32h 33h div ab mov time+3,a mov time+2,b jmp sec3hur: call delay ;按钮消除抖动 jmp p3.2,$ ;检测按钮是否放开? call delay ;按钮消除抖动 mov dptr,#rtc+0bh mov a,#80h ;b寄存器set=1更新周期停止,进行时钟设定 movx dptr,a mov dptr,#rtc+4 ;读取时寄存器内的值 movx a.dptr cjne a,#32h,hur1 ;是否为23h,是则存入0 mov a,#00h jmp hur2hur1: add a,#01h ;不是则时加1,做十进制调整 da ahur2: mov dptr,#rtc+4 ;写入时寄存器 movx dptr,a mov b,#10h ;将时个位数与十位数分别定入ram 34h 35h div ab mov time+5,a mov time+4,b jmp sec3timer1: push acc push psw mov tl1,#low(65536-3000);重设中断时间3ms mov th1,#high(65536-3000) mov a,ptr cjne a,#06h,tim10;是否已扫描指针加时间ram地址,显示该时间地址的内容 add a,#time mov r0,a mov a,ptr ;显示器扫描码(在十进数)加数据码(个位数)输出至p1显示 swap a orl a,r0 mov p1,a inc ptr ;扫描下一个显示器 pop psw pop acc retiext1: ;int1中断子程序 push acc push psw mov dptr,#rtc+0ch;读c寄存器,清除中断标志位irqf movx a,dptr mov dptr,#rtc ;读秒寄存器的值 movx a,dptr mov b,#10h ;将十位数个位数分别存入31h 30
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《战国策》第八-2024年中考语文复习之《经典常谈》章节阅读与训练(原卷版)
- 强化基础管理-塑造品牌形象
- 小学诚信文明演讲稿(3篇)
- 金融业开幕式讲话稿(3篇)
- 店长年度考核的个人总结范文(3篇)
- 珠宝行业工作计划6篇
- 高中技术《第二章流程与设计》单元检测
- 有关辅导员开学的讲话稿范文(3篇)
- 新教材高考地理二轮复习二7类选择题技法专项训练技法2直选法含答案
- 第24章 解直角三角形 综合检测
- (统编2024版)道德与法治七上10.1爱护身体 课件
- GB/T 30391-2024花椒
- 供电线路维护合同
- 胸部术后护理科普
- 鞋子工厂供货合同模板
- 2024码头租赁合同范本
- 木材采运智能决策支持系统
- 上海市市辖区(2024年-2025年小学四年级语文)部编版期末考试(下学期)试卷及答案
- 认识梯形(课件)四年级上册人教版
- 【期中考后反思】《反躬自省,砥砺奋进》-2022-2023学年初中主题班会课件
- 2019新教材人教版生物必修1教材课后习题答案
评论
0/150
提交评论