单片机实验报告
单片机实验报告

单片机实验报告实验一:存储器块清零或赋值一、实验目的1 熟悉存储器的读写方法,熟悉51汇编语言结构。
2 熟悉循环结构程序的编写。
3 熟悉编程环境和程序的调试。
二、实验内容指定存储器中某块的起始地址和长度,要求将其内容清零或赋值。
例如将4000H开始的10个字节内容清零或全部赋值为33H。
注意:1 文件不要用中文名称保存时不要用中文路径(目录),不要放在“桌面”上,源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。
2 查看存储器菜单使用:窗口---数据窗口---XDATA 观察存储器内容3 查看SFR:窗口---CPU窗口查看CPU寄存器SFR4 单步执行:执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错误原因,修改。
5利用多种执行方法和观察各种窗口调试程序,直至程序满意为止。
三、实验仪器微机、VW,WA VE6000编程环境软件,(单片机实验箱)Lab6000/Lab6000通用微控制器MCS51实验四、实验步骤1、新建工程文件。
(注意:文件不要用中文名称保存时不要用中文路径)2、编写程序。
3、运行和调试过程。
外部数据存储器(4000H为首地址的10个字节)中初始状态(随便赋值FFH):单步执行程序,观察SFR中外部地址指针的变化;全速执行程序,可以看到外部数据存储器已赋值33H:五、实验结果可以看到外部数据存储器已赋值33H:六、问题讨论本次实验能够清楚地了解存储器中数据的移动和赋值过程,通过单步执行,对于每一步的指令操作过程能够了解如何执行,查看每条语句涉及到的寄存器和存储器内容的变化结果。
同时,学习掌握汇编程序的编写和调试过程。
实验二:存储块移动一、实验目的1 熟悉51汇编语言程序结构。
2 熟悉循环结构程序的编写,进一步熟悉指令系统。
3 熟悉编程环境和程序的调试。
二、实验内容将指定源地址(3000H)和长度(10字节)的存储块移动到目的地址(3050H)。
实验报告(单片机实验报告)

1 双字节无符号数加法例1: 双字节无符号数加法(R0 R1)+(R2 R3) → (R4 R5),R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放低字节。
已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h)假设其和不超过16位。
请编程。
org 0000hLjmp startorg 0050hstart:mov R0,#93hmov R1, #79hmov R2,#25hmov R3, #0a4hmov A,R1ADD A,R3mov R5,Amov A,R0ADDC A,R2mov R4,Ass: jmp ssend2双字节无符号数减法例2: 双字节无符号数相减(R0 R1)-(R2 R3) → (R4 R5)。
R0、 R2、R4存放16位数的高字节, R1、 R3、 R5存放低字节,已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h);请编程。
同学自己可以设置被减数与减数数值org 0000hLjmp startorg 0050hstart:mov R0,#93hmov R1,#79hmov R2,#25hmov R3,#0a4hmov A,R1CLR CSUBB A,R3mov R5,Amov A,R0SUBB A,R2mov R4,Ass: jmp ssend3双字节数乘以单字节数例3: 利用单字节乘法指令,进行双字节数乘以单字节数运算。
若被乘数为16位无符号数, 地址为M1(30H) 和M1+1(31H)(低位先、高位后), 乘数为8位无符号数, 地址为M2(32H), 积由高位到低位存入R2、 R3和R4三个寄存器中。
30H,31H,32H内容 12H,34H,56H ;org 0000hLjmp startorg 0050hstart:mov 30h,#12hmov 31h,#34hmov 32h,#56hmov a,(30h)mov b,(32h)mul abmov R3,bmov R4,amov a,(31h)mov b,(32h)mul abadd A,R3mov R3,Amov A,bADDC A,#00hmov R2,Ass: jmp ssend4. 把8位二进制数转换为3位BCD例4: 利用除法指令把累加器A中的8位二进制数转换为3位BCD 数, 并以压缩形式存放在地址M1、 M2单元中。
单片机实训报告总结

