3、实验内容
(1)、写出根据设计流程图,写出程序,并编译。
(2)、利用ARM开发工具,建立工程,并添加代码,编译并连接工程,生成HEX文件。
(3)、在PROTEUS软件中,连接电路原理图。右击LPC2124,弹出的Edit Component对话框中,为LPC2124添加HEX文件路径。启动仿真,观察结果。
4、设计流程图
5、实验总结
本次实验比上次的实验难了不少,不是纯粹的书上程序照抄下来。所以对我这种对指令集不是很熟悉的人来说,实验的困难程度还是有的,但在同学的帮助下,在自己的积极学习下,本次的实验顺利的结束了。
纵观本次实验,充满了讨论声,各种离开座位。因为不熟悉,也因为自己的学习能力不够,所以实验做得很吃力。
本次实验让我对相关内容有了更深刻的了解,尤其是通过跟同学的交流。并且让我对团队的力量有了更加坚定的信仰,一个人的力量小,可是一群人的力量是巨大的。
我会继续在接下来的实验中发挥自己的学习主动性。
6、附录 程序关键代码
#include
#define LED 0x00010000 //led灯
#define LED8 0x000ffff //数码管 const unsigned int DISP_TAB[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
//数码管显示段码
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
void Sec_Display(int second) { int sec_ge; int sec_shi; second = SEC; sec_ge = second; sec_shi = second/10; IO0CLR = LED8; IO0SET = DISP_TAB[sec_shi] | (DISP_TAB[sec_ge]<<8); }
void __irq IRQ_Rtc(void) { if( (IO0SET & LED) == 0 ) IO0SET = LED; //点亮LED else IO0CLR = LED; //熄
灭LED
Sec_Display(SEC); //显示秒值 ILR = 0x01; //清除中断标志位 VICVectAddr = 0x00; //清除中断地址 }
void RtcInit(void) { PREINT = Fpclk/32768-1; //设置预分频器 PREFRAC = Fpclk-(Fpclk/32768)*32768; YEAR = 2012; //时间初始化值 MONTH = 1; DOM = 10; HOUR = 8; MIN=30; SEC=0; CIIR = 0x01; //设置秒值的增量产生一次中断 CCR = 0X01; //启动RTC VICIntSelect = 0x00; //所有中断通道设置为IRQ中断 VICVectCntl0 = 0x2d; //RTC中断通道分配最高优先级 VICVectAddr0 = (unsigned long) IRQ_Rtc; //设置中断服务程序地址向量 VICIntEnable = 0x00002000; //使能RTC中断 }
void LedInit(void) { PINSEL0 = 0X00000000;
IO0DIR = LED | LED8; Sec_Display(0); }
int main() {
LedInit(); RtcInit();
while(1); }
实验三:UART、AD综合实验
1、 实验目的
1. 熟悉Keil及protues的使用方法; 2. 熟悉keil和protues的联调方式;
3. 熟悉ARM7的GPIO功能特性及使用方法; 4. 掌握ARM7的中断控制过程及应用;
2、实验要求
使用A/D转换器的AIN0和AIN1测量两路直流电压,然后将转换结果从串口输出。
3、 实验内容
(1)、LPC2124的P0.0和P0.1引脚连接到虚拟终端的RXD和TXD端口;AIN0和AIN1分别接到两个电阻器,当阻值变化时可引起转换结果变化。
(2)、利用ARM开发工具,建立工程,并添加代码,编译并连接工程,生成HEX文件。
(3)、在PROTEUS软件中,连接电路原理图。右击LPC2124,弹出的Edit Component对话框中,为LPC2124添加HEX文件路
径。启动仿真,观察结果。