ImageVerifierCode 换一换
格式:DOCX , 页数:32 ,大小:197.55KB ,
资源ID:8428615      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8428615.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(学位论文智能仪器设计报告基于单片机和fpga的矩阵键盘控制系统设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

学位论文智能仪器设计报告基于单片机和fpga的矩阵键盘控制系统设计.docx

1、学位论文智能仪器设计报告基于单片机和学位论文智能仪器设计报告基于单片机和 fpga 的矩阵键的矩阵键盘控制系统设计盘控制系统设计 目 录 1.概述-1-2.89C51 单片机简介-1-3.FPGA简介-2-4.矩阵键盘控制系统-3-4.1.FPGA设计框图-3-4.2.单片机硬件实现-4-4.3.键盘控制系统子模块-4-4.3.1 矩阵键盘原理-4-4.3.2 时钟分频模块-5-4.3.3 键盘扫描模块-6-4.3.4 译码转换及三态门输出模块-6-4.3.5 单片机及液晶显示模块部分-7-5.仿真及结果分析-9-5.1 分频模块时序仿真-9-5.2 键盘扫描模块-9-5.3 译码输出模块-9

2、-5.4 单片机与液晶显示器模块-10-6.参考文献-11-致 谢-12-附 录-13-1.概述 随着可编程逻辑器件及 EDA技术的发展,在系统设计中经常会用到 FPGA来扩展单片机的相关资源。单片机具有性价比高、功能灵活、易于人机对话、强大的数据处理能力等特点;而 FPGA 则具有高速、高可靠性以及开发便捷、规范等特点,因此两类器件相结合的电路结构应在许多高性能仪器仪表和电子产品中将被广泛应用。根据两者的特点,设计一种基于 89C51 单片机与 FPGA的总线接口逻辑电路,实现对机械式键盘按键的检测和译码输出。本系统主要分为四大部分:89C51 芯片、FPGA模块、矩阵键盘和液晶显示器。其中

3、 FPGA模块主要实现与矩阵键盘接口并发信号对其扫描并得到信号等复杂的逻辑功能,89C51 芯片实现将 FPGA芯片传来的信号并将其对其信号识别然后将其传给显示器,驱动液晶显示器显示。2.89C51 单片机简介 89C51 是 Intel公司生产的一种单片机,在一小块芯片上集成了一个微型计算机的各个组成部分。每一个单片机包括:一个 8位的微型处理器 CPU;一个 256K的片内数据存储器 RAM;片内程序存储器 ROM;四个 8位并行的 I/O接口 P0-P3,每个接口既可以输入,也可以输出;两个定时器/记数器;五个中断源的中断控制系统;一个全双工 UART的串行 I/O 口;片内振荡器和时钟

4、产生电路,但石英晶体和微调电容需要外接。最高允许振荡频率是 12MHZ。以上各个部分通过内部总线相连接。中央处理器 CPU 是单片微型计算机的指挥、执行中心,由它读人用户程序,并逐条执行指令。有的指令涉及到各个寄存器之间的关系;有的指令涉及到单片机核心电路内部各功能部件之间的关系;有的则与外部器件如外部程序存储器发生联系。89C5l 单片机的一个执行周期由 6 个状态(s1s6)组成,每个状态又持续 2个振荡周期,分为 P1和 P2两个节拍。这样,一个机器周期由 12 个振荡周期组成。若采用12MHz 的晶体振荡器,则每个机器周期为 1us,每个状态周期为 16us;在一数情况下,算术和逻辑操

5、作发生在 N期间,而内部寄存器到寄存器的传输发生在 P2期间。89C5l 单片机的 40 个引脚中有 2 个专用于主电源引脚,2个外接晶振的引脚,4 个控制或与其它电源复用的引脚,以及 32条输入输出 I/O引脚。由于单片机功能多,引脚数少,因而许多引脚具有第 2功能;单片机对外呈 3总线形式,由 P2、P0口组成 16位地址总线;由 P0口分时复用作为数据总线。3.FPGA简介 FPGA(Field Programmable Gate Array),即现场可编程门阵列,它是在 PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路

6、而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA采用了逻辑单元阵列 LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块 CLB(Configurable Logic Block)、输出输入模块 IOB(Input Output Block)和内部连线(Interconnect)三个部分。FPGA的基本特点主要有:1)采用 FPGA设计 ASIC 电路,用户不需要投片生产,就能得到合用的芯片;2)FPGA可做其它全定制或半定制 ASIC 电路的中试样片;3)FPGA内部有丰富的触发器和 IO引脚;4)FPGA是 ASIC 电路中设

