单片机开机次数记忆器结构设计
毕业设计(论文)-基于51单片机控制的电子密码锁设计
基于51单片机控制的电子密码锁设计摘要:本设计以单片机以AT89C51作为密码锁监控装置的检测和控制核心,分为主机控制和从机执行机构,实现要是信息在主机的初步认证注册、密码信息的加密、钥匙丢失报废等功能。
根据51单片机之间的串行通信原理,这便对于密码信息的随机加密和保护。
而且采用键盘输入的电子密码锁具有较高的优势。
采用数字信号编码和二次调制方式,不仅可以实现多路信息的控制,提高信号传输的抗干扰性,减少错误动作,而且功率消耗低;反应速度快、传输效率高、工作稳定可靠等。
软件设计采用自上而下的模块化设计思想,以使系统朝着分布式、小型化方向发展,增强系统可扩展性和运行的稳定性。
测试结果表明,本系统各功能已达到本设计的所有要求。
关键词:AT89C51;密码锁;单片机设计;电子锁目录摘要 (1)关键词 (1)第一章密码锁的简介及现况 (1)1.1引言 (1)1.2电子密码锁的简介 (1)1.3电子密码锁发展趋势 (2)1.4本设计所要实现的目标 (2)1.5设计的密码锁的功能 (2)第二章设计方案的选择 (3)2.1方案的论证与比较 (3)第三章单片机的组成 (4)3.1AT89C51单片机的简介 (4)3.2电路图的绘制 (7)第四章单片机硬件资源 (7)4.1开锁机构 (7)4.2按键电路设计 (8)4.3显示电路设计 (10)4.4AT89C51单片机复位方式 (11)4.5密码锁的电源电路设计 (12)第五章程序调试 (13)5.1程序调试用到的软件及工具 (13)5.2KEIL C51简介 (14)5.3调试过程 (14)5.4调试、仿真与实现 (15)第六章软件设计 (16)6.1系统软件设计的总统思想 (16)6.2各子程序设计 (17)1 键盘扫描子程序 (17)2 LED显示子程序 (18)3 密码比较和报警程序 (19)设计总结与展望 (21)致谢 (22)附录:总原理图 (22)参考文献 (24)第一章密码锁的简介及现况1.1引言在日常的生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。
单片机记录开机次数课设报告
单片机记录开机次数课设报告1.引言1.1 概述概述在现代科技快速发展的背景下,单片机作为一种常见的嵌入式系统,在各个领域都有着广泛的应用。
而本篇课设报告则着重探讨了如何利用单片机记录开机次数的方法与实现。
开机次数是单片机应用中一个重要的指标,它能够记录设备的使用情况,为后续的数据分析和性能优化提供参考依据。
本篇报告将首先介绍单片机的基本原理,包括其工作原理和结构组成,以便读者更好地理解后续的开机次数记录方法。
接着,将进行对记录开机次数的需求分析,从实际应用的角度出发,针对不同场景下的需求特点进行分析和总结。
在需求分析的基础上,本篇报告将提供一种实现记录开机次数的方法,详细介绍其原理和操作步骤,并给出实验结果与相应的讨论。
本篇报告旨在通过深入研究和实践,为读者提供一种简单而有效的记录开机次数的方法,并探讨其在实际应用中的适用性和优劣势。
通过本篇报告的学习,读者将能够更好地理解单片机的工作原理和应用场景,培养自己解决问题和创新思维的能力。
同时,本篇报告也可作为相关课程的辅助教材,供同学们参考和学习。
在未来的研究和实践中,希望通过更好地利用单片机的功能,实现更多的应用创新和技术突破。
1.2文章结构1.2 文章结构本篇报告主要包括以下几个部分:第一部分为引言,主要从概述、文章结构和目的三个方面介绍本课设报告的背景和目标。
第二部分为正文,主要分为两个小节。
首先,介绍单片机的基本原理,包括什么是单片机以及其工作原理和构成要素等。
接下来,进行记录开机次数的需求分析,探讨为什么需要记录开机次数、记录开机次数的应用场景及其功能要求等。
第三部分为结论,主要包括两个小节。
首先,提出实现记录开机次数的方法,介绍具体的设计方案和实施步骤。
接着,对实验结果进行分析和讨论,评估所设计的方法的可行性和效果,并探讨可能存在的问题和改进方向。
通过以上结构,本报告将全面而系统地介绍单片机记录开机次数的课设内容,使读者能够清晰地了解单片机的基本原理和记录开机次数的需求分析,同时具备实现该功能的方法和工具。
最好的24C02储存开机次数实验读写程序
24C02储存开机次数实验24C02是2K字节的串行EEPROM, 内部含有256个8位字节,该器件通过总线操作,并有专门的写保护功能。
串行EEPROM简称I2C总线式串行器件。
串行器件不仅占用很少的资源和I/O线,而且体积大大缩小,同时具有工作电源宽、抗干扰能力强、功耗低、数据不易丢失和支持在线编程等特点。
I2C总线是一种用于IC器件之间连接的二线制总线。
它通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件:不管是单片机、存储器、LCD驱动器还是键盘接口。
我们通过一个实验来了解24C02的读写操作过程:该实验功能是单片机复位一次,自动从24C02中读取数据,然后加1,最终数码管中的数据就是开机的次数,具有一定的实用意义。
相关原理:程序运行的照片:接线方法:1、接8位数码管的数据线。
将数码管部份的数据口 JP5接到CPU部份的P0口JP51.2、接8位数码管的显示位线。
将数码管部份的显示位口 JP8接到CPU部份的P2口JP52.3、用一根2PIN数据线一端插入CPU部份JP53(P3口)的P3.6,P3.7另外一端插入24C02部份的控制端JP38。
烧写后用手按复位键可以看到数码管每按一下加一。
程序流程图:汇编语言参考程序: SDA24 EQU P3.7 SCLK24 EQU P3.6 ORG 0000HAJMP MAINORG 0080HMAIN:CLR P3.7 ;打开写保护MOV DPTR,#TABMOV A,#00H ;读地址LCALL RD24CJNE A,#10,TTTT: JNC TT1AJMP TT2TT1: MOV A,#00TT2: MOV 30H,AMOVC A,@A+DPTRCLR P2.6 ;开数码管MOV P0,A ;送显示MOV A,30HINC AMOV B,AMOV A,#00HLCALL WT24AJMP $TAB: DB 28H,7EH,0A2H,62H,74H,61H,21H,7AH,20H,60HRD24: PUSH ACC ;读24C02子程序。
单片机数码管记忆系统实验报告
单⽚机数码管记忆系统实验报告电⼦信息⼯程专业单⽚机原理及应⽤课程设计班级电⼦信息⼯程学号0000000000姓名xxxxx指导教师xxxxxxxx⽇期00000000⼀、题⽬基于AT24C02的数码管显⽰记忆系统⼆、设计内容1、内容设计⼀个基于A T24C02芯⽚的单⽚机数码管显⽰记忆系统。
数码管和两个74HC573芯⽚进⾏连接,P2.6和P2.7管脚分别控制这两个573芯⽚;P2.0和P2.1管脚连接AT24C02芯⽚的SCL和SDA管脚,使⽤C51语⾔设计程序,当系统上电后,数码管从000~255每隔1s⼀次显⽰计数,当计数到255后,则从000重新显⽰计数,并且在系统断电后再次上电时,数码管依旧按断电前的数字继续进⾏计数,不会丢失数据,数字显⽰在X6~X8数码管上。
2、元件清单列表序号标号器件名称型号数量1 R1 电阻10K 112 C1.C2. 电容1nf 23 C3 电解电容1nf 14 XTAL 晶振12MHz 15 Switch 开关 26 U4 单⽚机89c52 17 U8、U12 芯⽚74HC573 28 U7 芯⽚A T24C02 19 LED 数码管4393H 2三、软件设计1、流程图否是是是否开始系统初始化按键是否按下按下按键计数器依次加⼀是否关闭电源记忆当前的数据值计数器继续依次加⼀判断计数器的值是否达到255计数器清零2、代码#include //包含头⽂件#define unint unsigned int //定义数据类型#define uchar unsigned charsbit SDA=P2^0; //定义SDAsbit SCL=P2^1; //定义SCLsbit WEI=P2^7; // 定义数码管的位选端sbit DUAN=P2^6; //定义数码管的段选端unint dat2; //定义全局变量,显⽰记录信息uchar Temp[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极字段显⽰码void delay(){;;} //短延时声明void init() //初始化24C02{SDA=1;SCL=1;delay();}void start() //开始信号{SDA=1;delay();SCL=1;delay();SDA=0;delay();}void stop() //停⽌信号{SDA=0;delay();SCL=1;delay();SDA=1;delay();}void ack() //应答信号{uchar i;SCL=1;delay();while((SDA==1)&&(i<255))i++;SCL=0;delay();}void write_byte(uchar dat) //写⼀个字节{uchar i,temp;temp=dat;for(i=0;i<8;i++){SCL=0;delay();temp<<=1;SDA=CY;delay();SCL=1;delay();}SCL=0;delay();SDA=1;delay();}uchar read_byte() //读⼀个字节{unint i,j;SCL=0;delay();SDA=1;delay();for(i=0;i<8;i++) //循环8次读出⼀个字节数据{SCL=1;delay();j=(j<<1)|SDA;SCL=0;delay();}return j;}void write_addr(uchar address,uchar dat1){ //往指定地址写数据start(); //初始信号write_byte(0xa0); //写⼊芯⽚地址0XA0ack(); //应答信号write_byte(address); //写⼊芯⽚内部寄存器地址ADDRESS ack(); //应答信号write_byte(dat1); //写⼊数据ack(); //应答信号stop(); //停⽌信号}uchar read_addr(uchar address){ //从指定地址读数据uchar dat3;start(); //初始信号write_byte(0xa0); //写⼊芯⽚地址0XA0ack(); //应答信号write_byte(address); //写⼊芯⽚内部寄存器地址ack(); //应答信号start(); //初始信号write_byte(0xa1); //写⼊芯⽚地址0XA1ack(); //初始信号dat3=read_byte(); //读出数据stop(); //停⽌信号return dat3; //返回读出值}void init_T0() //初始设置定时器T0{TMOD=0x01; //定时器T0⼯作在⽅式1TCON=0x10; //启动T0TH0=(65536-461)/256; //FEH,11.059 2MHz,0.5ms TL0=(65536-461)%256; //33H,IE=0x82; //T0的中断允许}void wei_lock(uchar wei) //数码管位控制{WEI=1;P0=wei;WEI=0;}void duan_lock(uchar duan) //数码管段控制{DUAN=1;P0=Temp[duan];DUAN=0;}void display(uchar date) //数码管显⽰{unint i;uchar ge,shi,bai;ge=date%100%10;shi=date%100/10;bai=date/100;duan_lock(ge);wei_lock(0x7f);for(i=0;i<300;i++);duan_lock(shi);wei_lock(0xbf);for(i=0;i<300;i++);duan_lock(bai);wei_lock(0xdf);for(i=0;i<300;i++);wei_lock(0xff);}void timer0() interrupt 1 //T0的中断服务函数{unint i;if(i++>=2000) //1s时间到{i=0;if(dat2++>=255)dat2=0; //调整显⽰数字}TH0=(65536-461)/256; //重新给T0赋初值TL0=(65536-461)%256; }void main(){init_T0(); //T0初始化dat2=read_addr(0); //读24C02存储器数据while(1){init(); //存储器初始化write_addr(0,dat2); //指定地址写数据display(dat2); //读出数据并显⽰}}四、仿真分析1、原理图2、仿真结果图3、结果分析通过控制AT24C02芯⽚向指定的地址进⾏数据的读写操作,利⽤其记忆功能达到实验⽬的。
51单片机课程设计——单词记忆器的设计实现
字符的显示:用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示 屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1” 的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符 就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示 RAM对应的地址,设立光标,在此送上该字符对应的代码即可。
三、系统程序流程图
CHAPTER
02
硬件电路设计
一、总电路系统
二、时钟脉冲和单片机复位模块
晶振是晶体振荡器的简称 在电气上它可以等效成一 个电容和一个电阻并联再串联一个电容的二端网络 电工学上这个网络有两个谐振点 以频率的高低分其 中较低的频率是串联谐振 较高的频率是并联谐振 由 于晶体自身的特性致使这两个频率的距离相当的接近 在这个极窄的频率范围内 晶振等效为一个电感 所以 只要晶振的两端并联上合适的电容它就会组成并联谐 振电路 这个并联谐振电路加到一个负反馈电路中就 可以构成正弦波振荡电路 由于晶振等效为电感的频 率范围很窄 所以即使其他元件的参数变化很大 这个 振荡器的频率也不会有很大的变化。
g
k
o
s
w
0111 d
h
l
p
t
x
CHAPTER
04
课设实现
模拟仿真软件测试
基于单片机的单词记忆测试器毕业设计1 精品
基于单片机的单词记忆测试器目录第一章单词记忆测试器的设计 (2)1.1 硬件模块设计 (2)1.1.1中央处理模块 (2)1.1.2 显示模块的硬件部分介绍 (3)1.1.3 矩阵键盘 (6)1.2 电路原理图设计 (6)1.3 软件程序设计 (8)1.3.1 程序设计思路 (8)1.3.2矩阵键盘的程序设计 (8)1.3.3 LCD12864显示模块的驱动程序 (9)1.3.4 显示字模码的提取 (11)1.3 系统软件主程序结构及其函数 (12)1.4 软件的仿真 (17)第二章结语 (19)附录单片机单词记忆测试器C程序源代码基于单片机的单词记忆测试器摘要本论文的研究对象是基于单片机的单词记忆测试器的设计,此单词记忆测试器可以实现单词的输入并判断输入的单词是否正确,单词背完后给出正确率。
该单片机单词记忆测试器为在现实生活中有着广泛的应用,特别是对学习英语方面有很大的作用。
本设计以STC89C52单片机为处理器,以12854点阵液晶屏为显示器件,并使用5×6距阵键盘为输入设备,实现了功能全面的人机界面和高速的数据处理功能,利用单片机片上FLASH ROM,可储存10-20个英文单词和汉字,作为记忆测试用。
关键词:单片机单词记忆测试器 AT89C52 12864液晶屏第一章 单词记忆测试器的设计1.1 硬件模块设计本单词记忆测试器系统硬件部分分为三个模块:中央处理模块、显示模块、键盘输入模块。
系统模型图如下:图4 系统硬件模块图1.1.1中央处理模块中央处理模块选用STC89C52单片机系统组成,电路包括:STC89C52单片机、复位电路、时钟振荡电路。
STC89C52单片机需在复位电路和时钟振荡电路组成的最小系统下工作,单片机引脚图如图5,外围电路如图6和图7所示,时钟电路采用频率采用为12MHZ 的晶振,C1、C2与晶振构成了外部振荡电路。
复位电路采用电解电容与电阻串联,当系统上电时,由于电容充电,在RST 端会产生一个高电平,高电平持续的时间由电容和电阻的值决定,当RESET 信号为低电平时,系统为工作状态。
单片机课程设计word
单片机课程设计word一、课程目标知识目标:1. 让学生掌握单片机的基本原理和结构,理解其工作流程和编程方法。
2. 使学生了解单片机在现实生活中的应用,如智能家居、自动化控制等领域。
3. 帮助学生掌握与单片机相关的电子元器件的原理和使用方法。
技能目标:1. 培养学生运用C语言进行单片机编程的能力,能够独立完成简单的程序设计。
2. 提高学生动手实践能力,学会使用面包板、编程器等工具进行单片机系统的搭建和调试。
3. 培养学生团队协作和问题解决能力,能够共同完成具有一定难度的单片机项目。
情感态度价值观目标:1. 激发学生对单片机及电子技术的兴趣,培养其主动探索、勤于思考的学习习惯。
2. 培养学生的创新意识,鼓励他们勇于尝试,将所学知识应用于实际项目中。
3. 引导学生认识到单片机技术在我国科技发展中的重要性,增强国家认同感和自豪感。
课程性质:本课程为实践性较强的学科,注重理论联系实际,强调动手能力和创新能力的培养。
学生特点:学生具备一定的电子基础和编程能力,对单片机有一定了解,但实践经验和系统设计能力不足。
教学要求:结合学生特点和课程性质,采用案例教学、任务驱动、小组合作等方法,注重理论与实践相结合,提高学生的综合运用能力。
通过本课程的学习,使学生能够达到上述课程目标,为后续相关课程和未来职业发展打下坚实基础。
二、教学内容本课程教学内容主要包括以下几部分:1. 单片机基础知识:介绍单片机的原理、结构和功能,使学生了解单片机的基本概念,对应教材第一章。
- 单片机的组成与工作原理- 单片机的性能指标和分类2. 单片机编程语言:学习C语言编程,掌握单片机程序设计方法,对应教材第二章。
- C语言基础知识- 单片机编程语法和技巧3. 单片机I/O接口技术:学习并实践单片机与外部设备的通信和控制,对应教材第三章。
- I/O接口的工作原理- 常用I/O接口编程及应用4. 单片机中断与定时器:介绍中断系统、定时器的工作原理和应用,对应教材第四章。
单片机课程设计题目大全
3. 电路设计(Proteus软件仿真通过)
7
4. Proteus仿真 打开元器件单片机属性窗口,在“Program File”栏中添加上
面编译好的目标代码文件“keil-1.hex”;在“Clock Frequency”栏中输入晶振频率为11.0592MHz。 仿真如下页图所示,其中,浮动窗口中显示的为DS1302当前 时钟状态:
21
程序执行后工作指示灯LED闪动,表示程序开始执行, LCD显示“00:00”,按下操作键K1~K4动作如下:
(1) K1—设置现在的时间。 (2) K2—显示闹钟设置的时间。 (3) K3—设置闹铃的时间。 (4) K4—闹铃ON/OFF的状态设置,设置为ON时连续三次发
出“哗”的一声,设置为OFF发出“哗”的一声。 设置当前时间或闹铃时间如下。
37
3.电路设计(Proteus仿真通过) 本项目制作的数字温度计电路原理图,如下所示:
38
4. Proteus仿真 加载目标代码文件 打开元器件单片机属性窗口,在
“Program File”栏中添加上面编译好的目标代码文件 “keil-6.hex”;在“Clock Frequency”栏中输入晶振频率 为11.0592MHz。
课程设计题目
1
目录----课程设计题目
题目1 智能电子钟(LCD显示) 题目2 电子时钟(LCD显示) 题目3 秒表 题目4 定时闹钟 题目5 音乐倒数计数器 题目6 基于数字温度传感器的数字温度计 题目7 基于热敏电阻的数字温度计 题目8 十字路口交通灯控制 题目9 波形发生器设计 题目10 电容、电阻参数单片机测试系统的设计
34
题目6 基于数字温度传感器的数字温度计 1. 设计要求 利用数字温度传感器DS18B20与单片机结合来测量温度。
单片机控制的电子密码锁(电路图 流程图 原理图)-课程设计
单片机控制的电子密码锁(电路图+流程图+原理图)-课程设计单片机控制的电子密码锁(电路图+流程图+原理图) 摘要:本系统由单片机系统、矩阵键盘、LED显示和报警系统组成。
系统能完成开锁、超时报警、超次锁定、管理员解密、修改用户密码基本的密码锁的功能。
除上述基本的密码锁功能外,还具有调电存储、声光提示等功能,依据实际的情况还可以添加遥控功能。
本系统成本低廉,功能实用关键词:AT89S51,AT24C02, 电子密码锁,矩阵键盘一、引言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲呢。
设计本课题时构思了两种方案:一种是用以AT89s51为核心的单片机控制方案;另一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。
考虑到数字电路方案原理过于简单,而且不能满足现在的安全需求,所以本文采用前一种方案。
二、方案论证与比较方案一:采用数字电路控制。
其原理方框图如图1-1所示。
图2-1 数字密码锁电路方案采用数字密码锁电路的好处就是设计简单。
用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。
电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。
密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。
方案二:采用一种是用以AT89S51为核心的单片机控制方案。
IIC记忆单片机开机次数
IIC记忆单片机开机次数
IIC具有记忆功能,其实之前没有体会好为什么会记忆,因为编的程序是让灯闪烁的,所以理解不出它可以所谓记忆的原理,今天通过数码管让其记忆单片机开机次数,终于明天了它的真正原理,其实是单片机控制它的时候,程序不断运行,把程序运行得到的数据不断地写入IIC寄存器中,而寄存器是掉电后不数据不会丢失的,所以当我们把程序关了,也就是掉电了以后数据被保存了下来,下次再开机运行的时候,程序是从头开始的,但是地址是从我们上次我们寄存器储存地址开始的,所以就达到了记忆的功能。
这个的应用在数据的存储和保护是很大的,比如交通灯记忆违章车辆,账户储存,数据累积等可以靠它进行储存。
下面是IIC记忆单片机开机次数的效果和程序:。
开机次数记忆器设计24c02和1602
P3.3
P3.4
P3.5
连接1602的端口名
RS
RW
E
表3.2.2-2
P2.0控制24C02的读写、P2.1控制24C02的时钟脉冲,端口连接见表3.2.2-3
单片机端口名
P2.0
P2.1
连接表3.2.2-3
3.324c02的工作原理
3.3.1 AT24c02的基本介绍
Vss或悬空
WP写保护
如果WP管脚连接到Vcc所有的内容都被写保护只能读当WP管脚连接到Vss或悬空允许
器件进行正常的读/写操作
极限参数
工作温度工业级-55 +125
商业级0 +75
贮存温度-65 +150
各管脚承受电压-2.0 Vcc+2.0V
Vcc管脚承受电压-2.0 +7.0V
封装功率损耗Ta=25 1.0W
图3.2.1-1单片机引脚
②XTAL2(18引脚):接外部晶振的另一端,在该引脚内部接至内部反相放大器的输出端。若采用外部时钟振荡器时,该引脚接收时钟振荡器的信号,即把此信号直接接到内部时钟发生器的输入端。
⑶控制引脚
①RST/ (9引脚):RST(RESET)是复位信号输入端,高电平有效。当单片机运行时,在此引脚加上持续时间大于2小机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。在单片机正常工作时,此引脚应为 0.5V低电平。 为本引脚的第二功能,即备用电源的输入端。当主电源 发生故障,降低到某一规定值的低电平时,将+5V电源自动接入RST端,为内部RAM提供备用电源,以保证片内RAM中的信息不丢失,从而使单片机在复位后能继续正常运行。
②ALE/ (30引脚):ALE引脚输出为地址锁存允许信号,当单片机上电正常工作后,ALE引脚不断输出正脉冲信号。当单片机访问外部存储器时,ALE输出信号的负跳沿用于单片机发出的低8位地址经外部锁存器锁存控制信号。即使不访问外部锁存器,ALE端仍有正脉冲信号输出,此频率为时钟振荡器频率 的1/16。如果想初步判断单片机芯片的好坏,可以用示波器查看ALE端是否有正脉冲信号输出。如果有脉冲信号输出,则单片机基本上是好的。应该注意的是,每当MCS-51访问外部数据存储器时,有1个机器周期中ALE只出现1次,即丢失1个ALE脉冲。因此,严格来说,用户不宜用ALE作精确的时钟源或定时信号。ALE端可以驱动8个LS型TTL负载。 为本引脚的第二功能。在对片内EPROM型单片机编程写入时,此引脚作为编程脉冲输入端。
电气化自动技术 实验8-- 24C02读写-实验指导书
实验八 24C02读写实验一、实验概述使用I2C对24C02进行读写,记录开机的次数。
二、实验目的1、掌握单片机IO模拟I2C总线的方法。
2、了解EEPROM保存数据的特性。
三、实验预习要求1、AT24C02是一个2K位串行CMOS E2PROM,内部含有256个8位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功耗。
AT24C02有一个16字节页写缓冲器。
该器件通过IIC总线接口进行操作,有一个专门的写保护功能。
2、器件寻址:前八位是地址地址信号,从最高位(MSB)开始,其中前四位是固定值1010,后三位有管脚A0、A1、A2的基地情况确定。
最后一位是读写控制信号,0表示写,1表示读。
若与SDA线发送过来的地址比较一致,则器件输出应答0,否则将返回等待状态。
器件内部地址寻址是在器件寻址之后,对256个字节进行寻址,直接传送8位地址信号(00-FF)对应于器件内部的地址。
四、实验原理在实际的应用中,保存在单片机 RAM 中的数据,掉电后就丢失了,保存在单片机的FLASH 中的数据,又不能随意改变,也就是不能用它来记录变化的数值。
但是在某些场合,我们又确实需要记录下某些数据,而它们还时常需要改变或更新,掉电之后数据还不能丢失,比如我们的家用电表度数,电视机里边的频道记忆,一般都是使用EEPROM 来保存数据,特点就是掉电后不丢失。
本实验使用的这个器件是 24C02,是一个容量大小是 2Kbits,也就是 256 个字节的 EEPROM。
一般情况下,EEPROM 拥有30 万到 100 万次的寿命,也就是它可以反复写入 30-100 万次,而读取次数是无限的。
24C02 是一个基于 I2C 通信协议的器件,因此,使用24C02还需要了解I2C通信协议。
I2C 多用于板内通信,比如单片机和EEPROM 之间的通信。
在硬件上,I2C 总线是由时钟总线 SCL 和数据总线 SDA 两条线构成,连接到总线上的所有器件的 SCL 都连到一起,所有 SDA 都连到一起。
单片机6位密码锁利用课程设计
一、概述在当今信息化时代,密码锁已成为人们生活中常见的安全防护设备。
传统机械密码锁随着科技的发展逐渐被电子密码锁所取代,而单片机密码锁作为一种新型密码锁产品,在市场上也逐渐受到了人们的关注。
二、单片机密码锁的基本原理1. 密码输入模块单片机密码锁的核心部件之一是密码输入模块,其作用是接收用户输入的密码。
密码输入模块一般包括数字按钮和确认按钮,用户通过按压数字按钮输入密码,再按下确认按钮确认密码。
2. 单片机控制模块单片机控制模块是密码锁的控制中枢,负责接收密码输入模块的信号,进行密码验证和控制开关锁操作。
单片机控制模块的设计与开发是密码锁制作中的关键环节。
3. 电子锁控制模块电子锁控制模块是单片机密码锁的另一个重要部件,它根据单片机控制模块的指令来控制锁的开合,保障密码锁的安全可靠性。
三、单片机密码锁的设计与制作步骤1. 准备材料与工具制作单片机密码锁首先需要准备好所需的电子元件和工具,包括单片机、数字按钮、确认按钮、电子锁等。
2. 确定系统框图与电路设计在确定材料与工具后,需要进行系统框图的设计和电路的布线,确保各个部件之间的连接合理、稳定。
3. 编写程序编写密码锁的控制程序是密码锁制作中不可或缺的一环,程序的编写需要保证密码的输入、验证和锁的开合操作都能正常进行。
4. 硬件搭建硬件搭建是密码锁制作的最后一步,包括电路的焊接、连接和整体外壳的安装等工作。
四、单片机密码锁的实现效果与测试单片机密码锁制作完成后,需要进行实际的效果与功能测试,确保密码锁的各项功能都能正常运行并且安全可靠。
五、单片机密码锁的应用前景与发展趋势单片机密码锁具有设计简单、可靠性高、安全性好等优点,未来在家庭、企业等领域的应用前景广阔。
随着科技的不断进步,单片机密码锁在功能上将会不断完善,应用范围也将会进一步扩大。
六、结论单片机6位密码锁的设计与制作是一项挑战性的课程设计项目,通过该项目的设计与制作,学生不仅能够加深对单片机原理及应用的理解,还可以提高动手能力和创新能力。
基于单片机AT89S52单片机的密码锁设计
基于单片机AT89S52单片机的密码锁设计一、系统总体设计方案本密码锁系统主要由 AT89S52 单片机、矩阵键盘、液晶显示屏(LCD)、存储芯片、报警模块和开锁电路等组成。
用户通过矩阵键盘输入密码,单片机对输入的密码进行处理和判断,并将结果显示在LCD 屏上。
如果输入的密码正确,单片机控制开锁电路打开锁具;如果密码错误,系统会发出报警信号,并记录错误次数。
当错误次数超过设定值时,系统将锁定一段时间,以防止非法入侵。
二、硬件设计1、单片机最小系统AT89S52 单片机是整个系统的核心,它负责控制和协调各个模块的工作。
单片机最小系统包括单片机芯片、晶振电路和复位电路。
晶振电路为单片机提供时钟信号,复位电路用于系统的初始化和异常情况下的复位操作。
2、矩阵键盘矩阵键盘用于输入密码,采用 4×4 的矩阵式键盘布局,共 16 个按键,分别代表数字 0-9、确认键和删除键等。
通过扫描键盘的行和列,可以确定用户按下的按键值,并将其传输给单片机进行处理。
3、液晶显示屏(LCD)LCD 显示屏用于显示系统的工作状态和提示信息,如输入密码、密码正确、密码错误等。
本系统选用 1602 液晶显示屏,它具有体积小、功耗低、显示内容丰富等优点。
4、存储芯片存储芯片用于存储密码信息,选用 EEPROM 芯片 AT24C02。
EEPROM 具有掉电不丢失数据的特点,可以保证密码信息的安全性和可靠性。
5、报警模块报警模块由蜂鸣器和发光二极管组成,当密码输入错误次数超过设定值时,蜂鸣器发出报警声音,发光二极管闪烁,以提醒用户和起到威慑作用。
6、开锁电路开锁电路由继电器和电磁锁组成,当单片机判断输入的密码正确时,输出控制信号使继电器闭合,从而接通电磁锁的电源,打开锁具。
三、软件设计1、主程序流程系统上电后,首先进行初始化操作,包括单片机端口初始化、LCD 初始化、存储芯片初始化等。
然后进入密码输入等待状态,当用户按下按键时,读取按键值并进行相应的处理。
基于单片机的单词记忆器设计
基于单片机的单词记忆器设计单片机单词记忆器设计可以通过以下步骤实现:1. 硬件设计:选择适合的单片机开发板或芯片,例如Arduino、Raspberry Pi等。
根据需求,设计并连接合适的输入和输出设备,如按钮、显示屏和喇叭等。
2. 单词库准备:将需要记忆的单词以文本文件的形式存储在单片机的存储器中,可以使用SD卡、SPI Flash或EEPROM等。
3.用户界面设计:使用按钮和显示屏实现用户与记忆器的交互界面。
例如,通过按下按钮来选择单词,并在显示屏上显示相应的单词和释义等信息。
4.单词显示和播放:根据用户选择的单词,在显示屏上显示该单词的释义,并通过喇叭或耳机输出单词的发音。
可以使用相应的语音合成库或芯片实现发音功能。
5.记忆训练模式:设计相应的记忆训练模式,例如根据顺序或随机选择单词进行测试和复习。
可以通过按下不同的按钮或在界面上选择相应的模式。
6.学习记录和进度统计:设计记忆器可以记录用户的学习历史和进度,例如已经学习的单词数量、学习时间等信息。
可以通过单片机的存储器或在外部存储设备中保存这些信息。
7.能源管理:考虑使用低功耗设计,例如增加电源管理模块,以延长记忆器的电池寿命。
添加睡眠模式,当记忆器长时间不使用时,自动进入低功耗状态。
8.软件运行控制:根据硬件设计、用户界面和功能要求,编写相应的单片机代码。
包括读取单词库文件、界面交互、单词显示和发音等功能的实现。
9.调试和测试:将代码烧录到单片机上,并通过调试和测试验证各个功能的正确性和稳定性。
根据测试结果进行适当的优化和改进。
最后,对于特定需求和设计约束,可能需要根据实际情况进行适当的调整和修改。
单片机课程设计记忆训练器设计
摘要现如今单片机在电子设计领域应用相当的广泛,因此基于单片机的设计对我们来说越来越有实际意义。
在硬件方面,此课程设计主要是以单片机为主体,附加其他的一些元器件,再通过一定的编程语言编程实现特定的记忆训练功能。
此次课设通过人为按键的输入,将键值转送到单片机,在单片机中进行判断处理后,通过数码管显示出来,为了能过大量的存储数据,采用SRAM6264芯片作为外部数据存储器,同时以74LS373作为锁存器。
单片机采用按键电平复位电路和并接12MHz晶体震荡器、两只电容器(30pF)的振荡电路。
在软件方面,整个程序包含了一个主程序与四个子程序:1位数的显示子程序“P1XS”、4键输入子程序“KEY4”、比较子程序“BJ”、延时子程序DELAY。
关键词:单片机、按键、显示、编程目录1、课程设计内容及实现功能 (3)1.1、课设内容 (3)1.2、课设功能 (3)2、课程设计总体设计方案 (4)2.1、电路设计方案 (4)2.2、整体电路系统设计框图 (5)3、硬件设计 (5)3.1、显示电路 (5)3.1.1、数码管简介 (6)3.2、复位电路 (7)3.3、时钟电路 (9)3.4、按键控制电路 (10)3. 5、数据存储器扩展电路 (11)3.5.1、74LS373性能简述 (12)3.5.2、89C51单片机功能介绍 (15)3.5.3、SRAM6264简要描述 (18)4、软件设计 (20)4.1、程序流程图 (20)4.2、记忆训练器程序 (22)5、检测与调试 (25)5.1、硬件调试 (25)5.2、软件调试 (26)6、心得体会 (26)附录 (27)1、记忆训练器PCB图 (27)2、元器件清单 (27)3、参考文献 (28)1、课程设计内容及实现功能1.1、课设内容此次课程设计要求我们熟练运用单片机、模电及数电等知识设计一个电路。
此课程设计是用扩展外部存储器方式设计一个记忆训练器。
为了能够存储大量的数据,扩展外部数据存储器采用SRAM6264实现1.2、课设功能本课设的具体功能及操作步骤如下:(1)开机后显示“一”,按下“1”键后训练测试过程开始;(2)单片机随机产生一个1~4中的数(如“3”);(3)使用者按下相应的数字键(“3”);(4)单片机又产生一个随机数,并通过LED显示器显示出来(如“2”);(5)使用者要按之前出现的数字顺序按下相应的数字键(“3、2”);(6)又显示一个随机数(如“4”);(7)重复步骤(5)的操作。
单片机开机次数记忆器设计及实现
单片机开机次数记忆器设计及实现信息与电气工程学院单片机应用系统(三级项目)设计说明书(2014/2015学年第二学期)题目:开机次数记忆器设计及实现专业班级:电子信息工程班学生学号:学生姓名:指导教师:设计周数:2周设计成绩:2015年X月X日1、项目设计1.1设计要求(1)以单片机AT89C52为核心,使用24C02串行EEPROM进行存储开机次数;(2)用LCD1602显示存储的开机次数;(3)单片机复位一次,从24C02中读取数据,然后加1;(4)在此基础上可以拓展对一组密码数据存储对比后,才能进入正常界面。
1.2设计目的(1)培养学生正确的设计思想,理论联系实际的工作作风,严肃认真、实事求是的科学态度和勇于探索的创新精神。
(2)锻炼学生自学软件的能力及分析问题、解决问题的能力。
(3)通过课程设计,使学生在理论计算、结构设计、工程绘图、查阅设计资料、标准与规范的运用和计算机应用方面的能力得到训练和提高。
(4)巩固、深化和扩展学生的单片机理论知识。
(5)培养学生的团队合作能力。
2、项目设计正文2.1方案设计2.1.1设计思路此次项目设计的目的是实现单片机开机次数的记忆及显示功能,即其复位断电关机都能准确的将开机次数显示在LCD1602显示屏上。
根据对项目设计要求和实际应用的分析,选用以单片机AT89C52为核心,使用24C02串行EEPROM 进行存储开机次数的方法,使C52单片机的P2.0口和P2.1口分别控制24C02的数据线SDA 和时钟信号线SCK来完成数据的读写功能,然后用LCD1602显示屏将24C02中存储的数据显示出来。
具体设计实现的逻辑流程图如图1所示:图1逻辑实现流程图2.1.2主要元器件(1)处理器AT89C52,引脚图如图2所示:图2AT89C52单片机引脚图AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes 的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。
基于某单片机地单词记忆器设计
大学能源与动力工程学院课程设计报告题目:单词记忆测试器程序设计课程:单片机原理与应用课程设计专业:电气工程与其自动化班级:电气1102姓名:学号:第一部分任务书《单片机原理与应用》课程设计任务书一、课题名称单词记忆测试器程序设计二、课程设计目的课程设计是课程教学中的一项重要容,是达到教学目标的重要环节,是综合性较强的实践教学环节,它对帮助学生全面结实地掌握课堂教学容、培养学生的实践和实际动手能力、提高学生全面素质具有很重要的意义。
《单片机原理与应用》是一门理论性、实用性和实践性都很强的课程,课程设计环节应占有更加重要的地位。
单片机原理与应用课程设计的目的是让学生在理论学习的根底上,通过完成一个涉与MCS-51单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能将课堂上学到的理论知识与实际应用结合起来,而且能进一步加深对电子电路、电子元器件等知识的认识与理解,同时在软件编程、排错调试、相关软件和仪器设备的使用技能等方面得到较全面的锻炼和提高。
为今后能够独立进展某些单片机应用系统的开发设计工作打下一定的根底。
通过单片机硬件和软件设计、调试、整理资料等环节的培训,使学生初步掌握工程设计方法和组织实践的根本技能,逐步熟悉开展科学实践的程序和方法。
三、课程设计容设计以89C51单片机和外围元器件构成的单片机应用系统,并完成相应的软硬件调试。
1. 系统方案设计:综合运用单片机课程中所学到的理论知识,学生根据所选课题的任务、要求和条件进展总体方案的设计。
2. 硬件电路设计:对方案中以单片机为核心的电路进展设计计算,包括元器件的选择和电路参数的计算,并画出总体电路图。
3. 软件设计:根据已设计出的软件系统框图,用汇编语言或C51编制出各功能模块的子程序和整机软件系统的主程序。
4. 调试:在单片机EDA仿真软件环境Proteus下进展仿真设计并调试;或在单片机周立功实验箱上进展相关设计并调试。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机开机次数记忆器结构设计1、项目设计1.1 设计要求(1)以单片机AT89C52为核心,使用24C02串行EEPROM进行存储开机次数;(2)用LCD1602显示存储的开机次数;(3)单片机复位一次,从24C02中读取数据,然后加1;(4)在此基础上可以拓展对一组密码数据存储对比后,才能进入正常界面。
1.2 设计目的(1)培养学生正确的设计思想,理论联系实际的工作作风,严肃认真、实事的科学态度和勇于探索的创新精神。
(2)锻炼学生自学软件的能力及分析问题、解决问题的能力。
(3)通过课程设计,使学生在理论计算、结构设计、工程绘图、查阅设计资料、标准与规的运用和计算机应用方面的能力得到训练和提高。
(4)巩固、深化和扩展学生的单片机理论知识。
(5)培养学生的团队合作能力。
2、项目设计正文2.1方案设计2.1.1设计思路此次项目设计的目的是实现单片机开机次数的记忆及显示功能,即其复位断电关机都能准确的将开机次数显示在LCD1602显示屏上。
根据对项目设计要求和实际应用的分析,选用以单片机AT89C52为核心,使用24C02串行EEPROM进行存储开机次数的方法,使C52单片机的P2.0口和P2.1口分别控制24C02的数据线SDA和时钟信号线SCK来完成数据的读写功能,然后用LCD1602显示屏将24C02中存储的数据显示出来。
具体设计实现的逻辑流程图如图1所示:图1 逻辑实现流程图2.1.2主要元器件(1)处理器AT89C52,引脚图如图2所示:图2 AT89C52单片机引脚图AT89C52是一个低电压,高性能CMOS 8位单片机,片含8k bytes的可反复擦写的Flash 只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片置通用8位中央处理器和Flash 存储单元,AT89C52单片机在电子行业中有着广泛的应用。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。
(2)外部存储器24C02串行E2PROM是基于I2C-BUS 的存储器件,遵循二线制协议,由于其具有接口方便,体积小,数据掉电不丢失等特点,在仪器仪表及工业自动化控制中得到大量的应用。
具有以下几大特点:1.宽围的工作电压1.8v~5.5v2.低电压技术:1mA典型工作电流1uA典型待机电流3.储存器组织结构4.2线串行接口,完全兼容I2C总线5.施密特触发输入噪声抑制6.硬件数据写保护7.部与周期(最大5ms)8.自动递增地址9.可按照字节写10.esd保护大于2.5kV11.高可靠性:擦写寿命:100万次数据保持时间:100年12.无铅工艺,符合RoHS标准2.2单元电路设计2.2.1处理器AT89C52引脚的选择本次项目设计选择的引脚分别为P0口、P2口、RES端口。
P0 口是一组8 位漏极开路型双向I/O 口,也即地址/数据总线复用口。
作为输出口用时,每位能吸收电流的方式驱动8 个TTL逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活部上拉电阻。
在Flash编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P2口是一个带有部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。
对端口P2 写“1”,通过部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
访问外部程序存储器或16 位地数据存储器(例如执行MOVX DPTR 指令)时,P2 口送出高8 位地址数据。
在访问8 位地址的外部数据存储器(如执行MOVXRI 指令)时,P2 口输出P2锁存器的容。
Flash编程或校验时,P2亦接收高位地址和一些控制信号。
P2.0口和P2.1口分别控制24C02的数据线SDA和时钟信号线SCK来完成数据的读写功能。
RST为复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
单片机引脚图连接选择如图3所示:图3 单片机的引脚连接图2.2.2 RC复位电路复位电路图如图4所示:图4 复位电路图系统复位的工作过程是在加电时,复位电路通过电容加给RST端一个短暂的高电平信号,此高电平信号随着VCC对电容的充电过程而逐渐回落,即RST端的高电平持续时间取决于电容的充电时间。
为了保证系统能够可靠地复位,RST端的高电平信号必须维持足够长的时间。
在图4的复位电路中,当VCC掉电时,必然会使RST端电压迅速下降到0V以下,但是,由于部电路的限制作用,这个负电压将不会对器件产生损害。
另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“1”态。
如果系统在上电时得不到有效的复位,则程序计数器PC将得不到一个合适的初值,CPU可能会从一个未被定义的位置开始执行程序。
2.2.3 LCD1602显示屏的连接LCD1602各引脚的功能如下:第1脚:VSS为电源地第2脚:VDD接5V电源正极第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。
第6脚:E(或EN)端为使能(enable)端。
第7~14脚:D0~D7为8位双向数据端。
单片机的P2.5,P2.6,P2.7分别接LCD1602的RS、RW、E端口,如图5所示:图5 LCD1602显示屏的连接2.2.4 24C02的连接C52单片机的P2.0口和P2.1口分别控制24C02的数据线SDA和时钟信号线SCK来完成数据的读写功能,具体电路图如图6所示:图6 24C02 的连接2.2.5 整体电路系统整体仿真电路和实物操作电路如图7和图8所示:图7 整体仿真电路图图8 仿真实物图2.3系统实现程序#include <reg51.h>#include <intrins.h>sbit SDA = P2^0; //AT24C01串行数据5脚sbit SCL = P2^1; //AT24C01串行时钟6脚int time=0;int time2=0;typedef unsigned char uint8; /* defined for unsigned 8-bits integer variable 无符号8位整型变量 */typedef signed char int8; /* defined for signed 8-bits integer variable 有符号8位整型变量 */typedef unsigned char BYTE;typedef unsigned int WORD;typedef bit BOOL ;sbit rs = P2^6;sbit rw = P2^5;sbit ep = P2^7;BYTE code dis1[] = {"TIME"};BYTE dis2[10]={"0123456789"};BYTE dis3[10]={"0123456789"};delay(BYTE ms){ // 延时子程序BYTE i;while(ms--){for(i = 0; i< 250; i++){_nop_();_nop_();_nop_();_nop_();}}}BOOL lcd_bz(){ // 测试LCD忙碌状态BOOL result;rs = 0;rw = 1;ep = 1;_nop_();_nop_();_nop_();_nop_();result = (BOOL)(P0 & 0x80);ep = 0;return result;}lcd_wcmd(BYTE cmd){ // 写入指令数据到LCD while(lcd_bz());rs = 0;rw = 0;ep = 0;_nop_();_nop_();P0 = cmd;_nop_();_nop_();_nop_();_nop_();ep = 1;_nop_();_nop_();_nop_();_nop_();ep = 0;}lcd_pos(BYTE pos){ //设定显示位置lcd_wcmd(pos | 0x80);}lcd_wdat(BYTE dat){ //写入字符显示数据到LCD while(lcd_bz());rs = 1;rw = 0;ep = 0;P0 = dat;_nop_();_nop_();_nop_();_nop_();ep = 1;_nop_();_nop_();_nop_();_nop_();ep = 0;}lcd_init(){ //LCD初始化设定lcd_wcmd(0x38);delay(1);lcd_wcmd(0x0c);delay(1);lcd_wcmd(0x06);delay(1);lcd_wcmd(0x01); //清除LCD的显示容delay(1);}////2402程序2void AT2401_Delay(){;;}void busy(){BYTE temp;temp=0x00;rs=0;rw=1;ep=1;while((temp&0x80)==0x80){ep=0;_nop_();ep=1;_nop_();}}void AT2401_Start()//启动信号{SDA=1;AT2401_Delay();SCL=1;AT2401_Delay();SDA=0;AT2401_Delay();}void AT2401_Stop()//停止信号{SDA=0;AT2401_Delay();SCL=1;AT2401_Delay();SDA=1;AT2401_Delay();}void AT2401_Respons()//响应{uint8 i;SCL=1;AT2401_Delay();while((SDA==1)&&(i<250))i++;SCL=0;AT2401_Delay();}void AT2401_Init()//初始化函数{SDA=1;AT2401_Delay();SCL=1;AT2401_Delay();}void AT2401_WByte(uint8 date)//写一个字节{uint8 i,temp;temp=date;for(i=0;i<8;i++){temp=temp<<1;SCL=0;AT2401_Delay();SDA=CY;AT2401_Delay();SCL=1;AT2401_Delay();}SCL=0;AT2401_Delay();SDA=1;AT2401_Delay();}uint8 AT2401_RByte()//读一个字节{uint8 i,k;SCL=0;AT2401_Delay();SDA=1;AT2401_Delay();for(i=0;i<8;i++){SCL=1;AT2401_Delay();k=(k<<1)|SDA;SCL=0;AT2401_Delay();}return k;}void AT2401_WAddr(uint8 address,uint8 date)//指定地址写一个数据{AT2401_Start();AT2401_WByte(0xa0);AT2401_Respons();AT2401_WByte(address);AT2401_Respons();AT2401_WByte(date);AT2401_Respons();AT2401_Stop();uint8 AT2401_RAddr(uint8 address)//指定地址读取一个字节{uint8 date;AT2401_Start();AT2401_WByte(0xa0);AT2401_Respons();AT2401_WByte(address);AT2401_Respons();AT2401_Start();AT2401_WByte(0xa1);AT2401_Respons();date=AT2401_RByte();AT2401_Stop();return date;}void wr_(BYTE ){ep=0;rs=0;rw=0;P0=;_nop_();ep=1;_nop_();ep=0;}void wr_data(BYTE date){busy();ep=0;rs=1;rw=0;P0=date;_nop_();ep=1;_nop_();ep=0;}//////////////////////////////////////////////////////////////////////////////main()BYTE i;lcd_init(); // 初始化LCDAT2401_Init();time = AT2401_RAddr(0x01);time2 = AT2401_RAddr(0x02);if(time>=9){AT2401_WAddr(0x01,0);time2+=1;}time+=1;if(time2>9&&time>=9){time=0;time2=0 ;}AT2401_WAddr(0x01, time);AT2401_WAddr(0x02, time2);lcd_pos(4); // 设置显示位置为第一行的第5个字符i = 0;while(dis1[i] != '\0'){ // 显示字符"TIME"lcd_wdat(dis1[i]);i++;}lcd_pos(0x49); // 设置显示位置为第二行第一位字符dis2[time];lcd_wdat(dis2[time]); // 显示字符delay(1);lcd_pos(0x48); // 设置显示位置为第二行第二位字符dis2[time2];lcd_wdat(dis3[time2]); // 显示字符while(1);}3、项目设计总结通过此次课程设计,使我更加扎实的掌握了有关单片机应用系统设计方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。