某食堂的售饭系统由一个后台数据库系统及若干个前台刷卡机组成,其基本功能具体描述如下: a、刷卡机的硬件组成中,除了必须的最小硬件系统外,还需要IC卡读写模块、8段LED组成的显示模块、键盘模块、蜂鸣器模块、RS一485通信模块等。 b、客户

admin2021-02-01  52

问题 某食堂的售饭系统由一个后台数据库系统及若干个前台刷卡机组成,其基本功能具体描述如下:
    a、刷卡机的硬件组成中,除了必须的最小硬件系统外,还需要IC卡读写模块、8段LED组成的显示模块、键盘模块、蜂鸣器模块、RS一485通信模块等。
    b、客户需要事先办理本系统的消费IC卡,预存若干金额,办卡信息及预存金额存储在后台数据库系统中。
    c、客户消费时,用IC卡在刷卡机上支付。支付时,由售饭员在刷卡机上输人客户缴费金额且在LED显示器上显示,然后客户刷卡,若IC卡合法,则把缴费金额和IC卡信息传输给后台数据库系统。若IC卡不合法,用蜂鸣器发不合法提示音。
    d、后台数据库系统接收到刷卡机的信息后,将根据IC卡号查询出该卡的余额,若余额大于等于应缴费额,则进行扣费,再把当前余额及扣费正确信息回传给刷卡机。若余额小于应缴费额,则回传扣费不正确信息给刷卡机。
    e、刷卡机接收到回传的信息后,显示回传的余额,且若是扣费正确信息,则用蜂鸣器发“扣费正确”提示音;若是扣费不正确信息,则用蜂鸣器发“扣费不正确”提示音。
    根据上述功能要求的描述,若采用S3C2410芯片为核心来构建刷卡机的硬件平台,请完善下面的叙述(程序)和回答有关的问题。
    (1)在设计硬件时,最小的硬件系统是保证系统能正常工作的必要硬件组成。它包括电源电路、【81】、复位电路、调试测试接口以及【82】
    (2)若在硬件设计时,选用8个共阴极的8段LED(其排列如图1所示)组成2组显示器(1组4个8段LED),用于显示当前消费金额和余额。若采用GPC0~GPC6、GPC7外接同向驱动后,分别连接到显示“消费金额”的LED显示器段信号线a~f、dp上,采用GPD0~GPD3外接同向驱动后分别控制该组显示器中低数据位~高数据位的4个8段LED位信号线。

    另外采用GPC8~GPCI4、GPCI5外接同向驱动后,分别连接到显示“余额”的LED显示器段信号线a~f、dp上,采用GPD4~GPD7外接同向驱动后分别控制该组显示器中低数据位~高数据位的4个8段LED位信号线。
    那么,GPC0~GPC15引脚的功能为:【83】,GPD0~GPD7引脚的功能为:【84】。初始化GPC0~GPC15引脚功能的语句可以是:
    //rGPCCON是端口C的控制寄存器,其格式见后面附录
    rGPCCON=【85】
    初始化GPD0~GPD7引脚功能的语句可以是
    //rGPDCON是端口D的控制寄存器,其格式见后面附录
    rGPDCON=((rGPDCON|0x00005555)&【86】);
    若只在“余额”LED显示器中的次高数据位LED上显示字符“3”,相关驱动程序中可用下面语句实现。
    rGPCDAT=【【87】;//输出“3”的段信号
    rGPDDAT=【88】;//输出次高数据位被点亮的控制信号
(3)刷卡机上输入客户缴费金额的键盘,在设计时采用非标准键盘组成,键盘接口设计成4×4的阵列(其按键排列示意图如图2所示)。键盘接口电路中选用GPE0~GPE3来输出键盘行扫描信号,选用GPE4~GPE7来输入键盘列信号。软件设计时设计者自行设计了键盘扫描函数,请你补充完善之:

//*KEYOUTPUT是键盘扫描时的输出地址,KEYINPUT是键盘读入时的地址
    #define KEYOUTPUT(*(volatile INTS8U *)0x56000044)
    #define KEYINPUT(*(volatile INTS *)0x56000044)
    INT16U ScanKey()
    {
    INT16U key=0xFFFF;
    INT16U i;
    INTSU temp=0xFF,output;
  //rGPECON是端口E的控制寄存器,其格式见后面附录
    rGPECON=((rGPECON&0xFFFFFF00)|【89】);//初始化GPE0~GPE3为输出
    rGPECON=rGPECON&【90】;//初始化GPE4~GPE7为输入
//下面判断键盘中是否有键按下
    for(i=1;((i<=8)&&(i>0));【91】)
    {
    output|=0xFF:
    output&=(~i);
    KEYOUTPUT=output;
    temp=KEYINPUT;
    if((temp&0xF0)!=【92】)//判断列信号是否为全“1”
    {
    key=(~i);
    key<<=8:
    key |=((temp&0xF0)|0x0F);//求得按键的返回值
    return(key);//函数返回按键对应的值
      }
    }
    retum 0xFFFF;
  }