7、计周期最短、开发费用最低、风险最小的器件之一;5)FPGA采用高速 CHMOS 工艺,功耗低,可以与 CMOS、TTL电平兼容。FPGA是由存放在片内 RAM 中的程序来设置其工作状态的,因此,工作时需要对片内的 RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将 EPROM 中数据读入片内编程 RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA 恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的 FPGA编程器,只须用通用的 EPROM、PROM 编程器即可。当需要修改 FPGA 功能时,只需换一片 EPROM 即

8、可。这样,同一片 FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。4.矩阵键盘控制系统 5.FPGA设计框图 FPGA电路的设计,包括对时钟进行分频,对键盘进行连续扫描,再进一步通过译码等操作,确定按键的位置,译码输出。并进一步将译码得到的 8 位二进制数经过一个三态门,通过中断信号和 RD信号的控制,实现单片机和 FPGA 的 8位数据信号的互连。FPGA总体设计框图如图 4-1 所示。图 4-1 FPGA总体设计框图 6.单片机硬件实现 89C5l 单片机接收从 FPGA模块传送过来的信号,并对信号进行识别,然后驱动液晶显示器显示信号所代表的按键。单片机硬件

9、接线图如图 4-2所示。图 4-2 单片机硬件接线图 7.键盘控制系统子模块 4.3.1 矩阵键盘原理 矩阵键盘又叫行列式键盘。用带 IO口的线组成行列结构,按键设置在行列的交点上。例如用 3 3的行列式结构可以构成 9个键的键盘。这样,当按键数量平方增长时,I/O口只是线性增长,这样就可以节省 I/O口。按键设置在行列线交叉点,行列线分别连接到按键开关的两端。列线通过上拉电阻接 3.3V电压,即列线的输出被默认设置为高电平状态,对应的二进制代码即为 1。判断键盘中有无按键按下式通过行线送入扫描信号然后从列线读取状态得到的。其方法是依次给行线送低电平,检查列线的输入。如果列线全是高电平,则代表

10、低电平信号所在的行中无按键按下;如果列线有输入为低电平,则代表低电平信号所在的行和出现低电平的列的交点处有按键按下。矩阵键盘的原理图如图 4-3所示。图 4-3 矩阵键盘的原理图 4.3.2 时钟分频模块 时钟电路主要产生系统所需要的时钟信号,由 FPGA 时钟分频得到系统工作时钟,然后采用计数器分频方法得到所需要的键盘扫描信号。本次设计中循环的发送 3种数值,即 011,101,110。具体的分频过程是将原来的f=50Mhz 分频到现在的 f=50hz。本程序中采用了计数器分频的思路,把一个计数周期内的约定个数定为 1000000,在每次计数到约定个数的一半时,实现 1、0 之间的跃变。这样

11、,就实现了对原频率 1/1000000 的分频。分频模块视图如图 4-4 所示。图 4-4 分频模块视图 4.3.3 键盘扫描模块 键盘扫描电路用来产生键盘扫描信号,根据矩阵键盘工作原理,需要产生从第一列到第四列的周期性扫描信号。采用 Verilog 硬件语言设计扫描模块。键盘扫描模块可以周期性的得到行扫描信号 Keydry0Keydry2:011101110011.周而复始的扫描。触发信号的周期是 20ms,就是上一分频模块的的输出周期。键盘扫描模块如图 4-5所示。图 4-5 键盘扫描模块 4.3.4 译码转换及三态门输出模块 矩阵键盘所产生的扫描回复信号(按键输入给 FPGA 的信号),

