加油机的外形如图所示,其控制器的基本功能要求如下: a、能够支持预付卡(IC卡)加油。 b、把IC卡插入卡槽后,需要输入用户密码,用户密码输入正确后,且卡中有足额金额即可进行加油。 c、加油时实时记录加油数量及金额并显示。加油结束,延时2秒后自动弹出IC

admin2021-07-07  44

问题 加油机的外形如图所示,其控制器的基本功能要求如下:

a、能够支持预付卡(IC卡)加油。
b、把IC卡插入卡槽后,需要输入用户密码,用户密码输入正确后,且卡中有足额金额即可进行加油。
c、加油时实时记录加油数量及金额并显示。加油结束,延时2秒后自动弹出IC卡。
d、具有1个小型打印机,可以打印加油的数量及金额等清单。
e、具有与后台PC机进行异步串行通信的功能,可以把加油信息与后台数据库进行交互。
根据上述功能要求的描述,若采用S3C2410芯片为核心来构建该加油机控制器的硬件平台,请完善下面的叙述(程序)和回答有关的问题。
(1)设计IC卡接口电路时,由于IC卡上芯片支持I2C总线接口,因此,可选用S3C2410芯片端口E的引脚来与IC卡上的SDA、SCL相连,如:端口E的引脚【81】与IC卡上的SCL引脚相连等。软件设计时,相关驱动程序中需要用下面语句来初始化这些引脚的功能。
rGPECON=((rGPECON|0xA0000000)&【82】);//rGPECON是端口E的控制寄存器
(2)用户密码的输入采用简易键盘。简易键盘为5×4的键盘,其按键排列示意图如图所示。

在设计键盘接口电路时,选用GPE0~CPE4来输出键盘行扫描信号,选用GPC0~GPC3来输入键盘列信号。软件设计时设计者自行设计了键盘扫描函数,请你补充完善之:
//* * KEYOUTPUT是键盘行扫描时的输出地址,KEYINPUT是键盘列数据读入时的地址
  #deftneKEYOUTPUT    ( * (volatile INT8 U
  * =)0x56000044)
  #deftne KEYINPUT    ( * (volatile INT8 U
  * )0x56000024)
  INT16U ScanKey(    )
  {
  INT16U key=0xFFFF;
  INT16U i;
  INT8U termp=0xFF,output;
  rGPECON=((rGPECON &0xFFFFFI)55)|【83】);//初始化GPE0~GPE4为输出
  rGPCCON=rGPCCON&【84】;//初始化GPC0~GPC3为输入
  //下面循环扫描键盘,判断是否有按键按下
  for(i=【85】;((i<=16)&&(i>0));i<<=1)
  {
  output|=0xFF;
  output&=(~i);
  【86】=output;//输出行扫描信号
  temp=KEYINPUT;//读取列信号
  if((temp&0x0F)!=【87】)
  {
  key=(~i);
  key«=8:
  key|=((temp&0x0F)|0xF0);
  retum(key);
   }
  }
  return 0xFFFF;
  }
根据上面的键盘扫描函数的返回值,可以判断是否有按键按下,且是哪个键按下。若有键按下,返回值是其对应的扫描码。例如:若键盘中的“8”键被按下,返回值为:【88】,若键盘中的“3”键按下,返回值为:【89】。若没有键按下,返回值应为:【90】。
(3)加油结束后延时2秒,利用Timer0部件来产生此延时信号,那么,初始化Timer0部件的函数可以设计如下。(程序中所有参数请用十六进制表示。并假设系统主频参数PCLK为100MHz,分割器值选择为16,预分频系数选择为199。)
    void Timer0Int(void)
    {
    //设置定时器配置寄存器0(TCFG0)
    rTCFG0=【91】;    //dead zone=0,Timer0预分频系数设199
    //设置定时器配置寄存器1(TCFG1)
    rTCFG1=【92】;    //工作在中断方式,分割器值为16
    //设置计数常数
    rTCNTB0=【93】;
    //设置控制寄存器TCON
    rTCON=【94】;    //仅更新TCNTB0和TCMPB0
    rTCON=0x00000001;//仅Timer0启动
    }
