欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    单片机技术课程设计(论文)电子万历设计.doc

    • 资源ID:4147392       资源大小:573KB        全文页数:25页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

    单片机技术课程设计(论文)电子万历设计.doc

    单片机技术课程设计说明书摘 要本设计是基于51系列的单片机设计的电子万年历 ,可以显示年月日时分秒及星期等功能。设计过程中不但对单片机的理论基础而且外围扩展知识都进行了比较全面的准备。具备三个功能:(1) 显示年月日时分秒及星期(2) 具有可调整日期和时间功能(3) 具有闹钟设置功能关键词 单片机;AT89S52芯片;矩阵式键盘Abstract The design is based on 51 series of microcontrollers designed electronic calendar, you can show date and time every second week, and other functions. The design process, not only the theoretical basis for microcontroller and peripheral expansion of knowledge and have conducted a more comprehensive preparation. Has three functions: (A) shows the date when the minutes and seconds, and weeks (2) The date and time functions with adjustable (3) has set the alarm clock function Key words:SCM; AT89S52 chip; Matrix Keyboard 目 录1 设计任务及方案11.1 设计课题任务11.2 功能要求1 1.3 设计课题总体方案介绍及工作原理说明1 1.3.1 总体方案介绍1 1.3.2 工作原理说明12 万年历硬件系统的设计22.1 万年历硬件系统各模块功能简要介绍2 2.1.1 系统原理框图2 2.1.2 单片机最小系统2 2.1.3 显示电路2 2.1.4 行列式键盘32.2 万年历电路原理图、PCB图、元器件布局图32.3 设计元器件清单33 万年历软件系统的设计43.1 万年历使用单片机资源的情况43.2 万年历软件系统各模块功能简要介绍4 3.2.1 显示模块43.3 设计课题软件系统程序流程框图53.4 万年历程序清单74 仿真、万年历说明、误差分析及总结84.1 设计结论及万年历使用说明8 4.1.1 时间设置84.2 PROTEUS软件仿真84.3 误差分析及调整84.4 设计体会84.5 教学建议8参考文献9致谢10附录111 设计任务及方案1.1 设计课题任务设计一个具有日期.时间.星期功能的电子钟,并可以调整时间和设置闹钟等功能。1.2 功能要求正确显示时间和日期,具备准确的计时功能,并且有启动和暂停功能。使用行列式键盘来控制它的启动、暂停和修改日期和时间,以达到准确无误地计时和显示日期和时间的目的。用FYD128640402液晶模块的自带字库实现,显示方便,大小适宜,显示程序简单等特点。1.3 设计课题总体方案介绍及工作原理说明1.3.1 总体方案介绍这次设计选用的是单片机(AT89S52)来实现电子万年历的功能。共具备两个功能:(1)显示年月日及分秒信息(2)具有可调整日期和时间功能。该电子万年历能够成功实现时钟运行,调整功能,且精确度经调试一天的误差在2S内。1.3.2 工作原理说明将AT89S52芯片作为内核,运用单片机定时器功能,当所设定时间截止,执行中断程序,实现时钟的调整。通过P0口输送数据到液晶显示模块使它同步显示时钟的变化。判键执行子程序,通过矩阵式键盘调节时间和设置闹钟。当闹钟设定时间等于同步时间,蜂鸣器持续响60秒。通过反复测试有24小时的时间误差,每天12点自动调整误差,从而达到精准计时的目的。2 万年历硬件系统的设计2.1 万年历硬件系统各模块功能简要介绍2.1.1 硬件系统原理框图如图2.1所示:图2.1系统原理框图2.1.2 单片机最小系统AT89S52 是标准的40引脚双列直插式集成电路芯片,有4个I/O口分别为P0,P1,P2,P3。MCS-51单片机共有4个8位的I/O口分别为P0、P1、P2、P3,每一条I/O线都能独立地作输出或输入。2.1.3 显示电路接口信号说明如表2所示:表2.1 接口信号序号符号引脚说明型号符号引脚说明1VSS电源地DB512DataI/O2VDD电源正极DB613DataI/O3VO液晶显示偏压输入DB714DataI/O4RS数据/命令选择端CS115片选IC1信号5R/W读写控制信号CS216片选IC2信号6E使能端RST17复位端7DB0DataI/OVEE18负电源输出8DB1DataI/ONC19空脚9DB2DataI/ONC20空脚10DB3DataI/OBLA21背光电源正极11DB4DataI/OBLK22背光电源负极2.1.4 行列式键盘在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,在这次设计中一共采用16个按键,直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显。2.2 万年历原理图.PCB图.元器件布局图原理图、PCB图及元器件布局图见附录1,2,32.3 元器件清单元器件清单见附录43 万年历软件系统的设计3.1 万年历使用单片机资源的情况本设计将P1口作为行列式键盘与单片机之间的接口,用P0口作为液晶显示的数据传送口,用定时计数器1作为定时中断。3.2 万年历软件系统各模块功能简要介绍3.2.1 显示模块基本显示模块设计的重点是由显示代码取得相应的段码、显示段码数据的串行发送。FYD128640402显示模块的时序图(读操作时序和写操作时序)如图3.1,3.2所示:图3.1 显示模块读操作时序图图3.2 显示模块写操作时序图3.2.2 行列式键盘行列式键盘的按键识别方法称为行扫描法,行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法。判断键盘中有无键按下,检查方法:将全部行线置低电平,然后检测列线的状态。只要有一列的电平置为低,则表示键盘中有键按下,且闭合的键位于低电平与4根行线相交叉的4按键位置。若所有列线均为高电平,则可证明无键按下。判断闭合键所在的位置有无键按下,即可确定具体闭合键。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线均为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列显示为低电平,则该列线与置为低电平的行线交叉处的按键即为闭合的按键。3.3 软件系统程序流程框图系统程序流程框图包括主程序流程框图,时间调整流程图和行列式键盘流程图,分别如图3.3,3.4,3.5所示:图3.3 主程序流程图图3.4 时间调整程序框图图3.5 行列式键盘程序流程框图3.4 程序清单见附录54 设计结论、仿真结果、误差分析、教学建议4.1 设计结论及使用说明本次设计万年历在经过反复测试后,功能基本完成。4.1.1 时间设置开机按C键时钟开始计时,按D键停止;按年加一;按1则年份减一;按2月份数加一;按3则月份减一;按4天数加一;按5则天数减一;按6小时数加一;按7则小时数减一;按8分钟加一;按9分钟减一;按A星期加一;按B星期减一。按C则复位重新开始计时。4.2 Proteus仿真结果对程序进行编译,在软件的帮助下检查其中的错误并进行反复修改,显示结果准确无误,仿真结果非常成功。4.3 误差分析该电子万年历能够成功实现时钟运行,调整功能,且精确度经调试一天的误差在2S内。4.4 设计体会通过这两周的课程设计,我学到了不少的知识。加深了我对于单片机和数字电路的认识,相信在以后的学习和工作中碰到这些基础的元器件我会更加得心应手。本课程设计的重要在于原理图的设计、PCB的生成和硬件的调试,和程序的编写。设计过程中,我很认真地对待每一个细节,希望自己能做得更好。希望今后还有这样的机会,能够让我学到更多的知识。4.5 教学建议经过上学期的单片机课程学习,我学到了很多以前未接触过的新知识,根据个人学习情况,对单片机的教学提出两点建议: 一、单片机课程的指令繁多,容易混淆,建议王老师在讲解指令系统时,指出这些指令的区别和注意事项,发一些资料给我们参考与学习,多举实例,进一步激发我们学习这门课程的兴趣。二、上课时要多提问,给予每位同学同等的机会回答,学到更多的知识。参考文献李广弟,朱月秀,冷祖祁.单片机基础.北京:北京航空航天大学版社,2008.12Li guangdi,Zhu yuexiu,Len zhuqi. Microcontroller based.Beijing: Beijing University of Aeronautics and Astronautics Press,2008.12(in Chinese)2马忠梅.单片机的C语言应用程序设计.北京:北京航空航天大学版社,2008.2Ma zhongmei.SCM C-Language Application Programming.Beijing: Beijing University of Aeronautics and Astronautics Press,2008.2(in Chinese)3B2B99.矩阵式键盘的结构及工作原理EB/OL4曹巧媛,单片机原理及应用M,北京:电子工业出版社,1997.7Cao qiaoyuan.SCM Principle and Application.Beijing: Electronic industry Press,1997.7(in Chinese)致 谢大学三年已经进行过3次课程设计,经过老师的指导和自己的设计,对这次单片机课程设计万年历充满信心。在本次设计过程中,虽然遇到一些问题,最终在全组人员的努力下成功解决。在这里我衷心感谢我们的组长胡代军同学,在他的带领和引导之下,我们的设计才取得了圆满的成功。他学习刻苦勤奋,助人为乐给我们的设计提供很大的帮助,此次设计顺利完成。最后要感谢我们的课程设计指导老师王韧,由于他的认真负责,使得我们在整个设计过程中不敢有丝毫的怠慢和松懈,不仅在设计过程中学会了怎样将理论与实践相结合,而且懂得了做人要严谨,做事要认真。附录1附录2附录3附录4Part TypeDesignatorFootprintAT89S52U1DIP401KR13AXIAL0.4CON2J4SIP21KR2AXIAL0.4CON4J1SIP41kR12AXIAL0.4CON8JP4SIP84.7KR7AXIAL0.4CON8JP3SIP84.7KR10AXIAL0.4CON8JP1SIP84.7KR9AXIAL0.4CON8JP2SIP84.7KR8AXIAL0.4CON9D9RAD0.110KR17AXIAL0.4CON9J5SIP911.0592MHZY1XTAL1CON9S2按钮22FC3RAD0.1CON9S1按钮24C04u4DIP8CON9S3按钮33PFC1RAD0.1CON9S4按钮33PFC2RAD0.1CON9S5按钮470R00AXIAL0.4CON20J6SIP20470R01AXIAL0.4DYKGS?开关470R26AXIAL0.4ISPISPISP470R25AXIAL0.4LED4LED2数码管470R27AXIAL0.4LED4LED1数码管470R03AXIAL0.4PNPQ6TO-52470R07AXIAL0.4PNPQ5TO-52470R02AXIAL0.4PNPQ7TO-52470R06AXIAL0.4PNPQ9TO-52470R04AXIAL0.4PNPQ8TO-52470R05AXIAL0.4PNPQ4TO-52470R21AXIAL0.4PNPQ1TO-52470R20AXIAL0.4PNPQ2TO-52470R1AXIAL0.4PNPQ3TO-52470R24AXIAL0.4POT1R18SIP3470R23AXIAL0.4SPEAKERLS1AXIAL0.3470R22AXIAL0.4AT89S52U1DIP40Part TypeDesignatorFootprintCON2J4SIP2附录5#include<AT89X51.H>#define uint unsigned int#define uchar unsigned charsbit rs=P20;sbit rw=P21;sbit psb=P23;sbit ret=P25;sbit E=P22;void clear(void);void lcd_ini(void);void delay(uchar m);void display(); void wrda(uchar da);void busy(void);void wrir(uchar com);void ini1(void);void display_y(void);void ini(void);void process(void);void change(void);void week1(void); void start(void); uchar disdata=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0xc4,0xea,0xd4,0xc2,0xc8,0xd5,0x3a,; / 0-9,年,月,日,: 的液晶代码uchar pp=0,0,0,0,10,11,0,0,12,13,0,0,14,15,0,0,16,0,0,16,0,0; / 年月日时分秒数组uchar a=0xd0,0xc7,0xc6,0xda,0,0; / 星期数组uchar yf=32,29,32,31,32,31,32,32,31,32,31,32; / 每月天数uint year=2009,p=0,k=0;uchar month=10,day=23,hour=08,minite=08,second=0,counter=0,c=0,week=1;void main(void) lcd_ini(); ini(); clear(); ini1(); TR0=0; start(); process(); while(1) display();void lcd_ini(void) /液晶复位 ret=0; delay(10); ret=1; delay(2); psb=1; delay(10);void ini(void) /液晶初始化 wrir(0x34); wrir(0x30); wrir(0x01); wrir(0x06); wrir(0x0c);void wrir(uchar com) /液晶写指令 busy(); rs=0; rw=0; P0=com; E=1; delay(50); E=0;void busy(void) /液晶判忙 rw=1; rs=0; P0=0xff; E=1; while(P0>>7); E=0;void wrda(uchar da) /液晶写数据 busy(); rs=1; rw=0; P0=da; E=1; delay(30); E=0;void clear(void) /清屏 wrir(0x01); wrir(0x34); wrir(0x30);void delay(uchar ms) /延时 uchar i; while(-ms) for(i=0;i<120;i+); void ini1(void) /定时器初始化 TMOD=0x01; TH0=(65536-46080)/256; TL0=(65536-46080)%256; ET0=1; EA=1;void start(void) wrir(0x83); wrda(0xcd); /万 wrda(0xf2); wrda(0xc4); /年 wrda(0xea); wrda(0xc0); /历 wrda(0xfa);void process(void) / 年月日处理 if(year%4=0) /润年判断进行二月天数处理 yf1=30; else yf1=29; pp0=year/1000%10; pp1=year/100%10; pp2=year/10%10; pp3=year%10; pp6=month/10%10; pp7=month%10; pp10=day/10%10; pp11=day%10; pp14=hour/10%10; pp15=hour%10; pp17=minite/10%10; pp18=minite%10; pp20=second/10%10; pp21=second%10; week1(); display_y();void week1(void) /星期处理 switch(week) case 1: a4=0xd2;a5=0xbb;break; /星期一 case 2: a4=0xb6;a5=0xfe;break; /星期二case 3: a4=0xc8;a5=0xfd;break; /星期三case 4: a4=0xcb;a5=0xc4;break; /星期四case 5: a4=0xce;a5=0xe5;break; /星期五case 6: a4=0xc1;a5=0xf9;break; /星期六case 7: a4=0xc8;a5=0xd5;break; /星期日 void display_y(void) / 显示程序 uchar j,h,q; wrir(0x91); / 显示年月日 for(j=0;j<14;j+) wrda(disdatappj); wrir(0x8a); /显示时分秒 for(h=14;h<22;h+) wrda(disdatapph); wrir(0x9b); /显示星期 for(q=0;q<6;q+) wrda(aq);uchar key(void) /判键 uchar H,L; P1=0xf0; if(P1&0xf0)!=0xf0) delay(30); if(P1&0xf0)!=0xf0) H=0xfe; while(H&0x10)!=0) P1=H; if(P1&0xf0)!=0xf0) L=(P1&0xf0)|0x0f; return(H)|(L); else H=(H<<1)|0x01; return(0);void display(void) /键值处理 uchar x; x=key(); switch(x) case 0x11: year+; if(year=2100) year=2009; while(1) process(); if(P10=1) break;break; /年加一 case 0x21: year-; if(year=2000) year=2009; while(1) process(); if(P10=1) break;break; /年减一 case 0x41: month+; if(month=13) month=1; while(1) process(); if(P10=1) break;break; /月加一 case 0x81: month-; if(month=0) month=12; while(1) process(); if(P10=1) break;break; /月减一 case 0x12: day+; if(day=yfmonth-1) day=1; while(1) process(); if(P10=1) break;break; /日加一 case 0x22: day-; if(day=0) day=yfmonth-1-1; while(1) process(); if(P10=1) break;break; /日减一 case 0x42: hour+; if(hour=24) hour=0; while(1) process(); if(P10=1) break;break; /时加一 case 0x82: hour-; if(hour=0) hour=23; while(1) process(); if(P10=1) break;break; /时减一 case 0x14: minite+; if(minite=60) minite=0; while(1) process(); if(P10=1) break;break; /分加一 case 0x24: minite-; if(minite=0) year=59; while(1) process(); if(P10=1) break;break; /分减一 case 0x44: week+; if(week=8) week=1; while(1) process(); if(P10=1) break;break; /星期加一 case 0x84: week-; if(week=0) week=7; while(1) process(); if(P10=1) break;break; /星期减一 case 0x18: TR0=1; while(1) process();if(key()=0x28) break; TR0=0;break; /C键开始计时 ;D键暂停 调节时间void Timer_0(void)interrupt 1 using 2 /中断处理 TH0=(65536-46080)/256; TL0=(65536-46080)%256; counter+; if(counter=20) counter=0; second+; if(second=60) second=0; minite+; if(minite=60) minite=0; hour+; if(hour=24) hour=0; day+; week+; if(week=8) week=1; if(day=yfmonth-1) day=1; month+;if(month=13) month=1; year+; if(year=2100) year=2009;

    注意事项

    本文(单片机技术课程设计(论文)电子万历设计.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开