12、是无法直接在 FPGA 内部作为信号进行使用,在使用前需要根据定义的不同功能将扫描回复信号译码为可供 FPGA 识别的 BCD 编码,完成矩阵键盘输入的译码,同时区分不同按键的功能。译码电路的主要功能是:判断是否有键按下,然后根据扫描的信号确认所按下的键是数字键还是功能键,将所按下的键编写成 BCD 码。BCD码的编码表 4-1如下所示:表 4-1 BCD码编码表 键盘输出 按键 译码 键盘输出 按键 译码 011_011 1 0001 101_110 6 0110 011_101 2 0010 110_011 7 0111 011_110 3 0011 110_101 8 1000 101_

13、011 4 0100 110_110 9 1001 101_101 5 0101 000_000 无按键 0000 在完成 BCD码转换后,要进一步通过中断控制,发送信号给单片机。并在三态门的控制作用下,实现不同状态的输出。具体即在无键盘按下时,输出为高阻状态;有键盘按下时,按相应的键码输出 8位数据给单片机。在三态门的控制实现过程中,要注意,RD信号的 0和 1 状态转换的条件,从 0 到 1 和从 1到 0是依据不同的变量来进行判断的。从 1到 0,是判断 Y发生变化,且当前状态不是全为 1;从 0到 1 是根据列向量 KEYO的状态进行判断的,一旦 KEYO为全 1,则进行中断信号从 0

14、到 1的转换。这样能够实现三态门有效的对数据输出的控制。译码输出模块如图 4-6所示。图 4-6 译码输出模块 4.3.5 单片机及液晶显示模块部分 点阵 LCD的显示原理:在数字电路中,所有的数据都是以 0和 1保存的,对 LCD控制器进行不同的数据操作,可以得到不同的结果。对于显示英文操作,由于英文字母种类很少,只需要 8 位(一字节)即可。对于中文,将 ASCII表的高 128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。而剩下的低 128 位则留给英文字符使用,即英文的内码。字模是用数字的各位信息来记载英文或汉字的形状,通过字模将汉字在屏幕上显示出来。12864是一种图形点阵液

15、晶显示器,它主要由行驱动器/列驱动器及 128 64全点阵液晶显示器组成。可完成图形显示,也可以显示 8 4个(16 16 点阵)汉字。12864LCD的引脚说明如表 4-2所示。表 4-2 液晶模块 12864 的管脚说明 管脚号 管脚名称 LEVER 管脚功能描述 1 VSS 0 电源地 2 VDD+5.0V 电源电压 3 V0-液晶显示器驱动电压 4 D/I(RS)H/L D/I=“H”,表示 DB7DB0 为显示数据 D/I=“L”,表示 DB7DB0 为显示指令数据 5 R/W H/L R/W=“H”,E=“H”数据被读到DB7DB0 R/W=“L”,E=“HL”数据被写到 IR或

16、DR 6 E H/L R/W=“L”,E信号下降沿锁存DB7DB0 R/W=“H”,E=“H”DDRAM 数据读到DB7DB0 7 DB0 H/L 数据线 8 DB1 H/L 数据线 9 DB2 H/L 数据线 10 DB3 H/L 数据线 11 DB4 H/L 数据线 12 DB5 H/L 数据线 13 DB6 H/L 数据线 14 DB7 H/L 数据线 15 CS1 H/L H:选择芯片(右半屏)信号 16 CS2 H/L H:选择芯片(左半屏)信号 17 RET H/L 复位信号,低电平复位 18 VOUT-10V LCD驱动负电压 19 LED+-LED背光板电源 20 LED-LE