(4)在设计打印机接口电路时,若选用内部有2K×8bit缓冲区的打印机模块,利用S3C2410芯片的低8位数据线与打印机模块的数据线连接,并用S3C2410芯片的nGCS4引脚连接其片选信号,其他信号(地址线、读/写信号)也一一连接。要打印的信息需送到缓冲区,然后启动打印。那么,软件写入该打印缓冲区的首地址为【95】,末地址为【96】。(注:存储系统为小端存储方式)
(5)与后台PC机的异步串行通信接口选用S3C2410芯片内部的【97】部件来设计。该部件支持的通信协议数据格式要求为:【98】位起始位,5~8位的数据位,1位奇偶校验位(或无校验位),1位(或2位)的停止位。在初始化程序中,需通过设置【99】寄存器来确定通信所需的数据格式。例如:通信时需要的数据格式为:8位的数据位,奇校验,2位停止位,那么,该寄存器需要设置的参数为:【100】(请用十六进制数表示)。
说明:下面是试题解答时需要用到的寄存器格式
1)端口C控制寄存器(GPCCON)的格式

2)端口E控制寄存器(GPECON)的格式


3)端口F控制寄存器(GPFCON)的格式

4)TCFG0寄存器的格式

5)TCFG1寄存器的格式


通过TCFGO、TCFG1的设置,可以确定预分频系数和分割器值,最终通过下面公式计算定时器输入时钟频率。
定时器输入时钟频率=PCLK/(预分频系数+1)/(分割器值)
预分频系数的范围=0~255
分割器值的取值范围=2,4,8,16
6)TCON寄存器的格式



7)ULCONn寄存器的格式

选项

答案(1)【81】GPE14【82】0xAFFFFFFF (2)【83】0x00000155【84】0xFFFFFF00【85】1【86】KEYOUTPUT【87】0x0F【88】0xF7FD,【89】0xFDFB【90】0xFFFF (3)【91】0xC7【92】0x00000003【93】0xF424【94】0x00000002 (4)【95】0x20000000【96】0x200007FF (5)【97】UART【98】1【99】ULCONn【100】0x27

解析 (1)GPE14的功能为输出/输入,第三功能就是用于ⅡCSCL,为I2C时钟线提供功能,故【8l】空填写GPE14。GPE14设置”10”的功能为ⅡCSCL,其他位保留”11”,故【82】框填写0xAFFFFFFF
(2)初始化程序是按照寄存器格式进行按位赋值。查看附录GPE控制寄存器的格式可知GPE0~GPE4为输出时,即为数值“01”,也就是0x155,而其他位置的数值不变,因此初始化GPE0~GPE4的数值为“0x00000155”,故【83】空填写0x00000155;初始化端口GPC0~GPC3为输入,每个端口设置为“00”,而其他位置的数值不变,因此初始化GPC0~GPC3的数值应为“0xFFFFFF00”,故【84】0xFFFFFF00;循环从1开始,循环扫描键盘,应从“1”开始,故【85】填写1。通过GPE端口数据寄存器输出行信号,故【86】填写KEYOUTPUT,【87】空填写0x0F。对矩阵键盘采用循环扫描法读取键盘按键情况;无键按下,则全1,有键按下,则相应置0,当没有键按下时,输出0xFFFF,如果有键按下结合行列值即可判断。故【88】空填写QxF7FD,【89】0xFDFB【90】0xFFFF
(3)因为Timer0预分频系数设为199,所以转化为十六进制为0xC7,故【91】空填写0xC7。Timer2分割器值为16,故空【92】填写0x00000003。定时器输入时钟频率=PCLK/(预分频系数+1)/分割器值,计数常数=定时时间间隔/(1/定时器输入时钟频率),即可得到空【93】的答案为0xF424。更新TCNTB0和TCMPB0,空【94】填写0x00000002。
(4)2K×8bit缓冲区的打印机模块,利用S3C2410芯片的低8位数据线与打印机模块的数据线连接,并用S3C2410芯片的:nGCS4引脚连接其片选信号,其他信号(地址线、读/写信号)也一一连接。软件写入的首地址为0x20000000,末地址为0x200007FF。
(5)根据题意,后台PC机的异步串行通信接口选用S3C2410芯片内部的UART部件来设计。UART支持的通信协议数据格式要求为:第1位起始位,5~8位的数据位,1位奇偶校验位(或无校验位),1位(或2位)的停止位。S3C2410/2440有三个UART接口UARTO、UART1和UART2,其对应的线路控制寄存器为ULCONO、ULCON1和ULCON2,用于确定传输帧的格式,地址分别为0x50000000、0x50004000和0x50008000,可读/写,复位时全为0。由于有8位的数据位,奇校验,2位停止位,所以得到二进制为100111,转化为十六进制为0x27。故空【97】填写UART、空【98】填写1、空【99】填写ULCONn、空【100】填写0x27。
转载请注明原文地址:https://kaotiyun.com/show/7i0Z777K
0

相关试题推荐
随机试题
最新回复(0)