1、目录目录 1 概述 2 1.1 总体设计方案 . 2 1.2 硬件设计与焊接 . 2 1.3 软件设计方案 . 2 2 系统总体方案及硬件设计 3 2.1 硬件总体设计 . 3 2.2 单片机基本电路设计 . 3 2.3 秒表时间显示电路设计 . 4 2.4 独立按键电路设计 . 5 2.5 蜂鸣器电路设计 . 5 3 软件设计 6 3.1 程序设计思路 . 6 3.2 秒表程序构成 . 6 3.2.1 主程序(main 函数). 6 3.2.2 秒表启动存数程序(keeptime 函数). 6 3.2.3 读取所存数值处理程序(showtime 函数). 6 3.2.4 数码管显示程序 .
2、7 3.2.5 按键扫描程序 . 7 3.2.6 延时程序(delay 函数) 7 3.3 源程序代码见附 1。 7 4 实验仿真 8 5 设计体会 9 参考文献 9 附 1:源程序代码 . 10 附 2:系统原理图 . 17 1 1 概述概述 1.1 总体设计方案 先进行系统板的基本焊接,即先将晶振电路和复位电路焊接完成。然后对 秒表的功能进行总体的设计和规划,列写出程序的纲要,规划好 I/O 口的控制 对象。再进行外围电路的设计,根据安排好的 I/O 口的使用,设计出合理的电 路图,并进行最后的焊接。最后,根据自己的总体设计和规划进行软件设计。 1.2 硬件设计与焊接 最小系统版是现成的套
3、件,只要焊接时细心一点基本不会出错,而数码管 一般是由 P0 和 P2 口控制,或者由 P0 口加锁存器控制,这也不需要自己过多的 去设计,只要焊接时仔细一点,一般也不会出错。在这个秒表中,最重要的就 是独立按键的设计和焊接,因为,如果设计不合理,就很有可能造成秒表的操 作不便或者是计时误差增大。我认为,按键 2 控制外部中断 0 是最优选择。 1.3 软件设计方案 将各个功能以模块化的形式设计出来,当然,要先写主体,编译通过并下 载入实验板功能可以实现后再添加其他功能模块,然后再编译下载,一步一步 直至完成所有功能。 软件设计要比硬件设计复杂很多,出现的问题也多。小问题一大堆, 。在设 计中
4、,我遇到的最大的两个问题就是存储时间的数组定义和减小按键存数时产 生的误差。刚开始我存储时间数组定义为 code 型,结果不能用设置的时间变量 赋值,在网上找了好久才发现问题所在,只能将 code 去掉;最初存储时间数值 的按键只是一个单纯的按键,结果发现按键按下期间秒表是停止的,最后只得 将该功能用外部中断来实现,并且将其设置为下降沿触发,这样就大大减少了 误差。 2 2 系统总体方案及硬件设计系统总体方案及硬件设计 2.1 硬件总体设计 1)单片机选型:AT89S51 2)复位电路:上电+按钮 3)晶振电路 4)键盘:独立键盘+中断 5)数码管显示:LED 6)独立按键控制 原理图如下: 2.2 单片机基本电路设计 1)复位电路:上电+按钮 2)晶振电路 3)EA 处理 4)电源设计 原理图如下: 单片机 键盘 LED数码管显示 独立按键控制 复位电路 晶振电路 2.3 秒表时间显示电路设计 2.4 独立按键电路设计 2.5 蜂鸣器电路设计 3 3 软件设计软件设计 3.1 程序设计思路 利用定时器经确定时,并且利用随机存储区的有限空间,定义一个二维数 组,通过按键将时