17、D背光板电源 显示模块电路如图 4-7 所示,液晶模块的 1 管脚接电源地,15管脚用于接电源地,19管脚用于接电源地。2 管脚接电源给液晶显示器供电,3管脚接电源用于提供液晶显示器显示驱动电压,17管脚接电源,20管脚接电源用与提供背景光。4管脚接单片机的 P1.3 用于接收数据或者指令,5管脚接单片机的 P1.4 选择数据被读写到什么位置,6管脚接单片机的 P1.5 用于提供锁存信号。图 4-7 显示模块电路 当 FPGA模块周期性地对键盘进行扫描的时候,也会周期性地给单片机发送中断信号,在单片机程序中加入中断信号比较简单,代码如下:EA=1;/打开总中断 EX0=1;/打开外部中断 0

18、IT0=0;/将中断 0设置为电平触发 然后单片机对输入管脚进行扫描,如果输入信号是 0 x01,单片机就驱动液晶显示器显示数字 1,如果输入信号是 0 x02,单片机驱动液晶显示器显示数字 2。8.仿真及结果分析 5.1 分频模块时序仿真 分频模块时序仿真结果如图 5-1所示:图 5-1 分频模块时序仿真结果 结果分析:如图所示,CLK频率是 50Mhz,分频以后 CLK_OUT 的周期是 20ms(图中的 140ms 和 120ms 之间即为一个周期,20ms)。5.2 键盘扫描模块 键盘扫描模块仿真结果如图 5-2所示:图 5-2 键盘扫描模块仿真结果 结果分析:如图所示,每过一个周期,

19、键盘行扫描信号就变化一次,并且按照Keydrv2:0:011101110011的顺序周而复始的扫描。5.3 译码输出模块 译码输出结果如图 5-3 所示:图 5-3 译码输出结果 结果分析:如图所示,Y17:0即为输出。如黄线所示位置,KEYI_KEYO 为110_101,对应于键盘上的“8”。再来看输出 Y17:0为 1111_0111,取反以后为0000_1000,对应于 BCD 码,也是对应着“8”。所以,仿真结果正确。即当按下相应的键时(通过相应的仿真激励来实现,即对 KEYO的控制),会输出相应的 BCD码。在无键盘按下时,输出为高阻状态。5.4 单片机与液晶显示器模块 单片机对输入

20、管脚进行扫描,然后进行输出,可以由 proteus 软件对单片机程序进行仿真,仿真结果如图 5-4 所示,由于 Proteus 软件对单片机模块有许多默认的输入,例如晶振电路,故没有在软件中进行连线,从而简化布局。图 5-4 Proteus 软件仿真结果 9.参考文献 1 李华.MCS 251 系列单片机接口技术 M.北京:北京航天航空大学出版社,1993.2 游志宇,张洪,董秀成等.MCS251 与 FPGA_CPLD 总线接口逻辑设计J.单片机与嵌入式系统应用,2008,1:29-32.3 徐志军,徐光辉.CPLD/FPGA 的开发与应用 M.北京:电子工业出版社,2002.4 郭文川.单

21、片机原理与接口技术M.北京:中国农业出版社,2007.5 夏宇闻.Verilog数字系统设计教程M.北京:北京航天航空大学出版社,2008.6 吴继华,王诚.设计与验证 Verilog HDLM.北京:人民邮电出版社,2006.7 栗彩霞,武一等.MCS 251 单片机与 FPGA接口的逻辑设计J.山西电子技术,2009,5.致 谢 通过这次智能仪器设计大作业基于单片机和 FPGA的矩阵键盘控制系统设计,我收获了许多。学习了 89C51 单片机的结构组成、各个组成部分的功能,并且掌握了一定的单片机编程技能;学习了 Verilog语言的编写规范,利用 Xilinx 的 ISE工具,用 Veril

