酒店客房的门锁系统是由总台服务器和若干客房指纹锁组成,其基本功能具体描述如下: a、客房的指纹锁与总台服务器之间通过通信网络连接。 b、旅客在总台登记住宿时,录入其指纹信息,并提取其特征值存储在总台服务器中。同时录入一个密码(若干位数字组成),以备指纹无法

admin2018-06-19  43

问题 酒店客房的门锁系统是由总台服务器和若干客房指纹锁组成,其基本功能具体描述如下:
a、客房的指纹锁与总台服务器之间通过通信网络连接。
b、旅客在总台登记住宿时,录入其指纹信息,并提取其特征值存储在总台服务器中。同时录入一个密码(若干位数字组成),以备指纹无法开锁时,用密码开锁。
    c、旅客在开客房指纹锁时,把相应手指放在门锁的指纹采集部件上,采集相应的指纹图像信息,并传输给总台服务器。
    d、总台服务器接收到某个客房指纹锁传输来的指纹图像信息后,进行特征值求取并进行匹配,若匹配正确,则回送开锁指令给客房指纹锁。
    e、客房指纹锁收到开锁指令后,控制开锁的机械动作,并用绿色LED灯指示开锁成功。
    f、若匹配不正确,总台服务器回送不开锁指令给客房指纹锁。
    g、客房指纹锁收到不开锁指令后,用红色LED灯指示开锁不成功。
    h、若指纹无法开锁,旅客还可以通过客房指纹锁上的数字按键输入密码,若密码匹配正确,也可以控制开锁的机械动作,并用绿色LED灯指示开锁成功。
    根据上述功能要求的描述,若采用S3C2410芯片为核心来构建客房指纹锁控制器的硬件平台,请完善下面的叙述和C语言程序(需要使用的控制寄存器的格式见题后说明)。
    (1)若采集的指纹图像分辨率为320×240,灰度等级为256,则存储一幅指纹图像的原始像素信息需要的存储容量为【81】KB(1K=1000)。若采用115.2Kbps的异步串行通信网传输,一幅指纹图像的传输时间至少需要【82】秒,若采用10Mbps的以太网传输,一幅指纹图像的传输时间至少要【83】秒,因此,系统中总台服务器和若干个客房指纹锁之间选用以太网连接。
    (2)硬件构件设计时,以太网接口选用AX88796芯片为核心来设计,若S3C2410芯片的
nGCS2引脚连接到该芯片的【84】引脚(低电平有效),那么,AX88796芯片内部寄存器地址的首地址是:【85】。
    (3)若客房指纹锁红色LED指示灯的驱动电路由GPIO的GPC0引脚控制,绿色LED指
示灯的驱动电路由GPC1引脚控制。GPC0、GPC1引脚各自输出“0”时,其对应的LED灯灭,各自输出“1”时,其对应的LED灯亮。那么,初始化GPC0、GPC1引脚为输出功能的语句是:rGPCCON=((rGPCCON|0x00000005)&【86】);//rGPCCON是端口C的控制寄存器控制绿色LED灯点亮和熄灭的语句分别是:
    rGPCDAT=rGPCDAT|【87】;//rGPCDAT是端口C的数据寄存器
    rGPCDAT=rGPcDAT&【88】;
红色LED灯点亮和熄灭的语句分别是:
    rGPCDAT=rGPcDAT|【89】;
    rGPCDAT=rGPCDAT&【90】;
(4)指纹采集部件由一个摄像芯片和光学镜头组成。S3C2410芯片通过I2C总线传输控制命令给摄像芯片。硬件设计时,选择S3C2410芯片的G=PEl5、GPE14引脚与摄像芯片的引脚【91】、SCL相连。软件设计时,需要用下面语句初始化该引脚为I2C功能引脚。
rGPECON=((rGPECON|0xA0000000)&【92】);//rGPECON是端口E的控制寄存器
    (5)若输入密码的键盘采用非标准键盘,键盘接口设计成4×3的阵列。若设计时选用了GPE0~GPE3来输出键盘行扫描信号,选用GPD0~GPD2来输入键盘列信号。请补充完善下面的键盘扫描函数:
//* * keyoutput是键盘扫描时的输出地址,keyinput是键盘读入时的地址
#define KEYOUTPUT(*(volatile INT8U *)0x56000044)//定义GPE的数据端口
#define KEYINPUT(*(volatile INT8U *)0x56000034)//定义GPD的数据端口
    INTl6U ScanKey()
    {
    INT16U key=0xFFFF;
    INTl6U i;
    INT8U temp=0xFF,output;
rGPDCON=rGPDCON&【93】;//初始化GPD0~GPD2为输入
rGPECON=((rGPECON&【94】)|0x00000055);//初始化GPE0~GPE3为输出;
for(i=1;((i<=【95】)&&(i>0));i<<=1)
    {
    output|=0xFF;
    output&=(~i);
    KEYOUTPUT=output;
    temp=KEYINPUT;
    if((temp&0x07)!=【96】)
    {
    key:(~i);
    key<<=8;
    key|=((temp&0x07)|0xF8);
    return(key);
    }
    }
    retum 0xFFFF;
    }
    上面的键盘扫描函数返回的是由键盘行信号和键盘列信号合并而成的一个16位二进制值,根据该函数的返回值,可以判断是否有按键按下,并可确定是哪个按键按下。若返回值为【97】时,可知键盘中无键按下,若返回值为【98】时,可知键盘中第3行第2列的键被按下。(注:以GPE0对应的键盘行为第一行,以GPD0对应的键盘列为第一列)
    (6)为了便于以太网通信程序的编写,客房指纹锁的应用软件基于μC/OS—Ⅱ操作系统来设计,客房指纹锁的应用程序主函数中,需要用OSTaskCreate()函数【99】,并用【100】函数启动多任务调度功能。
说明:下面是试题解答时需要用到的寄存器格式及相关说明。
1)端口C的控制寄存器(GPCCON)

2)端口D的控制寄存器(GPDCON)

3)端口E的控制寄存器(GPECON)

4)端口H的控制寄存器(GPHCON)


选项

答案(1)【81】76.8【82】6.7【83】0.076 (2)【84】CS【85】0x10000000 (3)【86】0xFFFFFFF5【87】0x0002【88】0xFFFD【89】0x0001【90】0xFFFE (4)【91】SDA【92】0xAFFFFFFF (5)【93】0xFFFFFFC0【94】0xFFFFFF00【95】8【96】0x07【97】0xFFFF【98】0xFBFD (6)【99】创建任务【100】OSStart()

解析 本题是一道基于S3C2410的嵌入式系统开发综合题。考查了数字图像的存储容量计算,网络通信数据传输;系统硬件构件设计,尤其是GPIO接口功能及初始化程序,结合常用外设的连接,如LED、键盘等;基于μC/OS—Ⅱ操作系统的应用程序的主要μC/OS—Ⅱ函数,如何创建任务及启动任务调度功能。
(1)存储一幅指纹图像的原始像素信息需要的存储容量为:320×240/1000=76.8KB;一幅指纹图像的传输时间为:115.2Kbps换算成字节是每秒发送115.2/8=14.4 KB的数据;异步串行每发送8个字节有一个起始位和停止位,76.8/8=9.6,说明一共需要10个停止位和10个起始位,发送一个96.8KB的数据,96.8/14.4=6.72秒;采用10Mbps的以太网传输,一幅指纹图像的传输时间为:10Mbps理论速度是每秒1.25MB,加上损耗以1 Mbyte每秒计算,理论时间是0.076秒。
(2)片选信号CS低电平有效;nGCS2映射地址为0x10000000。
(3)00为输入,01为输出。则初始化GPC0、GPC1引脚为输出功能的语句是:
rGPCCON=((rGPCCON|0x00000005)&0xFFFFFFF5),所以空【86】为0xFFFFFFF5;红色LED指示灯的驱动电路由GPI0的GPC0引脚控制,绿色LED指示灯的驱动电路由GPC1引脚控制。GPC0、GPC1引脚各自输出“0”时,其对应的LED灯灭,各自输出“1”时,其对应的LED灯亮。则绿色LED灯点亮为:rGPCDAT=rGPCDAT|0x0002,所以空【87】为0x0002;绿色LED灯熄灭为:rGPCDAT=rGPCDAT&0xFFFD,故空【88】为0xFFFD;红色LED灯点亮为:rGPCDAT=rGPCDAT|0x0001,故空【89】为0x0001;红色LED灯熄灭为:rGPCDAT=rGPCDAT&0xFFFE,故空【90】为0xFFFE。
(4)I2C总线只有两条信号线,一条是数据线SDA,另一条是时钟线SCL,所有操作都通过这两条信号线完成。rGPECON=((rGPECON|0xA0000000)&0xAFFFFFFF);初始化I2C功能引脚,故空【92】为0xAFFFFFFF。
(5)初始化GPD0~GPD2为输入:rGPDCON=rGPDCON&0xFFFFFFC0,所以空【93】为0xFFFFFFC0;00为输入,01为输出。初始化GPE0~GPE3为输出:rGPECON=((rGPECON&0xFFFFFF00)|0x00000055),故空【94】为0xFFFFFF00;程序循环8次,空【95】为8;空【96】为0x07用来判断GPD0~GPD2引脚是否有输入信号。若返回值为0xFFFF表示键盘中无键按下,故空【97】为0xFFFF;若返回值为0xFBFD表示键盘中第3行第2列的键被按下,故空【98】为0xFBFD。
(6)OSTaskCreate()函数用来创建任务;函数OSStart()启动多任务调度功能;一旦OSStart()函数开始执行,就标志着μC/OS—Ⅱ进入了多任务调度的正常运行状态。
转载请注明原文地址:https://kaotiyun.com/show/pAMZ777K
0

最新回复(0)