单片机实训报告总结篇一:51单片机实训报告“51单片机”精简开发板的组装及调试实训报告为期一周的单片机实习已经结束了。
通过此次实训,让我们掌握了单片机基本原理的基础、单片机的编程知识以及初步掌握单片机应用系统开发实用技术,了解“51”单片机精简开发板的焊接方法。
同时培养我们理论与实践相结合的能力,提高分析问题和解决问题的能力,增强学生独立工作能力;培养了我们团结合作、共同探讨、共同前进的精神与严谨的科学作风。
此次实训主要有以下几个方面:一、实训目的1.了解“51”精简开发板的工作原理及其结构。
2.了解复杂电子产品生产制造的全过程。
3.熟练掌握电子元器件的焊接方法及技巧,训练动手能力,培养工程实践概念。
4.能运用51单片机进行简单的单片机应用系统的硬件设计。
5.掌握单片机应用系统的硬件、软件调试方法二、实验原理流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的硬件组成的单个单片机。
它的电气性能指标:输入电压:~6V,典型值为5V。
可用干电池组供电,也可用直流稳压电源供电。
如图所示:本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的硬件组成的单个单片机。
三、硬件组成1、晶振电路部分单片机系统正常工作的保证,如果振荡器不起振,系统将会不能工作;假如振荡器运行不规律,系统执行程序的时候就会出现时间上的误差,这在通信中会体现的很明显:电路将无法通信。
他是由一个晶振和两个瓷片电容组成的,x1和x2分别接单片机的x1和x2,晶振的瓷片电容是没有正负的,注意两个瓷片电容相连的那端一定要接地。
2、复位端、复位电路给单片机一个复位信号(一个一定时间的低电平)使程序从头开始执行;一般有两中复位方式:上电复位,在系统一上电时利用电容两端电压不能突变的原理给系统一个短时的低电平;手动复位,同过按钮接通低电平给系统复位,时如果手按着一直不放,系统将一直复位,不能正常。
单片机实验报告范文

单片机实验报告范文一、实验目的本实验的目的是通过学习单片机的基本原理和使用方法,掌握单片机在各个实际应用中的基本技能。
二、实验器材及原理1.实验器材:STC89C52单片机、电源、晶振、按键、LED灯、蜂鸣器等。
2.实验原理:单片机是一种微处理器,能够完成各种复杂的功能。
通过学习单片机的工作原理和编程方法,可以控制各种外围设备,实现不同的功能。
三、实验内容及步骤1.实验一:点亮LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)编写程序,点亮LED灯。
2.实验二:按键控制LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)将按键和LED灯与单片机相连。
(3)编写程序,实现按下按键控制LED灯亮灭。
3.实验三:数码管显示步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)将数码管与单片机相连。
(3)编写程序,将数字输出到数码管上显示。
4.实验四:定时器应用步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)编写程序,实现定时器功能。
四、实验结果及分析1.实验一:点亮LED灯LED灯成功点亮,证明单片机与外部设备的连接正常。
2.实验二:按键控制LED灯按下按键后,LED灯亮起,松开按键后,LED灯熄灭。
按键控制LED 灯的效果良好,说明单片机的输入输出功能正常。
3.实验三:数码管显示数码管成功显示数字,说明单片机能够实现数字输出功能。
通过程序设计,可以实现数码管显示不同的数字。
4.实验四:定时器应用定时器正常运行,能够实现精确的定时功能。
通过调节定时器的参数,可以实现不同的定时功能。
五、实验总结通过本次实验,我们学习了单片机的基本原理和使用方法。
通过掌握单片机的编程技巧,我们能够实现各种复杂的功能,如控制LED灯、按键控制、数码管显示等。
这些技能对于日常生活和工程设计都具有很大的实用性。
在实验过程中,我们遇到了各种问题,如电路连接错误、程序编写错误等。
单片机实验报告