22、og语言完成电路的设计;初步了解了可编程逻辑器件对硬件系统的控制,并且对 89C51 单片机与 FPGA逻辑控制和接口连接有了一定的认识。在这里要感谢曾翔君老师对我的指导。我们几个同学共同完成这个大作业,但是在机械学院我们接触单片机和 FPGA控制方面知识的机会较少,因此刚开始接触大作业时遇到了很多问题,曾老师都对我们的问题耐心的指导,老师渊博的知识和悉心的教导深深地感染了我们,我们衷心祝愿曾老师在未来的生活工作里,一帆风顺,心想事成!附 录 1.单片机程序/LCD_12864.c/-/名称:12864LCD(KS0108)显示驱动程序(不带字库)/-#include#include#defi

23、ne INT8U unsigned char#define INT16U unsigned int#define LCD_DB_PORT P1 /液晶 DB0-DB7#define LCD_START_ROW 0 xC0 /起始行#define LCD_PAGE 0 xB8 /页指令#define LCD_COL 0 x40 /列指令/液晶引脚定义 sbit DI=P20;/数据/命令选择线 sbit RW=P21;/读/写控制线 sbit E=P22;/使能控制线 sbit CS1=P23;/片选 1 sbit CS2=P24;/片选 2 sbit RST=P25;/复位/-/LCD 忙等待

24、/-void LCD_Busy_Wait()do LCD_DB_PORT=0 xFF;/液晶端口置高电平 RW=1;_nop_();DI=0;/设置为读,选择状态寄存器 E=1;_nop_();E=0;/E 置高电平读取,随后置为低电平 while(P0&0 x80);/-/向 LCD发送命令/-void LCD_Write_Command(INT8U c)LCD_Busy_Wait();/液晶忙等待 LCD_DB_PORT=0 xFF;/液晶端口置高电平 RW=0;_nop_();DI=0;/设置为写,选择命令寄存器 LCD_DB_PORT=c;/一字节命令放置到液晶端口 E=1;_nop_

25、();E=0;/E 置高电平读取,随后置为低电平 /-/向 LCD发送数据/-void LCD_Write_Data(INT8U d)LCD_Busy_Wait();/液晶忙等待 LCD_DB_PORT=0 xFF;/液晶端口置高电平 RW=0;_nop_();DI=1;/设置为写,选择数据寄存器 LCD_DB_PORT=d;/一字节数据放置到液晶端口 E=1;_nop_();E=0;/E 置高电平读取,随后置为低电平 /-/初始化 LCD/-void LCD_Initialize()CS1=1;CS2=1;/左右半屏片选 LCD_Write_Command(0 x3F);/显示开 LCD_W

26、rite_Command(LCD_START_ROW);/设置起始行 /-/通用显示函数/从第 P 页第 L列开始显示 W 个字节数据,数据在 r所指向的缓冲/每字节 8位是垂直显示的,高位在下,低位在上/每个 8*128的矩形区域为一页/整个 LCD又由 64x64 的左半屏和 64x64 的右半屏构成/-void Common_Show(INT8U P,INT8U L,INT8U W,INT8U*r)INT8U i;/显示在左半屏还是右半屏 if(L 64)CS1=1;CS2=0;LCD_Write_Command(LCD_PAGE+P);LCD_Write_Command(LCD_COL

27、+L);/全部显示在左半屏 if(L+W 64)for(i=0;i W;i+)LCD_Write_Data(ri);/如果越界则跨越左右半屏显示 else /左半屏显示 for(i=0;i 64-L;i+)LCD_Write_Data(ri);/右半屏显示 CS1=0;CS2=1;LCD_Write_Command(LCD_PAGE+P);LCD_Write_Command(LCD_COL);for(i=64-L;i W;i+)LCD_Write_Data(ri);/全部显示在右半屏 else CS1=0;CS2=1;LCD_Write_Command(LCD_PAGE+P);LCD_Writ

