单片机入门的经典项目之中存在着秒表设计,其不但能够对编程能力予以锻炼,而且还能够使硬件设计水平得以提升,本文会带领你将数字的秒表设计进程完整走过一遍。
硬件电路整体架构
数字秒表核心所在是单片机最小系统,它分作三部分凑成,分别是单片机芯片,还有晶振电路以及复位电路,晶振常在11.0592MHz或者12MHz里选,两边各接一个电容,电容值在20到30皮法之间,连接至单片机的时钟引脚跟前,复位电路是上电能够自动复位加上手动按键复位这种方式,由一个10微法的电容、一个10千欧的电阻以及一个轻触按键组合而成,这个最小系统属秒表能正常运行的根基条件,所有其他模块皆围绕着它来开展。
秒表,还得要有显示、按键输入模块。显示模块,选的是LCD1602液晶屏,它能够展现两行16个字符,功耗低,而且控制简便。按键模块,一般采用三个独立按键,分别承担开始计时、暂停计时、复位清零的职责。每个按键,一端接地,另一端经由一个10千欧的上拉电阻连接至单片机的I/O口。要是按键被按下,那么这个I/O口电平会从高转变为低,单片机检测到这一变化后,便执行相应操作。
显示模块的连接方式
LCD1602液晶屏具备16个引脚,连接之际需对电源、控制以及数据这三类加以区分。VSS连接电源负极,VDD连接正5伏电源,VO凭借一个10千欧电位器连接正极与地,借此调节屏幕对比度。RS、RW、E这三个控制引脚分别连接至单片机的三个I/O口,用以选取指令或者数据模式,控制读写操作,促使数据传输得以实现。D0至D7这八个数据总线引脚连接至单片机的另外八个I/O口,用于传输将要显示的字符数据。
可以在实际连接之际简化数据总线,通过采用4线模式来节省I/O口资源,在4线模式当中仅使用D4到D7这四个数据引脚,分两次去传输一个字节的数据电子秒表电路,此种接法尽管程序稍微复杂一点,然而能够节省4个I/O口,对引脚紧张的单片机很有益处,不管采用哪一种接法,都得留意液晶屏的背光引脚要串联一个限流电阻,一般用100欧左右,用以防止电流过大烧坏背光LED。
按键电路的抗干扰设计

按下机械按键时、释放机械按键的瞬间,会产生抖动,电压波形会出现多次跳动,抖动时间一般处于5到10毫秒之间,要是不处理,单片机会误判为多次按键操作,解决方法是添加去抖电路、编写去抖程序,硬件去抖能用RS触发器,不过会增加电路复杂度,软件去抖更简便,检测到按键电平变化后,延时10到20毫秒再次读取电平状态,若仍然是按下状态才确认按键有效。
也得留意按键的连接方式。选择10千欧做为上拉电阻阻值较为适宜,它既能给出充足的上拉能力,又不会致使过大功耗产生。当按键被按下时,I/O口径直被拉至地,电流大概只有0.5毫安,这远远小于单片机I/O口20毫安的驱动能力。此外,能够在按键两端并接一个0.1微法的电容,以此进一步滤除高频干扰,进而提升抗干扰能力。
定时器实现精准计时
单片机内部,定时器属于秒表计时的核心关键部件,其中定时器实质是个计数器,它于每个机器周期都会自动加1,一旦计数值抵达设定值便会产生中断现象。以12MHz晶振来说,每个机器周期是1微秒。若设定定时器每1毫秒产生一回中断电子秒表电路,那就得给定时器装入初值。16位定时器其最大计数值为65535,1毫秒需要计数1000次,所以初值设定为65535减去1000等于64535。
定时器中断服务程序,每隔1毫秒便执行一回,于其中定义三个静态变量,分别用以存储毫秒、秒以及分钟。毫秒变量每过1毫秒便加1 ,增至100时,毫秒变量归零,秒变量加1。秒变量加至60时,秒变量清零,分钟变量加1。分钟变量能够依据需求设定上限,诸如60分钟。如此便可达成从0至59分59秒99毫秒的计时范畴,全然契合日常秒表使用之需求。
软件程序的模块化编写
主程序最先要达成系统初始化,这涵盖设置I/O口方向,配置定时器工作模式,开启总中断。定时器0被设置成16位模式,装入初值之后启动定时器。随后清除LCD显示屏,展示初始的计时界面。主循环当中仅仅需要持续调用按键扫描函数以及显示更新函数,其他事宜均在中断服务程序里自动达成。

分别记录每个按键的当前状态以及上一次状态的按键扫描函数,采用状态机的方式,能在一个函数内同时检测三个按键,还能自动完成去抖处理,当开始键被检测到按下之时,设置一个计时允许标志位,中断服务程序依据这个标志位判断是否累加变量,暂停键会清除这个标志位,复位键让所有计时变量与标志位恢复初值,负责将时分秒毫秒转换成字符数组并在 LCD 指定显示位置进行写入的是显示函数。
调试过程中的常见问题
硬件调试之际,首先得要对电源予以检查,借助于万用表来测量单片机第20脚与第40脚之间的电压,此电压理应是5伏,晶振两端的电压大概处于1到2伏之间,这便表明晶振已然开始起振,将LCD1602的第三脚VO电压调节至0.5伏左右,屏幕之上会呈现出一排方块,在这时便得以说明显示屏的供电状况是正常的,如果方块并未出现,那就需对背光限流电阻以及对比度电位器的连接是否正确进行检查。
进行软件调试之际,能够在关键的点位部署断点,对变量的变换情况予以观察。当处于定时器中断入口处之时,去部署断点,进而确认中断能否正常触动引发。查看秒变量自 59跃升变至 0 的时候,分钟变量能不能加 1。按键响应一类的问题也是颇为寻常的,能够借助示波器观摩按键按下之际 I/O 口的波形样子,瞅瞅是否存在完备的下降沿。要是波形跳动极为严重的话,把去抖延时时间增添至 30 毫秒。
请问,你于制作电子秒表期间,有无碰到显示呈现乱码或者计时出现不准确状况?欢迎于评论区域分享予以你的调试经历,点赞并且收藏此篇文章以便往后当作参考。
