单片机开机次数记忆器的设计及实现


    
    信息电气工程学院
    单片机应系统(三级项目)
    设计说明书
    (20142015学年第二学期)




    题 目 : 开机次数记忆器设计实现
    专业班级 : 电子信息工程班
    学生学号 :
    学生姓名 :
    指导教师 :

    设计周数 : 2周
    设计成绩 :

    2015年X月X日


    1 项目设计
    11 设计求
    (1)单片机AT89C52核心24C02串行EEPROM进行存储开机次数
    (2)LCD1602显示存储开机次数
    (3)单片机复位次24C02中读取数然加1
    (4)基础拓展组密码数存储进入正常界面
    12 设计目
    (1)培养学生正确设计思想理联系实际工作作风严肃认真实事求科学态度勇探索创新精神
    (2)锻炼学生学软件力分析问题解决问题力
    (3)通课程设计学生理计算结构设计工程绘图查阅设计资料标准规范运计算机应方面力训练提高
    (4)巩固深化扩展学生单片机理知识
    (5)培养学生团队合作力
    2项目设计正文
    21方案设计
    211设计思路
    次项目设计目实现单片机开机次数记忆显示功复位断电关机准确开机次数显示LCD1602显示屏根项目设计求实际应分析选单片机AT89C52核心24C02串行EEPROM进行存储开机次数方法C52单片机P20口P21口分控制24C02数线SDA时钟信号线SCK完成数读写功然LCD1602显示屏24C02中存储数显示出
    具体设计实现逻辑流程图图1示:

    图1 逻辑实现流程图
    212元器件
    (1) 处理器AT89C52引脚图图2示:

    图2 AT89C52单片机引脚图

    AT89C52低电压高性CMOS 8位单片机片含8k bytes反复擦写Flash读程序存储器256 bytes机存取数存储器(RAM)器件采ATMEL公司高密度非易失性存储技术生产兼容标准MCS51指令系统片置通8位中央处理器Flash存储单元AT89C52单片机电子行业中着广泛应
    AT89C5240引脚32外部双输入输出(IO)端口时含2外中断口316位编程定时计数器2全双工串行通信口2 读写口线AT89C52常规方法进行编程线编程通微处理器Flash存储器结合起特反复擦写 Flash存储器效降低开发成
    (2) 外部存储器24C02
    串行E2PROM基I2CBUS 存储器件遵循二线制协议具接口方便体积数掉电丢失等特点仪器仪表工业动化控制中量应具特点:
    1宽范围工作电压18v~55v
    2低电压技术:
    1mA典型工作电流
    1uA典型机电流
    3储存器组织结构
    42线串行接口完全兼容I2C总线
    5施密特触发输入噪声抑制
    6硬件数写保护
    7部周期(5ms)
    8动递增址
    9字节写
    10esd保护25kV
    11高性:擦写寿命:100万次 数保持时间:100年
    12铅工艺符合RoHS标准
    22单元电路设计
    221处理器AT89C52引脚选择
    次项目设计选择引脚分P0口P2口RES端口
    P0 口组8 位漏极开路型双IO 口 址数总线复口作输出口时位吸收电流方式驱动8 TTL逻辑门电路端口P0 写1时作高阻抗输入端访问外部数存储器程序存储器时组口线分时转换址(低8 位)数总线复访问期间激活部拉电阻Flash编程时P0 口接收指令字节程序校验时输出指令字节校验时求外接拉电阻
    P2口 带部拉电阻8 位双IO 口P2 输出缓级驱动(吸收输出电流)4 TTL 逻辑门电路端口P2 写1通部拉电阻端口拉高电时作输入口作输入口时部存拉电阻某引脚外部信号拉低时会输出电流(IIL)访问外部程序存储器16 位数存储器(例执行MOVX @DPTR 指令)时P2 口送出高8 位址数访问8 位址外部数存储器(执行MOVX@RI 指令)时P2 口输出P2锁存器容Flash编程校验时P2接收高位址控制信号P20口P21口分控制24C02数线SDA时钟信号线SCK完成数读写功
    RST复位输入振荡器工作时RST引脚出现两机器周期高电单片机复位
    单片机引脚图连接选择图3示:

    图3 单片机引脚连接图
    222 RC复位电路
    复位电路图图4示:

    图4 复位电路图
    系统复位工作程加电时复位电路通电容加RST端短暂高电信号高电信号着VCC电容充电程逐渐回落RST端高电持续时间取决电容充电时间保证系统够复位RST端高电信号必须维持足够长时间图4复位电路中VCC掉电时必然会RST端电压迅速降0V部电路限制作负电压会器件产生损害外复位期间端口引脚处机状态复位系统端口置全1态果系统电时效复位程序计数器PC合适初值CPU会未定义位置开始执行程序
    223 LCD1602显示屏连接
    LCD1602引脚功:
    第1脚:VSS电源
    第2脚:VDD接5V电源正极
    第4脚:RS寄存器选择高电1时选择数寄存器低电0时选择指令寄存器
    第5脚:RW读写信号线高电(1)时进行读操作低电(0)时进行写操作
    第6脚:E(EN)端(enable)端
    第7~14脚:D0~D78位双数端
    单片机P25P26P27分接LCD1602RSRWE端口图5示:


    图5 LCD1602显示屏连接
    224 24C02连接
    C52单片机P20口P21口分控制24C02数线SDA时钟信号线SCK完成数读写功具体电路图图6示:

    图6 24C02 连接
    225 整体电路
    系统整体仿真电路实物操作电路图7图8示:

    图7 整体仿真电路图


    图8 仿真实物图
    23系统实现程序
    #include
    #include

    sbit SDA P2^0 AT24C01串行数 5脚
    sbit SCL P2^1 AT24C01串行时钟 6脚
    int time0
    int time20
    typedef unsigned char uint8 * defined for unsigned 8bits integer variable 符号8位整型变量 *
    typedef signed char int8 * defined for signed 8bits 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程序2
    void AT2401_Delay()
    {}

    void busy()
    {
    BYTE temp
    temp0x00
    rs0
    rw1
    ep1
    while((temp&0x80)0x80)
    {
    ep0
    _nop_()
    ep1
    _nop_()
    }

    }

    void AT2401_Start()启动信号
    {

    SDA1
    AT2401_Delay()
    SCL1
    AT2401_Delay()
    SDA0
    AT2401_Delay()
    }

    void AT2401_Stop()停止信号
    {
    SDA0
    AT2401_Delay()
    SCL1
    AT2401_Delay()
    SDA1
    AT2401_Delay()
    }

    void AT2401_Respons()响应
    {
    uint8 i
    SCL1
    AT2401_Delay()
    while((SDA1)&&(i<250))
    i++
    SCL0
    AT2401_Delay()
    }

    void AT2401_Init()初始化函数
    {
    SDA1
    AT2401_Delay()
    SCL1
    AT2401_Delay()
    }

    void AT2401_WByte(uint8 date)写字节
    {
    uint8 itemp
    tempdate
    for(i0i<8i++)
    {
    temptemp<<1
    SCL0
    AT2401_Delay()
    SDACY
    AT2401_Delay()
    SCL1
    AT2401_Delay()
    }
    SCL0
    AT2401_Delay()
    SDA1
    AT2401_Delay()
    }

    uint8 AT2401_RByte()读字节
    {
    uint8 ik
    SCL0
    AT2401_Delay()
    SDA1
    AT2401_Delay()
    for(i0i<8i++)
    {
    SCL1
    AT2401_Delay()
    k(k<<1)|SDA
    SCL0
    AT2401_Delay()
    }
    return k
    }

    void AT2401_WAddr(uint8 addressuint8 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()
    dateAT2401_RByte()
    AT2401_Stop()
    return date
    }
    void wr_com(BYTE com)
    {
    ep0
    rs0
    rw0
    P0com
    _nop_()
    ep1
    _nop_()
    ep0
    }

    void wr_data(BYTE date)
    {
    busy()
    ep0
    rs1
    rw0
    P0date
    _nop_()
    ep1
    _nop_()
    ep0
    }


    main()
    {

    BYTE i
    lcd_init() 初始化LCD
    AT2401_Init()

    time AT2401_RAddr(0x01)
    time2 AT2401_RAddr(0x02)

    if(time>9)
    {
    AT2401_WAddr(0x010)
    time2+1
    }
    time+1

    if(time2>9&&time>9)
    {
    time0
    time20
    }


    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 项目设计总结
    通次课程设计更加扎实掌握关单片机应系统设计方面知识设计程中然遇问题次次思考遍遍检查终找出原暴露出前期方面知识欠缺验足实践出真知通亲动手制作掌握知识纸谈兵
    课程设计诚然门专业课专业知识专业技提升时门讲道课门辩思课许道思莫空间时设计感触深抽象理具体认识通次课程设计掌握AT89C5224C02LCD1602基知识连接测试通查资料熟悉外部存储24C02工作原理解C语言程序单片机系统设计中应掌握系统电路调试方法
    次课程设计程中团队精神进行考察组三分工合作查资料电路设计程序设计硬件实物仿真做条紊配合越越默契问题起解决成功起体会喜悦果然团结力量互相间默契融洽配合换终完美结果认次课设仅培养独立思考团队协作动手操作力种力提高更重学会学方法日实真受益匪浅面社会挑战断学实践学实践帮助
    4参考文献
    [1] 张毅刚彭喜元董继成单片机原理应北京:高等教育出版社2003
    [2] 史良LCD12864显示模块微处理器接口设计 [J] 矿业安全环保 1999






    项目设计
    评 语

    项目设计
    成 绩

    指导教师
    (签字)

    年 月 日

    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 2 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    Xp系统减少开机滚动条次数方法

    Xp系统减少开机滚动条次数方法 1 :  这样的设置让电脑开机很快 你的电脑是否要滚滚。。动NNNNN多次才出现欢迎使用界面 是否为等感到烦恼。。。。。。费话就别多说了 介绍一下怎么使这...

    9年前   
    5864    0

    基于单片机的智能鱼缸的设计与实现毕业设计

    近年来嵌入式发展迅速,智能家居也进入了人们的生活。智能鱼缸却没有快速发展。我根据市场上相关设备现状的分析和研究,从系统集成角度进行设计和开发,提出了一套多功能的智能观赏鱼缸控制系统的设计方案。

    5年前   
    4285    0

    基于单片机的彩灯控制器设计毕业设计

     题目: 基于单片机的节日彩灯控制器的设计 作 者 姓 名: 学 号: ...

    3年前   
    563    0

    单片机课程设计作息时间控制器的设计报告

    XX大学单片机课程设计报告作息时间控制器设计姓 名: 学 号: 专业班级: 自动化班 指...

    3年前   
    567    0

    基于单片机的鱼缸控制器设计毕业设计论文

    基于单片机的鱼缸控制器设计 摘 要 本文是基于单片机的鱼缸控制器的设计,目前市场上有各种各样的观赏类的鱼缸,进入了不同的应用场合,如家庭、宾馆和商场等等,但现有的鱼缸一般需要人为的...

    5年前   
    2474    0

    多功能信号发生器的设计与实现

    本文是制作以STM32芯片为核心的多功能信号发生器。选择使用STM32系列单片机作为多功能信号发生器的主控模块,控制整个系统的软硬件操作,实现正弦波、方波、三角波等波形的合成。

    3年前   
    822    0

    基于单片机的智能浇花系统的设计与实现

    基于单片机的智能浇花系统的设计与实现 摘 要 随着社会的发展,人民越来越注重环境质量。养殖花卉成了首要选择,在家养殖可以陶怡情操,丰富生活。同时花卉可以通过光合作...

    5年前   
    1969    0

    IC卡读写系统的单片机实现毕业设计

     XX 大 学 网 络 教 育 学 院 专科毕业论文 题目:IC卡读写系统的单片机实现 完成期限:20XX年1月8日 至 20XX年4月20日 ...

    5年前   
    1068    0

    基于单片机的颜色识别早教系统设计与实现

     基于单片机的颜色识别早教系统设计与实现 ...

    3年前   
    637    0

    于单片机的空气质量检测仪的设计与实现

    随着社会的不断发展与科学技术的日新月异,家庭住所作为人们日常起居生活最核心的区域越来越被人们所关注。特别是近年来,外界环境污染愈发严重,人们越来越渴望自己的居所在满足日常基本起居的同时更能够为自...

    3年前   
    737    0

    电子信息工程基于单片机的指纹密码锁设计与实现

    基于单片机的指纹密码锁设计与实现 Design and implementation of fingerpri...

    1年前   
    270    0

    红外遥控音乐播放器单片机课程设计

     单片机课程设计 项目名称 红外遥控音乐播放器设计 专业班级 通信X班 学生...

    5年前   
    1297    0

    基于AT89C51单片机的简易计算器的设计

     毕 业 设 计 题目 简易计算器的制作 ...

    5年前   
    2355    0

    基于单片机的数字采控器设计毕业论文

     毕业设计说明书 基于单片机的数字采控器 设计 专业 电气工程及其自动化 学生姓名 班级 学号 指导教师 完成日期 20XX年X月X日 基于单片机...

    5年前   
    1191    0

    基于单片机的数字采控器设计毕业论文

    摘 要:数字采集系统简称DAS(Digital Acquisition System),是指将温度、压力、流量、位移等模拟量进行采集、量化转换成数字量后,以便由计算机进行存储、处理、显示或打印...

    5年前   
    1339    0

    音乐倒数计数器单片机课程设计

    音乐倒数计数器单片机课程设计摘 要 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。而51单片机是各单片机中最为典型和最有代表性的一种。...

    1年前   
    536    0

    学士论文开题报告基于51单片机的数字示波器设计

    XX学院信息工程学院学士学位论文开题报告课题名称 基于51单片机的数字示波器设计 学生姓名 导师姓名 所在系部 信息工程学院 ...

    2年前   
    761    0

    基于单片机的火灾报警器设计

    随着现代生活质量的提升,人们对生命财产安全有了更高的重视。日常生活中随时可能因为操作的失误而引发火灾,给人民带来伤害。虽然在某种层面上可燃性气体能够给人们生活带来便利,但是仍然存在着较大的隐患。

    4年前   
    642    0

    基于单片机的CAN智能电动执行器的设计

    基于单片机的CAN智能电动执行器的设计控制器局部网CAN(Controller Area Network)属于现场总线的一种,是一种有效支持分布式控制或实时控制的串行通信网络,被公认为是最有前...

    3周前   
    74    0

    基于单片机的信号发生器设计

    随着电子测量技术与计算机技术的紧密结合,一种新的信号发生器-----波形发生器应运而生。所谓波形发生器是能够产生大量的标准信号和用户定义信号,并保证高精度、高稳定性、可重复性和易操作性的电子仪器...

    5年前   
    1109    0

    文档贡献者

    文***品

    贡献于2020-12-22

    下载需要 2 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档