单片机原理与应用实验报告学校:合肥工业大学班级:计算机科学与技术学号:姓名:第一章MC51 单片机原理及应用软件实验实验1:系统认识实验1.实验目的(1)了解ZY15MCU12BC2单片机实验开发装置的接线与安排。
掌握实验箱内拨位开关KF,KC的使用方法。
(2)通过实例程序的编辑、编译、链接及调试,熟悉Keil C51软件的使用方法和基本操作。
(3)教育学生爱抚实验装置,养成良好的实验习惯。
2.试验设备(1)ZY15MCU12BC2单片机实验开发装置一台。
(2)PC系列微机及相关软件。
3.试验内容(1)使用串行通讯电缆将实验开发装置与PC机相连。
(2)开启PC机及实验开发装置,启动Keil C51软件进入uVision2集成开发环境。
(3)确认拨位开关KF的开关为A端,确认89C51处于仿真状态。
(4)在uVision2开发平台上建立并编辑示例程序:计算N个数求和程序。
其中N个数分别放在片内RAM区50H到55H单元中,N=6,求和的结果放在片内RAM区03H(高位)和04H(低位)单元中。
题目:1)32H+41H+01H+56H+11H+03H=?2)895H+02H+02H+44H+48H+12H=?(5)编译连接源程序。
(6)在Keil uVision2主菜单窗口进入DEBUG调试环境,打开存储器窗口输入数据至片内RAM区50H到55H单元中,全速运行程序,并检查程序的运行结果,即观察在存储器窗口片内RAM区03H(高位)、04H(低位)单元中的数据是否正确。
(7)实验结束,撤出接线,将一切整理复原。
4.实验源程序ORG 0000HLJMP MAINORG 1000HMAIN: MOV R2,#06HMOV R3,#03HMOV R4,#04HMOV R0,#50HL1: MOV A,R4ADD A,@R0MOV R4,AINC R0CLR AADDC A,R3MOV R3,ADJNZ R2,L1END5. 实验结果截图6. 实验总结这次试验,熟悉了单片机开发的基本流程,对于实验的两道题目1)32H+41H+01H+56H+11H+03H=?2)895H+02H+02H+44H+48H+12H=?实验结果如上图所示50H~54H存放数据,第一道题计算出来是0x00DEH,第二道题目计算出来是0x0137H,实验结果和预期相符,成功的完成了实验。
51单片机实验报告

51单片机实验报告一、引言51单片机是一种广泛应用于嵌入式系统开发的微控制器芯片。
本实验旨在通过对51单片机的实验研究,加深对该芯片的理解和应用。
二、实验一:LED灯闪烁控制本实验通过编写程序,控制51单片机上的LED灯以特定的频率闪烁。
为了实现这个目标,我们首先需要了解51单片机的引脚布局,确定LED灯的连接方式。
然后,通过编写相应的汇编程序,控制引脚的电平变化,从而实现LED灯的闪烁。
三、实验二:数码管显示数码管是一种常见的输出设备,通过控制引脚的输出来显示特定的数字。
本实验中,我们通过编写程序,实现通过51单片机控制数码管的显示。
通过对数码管的驱动原理和编程的学习,我们可以灵活地控制数码管的显示内容和频率。
四、实验三:蜂鸣器发声蜂鸣器是一种常见的声音输出设备,通过控制引脚的输出来产生特定的声音。
本实验中,我们通过编写程序,实现通过51单片机控制蜂鸣器的发声。
通过学习蜂鸣器的驱动原理和编程,我们可以根据需要产生不同频率和节奏的声音。
五、实验四:温湿度检测温湿度检测是一种常见的环境监测需求。
本实验中,我们通过引入温湿度传感器,实现通过51单片机获取环境的温度和湿度信息。
通过编写程序和读取传感器的数据,我们可以实时监测环境的温湿度,并进行相应的控制和反馈。
六、实验五:红外遥控红外遥控是一种常见的无线通信方式,通过发送和接收红外信号来实现远程控制。
本实验中,我们通过引入红外发射和接收模块,实现通过51单片机进行红外遥控。
通过编写相应的程序,设置红外遥控的编码和解码方式,我们可以实现对外部设备的遥控操作。
七、实验六:定时器应用定时器是51单片机中的重要模块,它可以实现定时和计数等功能。
本实验中,我们通过学习定时器的工作原理和编程,实现通过51单片机进行定时和计数的应用。
通过编写相应的程序和设置定时器的参数,我们可以实现不同的定时和计数功能,满足各种需要。
八、实验七:串口通信串口通信是一种常见的数据通信方式,通过串口接口发送和接收数据。
【报告】南邮单片机实验报告

