西 安 邮 电 大 学 (计算机学院)
数据库程序设计课内实验报告
实验名称: 触发器
软件工程
专业名称: 班 级: 学生姓名:学号(8指导教师: 乔平安
实验日期: 20xx年5月11日
一. 实验目的及实验环境
学习触发器的使用,体会触发器执行的实际,加深对触发器功能和作用的理解
二. 实验内容
触发器是一种实施复杂数据网整形的特殊存储过程,在对表或者视图执行INSERT,UPDATE或者DELETE语句时自动执行,以防止对数据进行不正确,未授权或不一致的修改。它不可以像调用存储过程一样由用户直接调用执行。 创建触发器可以在查询分析器中用SQL语句完成,也可以用企业管理器完成。在企业管理器中书写触发器时,通过右键单机创建触发器的表,在弹出的快捷菜单中依次选择“所有任务”->“管理触发器”命令,就打开“触发器属性”对话框,然后在该对话框的“文本”框中输入常见触发器的SQL语句。
1)在数据库JWGL中,完成第4章例8~13中例题的创建触发器的操作,然后在相关的表上执行INSERT,UPDATE,或DELETE语句,观察他们的执行结果。
2)在Market数据库中,完成第四章习题5中(5)~(9)创建触发器的操作,然后在相关的表上执行INSERT,UPDATE或DELETE语句,观察它们的执行结果
三.方案设计
在企业管理器中书写触发器时,通过右键单机创建触发器的表,在弹出的快捷菜单中依次选择“所有任务”->“管理触发器”命令,就打开“触发器属性”对话框,然后在该对话框的“文本”框中输入常见触发器的SQL语句。
四.测试数据及运行结果
五.总结
1. 实验过程中遇到的问题及解决办法。
通过实验,掌握了触发器的基本概念,学会创建触发器。
2.对设计及调试过程的心得体会。 通过本次实验,让我对触发器的概念和作用有了进一步认识,并且基本上掌握了触发器的创建和更新的语句。理解触发器的触发过程和类型。掌握创建触发器的方法
第二篇:西安邮电大学嵌入式实验报告
西安邮电大学
(计算机学院)
课内实验报告
实验名称: 嵌入式系统原理与应用<A>
专业名称: 软件工程
班 级: 1101班
学生姓名:
学号(8位):
指导教师: 李宥谋
实验日期: 2013年12月25日
实验一 流水灯实验
一.实验目的及实验环境
1.实验目的
l 熟悉LPC2000系列ARM7微控制器的GPIO输出控制。
2.实验环境
l 硬件: PC机 一台
LPC2131教学实验开发平台 一套
l 软件:Windows 98/XP/2000系统,ADS1.2集成开发环境。
二.实验内容
使用GPIO口控制8个LED流水灯显示。
三.方案设计
① 启动ADS1.2IDE集成开发环境,选择ARM Executable Image for lpc2131 工程模板建立一个工程LedDisp_C。
② 在user组里编写主程序代码main.c。
③ 选用DebugInRam生成目标,然后编译链接工程。
④ 将EasyARM教学实验开发平台上的P1.[18:25]管脚对应与LED[1:8]跳线 短接gde台ngtheng 。
⑤ 选择Project->Debug,启动AXD进行JTAG仿真调试。
⑥ 全速运行程序,程序将会在main.c的主函数中停止。
⑦ 单击Context Variable图标按钮(或者选择Processor Views->Variables)打开变量观察窗口,通过此窗口可以观察局部变量 和全局变量。选择System Views->Debugger Internals 即可打开 LPC2000系列ARM7微控制器的片内外寄存器窗口。
⑧ 可以单步运行程序,可以设置/取消断点;或者全速运行程序,停止程 序运行,观察变量的值,判断LED1~LED8控制是否正确。
四.测试数据及运行结果
五.总结
1.实验过程中遇到的问题及解决办法;
由于本次实验较简单,且我们之前学习的微机原理课程也进行了流水灯的设计实验,所以对于本次实验,我完成地很顺利,在实验中没有遇到问题。
2.对设计及调试过程的心得体会。
本次实验是本学期该课程我们进行的第一次实验,总的来说,实验不是很难,设计过程也相对简单,其主要目的是让我们熟悉一下实验环境,并且能在实验环境下进行简单的实验操作,为之后的实验打下坚实的基础。
六.附录:源代码(电子版)
#include "config.h"
const uint32 LEDS8 = 0xFF << 18;//P1[25:18]控制LED1~LED8,低电平点亮
const uint32 KEY = 1 << 16; //P0.16连接KEY1
const uint32 DISP_TAB[10] ={ 0x01, 0x02, 0x04, 0x08,0x10,0x20,0x40,0x80, 0xff, 0xff};
const uint32 DISP_TAB2[10] = { 0x80 , 0x40, 0x20, 0x10, 0x08,0x04, 0x02,0x01, 0xff, 0xff};
void DelayNS(uint32 dly)
{ uint32 i;
for(; dly>0; dly--)
{
for(i=0; i<5000; i++);
}
}
int main(void)
{ uint8 i;
PINSEL0 = 0x00; // P0[15:0] 用作GPIO
PINSEL1 = 0x00; // P0[31:16] 用作GPIO
PINSEL2 = PINSEL2 & (~0x08); // P1[25:16]连接GPIO
IO1DIR = LEDS8; // 设置P1[25:18]为输出口,控制LED[7:0]
while(1)
{
if((IO0PIN&KEY)!=0) // 测试KEY 按键
for(i=0; i<8; i++)
{
IO1CLR = DISP_TAB[i]<<18;
DelayNS(50);
IO1SET = 0xffffffff;
}
DelayNS(10);
if((IO0PIN&KEY)==0) // 测试KEY 按键
for(i=0; i<8; i++)
{
IO1CLR = DISP_TAB2[i]<<18;
DelayNS(50);
IO1SET = 0xffffffff;
}
DelayNS(10);
}
return(0);
}
实验二蜂鸣器实验
一.实验目的及实验环境
1.实验目的
l 掌握LPC2131工程模板的使用。
l 掌握EasyJTAG仿真器的安装和使用。
l 能够在EasyARM教学实验开发平台上运行第一个程序。
l 熟悉LPC2000系列ARM7微控制器的GPIO控制。
2.实验环境
l 硬件: PC机 一台
LPC2131教学实验开发平台 一套
l 软件:Windows 98/XP/2000系统,ADS1.2集成开发环境。
二.实验内容
P0.7管脚控制EasyARM教学实验开发平台上的蜂鸣器报警。
三.方案设计
① 启动ADS1.2IDE集成开发环境,选择ARM Executable Image for lpc2131 工程模板建立一个工程BeepCon_C。
② 在user组里编写主程序代码main.c。
③ 选用DebugInRam生成目标,然后编译链接工程。
④ 将EasyARM教学实验开发平台上的P0.7管脚与Beep跳线短接gde台ngtheng 。
⑤ 选择Project->Debug,启动AXD进行JTAG仿真调试。
⑥ 全速运行程序,程序将会在main.c的主函数中停止(因为main函数起 始处默认设置有断点)。
⑦ 单击Context Variable图标按钮(或者选择Processor Views->Variables) 打开变量观察窗口,通过此窗口可以观察局部变量和全局变量。选择 System Views->Debugger Internals 即可打开LPC2000系列ARM7微控制 器的片内外寄存器窗口。
⑧ 可以单步运行程序,可以设置/取消断点;或者全速运行程序,停止程序 运行,观察变量的值,判断蜂鸣器控制是否正确。
四.测试数据及运行结果
五.总结
1.实验过程中遇到的问题及解决办法;
本次实验刚开始时,刚把板子接到电脑上,什么操作都还没进行,蜂鸣器就开始响了,而且停不下来,我也不知道是什么问题,之前从来没遇到过,最后不得不将老师请过来。原来是之前板子里嵌入的程序没有运行完,所以才会出现这种情况,只要将板子里的程序清干净就可以了。
2. 对设计及调试过程的心得体会。
本次实验设计过程相较于之前的流水灯实验稍微复杂一些,但我并没有害怕,而是反复试验,最终将程序调试成功。通过此次实验,我觉得在实验过程中坚持很重要,无论实验中遇到了什么问题,都不能轻易放弃,一定要克服阻碍,继续向前。
六.附录:源代码(电子版)
#include "config.h"
#define BEEPCON 1<<7 // P0.7引脚控制Beep,低电平蜂鸣
void DelayNS(uint32 dly)
{
uint32 i;
for(; dly>0; dly--)
{
for(i=0; i<5000; i++);
}
}
int main(void)
{
PINSEL0 = 0x00000000; // 设置管脚连接GPIO
IO0DIR = BEEPCON; // 设置I/O为输出
while(1)
{
IO0SET = BEEPCON; // BEEPCON = 1
DelayNS(200);
IO0CLR = BEEPCON; // BEEPCON = 0
DelayNS(200);
}
return(0);
}
实验三 外中断实验
一.实验目的及实验环境
1.实验目的
学习LPC2000 系列ARM7 微控制器的向量中断控制器及外中断的应用技术。
2.实验环境
l 硬件: PC机 一台
LPC2131教学实验开发平台 一套
l 软件:Windows 98/XP/2000系统,ADS1.2集成开发环境。
二.实验内容
主程序闪烁LED,EINT使能/停止 BEEP的鸣响。
三.方案设计
① 跳线LED1、Key1和Beep分别连接到P1.18、P0.16和P0.7管脚;使用KEY1模拟外中断;
② 启动ADS 1.2,使用ARM Executable Image for lpc2131工程模板建立一个工程TimeEINT_C。
③ 在user 组中的main.c 中编写主程序代码;使用系统宏IRQEnable(),使能IRQ 中断。
④ 装载并使能外中断;
⑤ 选用DebugInExram 生成目标,然后编译连接工程。
⑥ 选择【Project】->【Debug】,启动AXD 进行JTAG 仿真调试。
⑦ 全速运行程序,LED闪烁;
⑧ 每一次按键Key,蜂鸣器就会转换静音或鸣响状态。
四.测试数据及运行结果
五.总结
1.实验过程中遇到的问题及解决办法;
实验第一次运行时,蜂鸣器一直处于鸣响状态,及时按了按键,蜂鸣器还是一直鸣叫,不产生外中断。后来仔细检查了程序,发现原来是忘记使能 EINT0 中断了,加上VICIntEnable = 1<<0x0e代码,程序就能正常运行了。
2. 对设计及调试过程的心得体会。
通过本次实验,我复习了中断的有关知识,了解了LPC2000 向量中断控制器VIC的工作原理与编程细节,掌握了外中断技术的基本使用与编程。对于LPC2000 系列ARM7 微控制器的向量中断控制器及外中断的应用技术有了更加深刻的认识。
六.附录:源代码(电子版)
#include "config.h"
#define BEEPCON 1<<7 // P0.7 引脚控制Beep,低电平蜂鸣
#define LED1 1<<18 // P1.18 引脚控制LED1,低电灯亮
void DelayNS(uint32 dly)
{ uint32 i;
for(; dly>0; dly--)
{
for(i=0; i<5000; i++);
}
}
void __irq IRQ_Eint0(void)
{
if ((IO0SET & BEEPCON) == 0 ) // 反转BEEPCON管教输出状态
IO0SET = BEEPCON;
else
IO0CLR = BEEPCON;
while ( (EXTINT &0x01) != 0 )
EXTINT = 0x01; // 清除EINT0中断标志
VICVectAddr = 0x00; // 通知VIC 中断处理结束
}
int main(void)
{
int x;
PINSEL0 = 0x00000000; // 设置管脚连接GPIO
PINSEL1 = 0x00000001; // 设置管脚P0.16为 EINT0
IO0DIR = BEEPCON; // 设置 P0.7 为输出
IO1DIR = LED1; // 设置 P1.18 为输出
EXTMODE = 0x00;
IRQEnable();
VICDefVectAddr = (int)IRQ_Eint0; // 设置 EINT0 为非向量IRQ 中断
EXTINT = 0x01; // 清除 EINT0 中断标志
VICIntEnable = 1<<0x0e; // 使能 EINT0 中断
while(1) // 等待EINT0中断
{
if (x!=0) { IO1SET = LED1; x = 0; }
else { IO1CLR = LED1; x = 1; }
DelayNS(100);
}
return(0);
}
实验四 定时器中断实验
一.实验目的及实验环境
1.实验目的
熟悉LPC2000 系列ARM7 微控制器的定时器0的基本设置及定时中断应用
2.实验环境
l 硬件: PC机 一台
LPC2131教学实验开发平台 一套
l 软件:Windows 98/XP/2000系统,ADS1.2集成开发环境。
二.实验内容
使用定时器0 实现1 秒定时,控制蜂鸣器蜂鸣。采用中断方式实现定时控制。
备注:EasyARM2131实验板上的系统时钟默认为11.0592MHz;系统中已定义了符号常量 Fpclk = 11059200 。
三.方案设计
① 启动ADS 1.2,使用ARM Executable Image for lpc2131工程模板建立 一个工程 TimeOut_C。
② 在user 组中的main.c 中编写主程序代码。
③ 主程序中使用IRQEnable( )使能IRQ 中断。
④ 选用DebugInExram 生成目标,然后编译连接工程。
⑤ 将LPC2131实验板上的Beep跳线短接到P0.7。
⑥ 选择【Project】->【Debug】,启动AXD 进行JTAG 仿真调试。
⑦ 全速运行程序,蜂鸣器会响一秒,停一秒,然后再响一秒……依次循环。
四.测试数据及运行结果
五.总结
1.实验过程中遇到的问题及解决办法;
运行本次实验时,蜂鸣器一直在响,并不像预期的那样响一秒,停一秒,然后再响一秒····依次循环。我检查了好久都没有发现问题,最后请教老师,才知道原来是我将定时时间设置得太小了,导致每次的时间间隔太短,蜂鸣器鸣响与停止之间转换太快,才会出现蜂鸣器一直鸣响的假状态。我也意识到在实验中,细节很重要,不容忽视。
2. 对设计及调试过程的心得体会。
通过本次实验,我了解了LPC2000定时器的工作原理与控制方面的知识,复习了向量中断控制器,并且掌握了LPC2000 系列ARM7 微控制器定时器0的基本设置及定时中断技术的应用,能够使用定时器进行一些比较简单的实验。本次实验,我的收获很大。
六.附录:源代码(电子版)
#include "config.h"
#define BEEP 1 << 7 /* P0.7控制BEEP,低电平蜂鸣 */
void __irq IRQ_Timer0 (void)
{
if ((IO0SET & BEEP) == 0)
IO0SET = BEEP; /* 关闭BEEP */
else
IO0CLR = BEEP;
T0IR = 0x01; /* 清除中断标志 */
VICVectAddr = 0x00; /* 通知VIC中断处理结束 */
}
int main (void)
{
PINSEL1 = 0x00000000; /* 设置管脚连接GPIO */
IO0DIR = BEEP; /* 设置BEEP控制口输出 */
IRQEnable(); /* IRQ中断使能 */
/* 定时器0初始化 */
T0TC = 0; /* 定时器设置为0 */
T0PR = 0; /* 时钟不分频 */
T0MCR = 0x03; /* 设置T0MR0匹配后复位T0TC,并产生中断标志*/
T0MR0 = Fpclk; /* 1秒钟定时;系统中已定义Fpclk = 11059200 */
T0TCR = 0x01; /* 启动定时器 */
/* 设置定时器0中断IRQ */
VICIntSelect = 0x00; /* 所有中断通道设置为IRQ中断 */
VICVectCntl0 = 0x20 | 0x04;/*设置定时器0中断通道分配最高优先级*/
VICVectAddr0 = (uint32)IRQ_Timer0; /* 设置中断服务程序地址 */
VICIntEnable = 1 << 0x04; /* 使能定时器0中断 */
while (1);
return 0;
}