节能定时器控制电路
[10-10 20:42:03] 来源:http://www.88dzw.com 电子制作 阅读:8187次
文章摘要: 现在我们先对这个电路进行硬件测试: 1. 用P1_0=O:……这样的语句点亮每一个发光二极管与蜂鸣器。 2. 查看LED是共阳还是共阴,共阳的话,0(低电平)有效。共阴的话,1(高电平)有效。用“8”字测试。即P1=OxoO;。控制位全为1(有效);同理,继续测试小时与分钟之间的冒号是否有效。 3.测试键盘是否有效,写一个键盘扫描程序(本文后面会详细介绍),临时利用一下该电路的发光二极管,让所有的按钮都对应一个发光二极管。当按钮按下,其所对应的发光二极管发光。这样就可以检查到按钮的连接是否良好。 当硬件的各功能检查能正常工作 后,我们就可以开始正式编程了。
节能定时器控制电路,标签:电子小制作,http://www.88dzw.com现在我们先对这个电路进行硬件测试:
1. 用P1_0=O:……这样的语句点亮每一个发光二极管与蜂鸣器。
2. 查看LED是共阳还是共阴,共阳的话,0(低电平)有效。共阴的话,1(高电平)有效。用“8”字测试。即P1=OxoO;。控制位全为1(有效);同理,继续测试小时与分钟之间的冒号是否有效。
3.测试键盘是否有效,写一个键盘扫描程序(本文后面会详细介绍),临时利用一下该电路的发光二极管,让所有的按钮都对应一个发光二极管。当按钮按下,其所对应的发光二极管发光。这样就可以检查到按钮的连接是否良好。
当硬件的各功能检查能正常工作 后,我们就可以开始正式编程了。具体 步骤如下:
1. 导人头文件 #include <absaCC.h>#include<reg51.h>。 2. 定义每一个I/O口sbit P0_0=P0^0:等等。
3. 编写LED显示阿拉伯数字的 数组。
如:TABLE[10]={Oxc0……….} (具体怎么写这个数组,很多基本教 程都有说及,可以随便找一本来参考 一下。注意一下LED是共阳还是共阴 就可以了)
4.定义变量。我定义了4个变 量,hs、hg、ms和mg分别作为输入时 和倒计数时用的“小时十位数”,“小时 个位数”,“分钟十位数”,“分钟个位 数”。接着是4个数组,hSS[4]、rIgs[4]、 mss[4]和mgs[4]用来存放4个时间值 (分别是定时开时间、大火时间、中火时 间和小火时间)。然后是两个用来判断 状态的变量stk和stm,stk用来判断 输入时或分的状态。前面说到了,在输 入小时数值的时候,“-”按钮能对小时 进行减操作,输入分钟数值的时候, “-”按钮能对分钟进行减操作;stm用 来判定是输入那个时间及判定倒计数 时是倒数那个时间。例如:输入 stm==0,(注意判断变量值用双等 号,我经常犯的错误。)表示正在输入 定时开时间。stm==3,表示正在输入 小火时间。倒计数时同理。大火、中火 和小火时间均可跳过不进行设置,跳过 时,该组定时时间程序作零处理。
5.LED显示函数。LED显示有两 个要注意的地方:一是控制位,不要出 现两个控制位同时有效的情况。二是 每两个位显示之间要有一段延时。不 然全部数字就会混在一起看不清。
部分源码如下:
6. 键盘扫描。需要注意的是:1)键盘扫描同样要有延时,而且要有相当的时间,大约O.5秒吧。我在调试时发现。按着按钮不放,LED不会显示数字,等我放开按钮,LED才显示,不过数字已经加了很多了。有一个方法能解决这个问题,把LED显示那段代码复制到键盘延时的程序里面,这样按着按钮不放的时候,LED的数字就会逐一地按部就班累加上去。情况就容易控制得多了。
部分源码如下:
7. 1)当用户在按“时+”的按钮时,stk变量为O。在按“分+”时stk变量为1,这样当需要减小数字而按“一”按钮的时候。程序就能判断出对时或对分进行减操作了;2)注意进位与最大值问题,逢10进1,小时到24归O,分钟到59归0;3)输入完最后一组时间后。要再按一下“确定”按钮即“功能选择”按钮确认,这时,程序把当前的hs、hg、ms和mg数值存入对应数组。Stm状态变量+1;
- 上一篇:利用单片机来控制LED点阵