电子系统设计实验课–电子钟
代码是用C写的,写的很烂,基本没有考虑优化的问题。因为只有一个周的时间,我还要上蛋疼的雅思课,所以忽略函数的胡乱调用与变量的命名吧。
这个电子钟实现了如下功能:
- 时间的精确走动 - 时分秒年月日都可以通过键盘调节 - 秒表功能
硬件设计
整体来说用了一块89C51,用hc165来读键盘的信息,hc164来将输入的串行数据转并行输出,送LCD显示。读键值的原理图如下:
(乱码是什么鬼)
下面这张是hc164送显示的原理图:
(乱码又是什么鬼)
软件设计
大体上来说整个程序有两个部分:直接控制硬件的驱动层和我们实现电子钟功能的函数应用层。我们把它们分别放在DRI文件夹下和USR文件夹下。
#### 驱动层设计 (°_°)我要放源代码了:
##### hc165的底层控制代码
|
|
hc164(LCD显示的底层控制代码)
|
|
用户层设计
用户层主要是一个计算时间的函数,时间的计算是通过定时器中断实现的,中断时间是10ms一次。因为我们添加了秒表功能。 ##### 时间计算
键盘处理
|
|
主函数和中断
|
|
小结
从时间的计算上来说这个程序貌似并没有特别麻烦,有很多种实现的方法。这个程序的蛋疼之处在于我们计算出时间后必须将算出的时间逐位取出才能显示,所以增加了很多的工作量。还有就是关于修改时间的问题。通过按键来修改时间再简单不过,问题在于老师要求修改时间时被修改的数要实现闪烁,原来的6位数组不得不拆分成14位,增加了很多代码量。总的来说,因为开始做之前没有提前做好项目的整体规划,导致后期变量很乱,函数的调用函数值的传递也不是很合理。