嵌入式课程设计报告
ucData = DS1302OutputByte(); // 读1Byte数据 DS1302_CLK = 1; DS1302_RST = 0; return(ucData); }
void DS1302_SetProtect(bit flag) //是否写保护 {
if(flag)
Write1302(0x8E,0x10); else
Write1302(0x8E,0x00); }
void DS1302_SetTime(unsigned char Address, unsigned char Value) // 间函数 {
DS1302_SetProtect(0);
Write1302(Address, ((Value/10)<<4 | (Value))); }
void DS1302_GetTime(SYSTEMTIME *Time) {
unsigned char ReadValue;
ReadValue = Read1302(DS1302_SECOND);
Time->Second = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_MINUTE);
Time->Minute = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_HOUR);
Time->Hour = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_DAY);
Time->Day = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_WEEK);
Time->Week = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_MONTH);
Time->Month = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_YEAR);
Time->Year = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); }
void DateToStr(SYSTEMTIME *Time) {
Time->DateString[0] = Time->Year/10 + '0'; Time->DateString[1] = Time->Year + '0';
- 15 -
设置时 嵌入式课程设计报告
Time->DateString[2] = '-';
Time->DateString[3] = Time->Month/10 + '0'; Time->DateString[4] = Time->Month + '0'; Time->DateString[5] = '-';
Time->DateString[6] = Time->Day/10 + '0'; Time->DateString[7] = Time->Day + '0'; Time->DateString[8] = '\\0'; }
void TimeToStr(SYSTEMTIME *Time) {
Time->TimeString[0] = Time->Hour/10 + '0'; Time->TimeString[1] = Time->Hour + '0'; Time->TimeString[2] = ':';
Time->TimeString[3] = Time->Minute/10 + '0'; Time->TimeString[4] = Time->Minute + '0'; Time->TimeString[5] = ':';
Time->TimeString[6] = Time->Second/10 + '0'; Time->TimeString[7] = Time->Second + '0'; Time->DateString[8] = '\\0'; }
void Initial_DS1302(void) {
unsigned char Second=Read1302(DS1302_SECOND); if(Second&0x80)
DS1302_SetTime(DS1302_SECOND,0); }
/********************************************************************************
void BurstWrite1302(unsigned char *pWClock) //往DS1302写入时钟数据(多字节方式) {
unsigned char i;
Write1302(0x8e,0x00); // 控制命令,WP=0,写操作? DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1;
DS1302InputByte(0xbe); // 0xbe:时钟多字节写命令
for (i = 8; i>0; i--) //8Byte = 7Byte 时钟数据 + 1Byte 控制 {
DS1302InputByte(*pWClock); // 写1Byte数据 pWClock++; }
- 16 -
嵌入式课程设计报告
DS1302_CLK = 1; DS1302_RST = 0; }
void BurstRead1302(unsigned char *pRClock) //读取DS1302时钟数据(时钟多字节方式) {
unsigned char i; DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1;
DS1302InputByte(0xbf); // 0xbf:时钟多字节读命令 for (i=8; i>0; i--) {
*pRClock = DS1302OutputByte(); // 读1Byte数据 pRClock++; }
DS1302_CLK = 1; DS1302_RST = 0; }
void DS1302_TimeStop(bit flag) // 是否将时钟停止 {
unsigned char Data;
Data=Read1302(DS1302_SECOND); DS1302_SetProtect(0); if(flag)
Write1302(DS1302_SECOND, Data|0x80); else
Write1302(DS1302_SECOND, Data&0x7F); }
********************************************************************************/ #endif
4.课设的心得体会
这次单片机课程设计我们历时三个星期,经过这三个星期的实践和体验下来,我们又怎么会去在乎那个先后问题呢,因为对我来说学到的不仅是那些知识,更多的是团队和合作。现在想来,也许学校安
- 17 -
嵌入式课程设计报告
排的课程设计有着它更深层的意义吧,它不仅仅让我们综合那些理论知识来运用到设计和创新,还让我们知道了一个团队凝聚在一起时所能发挥出的巨大潜能!
三个星期前我们三个人还在为到底选那个课题而发生分歧,最后还是在龚老师的耐心分析和指导下完成了课题的选定,但是随之而来的问题却远比我们想想的要困难的多过没想到这项看起来不需要多少技术的工作却是非常需要耐心和精力在两个星期后的今天我已明白课程设计对我来说的意义,它不仅仅是让我们把所学的理论知识与实践相结合起来,提高自己的实际动手能力和独立思考的能力,更重要的是同学间的团结,虽然我们这次花去的时间比别人多,但我相信我们得到的也会更多!我觉得做单片机课程设计是十分有意义的,而且是十分必要的。在已度过的大学时间里,我们大多数接触的是专业课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想做类似的课程设计就为我们提供了良好的实践平台。
在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。我们是在做单片机课程设计,但我们不是艺术家,他们可以抛开实际尽情在幻想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计。
其次,在这次课程设计中,我们运用到了以前所学的专业课知识,
- 18 -
嵌入式课程设计报告
如:汇编语言、模拟和数字电路知识等。虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。后,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。设计过程,好比是我们人类成长的历程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。我们通过查阅大量有关资料,并在小组中互相讨论,交流经验和自学,若遇到实在搞不明白的问题就会及时请教老师,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。这也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影响。通过这次
- 19 -