limingth 发表于 2005-9-12 08:06:13

Learn-lumit-Step-21 : 综合实验三

Learn-lumit-Step-21 : 综合实验三
++++++++++++++++++++++++++++++++++++++++++++++++++++++

    这个实验包含了上面实现的十种不同的外设接口来完成一个较为复杂的控制逻辑。
包含的输入设备有 dip4, rtc, timer, int0, 输出设备有 beep, lcd, led, seg7, uart0,
还包含了 irq 中断管理设备。

    该实验的程序结构主要有主程序和中断处理程序两个部分组成。主程序主要完成各种
设备初始化操作,并启动 rtc 设置程序,在用户通过串口输入命令完成 rtc 设置之后,
主程序会进入一个无限循环中,保持每秒读取 rtc 时钟信息。

    中断处理程序主要有 int0 的中断处理和 timer 的中断处理。其中 timer 是一个
每秒产生中断的设备,在 timer 的中断服务程序中会根据 dip4 的输入情况来设置 led
和 seg7 的显示状态,同时会根据 beep_enable 的状态发出一个 beep 音来实现报时。
如果主程序中 rtc 设置操作完成,则会在 lcd 的第一行显示相应的 rtc 时间信息,而
第二行则显示 dip4 的数值和相应位置的十六进制字符。

    另一个 int0 中断则作为控制 beep 声音输出的开关,改变 beep_enable 的状态。
整个程序运行时,开始蜂鸣器会每隔一秒发出 beep 声,同时液晶显示两行输出 :

INT0:Beep On/Off
Set RTC by UART0

表示提示可以按下 INT0 来实现 beep 的 on/off 控制,同时通过 UART0 来进行 rtc 设置。
连接 lumit4510 开发板的 uart0 和计算机的串口,波特率设置为 19200 ,可以看到如下输出:

Current RTC : 5-9-10 15:42:25

      RTC Config Items
+----------------------------------------+
1. add/sub year            -- press Y/y
2. add/sub month         -- press M/m
3. add/sub day             -- press D/d
4. add/sub hour            -- press H/h
5. add/sub minute          -- press I/i
6. add/sub second (N/A)    -- press S/s
7. quit configuration      -- press Q/q
+----------------------------------------+

Select Test Item :

如果我们希望将小时 15 时调整为 16 时,则输入大写的 H ,此时可以看到串口输出:

Select Test Item : H
You Select Item --- H

You have set current RTC : 5-9-10 16:42:25

Current RTC : 5-9-10 16:42:23

      RTC Config Items
+----------------------------------------+
1. add/sub year            -- press Y/y
2. add/sub month         -- press M/m
3. add/sub day             -- press D/d
4. add/sub hour            -- press H/h
5. add/sub minute          -- press I/i
6. add/sub second (N/A)    -- press S/s
7. quit configuration      -- press Q/q
+----------------------------------------+

Select Test Item :

表示已经成功设置了 rtc 的小时参数。同理可以设置其他的时间参数,设置完成后按 q 退出。


Select Test Item : q
You Select Item --- q

You have set current RTC : 5-9-10 16:42:02
Current RTC Time: 5-9-10 16:42:03
Current RTC Time: 5-9-10 16:42:04
Current RTC Time: 5-9-10 16:42:05
Current RTC Time: 5-9-10 16:42:06
Current RTC Time: 5-9-10 16:42:07
Current RTC Time: 5-9-10 16:42:08
Current RTC Time: 5-9-10 16:42:09
Current RTC Time: 5-9-10 16:42:10

这时可以看到串口开始每隔一秒发出一个当前的 rtc 值,同时 lcd 也会实时显示该时间信息。

如果不希望 beep 每隔一秒进行报时操作,可以按下 INT0 来切换 beep on 和 off 状态。
页: [1]
查看完整版本: Learn-lumit-Step-21 : 综合实验三