课程设计
(基于51单片机的电子万年历)
题目:万年历课程设计
院 (系)成都农业科技职业学院信息技术分院
专 业 应用电子技术
班 级 14电子 2班
学生姓名 黄攀
学 号 [1**********]1
指导老师 陈一虎、雷永辉
日 期 2016年6月
目 录
绪论……………………………………………………………….Ⅰ
1项目概述(项目组成,功能)………………………………..1
1.1硬件部分………………………………………………………2
1.2软件部分………………………………………………………2 2项目原理分析………………………………………………….3
2.1原理框图……………………………………………………...3
2.2原理分析……… …………………………………………….3
2.3系统关键元器件选择..………………………………………4
2.4项目印制板设计过程心得..…………………………………5
3系统的软件设计与实现……………………………………….6
3.1程序流程框图……………………………………….……….6
3.2 子程序的设计……………………………………….……….7
4项目软硬件联调……………………………………….……….10
4.1印制板图…………………………………………….……….10
4.2原理图………………………………………………………..10
4.3 DXP图………………………………………………………..11
4.4系统调试……………………………………………………..11
5总结 ……………………………………… …………………...12 参考文献 ………………………………………………… ………… …...12
信息技术分院课程设计 – 集成电路设计VHDL教程
绪论
电子万年历是实现对年,月,日,时,分,秒数字显示的计时装置,广泛用于个人家庭,车站, 码头,办公室,银行大厅等场所,成为人们日常生活中的必需品。数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表。钟表的数字化给人们生产生活带来了极大的方便,在此基础上完成的万年历精度高,功能易于扩展。可扩展成为诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等电路。所有这些,都是以钟表数字化为基础的。因此,研究数字时钟及扩大其应用有着非常现实的意义。本设计就是数字时钟简单的扩展应用。
1项目概述
本设计基于AT89s51单片机,结合DS1302时钟芯片设计了一个数字万年历,显示部分用数码管动态显示,初始时间可由按键设置,此外还具有温度显示功能,掉电保护功能。万年历还具有节能模式,具有很强的实用性。
关键词:单片机 万年历
数码管显示 温度
万年历设计项目组成与功能
1.1硬件部分
硬件部分主要由AT89S52单片机,LED显示电路,以及调时按键电路等组成。在单片机的选择上使用AT89S52单片机,该单片机适合于许多较为复杂控制应用场合。采用4-16译码器作为选择端,控制共阴数码管动态显示,结合时钟芯片DS1302和温度传感器18B20显示时间和温度。制作前在Proteus软件中嵌入单片机内进行仿真可以更好的进行硬件布局。
1.2软件部分
软件方面主要包括日历程序、时间调整程序,显示程序等。程序采用C语言编写,以便更简单地实现调整时间及阴历显示功能。所有程序编写完成后,在keil软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。
2项目原理分析
2.1原理框图
2.2原理分析:
以STC15F2K60S2单片机为核心,起着控制作用。系统包括LCD12864液晶显示电路、复位电路、时钟电路、温湿度采集电路、按键调整子函数、按键提示音电路、报警指示灯电路和时钟芯片电路。设计思路分为九个模块:复位电路、晶振电路模块、STC15F2K60S2、LCD12864液晶显示电路、温湿度采集电路、按键调整子函数、按键提示音电路、报警指示灯电路和时钟芯片电路这九个模块。
2.3 系统关键元器件选择
2.3.1单片机芯片:
采用STC15F2K60S2,片内ROM全都采用Flash ROM;能以3V的超低压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为60KB ROM 存储空间,同样具有89C51的功能,且具有在线编程可擦除技术。 所以选择采用STC15F2K60S2作为主控制系统。
2.3.2 显示模块:
采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。
所以采用了LED数码管作为显示。
2.3.3时钟芯片
采用DS12C887时钟芯片实现时钟,DS12C887芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V~
5.5V范围内,2.5V时耗电小于300nA。
所以采用DS12C887时钟芯片实现时钟。
2.4项目印制板设计过程心得
在印制板设计中,深刻体会到理论和实践相集合的重要性。虽然之前收集了大量的资料但在实际应用中却有很大差异,出现了许多意想不到的问题。但经过长时间的摸索最终还是设计出达到要求的系统。
3. 系统的软件设计与实现
3.1程序流程框图
图4.1程序流程框图
3.2 子程序的设计 时钟芯片程序
void write_ds(uchar add,uchar date) {
DS_AS=1;
DS_DS=1;
DS_RW=1;
P0=add;
DS_AS=0;
DS_RW=0;
P0=date;
DS_RW=1;
DS_AS=1;
}
uchar read_ds(uchar add) {
uchar ds_date;
DS_AS=1;
DS_DS=1;
DS_RW=1;
P0=add;
DS_AS=0;
DS_DS=0;
P0=0XFF;
ds_date=P0;
DS_DS=1;
DS_AS=1;
return ds_date;
}
void Init12887()
{
write_ds(0X0a,0x2f); write_ds(0x0b,0x06); write_ds(0x0c,0);
}
void ReadTime()
{
uchar temp;
temp=read_ds(CENTURY); Time[0]=temp/10; Time[1]=temp%10;
temp=read_ds(YEARS); Time[2]=temp/10; Time[3]=temp%10;
temp=read_ds(MONTHS); Time[4]=temp/10; Time[5]=temp%10;
temp=read_ds(DAYS);
Time[6]=temp/10;
Time[7]=temp%10;
temp=read_ds(HOURS);
Time[8]=temp/10;
Time[9]=temp%10;
temp=read_ds(MINUTES);
Time[10]=temp/10;
Time[11]=temp%10;
temp=read_ds(SECONDS);
Time[12]=temp/10;
Time[13]=temp%10;
}
12864驱动
#include
//延时
//12MHZ?? ??50??
void delay50us(uint t)
{
uchar j;
for(;t>0;t--)
for(j=19;j>0;j--);
}
/*------------------查忙-----------------------------*/
void chkbusy()
{
rs=0;
rw=1;
e=1;
P0=0xff ;
while((P0&0x80)==0x80);
e=0;
}
/*------------------写指令-----------------------------*/
void writecom(uchar com)
chkbusy();
rw=0;
rs=0;
delay50us(1);
P0=com;
e=1;
delay50us(10);
e=0;
delay50us(10);
}
/*------------------写数据-----------------------------*/
void writedat(uchar dat)
{
chkbusy();
rw=0;
rs=1;
delay50us(1);
P0=dat;
e=1;
delay50us(10);
e=0;
delay50us(10);
}
4项目软硬件联调
4.1印制板图
4.2电路原理图
4.3 DXP图
4.4系统调试
打开Proteus 软件,按照方案所选的电路元件来设计整体电路,线把个芯片按一定的位置放好,然后对相应的对象进行连接,连接时需仔细,以免调试时发生错误。做好之后把编程所生成的。HEX文件加载到STC15F2K60S2中,运行仿真软件,查看运行效果。如果运行出
错那么就根据他相应的提示来修改错误,直到仿真成功为止
5 总结
经过这段时间的万年历的设计,让我受益菲浅。取之长、补之短,在今后的学习和工作中有所受用。
通过本次课程设计,我更加扎实的掌握了有关集成电路设计应用方面的知识,虽然在设计中遇到了许多棘手的问题,但经过认真的思考,仔细的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。鉴于此,我会更加努力的学习以充实自己。
本次课程设计不仅培养了我科学严谨的学习态度与独立思考、勤于动手的能力,而且还培养了我们的团队协作精神。使我认识到团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。相信这次课程设计过后,我的理论水平和实践动手能力都会有一个质的飞跃,也为今后的实践与理论课程的学习打下了坚实的基础。
当然设计能够做到这样的完美,也离不开大家的悉心指导、点化和无私的帮助。在此表示深深地感谢,也由衷的祝愿你们身体健康,工作顺利,心想事成,万事如意。
参考文献
[1]李群芳,张士军,黄建.单片微型计算机与接口技术. 北京:电子工业出版社,2008
[2]李群芳.单片机原理接口与应用.北京:清华大学出版社,2005
[3]张迎新.单片微型计算机原理、应用及接口技术.北京:国防工业出版社,1999
[4]高峰.单片微机应用系统设计及使用技术.北京:机械工业出版社,2007 [5]彭伟.单片机c语音程序设计实例基于protues仿真.北京:电子工业出版社,2007
[7]张冬林,李鑫,戴梅.基于DHT11的
课程设计
(基于51单片机的电子万年历)
题目:万年历课程设计
院 (系)成都农业科技职业学院信息技术分院
专 业 应用电子技术
班 级 14电子 2班
学生姓名 黄攀
学 号 [1**********]1
指导老师 陈一虎、雷永辉
日 期 2016年6月
目 录
绪论……………………………………………………………….Ⅰ
1项目概述(项目组成,功能)………………………………..1
1.1硬件部分………………………………………………………2
1.2软件部分………………………………………………………2 2项目原理分析………………………………………………….3
2.1原理框图……………………………………………………...3
2.2原理分析……… …………………………………………….3
2.3系统关键元器件选择..………………………………………4
2.4项目印制板设计过程心得..…………………………………5
3系统的软件设计与实现……………………………………….6
3.1程序流程框图……………………………………….……….6
3.2 子程序的设计……………………………………….……….7
4项目软硬件联调……………………………………….……….10
4.1印制板图…………………………………………….……….10
4.2原理图………………………………………………………..10
4.3 DXP图………………………………………………………..11
4.4系统调试……………………………………………………..11
5总结 ……………………………………… …………………...12 参考文献 ………………………………………………… ………… …...12
信息技术分院课程设计 – 集成电路设计VHDL教程
绪论
电子万年历是实现对年,月,日,时,分,秒数字显示的计时装置,广泛用于个人家庭,车站, 码头,办公室,银行大厅等场所,成为人们日常生活中的必需品。数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表。钟表的数字化给人们生产生活带来了极大的方便,在此基础上完成的万年历精度高,功能易于扩展。可扩展成为诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等电路。所有这些,都是以钟表数字化为基础的。因此,研究数字时钟及扩大其应用有着非常现实的意义。本设计就是数字时钟简单的扩展应用。
1项目概述
本设计基于AT89s51单片机,结合DS1302时钟芯片设计了一个数字万年历,显示部分用数码管动态显示,初始时间可由按键设置,此外还具有温度显示功能,掉电保护功能。万年历还具有节能模式,具有很强的实用性。
关键词:单片机 万年历
数码管显示 温度
万年历设计项目组成与功能
1.1硬件部分
硬件部分主要由AT89S52单片机,LED显示电路,以及调时按键电路等组成。在单片机的选择上使用AT89S52单片机,该单片机适合于许多较为复杂控制应用场合。采用4-16译码器作为选择端,控制共阴数码管动态显示,结合时钟芯片DS1302和温度传感器18B20显示时间和温度。制作前在Proteus软件中嵌入单片机内进行仿真可以更好的进行硬件布局。
1.2软件部分
软件方面主要包括日历程序、时间调整程序,显示程序等。程序采用C语言编写,以便更简单地实现调整时间及阴历显示功能。所有程序编写完成后,在keil软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。
2项目原理分析
2.1原理框图
2.2原理分析:
以STC15F2K60S2单片机为核心,起着控制作用。系统包括LCD12864液晶显示电路、复位电路、时钟电路、温湿度采集电路、按键调整子函数、按键提示音电路、报警指示灯电路和时钟芯片电路。设计思路分为九个模块:复位电路、晶振电路模块、STC15F2K60S2、LCD12864液晶显示电路、温湿度采集电路、按键调整子函数、按键提示音电路、报警指示灯电路和时钟芯片电路这九个模块。
2.3 系统关键元器件选择
2.3.1单片机芯片:
采用STC15F2K60S2,片内ROM全都采用Flash ROM;能以3V的超低压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为60KB ROM 存储空间,同样具有89C51的功能,且具有在线编程可擦除技术。 所以选择采用STC15F2K60S2作为主控制系统。
2.3.2 显示模块:
采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。
所以采用了LED数码管作为显示。
2.3.3时钟芯片
采用DS12C887时钟芯片实现时钟,DS12C887芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V~
5.5V范围内,2.5V时耗电小于300nA。
所以采用DS12C887时钟芯片实现时钟。
2.4项目印制板设计过程心得
在印制板设计中,深刻体会到理论和实践相集合的重要性。虽然之前收集了大量的资料但在实际应用中却有很大差异,出现了许多意想不到的问题。但经过长时间的摸索最终还是设计出达到要求的系统。
3. 系统的软件设计与实现
3.1程序流程框图
图4.1程序流程框图
3.2 子程序的设计 时钟芯片程序
void write_ds(uchar add,uchar date) {
DS_AS=1;
DS_DS=1;
DS_RW=1;
P0=add;
DS_AS=0;
DS_RW=0;
P0=date;
DS_RW=1;
DS_AS=1;
}
uchar read_ds(uchar add) {
uchar ds_date;
DS_AS=1;
DS_DS=1;
DS_RW=1;
P0=add;
DS_AS=0;
DS_DS=0;
P0=0XFF;
ds_date=P0;
DS_DS=1;
DS_AS=1;
return ds_date;
}
void Init12887()
{
write_ds(0X0a,0x2f); write_ds(0x0b,0x06); write_ds(0x0c,0);
}
void ReadTime()
{
uchar temp;
temp=read_ds(CENTURY); Time[0]=temp/10; Time[1]=temp%10;
temp=read_ds(YEARS); Time[2]=temp/10; Time[3]=temp%10;
temp=read_ds(MONTHS); Time[4]=temp/10; Time[5]=temp%10;
temp=read_ds(DAYS);
Time[6]=temp/10;
Time[7]=temp%10;
temp=read_ds(HOURS);
Time[8]=temp/10;
Time[9]=temp%10;
temp=read_ds(MINUTES);
Time[10]=temp/10;
Time[11]=temp%10;
temp=read_ds(SECONDS);
Time[12]=temp/10;
Time[13]=temp%10;
}
12864驱动
#include
//延时
//12MHZ?? ??50??
void delay50us(uint t)
{
uchar j;
for(;t>0;t--)
for(j=19;j>0;j--);
}
/*------------------查忙-----------------------------*/
void chkbusy()
{
rs=0;
rw=1;
e=1;
P0=0xff ;
while((P0&0x80)==0x80);
e=0;
}
/*------------------写指令-----------------------------*/
void writecom(uchar com)
chkbusy();
rw=0;
rs=0;
delay50us(1);
P0=com;
e=1;
delay50us(10);
e=0;
delay50us(10);
}
/*------------------写数据-----------------------------*/
void writedat(uchar dat)
{
chkbusy();
rw=0;
rs=1;
delay50us(1);
P0=dat;
e=1;
delay50us(10);
e=0;
delay50us(10);
}
4项目软硬件联调
4.1印制板图
4.2电路原理图
4.3 DXP图
4.4系统调试
打开Proteus 软件,按照方案所选的电路元件来设计整体电路,线把个芯片按一定的位置放好,然后对相应的对象进行连接,连接时需仔细,以免调试时发生错误。做好之后把编程所生成的。HEX文件加载到STC15F2K60S2中,运行仿真软件,查看运行效果。如果运行出
错那么就根据他相应的提示来修改错误,直到仿真成功为止
5 总结
经过这段时间的万年历的设计,让我受益菲浅。取之长、补之短,在今后的学习和工作中有所受用。
通过本次课程设计,我更加扎实的掌握了有关集成电路设计应用方面的知识,虽然在设计中遇到了许多棘手的问题,但经过认真的思考,仔细的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。鉴于此,我会更加努力的学习以充实自己。
本次课程设计不仅培养了我科学严谨的学习态度与独立思考、勤于动手的能力,而且还培养了我们的团队协作精神。使我认识到团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。相信这次课程设计过后,我的理论水平和实践动手能力都会有一个质的飞跃,也为今后的实践与理论课程的学习打下了坚实的基础。
当然设计能够做到这样的完美,也离不开大家的悉心指导、点化和无私的帮助。在此表示深深地感谢,也由衷的祝愿你们身体健康,工作顺利,心想事成,万事如意。
参考文献
[1]李群芳,张士军,黄建.单片微型计算机与接口技术. 北京:电子工业出版社,2008
[2]李群芳.单片机原理接口与应用.北京:清华大学出版社,2005
[3]张迎新.单片微型计算机原理、应用及接口技术.北京:国防工业出版社,1999
[4]高峰.单片微机应用系统设计及使用技术.北京:机械工业出版社,2007 [5]彭伟.单片机c语音程序设计实例基于protues仿真.北京:电子工业出版社,2007
[7]张冬林,李鑫,戴梅.基于DHT11的