【报告】南邮单片机实验报告一、实验目的本次南邮单片机实验旨在通过实际操作和实践,深入了解单片机的工作原理、编程方法以及其在实际应用中的功能实现。
通过完成一系列实验任务,提高我们对单片机系统的设计、开发和调试能力,为今后在电子信息领域的学习和工作打下坚实的基础。
二、实验设备1、单片机开发板2、计算机3、编程软件(如 Keil C51)4、下载器5、示波器6、万用表三、实验内容(一)点亮 LED 灯1、原理通过控制单片机的引脚输出高低电平,来控制连接在引脚上的 LED 灯的亮灭。
2、编程实现使用 C 语言编写程序,设置相应引脚为输出模式,并通过循环语句实现 LED 灯的闪烁效果。
3、调试与观察将程序下载到单片机中,观察 LED 灯的闪烁情况,使用示波器测量引脚的电平变化,以验证程序的正确性。
(二)数码管显示1、原理数码管由多个发光二极管组成,通过控制不同段的发光二极管的亮灭,可以显示不同的数字和字符。
2、编程实现编写程序,实现数码管的动态扫描显示,将需要显示的数字或字符转换为对应的段码,并通过定时中断实现动态刷新。
3、调试与观察下载程序后,观察数码管的显示效果,检查是否能够正确显示预定的数字和字符。
(三)按键控制1、原理按键连接到单片机的引脚,当按键按下时,引脚的电平发生变化,通过检测引脚电平的变化来实现按键的识别和响应。
2、编程实现设置引脚为输入模式,采用查询或中断的方式检测按键状态,根据按键的不同操作执行相应的功能。
3、调试与观察按下不同的按键,观察系统的响应是否符合预期,如 LED 灯的状态改变、数码管显示内容的变化等。
(四)温度传感器采集与显示1、原理使用数字式温度传感器(如 DS18B20)采集环境温度,传感器将温度转换为数字信号,单片机通过特定的通信协议读取温度数据。
2、编程实现编写驱动程序,实现与温度传感器的通信,读取温度值,并将其转换为合适的显示格式。
3、调试与观察将传感器置于不同的温度环境中,观察数码管或液晶显示屏上显示的温度值是否准确。
西安电子科技大学单片机报告