28、e_Command(LCD_COL+L-64);for(i=0;i W;i+)LCD_Write_Data(ri);/-/显示一个 8 16点阵字符/-void Display_A_Char(INT8U P,INT8U L,INT8U*M)Common_Show(P,L,8,M);Common_Show(P+1,L,8,M+8);/-/显示一串 8x16 点阵字符/-void Display_A_Char_String(INT8U P,INT8U L,INT8U C,INT8U*M)INT8U i;for(i=0;i C;i+)Display_A_Char(P,L+i*8,M+i*16);/m

29、ain.c/-/名称:LGM12864(KS0108)液晶显示程序/-/说明:开机时系统从 EPROM 2764 中读取画面并显示到 12864LCD /-#include#include#include#define INT8U unsigned char#define INT16U unsigned int#define keyport P1/12864LCD 相关函数 void LCD_Initialize();void Display_A_Char(INT8U,INT8U,INT8U*);void Display_A_Char_String(INT8U,INT8U,INT8U,INT8

30、U*);/void Display_A_WORD(INT8U,INT8U,INT8U*);/void Display_A_WORD_String(INT8U,INT8U,INT8U,INT8U*);/void Display_Image(INT8U,INT8U,INT8U,INT8U,INT8U*);INT8U code Char_1=/*-文字:1-*/*-宋体 12;此字体下对应的点阵为:宽 x 高=8x16-*/0 x00,0 x10,0 x10,0 xF8,0 x00,0 x00,0 x00,0 x00,0 x00,0 x20,0 x20,0 x3F,0 x20,0 x20,0 x00

31、,0 x00,;INT8U code Char_2=/*-文字:2-*/*-宋体 12;此字体下对应的点阵为:宽 x 高=8x16-*/0 x00,0 x70,0 x08,0 x08,0 x08,0 x88,0 x70,0 x00,0 x00,0 x30,0 x28,0 x24,0 x22,0 x21,0 x30,0 x00,;INT8U code Char_3=/*-文字:3-*/*-宋体 12;此字体下对应的点阵为:宽 x 高=8x16-*/0 x00,0 x30,0 x08,0 x88,0 x88,0 x48,0 x30,0 x00,0 x00,0 x18,0 x20,0 x20,0 x

32、20,0 x11,0 x0E,0 x00,;INT8U code Char_4=/*-文字:4-*/*-宋体 12;此字体下对应的点阵为:宽 x 高=8x16-*/0 x00,0 x00,0 xC0,0 x20,0 x10,0 xF8,0 x00,0 x00,0 x00,0 x07,0 x04,0 x24,0 x24,0 x3F,0 x24,0 x00,;INT8U code Char_5=/*-文字:5-*/*-宋体 12;此字体下对应的点阵为:宽 x 高=8x16-*/0 x00,0 xF8,0 x08,0 x88,0 x88,0 x08,0 x08,0 x00,0 x00,0 x19,0

33、 x21,0 x20,0 x20,0 x11,0 x0E,0 x00,;INT8U code Char_6=/*-文字:6-*/*-宋体 12;此字体下对应的点阵为:宽 x 高=8x16-*/0 x00,0 xE0,0 x10,0 x88,0 x88,0 x18,0 x00,0 x00,0 x00,0 x0F,0 x11,0 x20,0 x20,0 x11,0 x0E,0 x00,;INT8U code Char_7=/*-文字:7-*/*-宋体 12;此字体下对应的点阵为:宽 x 高=8x16-*/0 x00,0 x38,0 x08,0 x08,0 xC8,0 x38,0 x08,0 x00,0 x00,0 x00,0 x00,0 x3F,0 x00,0 x00,0 x00,0 x00,;INT8U code Char_8=/*-文字:8-*/*-宋体 12;此字体下对应的点阵为:宽 x

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1