1 仿真实验环境 1.1 采用 Proteu s6_9_SP5 实现单片机及外围器件的仿真 如图: 1.2 使用Keil u Vision3 编写本日历程序(C 语言) 如图: 1 2 原理图 2 2 .1 各部分功能实现: 1.以AT89C52 作为控制核心,通过P0 口连接LM016L 液晶的并行数据输入/输出端进行显示数据以及命令的发送与接收。P2.0、P2.1 和 P2.2 分别连接液晶的数据/命令选择端、读/写控制以及使能端。通过对这三个端口的操作,来实现液晶的正确显示。 2.DS18B20 数字温度传感器以单总线的方式连接到 P2.3 口,通过正确的时序操作,与单片机进行双向通信,把温度值以串行数字形式发送给单片机。再正确显示在 LCD 上。 3.LED 灯连接P2.4 口,在相应的时间或温度触发下通过电平的高低变化闪烁。 4.单片机的P2.5、P2.6、P2.7 分别连接DS1302 时钟芯片的复位端、时钟信号以及I/O 端。在相应时序信号的控制下,读出芯片中的内容,并显示在 LCD 上。 5.该日历的功能操作通过连接在 P3.0~P3.3 的四个按键实现,四个按键分别为:进入/退出模式键、功能选择键、时加/温度加一键、分加/温度减一键。 6.因为P0 口没有上拉电阻,所以加了排阻。 3 3 程序分析及代码 3 .1 程序分析: 3 .1 .1 程序的优点: 1 .以模块化的形式把程序分为若干个独立部分。 2 .在程序中使用了指针、数组、函数等结合的方法,简化了部分程序。 3 .程序中首次使用了二维字符数组的相关操作。 3 .1 .2 程序的缺点: 1 .程序总体上写的不够简练。 2 .程序的部分功能操作麻烦,如调时或闹钟设置时对时、分的操作只能加。 3 .程序的稳定性有待于提高。 4 .过多的变量、标志位的定义降低了程序的可读性。 3 .1 .3 总结: 通过该日历程序的编写,自身发现了许多的问题,现总结如下: 1 .在编写程序的过程中一定要做好程序的备份。 4 2 .在编写某功能函数之前要想好流程再写,最好写出流程图。 3 .一定要多写注释,不然连自己都读不懂自己的程序。 4 . 在编写该日历程序过程中,首次出现了内存不够的情况,以后需引起注意。 5 3 .2 源代码: 3.2.1 Calendar.c 程序文件: /******使用LCD1602、DS1302 时钟芯片、DS18B20 温度传感器完成该日历*******/ #include //以下的顺序不能任意放 #define uint unsigned int //宏定义 #define uchar unsigned char #include"LM016L.h" #include"DS1302.h" ...