单片机实验报告班级:学号:姓名:实验一:数码管实验一.实验目的1.了解数码管的显示原理;2.掌握JXARM9-2440 中数码管显示编程方法。
二.实验原理7段LED由7个发光二极管按“日”字形排列,所有发光二极管的阳极连在一起称共阳极接法,阴极连在一起称为共阴极接法。
LED显示器的接口一般有静态显示与动态显示接口两种方式。
本实验中采用的是动态显示接口,其中数码管扫描控制地址为0x20007000,位0-位5每位分别对应一个数码管,将其中某位清0 来选择相应的数码管,地址0x20006000 为数码管的数据寄存器。
数码管采用共阳方式,向该地址写一个数据就可以控制LED 的显示,其原理图如图所示。
三.实验内容及步骤1、六个数码管同时正向显示0-F ,然后反向显示F-0。
1)参照模板工程leddemo(modules\leddemo\leddemo.apj),添加相应的文件,并修改led 的工程设置;2)创建led.c 并加入到工程led 中;3)编写LED 显示函数void led_display(void),正向显示0-F 然后反向显示F-0,并循环执行以上动作,在每次显示之间延时一段时间;4)编译led,成功后,下载并运行,观察结果。
2、在六个数码管上依次显示“HELLO”,可分辨出轮流显示。
步骤同上。
3、在六个数码管上依次显示“HELLO”,分辨不出轮流显示。
步骤同上。
4、在每个数码管上递增显示0-9 。
步骤同上。
四.实验程序1、./*******************************************************************//*文件名称: LEDSEG7.C */ /*实验现象:数码管依次显示出0、1,2、……9、a、b、C、d、E、F */ /*******************************************************************/ #define U8 unsigned charunsigned char seg7table[16] = {/* 0 1 2 3 4 5 6 7*/0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8,/* 8 9 A B C D E F*/0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e, };void Delay(int time);/*******************************************************************/ /* 函数说明: JXARM9-2410 7段构共阳数码管测试 */ /* 功能描述: 依次在7段数码管上显示0123456789ABCDEF */ /* 返回代码: 无 */ /* 参数说明: 无 */ /*******************************************************************/ void Test_Seg7(void){int i;*((U8*)0x20007000)=0x00; /*六个数码管都亮*/for( ; ;){for(i=0;i<0x10;i++) /*数码管从0到F依次显示出来*/{*((U8*)0x20006000)=seg7table[i];Delay(1000);}for(0xf;i>=0x0;i--) /*数码管从F到0依次显示出来*/{*((U8*)0x20006000)=seg7table[i];Delay(1000);}}// TODO}/*****************************************************************/ /* Function name : 循环延时子程序 *//* Description : 循环 'time' 次 */ /* Return type :void */ /* Argument : 循环延时计数器 */ /*****************************************************************/ void Delay(int time){int i;int delayLoopCount=1000;for(;time>0;time--);for(i=0;i<delayLoopCount;i++);}实验结果:6个数码管上一次显示0,1,2…F,然后从F到0循环。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告摘要本次课程设计主要包含基于51单片机的4项实验设计:采用单总线数据传输时序的基于DS18B20的数字温度计设计;采用I2C总线时序的基于AT24C02的电子密码锁设计;SPI 传输时序的基于DS1302电子日历的设计;基于nRF24L01无线数据传输关键词:51单片机 DS18B20AT24C02 DS1302 nRF24L01目录摘要 (1)目录 (2)第一章基于DS18B20数字温度计设计 (3)1.1 系统功能 (3)1.2 系统组成 (3)1.3 系统设计 (3)1.3.1 总体设计 (3)1.3.2 硬件设计 (3)1.3.3 软件设计 (4)1.4 调试与结果 (6)第二章基于AT24C02电子密码锁设计 (7)2.1 系统功能 (8)2.2 系统组成 (8)2.3 系统设计 (9)2.3.1 总体设计 (9)2.3.2 硬件设计 (10)2.3.3 软件设计 (10)2.4 调试与结果 (12)第三章基于DS1302电子日历的设计 (12)3.1 系统功能 (13)3.2 系统组成 (13)3.3 系统设计 (13)3.3.1 总体设计 (13)3.3.2 硬件设计 (14)3.3.3 软件设计 (15)3.4 调试与结果 (15)第四章基于NRF24L01无线数据传输 (18)4.1 系统功能 (18)4.2 系统组成 (18)4.3 系统设计 (18)4.3.1 总体设计 (18)4.3.2 硬件设计 (18)4.3.3 软件设计 (19)4.4 调试与结果 (21)总结 (21)第一章基于DS18B20数字温度计的设计1.1系统功能1、用液晶屏实时显示当前环境的温度,分辨率为0.0625℃。
2、直接显示数字温度值。
3、可以任意设定温度的上下限报警功能。
4、系统的测量范围为 -55 ℃ ~+ 125 ℃;在 10~+ 85°C 范围内,精度为± 0.5°C 。
1.2系统组成图(1)系统组成图本设计由单片机主控芯片STC89C52和DS18B20芯片,液晶显示模块LCD1602组成。
DS18B20是单总线数字式温度传感器,采用单总线协议,即与单片机接口仅需占用一个I/O端口,无需任何外围器件,直接将温度转化为数字信号,以数字码形式串行输出。
可由一根I/O数据线既供电又传输数据。
LCD1602可以显示两行字符,每行16个字符,只能显示ASCII码字符。
用来显示读取的序列码和温度值。
1.3系统设计1.3.1总体设计将18B20的单总线DQ与单片机接口P2.2相连,通过时序控制首先对其进行初始化,然后发送读写和温度转换命令,使DS18B20内部温度传感器开始工作,最后从温度寄存器中读取两字节二进制码,转换为温度值后显示在LCD上。
同理,对于序列码的读取,也要在18B20初始化成功的基础上,发送读ROM 命令(该命令只适用于总线上存在单只DS18B20),将读取的字符显示在液晶屏上。
1.3.2硬件设计图(2)系统连接图1.3.3软件设计 读出温度子程序读出温度子程序的主要功能是读出RAM 中的9字节。
在读出时必须进行CRC 校验,校验有错时不能进行温度数据的改写。
读出温度子程序流程图如下图所示:图(3)读出温度子程序流程图读出温度子程序读出温度子程序的主要功能是读出RAM 中的9字节。
在读出时须进行CRC校验,校验有错时不进行温度数据的改写。
得出温度子程序流程图如下图所示。
图(4)得出温度子程序流程图温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令。
当采用12位分辨率时,转换时间约为750ms。
在本程序设计中,采用1s显示程序延时法等待转换的完成。
温度转换命令子程序流程图如下图所示。
图(5)温度转换命令子程序流程图计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定。
计算温度子程序流程图如下左图所示.现实数据刷新子程序现实数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。
现实数据刷新子程序流程图如下右图所示.图(6)计算温度子程序流程图图(7)现实数据刷新子程序流程图1.4 调试与结果如图(8),在液晶1602的第一行显示的即为序列码,第二行为实时温度:图(8)液晶显示结果第二章基于AT24C02电子密码锁的设计2.1 系统功能1、设置初始密码为“000000”2、进入密码锁后,按键S11修改密码,并在液晶显示密码S12为确定键,修改成功S13为重新设置键S14为退出密码锁3、在未进入密码锁时,S11,S12,S13,S14无效2.2 系统组成图(8)系统组成图本设计由STC89C52单片机的主芯片和具有I2C总线的接口的串行E2PROM AT24C02以及显示液晶LCD。
I2C要求有两条信号线,一条串行数据线SDA,一条串行时钟线SCL。
每根连接到总线的器件都可以通过唯一的地址进行寻址。
串行的8位双向数据传输,其位速率在标准模式下可达100Kbit/s,在快速模式下可达400Kbit/s,在高速模式下可达3.4Mbit/s。
只有在总线空闲时才允许启动数据传送,在数据传送过程中当时钟线为高电平时数据线必须保持稳定状态不允许有跳变,时钟线为高电平时数据线的任何电平变化将被看作总线的起始或停止信号。
•起始信号时钟线保持高电平期间数据线电平从高到低的跳变作为I2C 总线的起始信号图(9)起始信号•停止信号时钟线保持高电平期间数据线电平从低到高的跳变作为I2C 总线的停止信号图(10)停止信号I2C 总线数据传送时每成功地传送一个字节数据后接收器都必须产生一个应答信号应答的器件在第9 个时钟周期时将SDA 线拉低表示其已收到一个8 位数据。
图(11)应答信号•字节写在字节写模式下主器件发送起始命令和写命令(字节为0XA0)给从器件,在从器件产生应答信号后,再发送数据到被寻址的存储单元.图(12)逻辑“0”•读操作的初始化方式和写操作时一样仅把R/W 位置为1 。
图(13)逻辑“1”2.3 系统设计2.3.1 总体设计本设计使用STC89C52的两个I/O口,P2.0和P2.1,来模仿SDA和SCL,由于此实验只用一块AT24C02,写地址和读地址固定为0X80和0X81。
通过时钟线SCL配合SDA的高低转换来进行启动和停止控制,然后发送从器件地址信息,从器件送回应答信号后,主机开始进行对从器件的读或写,这里用来做密码锁,所以对从器件的操作就是给相应的存储单元写密码(修改新密码),或者对某个存储单元读密码,然后与按键的值进行对比,验证密码是否正确。
2.3.2 硬件设计图(14)系统连接图2.3.3 软件设计主程序流程图:图(15)主程序流程图修改密码流程图:图(16)修改密码流程图2.4 调试与结果图(17)第一次进入密码锁图(18)修改密码并显示图(19)确定修改成功,屏幕显示“modified!”图(20)再次用新密码进入密码锁第三章基于DS1302电子日历的设计3.1 系统功能•在LCD上显示当前的时间信息,即年、月、日、星期、时、分、秒•具有时间的调校功能•显示当前调节对象•日期时间加调整与保存。
3.2 系统组成图(21)系统组成图本设计由STC89C52单片机的主芯时钟日历DS1302芯片以及显示液晶LCD。
DS1302与单片机之间可简单地采用SPI串行方式进行通讯,仅用到三根信号线:RST(复位),I/O(数据线),SCLK(同步串行时钟)。
实时时钟具有计算2100年之前的秒,分,时,日,月,星期,年的能力,还具有闰年调整能力。
LCD第一行用于显示年月日及星期,第二行显示时分秒。
3.3 系统设计3.3.1 总体设计DS1302与51单片机的连接只需要利用单片机的三个I/O引脚对DS1302的SCLK、I/O、和RST进行控制,根据系统功能要求,基于DS1302的电子日历原理图如图3-3所示,51单片机的P2.0,P2.1和P2.4分别与DS1302 的SCLK,I/O和RST相连,DS1302的主电源VCC2与系统电源VCC相连,DS1302的晶振选用32.768KHz,LCD用于显示当前的时间信息,按键S4,S8,S12用于时间的调整。
DS1302共有10个寄存器,其中要控制操作的有年、月、日、星期、时、分、秒寄存器,通过对DS1302单字节读/写操作或者多字节读/写操作,可对其内部的时钟日历寄存器,控制寄存器,RAM存储器进行访问,数据是以BCD码的格式存放。
• DS1302读写时序:(1)初始化:先把SCLK置0,接着把RST端置1,最后才能输出SCLK脉冲(2)读:DS1302是通过SPI串行总线跟单片机通信的,当进行一次读写操作时最少得读写两个字节,第一个字节是控制字节,就是一个命令,告诉DS1302是读还是写操作,是对RAM还是对CLOK寄存器操作。
第二个字节就是要读或写的数据了。
单字节读:只有在SCLK 为低电平时,才能将CE置为高电平。
所以在进行操作之前先将SCLK置低电平,然后将CE 置为高电平,接着开始在IO上面放入要传送的电平信号,然后跳变SCLK。
数据在SCLK上升沿时,DS1302读取数据,在SCLK下降沿时,DS1302放置数据到IO上图(22)单字节读(3)写:DS1302是通过SPI串行总线跟单片机通信的,当进行一次读写操作时最少得读写两个字节,第一个字节是控制字节,就是一个命令,高速DS1302是读还是写操作,是对RAM还是对CLOK寄存器操作。
第二个字节就是要读或写的数据了。
单字节写:只有在SCLK 为低电平时,才能将RST置为高电平。
说以在进行操作之前先将SCLK置低电平,然后将RST置为高电平,开始在IO上面放入要传送的电平信号,然后跳变SCLK。
数据在SCLK上升沿时,DS1302读取数据,在SCLK下降沿时,DS1302放置数据到IO上图(23)单字节写3.3.2 硬件设计图(24)硬件连接图3.3.3 软件设计时间程序的设计:因为使用了时钟芯片DS1302,时间程序只需从DS1302各寄存器中读出年、周、月、日、[小]时、分、秒等数据,再处理即可。
在首次对DS1302进行操作之前,必须对它进行初始化,然后从DS1302中读出数据,再经过处理后,送给显示缓冲单元。
时间程序流程图见图所示。
图(25)时间程序的设计图时间调整程序设计调整时间用三个调整按钮,分别定义为模式选择,减少,增加按钮。
在调整时间过程中,首先要调节模式设置按钮,在显示屏上会显示对应的要调试的英文名称。
例如,要调节月份,先调节模式设置按钮,直到屏幕上test行上显示:month,此时就可以调节减少和增加按钮,对其进行调试。