1、单片机实验报告单片机实验报告 时间时间 2013.1.9 实验题目实验题目 电子数字钟电子数字钟 一、实验目的与要求一、实验目的与要求 1 1. 电子数字钟必须具有显示年、月、日和显示时、分、秒的功能。 (用 LCD 显示) 。 2.2.具有按键时间校正功能。 3.3.具备设定闹钟和定时闹钟功能。 二、实验环境(硬件环境、软件环境)二、实验环境(硬件环境、软件环境) 1 1.硬件环境:单片机开发板一个, 计算机一台,单片机主机电源线及 与计算机的连接线各一条。 2 2.软件环境:软件 Keil C51 和软件 Flash Magic。 三、实验电路三、实验电路(P2 口输入、口输入、P1 口输
2、出实验原理图)口输出实验原理图) 本次实验主要使用了开发板的4个板块, 分别是单片机 STC89C52 (如 图 2 所示) 、矩阵键盘(如图 2 所示) 、1206LCD 显示器和蜂鸣器(如图 3 所示) 。其中单片机芯片通过 P0 口把总线和矩阵键盘连接;通过 P2.2 和 蜂鸣器间接相连,因为蜂鸣器所在的电路已经连芯片 ULN2003,因此用 一根杜邦线把 P2.2 和芯片 ULN2003 的第一个输入口 IN1 连起来。 而键盘 显示这一块,由于内部已经把键盘显示的电路和单片机芯片连接起来了, 评评 阅阅 所以不需要借助杜邦线了。图 1 为实物连线图。 图图 1 1 实物连线图实物连线
3、图 图图 2 2 单片机机座和矩阵键盘单片机机座和矩阵键盘 图图 3 3 蜂鸣器和蜂鸣器和 16021602 液晶显示器液晶显示器 四、程序流程图四、程序流程图 主要算法主要算法: 主函数中先定时中断初始化,利用定时器中断实现走时, 调用 LCD 显示程序和按键处理子函数, 再调用显示时间函数显示初始时间 值。 同时, 在主函数中判断当前的小时和分钟值是否等于闹钟设定的时间, 若等于则让蜂鸣器响。主函数算法的框图如图 4 所示。 按键处理函数算法按键处理函数算法:通过键盘扫描函数得到确定哪个键盘按下,得到键 盘值, 如果键 0 按下则暂停时钟走时; 键 1 按下则在当前的光标所在的时 间单元加
4、 1;键 2 按下则开闹钟;键 3 按下则实现当前的时间单元左移一 位的功能;键 4 按下则在当前的光标所在的时间单元减 1。 时间的年月日算法:时间的年月日算法:通过定时器实现时钟的走时,秒满 60,分钟加 1; 分满 60,小时加 1;小时满 24,日加 1;至于每个月的天数根据闰年和非 闰年的表格确定当月天数。 图图 4 主函数算法框图主函数算法框图 五、程序测试报告: (调试输入数据、结果数据或状态。 )五、程序测试报告: (调试输入数据、结果数据或状态。 ) 1.1.输入:源代码1 输出结果: (1 1) 电子数字钟必须具有显示年、月、 日和显示时、 分、秒的功能。 (用 LCD 显
5、示) (2 2)具有按键时间校正功能。 (3 3)具备设定闹钟和定时闹钟功能。 六、体会: (碰到的问题、如何解决、有何体会。 )六、体会: (碰到的问题、如何解决、有何体会。 ) 1 1. .深入了解如何运用高级语言, 此次实验运用 C 语言进行编程, 使单片机 开发板实现电子时钟的功能, 对汇编语言和高级语言在实现单片机功能的 特点也加深了认识。 体会到 C 语言在编程时的灵活性和不用过多考虑硬件 的方便。 2 2.该实验中主要用到几个板块,单片机控制,键盘运用,LCD 显示,蜂鸣 器。 掌握了键盘的工作方式和扫描的特点, 懂得运用 C 语言进行编程键盘 扫描的程序;掌握 LCD 显示的几
6、种功能指令,尽管 LCD 显示的程序较多, 但是工作原理弄清楚后就清晰很多; 掌握如何把硬件和软件联系起来, 特 别是控制定时闹钟蜂鸣器的程序, 由于该片单片机开发板的蜂鸣器是和步 进电机等电路连在一起的, 所以需要把控制蜂鸣器的连接端口找到, 并用 指令“sbit BEEP=P22”进行定义;对单片机的应用有了更深入的认识和 了解。 3.蒋老师在实验过程中一直强调程序的排版格式, 让我从细节上更注意排 版, 收获了一个美观处理文档的习惯。 在实验过程中遇到了调试失败的各 种问题, 除了得到老师的指导, 自己也主动上网搜索发生错误的各种原因, 培养了解决问题的能力。 七、源程序代码七、源程序代码 #include #include sbit BEEP=P22; /喇叭端口 sbit RS = P24; /定义端口 sbit RW = P25; sbit EN = P26; bit Al; /闹钟标志位 #define DataPort P0 #def