欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    单片机课程设计报告可编程作息时间控制器.docx

    • 资源ID:11170409       资源大小:96.20KB        全文页数:35页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机课程设计报告可编程作息时间控制器.docx

    1、单片机课程设计报告可编程作息时间控制器单片机原理及应用课程设计报告 设计课题: 可编程作息时间控制器 专业班级: 工学院信工091 学生姓名: 肖冬冬 熊俊飞 指导教师: 何秀文 2012 年 5 月目 录目 录 11 设计任务书 21.1 基本设计要求 22 设计阐明 212.1设计内容 21.2设计要求 21.3设备及工作环境 33 系统方案整体设计 33.1 设计思路 43.2 系统整体框图 44 硬件设计 44.1 系统硬件设计 44.1.1 键盘扫描 54.1.2 LCD显示器 54.2 系统工作原理论述 55 软件设计 55.1 分析论证 55.1.1 显示模块 65.1.2 运算

    2、模块 65.1.3 校时模块 63.1.4 启动/暂停,复位模块 65.1.5 整体功效 65.2程序清单 76 调试过程及分析 247 设计总结 25参 考 文 献 261 设计任务书1.1 基本设计要求(1)在综合单片机实验箱的硬件结构上编写软件完成设计。(2)程序的首地址应使目标机可以直接运行,即从0000H开端。在主程序的开端部分必须设置一个合适的栈底。程序放置的地址须持续且靠前,不要在中间留下大批的空间地址,以使目标机可以应用较少的硬件资源。(3)2*16位LCD显示器从左到右分辨显示闹钟时间和现在时间,采用24小时标准计时制。(4)在4个键控开关上选定2个键分辨作为小时. 分的调校

    3、键。每按一次键,对应的显示值便加1。分. 秒加到59后变为00;小时加到23后再按键即变为00.再调校时均不向上一单位进位(例如分加到59后变为00;但小时不产生转变)。(5)软件设计应用片内定时器,采用定时中断结构,应用软件延时法。2 设计阐明12.1设计内容用ZY15MCU12BD型综合单片机实验箱及串口电路设计实现显示现在时间和闹钟时间并能够调校现在时间和闹钟时间的时钟,还能够实现闹钟的复位功能以及广播和蜂鸣器的响应。说明设计中包含的内容1.2设计要求(1) 在ZY15MCU12BD型综合单片机实验箱的硬件结构上编写软件完成设计。(2) 程序的首地址应使目标机可以直接运行,即从0000H

    4、开端。在主程序的开端部分必须设置一个合适的栈底。程序放置的地址须持续且靠前,不要在中间留下大批的空间地址,以使目标机可以应用较少的硬件资源。 (3) 2*16位LCD显示器从左到右分别显示时.分,采用24小时标准计时制。 (4) 在4个键控开关上选定2个键分别作为小时. 分的调校键。每按一次键,对应的显示值便加1或减1。分加到59后变为00;小时加到23后再按键即变为00.再调校时均不向上一单位进位(例如分加到59后变为00;但小时不产生转变).(5) 软件设计应用AT89S52片内定时器,采用定时中断结构,应用软件延时法。(6) 上机调试程序。(7) 写出设计报告。1.3设备及工作环境 (1

    5、) 硬件:计算机一台 (2) 软件:Windows操纵系统、Keil C51软件,proteus软件。3 系统方案整体设计3.1 设计思路或设计方案论证现在时间程序和闹钟程序由显示模块、校时模块和时钟运算模块三大部分组成。其中校时模块和时钟运算模块要对时、分、秒的数值进行操作,并且秒算到60时,要自己清零并向分进1;分算到60时,要自己清零并向时进1;时算到24时,要清零。这样,才能循环记时。秒表程序也由显示模块,秒时算到60时,要自己清零并向分进1,秒时算到60时,要自己清零。用按键决定是进入时钟程序还是秒表程序。3.2 系统整体框图图1 系统整体框图4 硬件设计4.1 系统硬件设计4.1.

    6、1 键盘扫描采用定时器结构,每过0.5s对键盘扫描一次。键盘采用复用结构,前三个键控开关均有两个功能,第四个键控开关只有闹钟复位的功能。每当按一个健后均进入其相应的程序。4.1.3 LCD显示器LCD液晶显示器采用2*16位的结构。在使用LCD液晶显示器之前必须先对显示器初始化。确定显示器的工作方式等。4.2 系统工作原理论述硬件由AT89S51芯片、2*16LCD液晶显示器、晶振电路、5个键控开关、1个蜂鸣器和两个LED发光二极管组成.。软件采用片内定时器结构,每过50ms中断一次,一个发光二极管每闪一次表示时间过一秒。LCD液晶显示器显示现在的时间和闹钟的时间以及相应的字符。在4个键控开关

    7、上选定2个键分辨作为小时. 分的调校键。每按一次键,对应的显示值便加1。分. 秒加到59后变为00;小时加到23后再按键即变为00.再调校时均不向上一单位进位(例如分加到59后变为00;但小时不产生转变)。设置四个闹钟,任何一路闹钟到时均广播和响蜂鸣器一分钟。同时还有闹钟显示以及复位功能。5 软件设计5.1 分析论证此可编程作息时间控制的设计与实现,主要采用了2*16液晶显示器,AT89S51片内16位定时器/计数器等,包含显示模块,运算模块和校时模块三大功效模块。5.1.1 显示模块用2*16液晶显示器功效来显示现在的时间以及闹钟的时间。与AT89S51连接,用程序来控制时间的走动。5.1.

    8、2 运算模块该模块的重要功效是对时、分、秒运算,并把运算出的终极成果存到事先已经开辟的内存单元里,以便显示模块即时地显示出来。该模块可以细分为定时模块和运算模块。定时模块负责供给中断信号,由于CPU运算模块中的指令耗费必定的时间,所以中断信号最好通过硬件来实现,因此必须通过软件的方法在运算模块中设置一个统计中断次数的变量,并且这一变量必须事先在内存里开辟存储单元。中断信号是定时器工作方法为方法1,产生一个50ms的脉冲信号。运算模块负责时、分、秒的计算,在中断服务程序里,必须对秒、分和时的单元内的数值进行判断,当秒加到60时,分必须加1 、秒清零;当分加到60时,时加1、分清零。当时加到24时

    9、,直接清零,然后转到调用处。秒表也是如此。5.1.3 校时模块该模块重要功效是修正时、分、秒内存单元的数值。每按一次键,对应的显示值便加1。分、 秒加到59后变为00;小时加到23后再按键即变为00.再调校时均不向上一单位进位(例如分加到59后变为00;但小时不产生转变)。要注意在主程序中对时间进行调校前应封闭中断,以防在调校过程中定时中断服务程序也对时间进行修正而造成混杂。3.1.4 复位模块该模块的功能是实现四个闹钟的复位。5.1.5 整体功效在LCD液晶显示器上能实现现在时间的时、分显示和表示秒的法功二极管的闪烁,并能对时、分进行加1校订、减1校订。本实验中01键(设置现在的时间/时的调

    10、整)、02健(显示闹钟设置的时间/分的调整)、03健(设置闹钟的时间.设置完成)、闹钟复位。5.2程序清单 #include #define uint unsigned int #define uchar unsigned char sbit key1=P10; sbit key2=P11; sbit key3=P12; sbit key4=P13; sbit lcdcn=P22; sbit lcdrs=P20; sbit lcdrw=P21; sbit lcd=P24; sbit sound=P25; sbit lighter=P23; uint a,b,i,min,hour,minge,m

    11、inshi,hourge,hourshi,sec; uint a0min,a0hour,a0minge,a0minshi,a0hourge,a0hourshi,a1min,a1hour,a1minge,a1minshi,a1hourge,a1hourshi; uint a2min,a2hour,a2minge,a2minshi,a2hourge,a2hourshi,a3min,a3hour,a3minge,a3minshi,a3hourge,a3hourshi; uchar code table1=0,1,2,3,4,5,6,7,8,9; uchar code table2=Time:00:0

    12、0; uchar code Alarm_0=Alar0:00:00; uchar code Alarm_1=Alar1:00:00; uchar code Alarm_2=Alar2:00:00; uchar code Alarm_3=Alar3:00:00; uchar code table0=A,0,A,1,A,2,A,3;uchar code null= ; uint num1,num2; void delay(unsigned int xms) uint i,j; for(i=xms;i0;i-) for(j=124;j0;j-); void write_com(uchar com)

    13、delay(5); lcdrs=0; P0=com; delay(5); lcdcn=1; delay(5); lcdcn=0; void write_data(uchar date) delay(5); lcdrs=1; P0=date; delay(5); lcdcn=1; delay(5); lcdcn=0; void time() while(1) if(key1=0) delay(10); if(key1=0) if(hour=23) hour=0; else hour+; hourge=hour%10; hourshi=hour/10; write_com(0x0f); delay

    14、(2); write_com(0x80+6); write_data(table1hourge); delay(5); write_com(0x80+5); delay(2); write_data(table1hourshi); while (!key1); /delay(1); if(key2=0) delay(10); if(key2=0) if(min=59) /分钟设置 min=0; else min+; minge=min%10; minshi=min/10; write_com(0x0f); write_com(0x80+9); write_data(table1minge);

    15、delay(1); write_com(0x80+8); write_data(table1minshi); delay(1); while (!key2); if(key3=0) delay(10); if(key3=0) write_com(0x0c); while(!key3); break; void alarm0() while(1) if(key1=0) delay(10); if(key1=0) if(a0hour=23) a0hour=0; else a0hour+; a0hourge=a0hour%10; a0hourshi=a0hour/10; write_com(0x0f

    16、); /delay(2); write_com(0x0c); write_com(0x80+0x40); for(i=0;i5;i+) write_data(Alarm_0i); delay(5); write_com(0x80+0x40+8); write_data(:); write_com(0x80+0x40+7); write_data(table1a0hourge); delay(1); write_com(0x80+0x40+6); /delay(2); write_data(table1a0hourshi); delay(1); while(!key1); if(key2=0)

    17、delay(10); if(key2=0) if(a0min=59) a0min=0; else a0min+; a0minge=a0min%10; a0minshi=a0min/10; write_com(0x0f); /delay(2); write_com(0x80+0x40+10); write_data(table1a0minge); delay(1); write_com(0x80+0x40+9); /delay(2); write_data(table1a0minshi); delay(1); while(!key2); if(key3=0) delay(10); if(key3

    18、=0) write_com(0x0c); write_com(0x80+0x40); for(i=0;i11;i+) write_data(nulli); while(!key3); break; void alarm1() while(1) if(key1=0) delay(10); if(key1=0) if(a1hour=23) a1hour=0; else a1hour+; a1hourge=a1hour%10; a1hourshi=a1hour/10; write_com(0x0f); /delay(2); write_com(0x80+0x40); for(i=0;i5;i+) w

    19、rite_data(Alarm_1i); delay(5); write_com(0x80+0x40+8); write_data(:); write_com(0x80+0x40+7); write_data(table1a1hourge); delay(1); write_com(0x80+0x40+6); /delay(2); write_data(table1a1hourshi); delay(1); while(!key1); if(key2=0) delay(10); if(key2=0) if(a1min=59) a1min=0; else a1min+; a1minge=a1mi

    20、n%10; a1minshi=a1min/10; write_com(0x0f); /delay(2); write_com(0x80+0x40+10); write_data(table1a1minge); delay(1); write_com(0x80+0x40+9); /delay(2); write_data(table1a1minshi); delay(1); while(!key2); if(key3=0) delay(10); if(key3=0) write_com(0x0c); write_com(0x80+0x40); for(i=0;i11;i+) write_data

    21、(nulli); while(!key3); break; void alarm2() while(1) if(key1=0) delay(10); if(key1=0) if(a2hour=23) a2hour=0; else a2hour+; a2hourge=a2hour%10; a2hourshi=a2hour/10; write_com(0x0f); /delay(2); write_com(0x0c); write_com(0x80+0x40); for(i=0;i5;i+) write_data(Alarm_2i); delay(5); write_com(0x80+0x40+8

    22、); write_data(:); write_com(0x80+0x40+7); write_data(table1a2hourge); delay(1); write_com(0x80+0x40+6); /delay(2); write_data(table1a2hourshi); delay(1); while(!key1); if(key2=0) delay(10); if(key2=0) if(a2min=59) a2min=0; else a2min+; a2minge=a2min%10; a2minshi=a2min/10; write_com(0x0f); /delay(2);

    23、 write_com(0x80+0x40+10); write_data(table1a2minge); delay(1); write_com(0x80+0x40+9); /delay(2); write_data(table1a2minshi); delay(1); while(!key2); if(key3=0) delay(10); if(key3=0) write_com(0x0c); write_com(0x80+0x40); for(i=0;i11;i+) write_data(nulli); while(!key3); break; void alarm3() while(1)

    24、 if(key1=0) delay(10); if(key1=0) if(a3hour=23) a3hour=0; else a3hour+; a3hourge=a3hour%10; a3hourshi=a3hour/10; write_com(0x0f); /delay(2); write_com(0x0c); write_com(0x80+0x40); for(i=0;i5;i+) write_data(Alarm_3i); delay(5); write_com(0x80+0x40+8); write_data(:); write_com(0x80+0x40+7); write_data

    25、(table1a3hourge); delay(1); write_com(0x80+0x40+6); /delay(2); write_data(table1a3hourshi); delay(1); while(!key1); if(key2=0) delay(10); if(key2=0) if(a3min=59) a3min=0; else a3min+; a3minge=a3min%10; a3minshi=a3min/10; write_com(0x0f); /delay(2); write_com(0x80+0x40+10); write_data(table1a3minge);

    26、 delay(1); write_com(0x80+0x40+9); /delay(2); write_data(table1a3minshi); delay(1); while(!key2); if(key3=0) delay(10); if(key3=0) write_com(0x0c); write_com(0x80+0x40); for(i=0;i11;i+) write_data(nulli); while(!key3); break; void keyscan() if(key1=0) delay(10); if(key1=0) while(!key1); time(); /时间调用 else if(key2=0) delay(10); if(key2=0)


    注意事项

    本文(单片机课程设计报告可编程作息时间控制器.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开