应用程序中可根据上面的键盘扫描函数的返回值,来判断是否有按键按下,并确定是哪个按键按下。例如:若返回值为:【93】时,可知是键盘中的“6”键按下,
    若返回值为:【【94】时,可知是键盘中的“确认”键被按下。若无键按下时,返回值应为:【95】
    (4)刷卡机与后台数据库系统通信采用RS一485总线。因此在硬件设计时,需要采用S3C2410芯片内部的【96】部件外加电平转换芯片等来实现。若在软件设计时,其初始化程序中波特率设置为9600bps,数据格式设置为:8位数据位、无校验、1位停止位。那么,1秒时间内最多能传输【97】字节的信息。
    (5)刷卡机上的应用软件是在无操作系统环境下开发的。设计者可以自行设计系统的启动引导程序,在该程序中完成异常向量设置、堆栈指针设置以及必要的硬件初始化。ARM9体系结构中规定的复位异常所对应的异常向量地址为【98】。系统上电/复位后,将从该地址处开始执行程序,因为ARM9体系结构中规定的各异常向量地址之间间隔通常为【99】个字节。因此,复位异常向量地址处通常存储一条【100】指令的代码。
    说明:下面是试题解答时需要用到的寄存器格式及相关说明o
    1)端口C的控制寄存器(GPCCON)

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

选项

答案(1)【81】时钟电路【82】存储器 (2)【83】输出【84】输出【85】0x55555555【86】0xFFFF5555【87】0x4F00【88】0xFFBF (3)【89】0x00000055【90】0xFFFF00FF【91】i<<=1【92】0xF0【93】0xFDBF【94】0xFE7F【95】0xFFFF【96】UART【97】960 (4)【98】0x00000000【99】4【100】分支

解析 (1)硬件最小系统包括电源电路、时钟电路、复位电路、调试测试接口、以及存储器。
   (2) GPC0~GPC15引脚为LED段选输出,空【83】为输出;GPD0~GPD7引脚为LED位选输出,空【84】为输出;00为输入,01为输出,则初始化GPC0~GPC15引脚功能为输出的语句是:rGPCCON= 0x55555555,空【85】为0x55555555;初始化GPD0~GPD7引脚功能为输出的语句是:rGPDCON=((rGPDCON|0x00005555)& 0xFFFF5555),空【86】为0xFFFF5555;输出“3”的段信号,即段e、f和dp为0。此时rGPCDAT =0x4F00,空【87】为0x4F00;输出次高数据位被点亮的控制信号,即次高位为0。此时rGPDDAT =0xFFBF,空【88】为0xFFBF。
    (3)初始化GPE0~GPE3为输出的语句是:rGPECON= ((rGPECON &0xFFFFFF00) |0x00000055),空【89】为0x00000055;初始化GPE4~GPE7为输入的语句是:rGPECON=rGPECON &0xFFFF00FF,空【90】为0xFFFF00FF;i<<=1,i初始为1,每次左移一位,正好对应于GPE0~GPE3,空【91】为i<<=1;判断列信号是否为全“1”,即(temp&0xF0)!= 0xF0时说明列信号不全为1,否则全为1,空【92】为0xF0;无键按下时为1,有键按下时为0。键盘中的“6”键按下时返回1111 1101 1011 1111,即0xFDBF,空【93】为0xFDBF;键盘中的“确认”键被按下时返回1111 1110 0111 1111,即0xFE7F,空【94】为0xFE7F;无键按下是,返回值为0xFFFF,空【95】为0xFFFF;S3C2410芯片内部串行异步通信接口外加电平转换芯片可采用RS–485总线进行通信,空【96】为UART;始化程序中波特率设置为9600bps,数据格式设置为;8位数据位、无校验、1位停止位。那么,1秒时间内最多能传输9600/(8+2)=960字节的信息。
    (4)ARM9体系结构中规定的复位异常所对应的异常向量地址为0x00000000;ARM9体系结构中规定的各异常向量地址之间间隔通常为4个字节;复位异常向量地址处通常存储一条分支指令的代码。
转载请注明原文地址:https://kaotiyun.com/show/kn0Z777K
0

最新回复(0)