ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:391.58KB ,
资源ID:2191447      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2191447.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机综合实验报告.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机综合实验报告.docx

1、单片机综合实验报告单片机综合实验报告题 目: 电子时钟(LCD显示) 班 级: 姓 名: 学 号: 指导老师: 时 间: 一、实验内容:以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间:使用字符型LCD显示器显示当前时间。显示格式为“时时:分分:秒秒”。用4个功能键操作来设置当前时间,4个功能键接在P1.0P1.3引脚上。功能键K1K4功能如下。K1进入设置现在的时间。K2设置小时。K3设置分钟。K4确认完成设置。程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:00:00”,然后开始计时。二、实验电路及功能说明本系统采用STC89C52单片机,DS1302

2、时钟芯片及18B20温度传感器作为主要硬件进行设计开发,通过12864液晶显示器及键盘作为人机交互。充分发挥了各部分的性能及特点,操作简单,界面简洁易懂。实物系统实现了以下功能:数字式时钟显示起始时间设置室温实时显示全机热复位显示器灰度可调1) 单片机电路单片机电路采用STC89C51RC作为主控芯片,芯片内集成了通用8位中央处理器和ISP Flash存储单元,具有在系统可编程(ISP)特性,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,指令集结构简单。芯片外接11.05926MHz及两片0603封装20P贴片电容作为晶振电路,为单片机提供时钟信号。2) 复位电路RST为单片机的复

3、位引脚。当连续输入两个机器周期以上高电时为有效,用来完成单片机的复位初始化操作,复位后程序计数器PC=0000H,即复位后将从程序储存器的0000H单元读取第一条指令代码。系统采用上电复位:加电后给RST一个高电平脉冲。简单的措施是阻容串联,电容接电源、电阻接地、中间节点接RST。加电瞬间,电容两侧电压差为0,两侧均为高,RST脚为高,随后C通过R放电使RST节点到0。3) 12864显示电路12864是128*64点阵液晶模块的点阵数简称,内部集成字库,采用串行及并行两种通信方式与MCU通信。本系统采用串行方式通信,通过改变V0端口电压改变背光对比度。4) DS1302时钟电路DS1302实

4、时时钟芯片广泛应用于电话、传真、便携式仪器等产品领域. DS1302是一个实时时钟芯片,可以提供秒、分、小时、日期、月、年等信息,并且还有软年自动调整的能力,可以通过配置AM/PM来决定采用24小时格式还是12小时格式。采用串行I/O通信方式,相对并行来说比较节省IO口的使用。DS1302时钟芯片功耗低,它在工作电压2.0V的时候,工作电流小于300nA。5) 温度采集电路温度采集电路DS18B20温度传感器,信号线采用4.7k电阻上拉。6) 独立键盘设置4个按键组成独立键盘,共用10K对地限流电阻。7) 下载电路下载电路外引P3.0(RXD)、P3.1(TXD),使用STC原厂烧录器下载程序

5、。8) 供电电路全机供电采取12V锂聚合物电池,它具有能量高、小型化、轻量化等特点,方便使用。因MCU及外围电路工作电压为5V,故采用7805进行直流降压。7805三端稳压IC来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。根据硬件电路设计规则,虽然整机采用直流供电,为了适应后期变压器供电可能引入的交流成分,在稳压芯片前设置了470uF/25V电解电容及104瓷片电容进行滤波,并在各个芯片供电输入前设置了瓷片电容用来滤除高频信号干扰。三、实验程序流程图:四、实验结果分析经测试,系统程序运行稳定可靠,时间精度准确,整机掉电后,系统时间

6、仍可维持正常计时。人机交互界面简洁。五、心得体会在为期一个学期的单片机实验课程中,承蒙高林老师的耐心指导和讲解。通过综合实验的开发加强了我动手能力。在系统设计过程中得到了创新实践中心开发平台提供的硬件支持和开发环境,使我顺利完成了本次实践制作,在此一并表示感谢。六、程序清单主函数:/* 带温度显示的数字时钟 白赫 031140504实验操作: KEY1-进入设置 KEY2-设置小时 KEY3-设置分 KEY4-确定*/#include /使用,优先从安装文件目录查找#include led.h#include key.h#include 18b20.h#include lcd.h#includ

7、e ds1302.hvoid delay_ms(uint t);/延时nmsvoid set(void); /设置时间void show_time(void); /显示时间void main(void) uchar i=0,key=0; int t=0;/温度 LED_Init(); LCD_Init(); /12864初始化 KEY_Init(); /按键初始化 Ds1302_Init(); /ds1302初始化 DS18B20_Init(); /DS18B20初始化 /启动显示界面 LCD_writeString(0,1,超级电子时钟); LCD_writeString(2,0,03114

8、0504); LCD_writeString(2,5,白赫); LCD_writeChar(3); LCD_writeString(3,3, ); LCD_writeChar(D);LCD_writeChar(r);LCD_writeChar(:); LCD_writeString(3,5,高林); while(1) key=KEY_scan(); /获取键值 if(key=1)/按下1键,进入设置 set(); /进行时间设置 Ds1302_Write_Time(); /更新时间参数 show_time(); /显示时间 else/如果没有进入设置 Ds1302_Read_Time(); /

9、读取时间参数 show_time(); /显示时间 delay_ms(50); /防止温度显示错位,加一个小延时 t=ReadTemperature(); /读取温度 LCD_Wendu(t); /显示温度 delay_ms(50); i+; if(i10) LED=!LED; /闪烁灯,指示程序正在运行 i=0; /*函数名:delay_ms()描述 :进行nms延时输入 :t-延时的时间返回 :void*/void delay_ms(uint t) uint i,j; for(i=0; it; i+) for(j=0; j23) /如果小时值大于23 ,则重新置为0 time4=0; LC

10、D_writeNumber(1,1,time4);/显示小时值 break; case 3: /分钟设置 time5+=1; if(time559) /如果分钟值大于59 ,则重新置为0 time5=0; LCD_writeNumber(1,3,time5);/显示分钟值 break; case 4:key_flag=0;break; /确定,key_flag置0,退出while(key_flag)循环 /*函数名:show_time()描述 :显示时间的函数输入 :void返回 :void*/void show_time(void) LCD_writeNumber(1,1,time4);/时

11、 LCD_writeChar( ); LCD_writeChar(:); LCD_writeNumber(1,3,time5);/分 LCD_writeChar( ); LCD_writeChar(:); LCD_writeNumber(1,5,time6);/秒按键函数#include key.hvoid KEY_Delay(void) int i,j; for(i=0;i10;i+) for(j=0;j110;j+);/*函数名 :KEY_Init()描述 :初始化按键四个IO为高输入 :void返回 :void*/void KEY_Init(void) key1=1; key2=1; key3=1; key4=1;/*函数名 :KEY_scan()描述 :按键检测程序输入 :void返回 :按键的标号*/uchar KEY_scan(void) if(key1=0 |key2=0 |key3=0 |key4=0) KEY_D

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1