




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电子系统设计课程设计题 目: 基于89C51系列单片机的电子钟设计 学生姓名: 学号: 专 业: 电子信息工程 院(系): 信息工程学院 完成时间: 2012.6.13 2012年 6 月 13 日目录1设计要求. 22设计方案和论证. 22.1总设计原理框图. 2 2.2设计方案的选择. 2 2.2.1计时方案. 2 2.2.2显示系统的方案. 33硬件部分. 33.1主要器件. 33.2 IO口分配说明. 33.3详细器件介绍 . 43.3.1 STC89C51单片机介绍 . 43.3.2电源. 63.3.3复位电路. 73.3.4 ULN2003(大电流驱动阵列). 73.3.5储存芯片:EEPROM (AT24C02). 83.3.6 PL2302(USB转RS232控制器). 83.3.7液晶显示1602. 103.3.8时钟芯片DS1302. 114 软件部分. 134.1主程序流程图. 134.2液晶初始化流程图. 144.3时间与日期显示流程图. 154.4温度显示流程图. 164.5键扫描流程图. 175调试和结果分析. 19 5.1调试. 195.2问题和结果分析. 206心得体会. 201.设计要求 设计产品实现一个依据时段可变显示亮度电子钟,具体如下:(1) 能够实现基本时钟的走时,显示范围是00:00:0023:59:59。能够实现时钟的调整, 通过按键可以对“时”位和“分”位进行加1调节,并能当加至最大值时能重新归零。(2)能够实现当前室温的测量功能,并在数码管上予以显示(3)能够实现年月日的显示与切换。(4)能够实现温度的显示与切换。(5)能够实现根据时段自动改变显示亮度。 2.设计方案和论证 本次设计时钟电路,使用了STC89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的时、分、秒、年、月、日、星期。使用C语言程序来控制整个时钟显示,主要这样通过四个模块:键盘、时钟芯片、温度传感器、1602lcd显示即可满足设计要求。2.1总设计原理框图 如下图所示: MCU1602液晶显示 DS18B20测温DS1302时钟 键盘控制2.2 设计方案的选择2.2.1 计时方案 方案一:采用实时时钟芯片 现在市场上有很多实时时钟集成电路,如DS1287、DS12887、DS1302等。这些实时时钟芯片具备年、月、日、时、分、秒计时功能和多点定时功能,计时数据的更新每秒自动进行一次,不需要程序干预。因此,在工业实时测控系统中多采用这一类专用芯片来实现实时时钟功能。 方案二:使用单片机内部的可编程定时器 利用单片机内部的定时计数器进行中端定时,配合软件延时实现时、分、秒的计时。该方案节省硬件成本,但程序设计较为复杂。所以为了程序的简化和时间的精确,我们选用方案一。采用DS1302高性能时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM做数据暂存区,工作电压2.5V5.5V范围内,2.5V时耗电小于300nA.能耗低,成本也不高而且电路也简单。2.2.2显示系统的方案 方案1:用数码管或LED显示。 方案2:用液晶1602显示。时钟和温度的显示可以用数码管或LED,而且价格便宜。但是数码管的只能显示简单的设计的系统,与我们设计要求也不相符。有很多东西需要显示,还是用显示功能更好的液晶显示器比较好,它能显示更多的数据,首选1602。因此我们选择方案二。3 硬件部分3.1主要器件:STC89C51电源 稳压芯片:7805、LM1117-2.85USB转串口芯片:PL2303HX通讯芯片:MAX232储存芯片:IIC协议控制芯片AT24C02 (EEPROM)时钟芯片:SPI协议控制芯片DS1302温度传感器:1-WIRE协议控制芯片DS18B20液晶显示芯片:16023.2 IO 口分配说明l 1602 液晶:RS 接P2.5,R/W接P2.6,E 接P2.7,数据口接P0RST接2.2l 独立按键:分别接P3.2,P3.3,P3.4l 时钟芯片DS1302:SCLK接P1.6,RST 接P1.7,I/O 接P3.5l 储存芯片AT24C02:SCLK接P1.5,SDA 接P3.6l 通讯芯片MAX232:接P3.0,P3.1l USB 转串口芯片PL2303:接P3.0,P3.1(注:这里有跳线帽进行选择)ULN2003芯片去驱动蜂鸣器等。3.3详细器件介绍 3.3.1 STC89C51单片机介绍 STC89C51单片机管脚结构图STC89C51单片机是由深圳宏晶公司代理销售的一款MCU,是由美国设计生产的一种低电压、高性能CMOS 8位单片机,片内含8kbytes的可反复写的FlashROM和128bytes的RAM,2个16位定时计数器。 STC89C51单片机内部主要包括累加器ACC(有时也简称为A)、程序状态字PSW、地址指示器DPTR、只读存储器ROM、随机存取存储器RAM、寄存器、并行I/O接口P0P3、定时器/计数器、串行I/O接口以及定时控制逻辑电路等。这些部件通过内部总线联接起来,构成一个完整的微型计算机。其管脚图如图所示。 VCC:电源。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程 序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作 输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻 拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存 储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器 的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外 将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。EA/VPP:当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时, /EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。3.3.2 电源7805为稳压芯片,电源电路保证电路中的各个芯片的正常工作3.3.3复位电路 该复位电路实现对51或AVR单片机系统的手动复位,这里我们使用的是STC89C51系列,因而在跳线J2处将1、2用跳线帽短接3.3.4 ULN2003(大电流驱动阵列)ULN2003 是高耐压、大电流复合晶体管阵列,由七个硅NPN 复合晶体管组成。输入5VTTL电平,输出可达500mA/50V。ULN2003是大电流驱动阵列,可用于驱动单片机上各类芯片正常工作3.3.5 储存芯片:EEPROM (AT24C02) AT24C02是一个2K位串行CMOS E2PROM, 内部含有256个8位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功耗。AT24C02有一个16字节页写缓冲器。该器件通过IIC总线接口进行操作,有一个专门的写保护功能。PL2302(USB转RS232控制器)3.3.6 PL2302(USB转RS232控制器) PL2303 是Prolific 公司生产的一种高度集成的RS232-USB 接口转换器,可提供一个RS232 全双工异步串行通信装置与USB 功能接口便利联接的解决方案。该器件内置USB功能控制器、USB 收发器、振荡器和带有全部调制解调器控制信号的UART, 只需外接几只电容就可实现USB 信号与RS232 信号的转换,能够方便嵌入到各种设备,所以2000年左右开始A经常推荐使用该款芯片;该器件作为USB/RS232 双向转换器,一方面从主机接收USB 数据并将其转换为RS232 信息流格式发送给外设;另一方面从RS232 外设接收数据转换为USB 数据格式传送回主机。这些工作全部由器件自动完成。 TXD 为串口数据输出,TXD 为串口数据输入。PL2302内置USB功能控制器、USB收发器、振荡器和带有全部调制解调器控制信号的UART(并行输入成为串行输出的芯片),外接电容等实现USB信号与RS232信号的转换。这里我们在J24上用短路片将1、2分别与3、4连接,使用USB转串口功能。3.3.7液晶显示1602 1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形。 微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。 1 1602引脚说明3.3.8时钟芯片DS1302 DS1302 是DALLAS 公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31 字节静态RAM,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿等多种功能。DS1302 用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录。这种记录对长时间的连续测控系统结果的分析以及对异常数据出现的原因的查找有重要意义。Vcc2:主电源; Vcc1:备份电源。当Vcc2Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2 Vcc1时,由Vcc1向DS1302供电。 SCLK:串行时钟,输入,控制数据的输入与输出;I/O:三线接口时的双向数据线;CE:输入信号,在读、写数据期间,必须为高。该引脚有两个功能:第一,CE开始控制字访问移位寄存器的控制逻辑;其次,CE提供结束单字节或多字节数据传输的方法。3.3.9温度传感器DS18B20DS1820 温度传感器用于室温数据的采集。通过一个单线接口发送或接收信息,因此在中央微处理器和DS1820 之间仅需一条连接线(加上地线)。用于读写和温度转换的电源可以从数据线本身获得,无需外部电源。4 软件部分 4.1主程序流程图主函数void main()lcd_init(); /液晶屏初始化子函数ds1302_init(); /DS1302时钟的初始化子函数init(); /定时计数器的设置while(1) keyscan(); /键盘扫描子函数 中断子程序void timer0() interrupt 1 /取得并显示日历和时间/Init_DS18B20(); /DS18b20初始化子函数 flag=ReadTemperature();/ /读取秒时分周日月年七个数据miao = BCD_Decimal(read_1302(0x81);(DS1302的读寄存器与写寄存器不一样)fen = BCD_Decimal(read_1302(0x83);shi = BCD_Decimal(read_1302(0x85);ri = BCD_Decimal(read_1302(0x87);yue = BCD_Decimal(read_1302(0x89);nian=BCD_Decimal(read_1302(0x8d);week=BCD_Decimal(read_1302(0x8b);/显示温度、秒、时、分数据:write_temp(12,flag);/显示温度,从第二行第12个字符后开始显示write_sfm(8,miao);write_sfm(5,fen);write_sfm(2,shi);/显示日、月、年数据:write_nyr(9,ri);/日期,从第二行第9个字符后开始显示write_nyr(6,yue);write_nyr(3,nian);write_week(week);4.2液晶初始化流程图lcd_init()/*液晶初始化函数*write_1602com(0x38);/设置液晶工作模式, 意思:16*2行显示,5*7点阵,8位数据write_1602com(0x0c);/开显示不显示光标write_1602com(0x06);/整屏不移动,光标自动右移write_1602com(0x01);/清显示write_1602com(yh+1);/日历显示固定符号 从第一行第1个位置之后开始显示for(a=0;a14;a+)write_1602dat(tab1a);/向液晶屏写日历 显示的固定符号部分/delay(3);write_1602com(er+2);/时间显示固定符号写入位置, 从第2个位置后开始显示for(a=0;a8;a+)write_1602dat(tab2a);/写显示时间固定符号, 两个冒号/delay(3);4.3时间与日期显示流程图/时分秒显示子函数void write_sfm(uchar add,uchar dat)/向LCD写时分秒,有显示位置加、显示数据,两个参数uchar gw,sw;gw=dat%10;/取得个位数字sw=dat/10;/取得十位数字write_1602com(er+add);/er是头文件 规定的值0x80+0x40write_1602dat(0x30+sw);/数字+30 得到该数字的LCD1602显示码write_1602dat(0x30+gw);/数字+30 得到该数字的LCD1602显示码 4.4温度显示流程图void write_temp(uchar add,uchar dat)/向LCD写温度数据,并指定显示位置uchar gw,sw;gw=dat%10; /取得个位数字sw=dat/10; /取得十位数字write_1602com(er+add); /er是头文件 规定的值0x80+0x40write_1602dat(0x30+sw); /数字+30 得到该数字的LCD1602显示码write_1602dat(0x30+gw); /数字+30 得到该数字的LCD1602显示码 write_1602dat(0xdf); / 显示温度的小圆圈符号, 0xdf是液晶屏字符库的该符号地址码 write_1602dat(0x43); /显示C符号,0x43是液晶屏字符库里大写C的地址码4.5键扫描流程图判断减小键是否按下Switch语句(根据key1n值减小要改变的时间日期参数,并写入ds1302,计时)结束Switch语句(根据key1n值增加要改变的时间日期参数,并写入ds1302,计时)判断增加键是否按下去抖动根据设置键按下次数设置键标志key1n值Switch语句(根据key1n值设置光标位置)键扫描判断设置键是否按下键扫描函数void keyscan()if(key1=0)/-key1为功能键(设置键)-delay(9);/延时,用于消抖动if(key1=0)/延时后再次确认按键按下while(!key1);key1n+;if(key1n=9)key1n=1;/设置按键共有秒、分、时、星期、日、月、年、返回,8个功能循环switch(key1n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 设备管理的年终工作总结
- 煤矿通风工作汇报
- 营销中心月度工作总结
- 经济开放政策解读
- 五位一体课件
- 2025农产品买卖合同模板
- 广东省韶关市乐昌市2024-2025学年高一下学期第一次月考思想政治试题含参考答案
- 2025标准民间借款合同范本
- 公司放假安全培训课件
- 销售工作总结和工作规划
- 光纤技术考试题及答案
- 林则徐虎门销烟课件
- 退火炉施工方案(3篇)
- 高层办公楼消防知识培训课件
- 健身房股东协议合同范本
- 《急性肺栓塞诊断和治疗指南2025》解读
- 第一单元 100以内数加与减(二) 单元教学设计-2025北师大版二年级数学上册
- 科学道德与学风建设讲座
- 2025至2030年中国丁酮肟市场现状分析及前景预测报告
- Unit 2 Home Sweet Home 语法与阅读专项练习 (含答案) 人教版(2024)八年级上册
- 2025年少先队应知应会知识竞赛考试题库及答案
评论
0/150
提交评论