欢迎来到天天文库
浏览记录
ID:8521149
大小:145.28 KB
页数:16页
时间:2018-03-31
《单片机原理及应用课程设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、《单片机原理及应用课程设计》报告——电子万年历设计专业:班级:姓名:学号:指导教师:2011年X月X日1.课程设计目的1.1巩固和加深对单片机原理和接口技术知识的理解;1.2培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;1.3学会方案论证的比较方法,拓宽知识,初步掌握工程设计的基本方法;1.4掌握常用仪器、仪表的正确使用方法,学会软、硬件的设计和调试方法;1.5能按课程设计的要求编写课程设计报告,能正确反映设计和实验成果,能用计算机绘制电路图和流程图。2.课程设计要求2.1制作一个可以显
2、示年月日时间的万年历2.2可以设置时间日期2.3以月历的方式显示日期2.4当前日期反显标出2.5时间和日期的字体不一致,以便区分3.硬件设计3.1以单片机为计算核心,外加3个按键和一块显示器完成整个电路3.2AT89C52单片机为核心(51单片机程序存储空间不够用),功能及引脚配置同52单片机。以Nokia3310L黑白液晶屏为显示模块,该模块具有引脚少,功能简单实用价格便宜等优点。该模块采用串行通信的方式传递数据。3.3电路设计如下图中R1~R5为上拉电阻,为保证P0.0~P0.4的端口的输出电
3、压足够驱动显示模块。R6~R8为下拉电阻起到同样的功能。实际测试仿真是因为未接入上拉电阻而导致显示模块没有输出的情况造成了很大的干扰。3个按钮为操作按钮,用于设置时间日期。4.软件设计4.1万年历的基本流程为定时、计数,然后进行时间的运算,时分秒的运算十分便捷,闰年和大小月的运算稍有繁琐,主要困难的在于星期的计算。所以本程序采用计算和标记每月第一日的星期来简化计算。所有的数据计算结束后,单片机就从P0的部分端口上向显示模块输出信号。4.2.1总流程4.2.2主函数部分4.2.3中断函数部分4.2.
4、4日期和时间显示流程图4.3源程序源代码#include#includesbitsc=P0^4;sbitsclk=P0^2;sbitd_c=P0^0;sbitsdin=P0^1;sbitreset=P0^3;sbitset_ok_set=P0^5;sbitset_next_bit=P0^6;sbitset_change=P0^7;unsignedcharsec,min,hour,day,mon,year,week,firstweek,max_day;unsign
5、edlongcount;bitsetORrun;unsignedcharmaxday(unsignedcharmo){if((mo==2)&&(year%4!=0))return(28);if((mo==2)&&(year%4==0))return(29);if((mo==4)
6、
7、(mo==6)
8、
9、(mo==9)
10、
11、(mo==11))return(30);return(31);}voiddatout(unsignedchardat)//输出函数{unsignedchari;for(i=0;i<8;
12、i++){sclk=0;sdin=(dat&0x80)/80;sclk=1;dat=dat<<1;}}voidtime2char(unsignedchari)//时间转换成点整字符输出{unsignedcharj;unsignedchark[5];switch(i){case0:k[0]=0x7F;k[1]=0x7F;k[2]=0x41;k[3]=0x7F;k[4]=0x7F;break;case1:k[0]=0x64;k[1]=0x66;k[2]=0x7f;k[3]=0x7F;k[4]=0x60
13、;break;case2:k[0]=0x7b;k[1]=0x7b;k[2]=0x49;k[3]=0x6F;k[4]=0x6F;break;case3:k[0]=0x63;k[1]=0x6b;k[2]=0x49;k[3]=0x7F;k[4]=0x7F;break;case4:k[0]=0x0F;k[1]=0x0F;k[2]=0x08;k[3]=0x7F;k[4]=0x7F;break;case5:k[0]=0x6F;k[1]=0x6F;k[2]=0x49;k[3]=0x7b;k[4]=0x7b;br
14、eak;case6:k[0]=0x7F;k[1]=0x7F;k[2]=0x49;k[3]=0x7b;k[4]=0x7b;break;case7:k[0]=0x03;k[1]=0x03;k[2]=0x01;k[3]=0x7F;k[4]=0x7F;break;case8:k[0]=0x7F;k[1]=0x7F;k[2]=0x49;k[3]=0x7F;k[4]=0x7F;break;case9:k[0]=0x6F;k[1]=0x6F;k[2]=0x49;k[3]=0x7F;k[4]=0x
此文档下载收益归作者所有