那么是通过怎样的方式将以上时分秒的变化联系起来的呢?其实这全靠if。。。else。。。的条件判断语句,程序如下:
我们可以看到其中有一个delay函数,这个函数的自变量为1200,即为delay(1200),它实现了一秒的延时,一秒以后sec加一,从而实现一秒的计时。当为60秒时,分针指向下一分钟,擦除上一分钟,也就是调用上面的三个显示与擦除函数。
- 12 -
第二章 实验(测试)结果及讨论
第一节 ADS1.2 软件的编译,连接和运行
构建完整的程序:
添加头文件,中断处理汇编程序段,初始化函数和主函数:
void Main(void) {
Target_Init(); GUI_Init(); OSInit();
Key_Mbox = OSMboxCreate((void *)0);
//键盘初始
// ARMII实验系统的初始化,包括CPU板
OSTaskCreate(Task_1, (void *)0, (OS_STK *)&Stack_Task_1[STACKSIZE - 1], 5);
//创建任务一
OSStart(); }
编译 所有的文件:
- 13 -
第二节 程序调试
连接芯片与LCD端口,运行程序,观察效果。此时LCD上将显示如图4所示的时钟界面。
图4 程序运行时LCD显示的时钟界面
第三章 结 论
基于LCD的电子时钟可以准确地将动态时钟进行显示,并且能通过图像时钟形式和数字时钟多种形式表现出来,此外根据需要还可添加日历功能。 在将程序烧入系统后,我们发现了两个比较严重的问题。第一个问题是我小组成员的名字出现乱码,经过我组及指导老师的细心排查,我们发现出现的原因是,字符重叠的原因。当擦除上一个名字时,我的名字没有对齐从而没有擦除干净,与下一个要显示的字符相重合,从而出现乱码。解决办法是在两个字的中间加入一个汉字宽度的空格,就可以消除此现象了。
第二个问题是秒针擦除不干净的问题。当秒针走向下一个位置时,它的上一个位置仍然有图形。此时背景颜色是深蓝。但是我们发现擦除时的指针确实是深蓝,为什么还会有痕迹呢?于是我组将指针颜色改成浅蓝,将背景颜色也改成浅蓝,终于痕迹不在了。
到此,基本的问题已经解决,即实现了实验所设定的要求。
- 14 -
心得体会
在此次的基于LCD的电子时钟设计的过程中,我学会了把课本中的知识应用到实际操作中来,学会了通过查看其他课外资料来学习新的知识。此外,通过这一过程也提升了自己独立思考的能力。切实做到发现问题,仔细思考,团结合作,动手实践,解决问题这一系列过程。虽然这只是一次小系统设计,但通过它,我了解了课程设计的一般步骤和设计中应注意的问题,受益良多。
最初接收任务书,我们有些不知所措,虽然这学期学习了嵌入式系统的理论课程,但是毕竟缺少实践,还是难以着手。随后与任务相同的别组同学一起讨论,确定了初步的设计方案,也就是主体部分是基于S3C44B0X处理器的体系结构。然后就是分模块的设计。
课程设计已经结束,自己从这一过程中体会到了很多,有完成的喜悦,有停滞不前的郁闷,不管何种情况,我都提醒自己要静下心来,冷静的分析,老师在验收的时候,笑着问我请了多少外援,当时回答是一本书,现在想想有些逞强,还是有些经验丰富的同学在我不懂的时候帮助我的,不然我可能还要花些时间折腾。课程设计的过程让我懂得面对问题要勤于思考,遇到困难,要勇于面对,这在任何知识的学习中都是弥足珍贵的。
- 15 -