用矩阵键盘在数码管上输出十六进制和十进制数 一.如题,要用矩阵键盘在数码管上显示十六进制数和十进制数,肯定要用到键盘输入和数码管,顶层可以这样搭建:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5CFB.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D0C.tmp.jpg
顶层包含Keyboard(键盘输入模块)和smg(数码管模块)两个子模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1D.tmp.jpg
以上信号为顶层的输入和输出。
二.接下来看键盘输入模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1E.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1F.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D20.tmp.jpg
按照电路顺序为:
1.scankey(键盘扫描模块)→2.key_xd(键盘消抖模块)→3.key_reg(数据寄存模块)
1.scankey(键盘扫描模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D21.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D31.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D32.tmp.jpg
键盘扫描模块又分两个子模块a. key_switch(进制切换模块)和b. scan(扫描模块).
a. Key_switch(进制切换模块)
我们输入的是两种进制,所以在输入的时候要有一个选择,作为我们输入进制的标志,我们在这里用板子上四位按键之中的S4按键作为我们的switch输入,控制输入进制状态state,为了便于观察,我外接了一盏LED灯(pio_led),亮的时候表示输入十进制,灭的时候表示输入十六进制。
b. Scan(扫描模块)
矩阵键盘的扫描,用FPGA向键盘发送扫描列电平col,与FPGA从键盘接收过来的行电平row,以及我们的进制状态state组成扫描码scancode={state,col[3:0],row[3:0]},用一个case语句,把我们的按键扫描出来。
注意:我的程序由外部键盘输入的十六进制数是8421码
十进制输入的直接是BCD码!
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D43.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D44.tmp.jpg
2.key_xd(键盘消抖模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D54.tmp.jpg
消抖模块大概思路:
先对键盘连续输出的N个数字进行取值,在进行判断,如果这连续的N个数值相同,则为真实输出,否则为抖动,在每一次按键按下且有真实输出的情况下,我们将keynum_vld拉高为高电平,知道按键放开再将为低电平,我们认为这是一次有效输出。
3.key_reg(数据寄存器模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D55.tmp.jpg
我们以keynum_vld(按键输出脉冲信号)为基准,向寄存器中写入数据。
上面三个步骤即为键盘输入模块的思路。下面我们来探讨数码管模块的思路。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D56.tmp.jpg
三.数码管模块
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D67.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D68.tmp.jpg
数码管模块分为:
1.smg_light(数码管亮灭控制模块)→2.smg_display(数码管显示模块)。
1.smg_light(数码管亮灭控制模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D69.tmp.jpg
思路:
从最高位开始,从第一个不是零的开始点亮数码管。用到一个csaex语句。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7A.tmp.jpg
2.smg_display(数码管显示模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7B.tmp.jpg
一共六个数码管(3’b000~3’b101)分分别对应数码管十万,万,千,百,十,个位。再把我们在上一模块的数码管点亮使能信号与六个数码管一一对照,如图file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7C.tmp.jpg
再扫入数码管即可:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8C.tmp.jpgfile:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8D.tmp.jpg
用矩阵键盘在数码管上输出十六进制和十进制数
一.如题,要用矩阵键盘在数码管上显示十六进制数和十进制数,肯定要用到键盘输入和数码管,顶层可以这样搭建:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5CFB.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D0C.tmp.jpg
顶层包含Keyboard(键盘输入模块)和smg(数码管模块)两个子模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1D.tmp.jpg
以上信号为顶层的输入和输出。
二.接下来看键盘输入模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1E.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1F.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D20.tmp.jpg
按照电路顺序为:
1.scankey(键盘扫描模块)→2.key_xd(键盘消抖模块)→3.key_reg(数据寄存模块)
1.scankey(键盘扫描模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D21.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D31.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D32.tmp.jpg
键盘扫描模块又分两个子模块a. key_switch(进制切换模块)和b. scan(扫描模块).
a. Key_switch(进制切换模块)
我们输入的是两种进制,所以在输入的时候要有一个选择,作为我们输入进制的标志,我们在这里用板子上四位按键之中的S4按键作为我们的switch输入,控制输入进制状态state,为了便于观察,我外接了一盏LED灯(pio_led),亮的时候表示输入十进制,灭的时候表示输入十六进制。
b. Scan(扫描模块)
矩阵键盘的扫描,用FPGA向键盘发送扫描列电平col,与FPGA从键盘接收过来的行电平row,以及我们的进制状态state组成扫描码scancode={state,col[3:0],row[3:0]},用一个case语句,把我们的按键扫描出来。
注意:我的程序由外部键盘输入的十六进制数是8421码
十进制输入的直接是BCD码!
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D43.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D44.tmp.jpg
2.key_xd(键盘消抖模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D54.tmp.jpg
消抖模块大概思路:
先对键盘连续输出的N个数字进行取值,在进行判断,如果这连续的N个数值相同,则为真实输出,否则为抖动,在每一次按键按下且有真实输出的情况下,我们将keynum_vld拉高为高电平,知道按键放开再将为低电平,我们认为这是一次有效输出。
3.key_reg(数据寄存器模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D55.tmp.jpg
我们以keynum_vld(按键输出脉冲信号)为基准,向寄存器中写入数据。
上面三个步骤即为键盘输入模块的思路。下面我们来探讨数码管模块的思路。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D56.tmp.jpg
三.数码管模块
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D67.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D68.tmp.jpg
数码管模块分为:
1.smg_light(数码管亮灭控制模块)→2.smg_display(数码管显示模块)。
1.smg_light(数码管亮灭控制模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D69.tmp.jpg
思路:
从最高位开始,从第一个不是零的开始点亮数码管。用到一个csaex语句。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7A.tmp.jpg
2.smg_display(数码管显示模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7B.tmp.jpg
一共六个数码管(3’b000~3’b101)分分别对应数码管十万,万,千,百,十,个位。再把我们在上一模块的数码管点亮使能信号与六个数码管一一对照,如图file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7C.tmp.jpg
再扫入数码管即可:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8C.tmp.jpgfile:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8D.tmp.jpg
用矩阵键盘在数码管上输出十六进制和十进制数
一.如题,要用矩阵键盘在数码管上显示十六进制数和十进制数,肯定要用到键盘输入和数码管,顶层可以这样搭建:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5CFB.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D0C.tmp.jpg
顶层包含Keyboard(键盘输入模块)和smg(数码管模块)两个子模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1D.tmp.jpg
以上信号为顶层的输入和输出。
二.接下来看键盘输入模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1E.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1F.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D20.tmp.jpg
按照电路顺序为:
1.scankey(键盘扫描模块)→2.key_xd(键盘消抖模块)→3.key_reg(数据寄存模块)
1.scankey(键盘扫描模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D21.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D31.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D32.tmp.jpg
键盘扫描模块又分两个子模块a. key_switch(进制切换模块)和b. scan(扫描模块).
a. Key_switch(进制切换模块)
我们输入的是两种进制,所以在输入的时候要有一个选择,作为我们输入进制的标志,我们在这里用板子上四位按键之中的S4按键作为我们的switch输入,控制输入进制状态state,为了便于观察,我外接了一盏LED灯(pio_led),亮的时候表示输入十进制,灭的时候表示输入十六进制。
b. Scan(扫描模块)
矩阵键盘的扫描,用FPGA向键盘发送扫描列电平col,与FPGA从键盘接收过来的行电平row,以及我们的进制状态state组成扫描码scancode={state,col[3:0],row[3:0]},用一个case语句,把我们的按键扫描出来。
注意:我的程序由外部键盘输入的十六进制数是8421码
十进制输入的直接是BCD码!
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D43.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D44.tmp.jpg
2.key_xd(键盘消抖模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D54.tmp.jpg
消抖模块大概思路:
先对键盘连续输出的N个数字进行取值,在进行判断,如果这连续的N个数值相同,则为真实输出,否则为抖动,在每一次按键按下且有真实输出的情况下,我们将keynum_vld拉高为高电平,知道按键放开再将为低电平,我们认为这是一次有效输出。
3.key_reg(数据寄存器模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D55.tmp.jpg
我们以keynum_vld(按键输出脉冲信号)为基准,向寄存器中写入数据。
上面三个步骤即为键盘输入模块的思路。下面我们来探讨数码管模块的思路。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D56.tmp.jpg
三.数码管模块
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D67.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D68.tmp.jpg
数码管模块分为:
1.smg_light(数码管亮灭控制模块)→2.smg_display(数码管显示模块)。
1.smg_light(数码管亮灭控制模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D69.tmp.jpg
思路:
从最高位开始,从第一个不是零的开始点亮数码管。用到一个csaex语句。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7A.tmp.jpg
2.smg_display(数码管显示模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7B.tmp.jpg
一共六个数码管(3’b000~3’b101)分分别对应数码管十万,万,千,百,十,个位。再把我们在上一模块的数码管点亮使能信号与六个数码管一一对照,如图file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7C.tmp.jpg
再扫入数码管即可:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8C.tmp.jpgfile:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8D.tmp.jpg
用矩阵键盘在数码管上输出十六进制和十进制数
一.如题,要用矩阵键盘在数码管上显示十六进制数和十进制数,肯定要用到键盘输入和数码管,顶层可以这样搭建:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5CFB.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D0C.tmp.jpg
顶层包含Keyboard(键盘输入模块)和smg(数码管模块)两个子模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1D.tmp.jpg
以上信号为顶层的输入和输出。
二.接下来看键盘输入模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1E.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1F.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D20.tmp.jpg
按照电路顺序为:
1.scankey(键盘扫描模块)→2.key_xd(键盘消抖模块)→3.key_reg(数据寄存模块)
1.scankey(键盘扫描模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D21.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D31.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D32.tmp.jpg
键盘扫描模块又分两个子模块a. key_switch(进制切换模块)和b. scan(扫描模块).
a. Key_switch(进制切换模块)
我们输入的是两种进制,所以在输入的时候要有一个选择,作为我们输入进制的标志,我们在这里用板子上四位按键之中的S4按键作为我们的switch输入,控制输入进制状态state,为了便于观察,我外接了一盏LED灯(pio_led),亮的时候表示输入十进制,灭的时候表示输入十六进制。
b. Scan(扫描模块)
矩阵键盘的扫描,用FPGA向键盘发送扫描列电平col,与FPGA从键盘接收过来的行电平row,以及我们的进制状态state组成扫描码scancode={state,col[3:0],row[3:0]},用一个case语句,把我们的按键扫描出来。
注意:我的程序由外部键盘输入的十六进制数是8421码
十进制输入的直接是BCD码!
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D43.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D44.tmp.jpg
2.key_xd(键盘消抖模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D54.tmp.jpg
消抖模块大概思路:
先对键盘连续输出的N个数字进行取值,在进行判断,如果这连续的N个数值相同,则为真实输出,否则为抖动,在每一次按键按下且有真实输出的情况下,我们将keynum_vld拉高为高电平,知道按键放开再将为低电平,我们认为这是一次有效输出。
3.key_reg(数据寄存器模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D55.tmp.jpg
我们以keynum_vld(按键输出脉冲信号)为基准,向寄存器中写入数据。
上面三个步骤即为键盘输入模块的思路。下面我们来探讨数码管模块的思路。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D56.tmp.jpg
三.数码管模块
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D67.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D68.tmp.jpg
数码管模块分为:
1.smg_light(数码管亮灭控制模块)→2.smg_display(数码管显示模块)。
1.smg_light(数码管亮灭控制模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D69.tmp.jpg
思路:
从最高位开始,从第一个不是零的开始点亮数码管。用到一个csaex语句。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7A.tmp.jpg
2.smg_display(数码管显示模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7B.tmp.jpg
一共六个数码管(3’b000~3’b101)分分别对应数码管十万,万,千,百,十,个位。再把我们在上一模块的数码管点亮使能信号与六个数码管一一对照,如图file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7C.tmp.jpg
再扫入数码管即可:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8C.tmp.jpgfile:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8D.tmp.jpg
用矩阵键盘在数码管上输出十六进制和十进制数
一.如题,要用矩阵键盘在数码管上显示十六进制数和十进制数,肯定要用到键盘输入和数码管,顶层可以这样搭建:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5CFB.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D0C.tmp.jpg
顶层包含Keyboard(键盘输入模块)和smg(数码管模块)两个子模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1D.tmp.jpg
以上信号为顶层的输入和输出。
二.接下来看键盘输入模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1E.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1F.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D20.tmp.jpg
按照电路顺序为:
1.scankey(键盘扫描模块)→2.key_xd(键盘消抖模块)→3.key_reg(数据寄存模块)
1.scankey(键盘扫描模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D21.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D31.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D32.tmp.jpg
键盘扫描模块又分两个子模块a. key_switch(进制切换模块)和b. scan(扫描模块).
a. Key_switch(进制切换模块)
我们输入的是两种进制,所以在输入的时候要有一个选择,作为我们输入进制的标志,我们在这里用板子上四位按键之中的S4按键作为我们的switch输入,控制输入进制状态state,为了便于观察,我外接了一盏LED灯(pio_led),亮的时候表示输入十进制,灭的时候表示输入十六进制。
b. Scan(扫描模块)
矩阵键盘的扫描,用FPGA向键盘发送扫描列电平col,与FPGA从键盘接收过来的行电平row,以及我们的进制状态state组成扫描码scancode={state,col[3:0],row[3:0]},用一个case语句,把我们的按键扫描出来。
注意:我的程序由外部键盘输入的十六进制数是8421码
十进制输入的直接是BCD码!
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D43.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D44.tmp.jpg
2.key_xd(键盘消抖模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D54.tmp.jpg
消抖模块大概思路:
先对键盘连续输出的N个数字进行取值,在进行判断,如果这连续的N个数值相同,则为真实输出,否则为抖动,在每一次按键按下且有真实输出的情况下,我们将keynum_vld拉高为高电平,知道按键放开再将为低电平,我们认为这是一次有效输出。
3.key_reg(数据寄存器模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D55.tmp.jpg
我们以keynum_vld(按键输出脉冲信号)为基准,向寄存器中写入数据。
上面三个步骤即为键盘输入模块的思路。下面我们来探讨数码管模块的思路。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D56.tmp.jpg
三.数码管模块
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D67.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D68.tmp.jpg
数码管模块分为:
1.smg_light(数码管亮灭控制模块)→2.smg_display(数码管显示模块)。
1.smg_light(数码管亮灭控制模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D69.tmp.jpg
思路:
从最高位开始,从第一个不是零的开始点亮数码管。用到一个csaex语句。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7A.tmp.jpg
2.smg_display(数码管显示模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7B.tmp.jpg
一共六个数码管(3’b000~3’b101)分分别对应数码管十万,万,千,百,十,个位。再把我们在上一模块的数码管点亮使能信号与六个数码管一一对照,如图file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7C.tmp.jpg
再扫入数码管即可:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8C.tmp.jpgfile:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8D.tmp.jpg
用矩阵键盘在数码管上输出十六进制和十进制数
一.如题,要用矩阵键盘在数码管上显示十六进制数和十进制数,肯定要用到键盘输入和数码管,顶层可以这样搭建:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5CFB.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D0C.tmp.jpg
顶层包含Keyboard(键盘输入模块)和smg(数码管模块)两个子模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1D.tmp.jpg
以上信号为顶层的输入和输出。
二.接下来看键盘输入模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1E.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1F.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D20.tmp.jpg
按照电路顺序为:
1.scankey(键盘扫描模块)→2.key_xd(键盘消抖模块)→3.key_reg(数据寄存模块)
1.scankey(键盘扫描模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D21.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D31.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D32.tmp.jpg
键盘扫描模块又分两个子模块a. key_switch(进制切换模块)和b. scan(扫描模块).
a. Key_switch(进制切换模块)
我们输入的是两种进制,所以在输入的时候要有一个选择,作为我们输入进制的标志,我们在这里用板子上四位按键之中的S4按键作为我们的switch输入,控制输入进制状态state,为了便于观察,我外接了一盏LED灯(pio_led),亮的时候表示输入十进制,灭的时候表示输入十六进制。
b. Scan(扫描模块)
矩阵键盘的扫描,用FPGA向键盘发送扫描列电平col,与FPGA从键盘接收过来的行电平row,以及我们的进制状态state组成扫描码scancode={state,col[3:0],row[3:0]},用一个case语句,把我们的按键扫描出来。
注意:我的程序由外部键盘输入的十六进制数是8421码
十进制输入的直接是BCD码!
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D43.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D44.tmp.jpg
2.key_xd(键盘消抖模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D54.tmp.jpg
消抖模块大概思路:
先对键盘连续输出的N个数字进行取值,在进行判断,如果这连续的N个数值相同,则为真实输出,否则为抖动,在每一次按键按下且有真实输出的情况下,我们将keynum_vld拉高为高电平,知道按键放开再将为低电平,我们认为这是一次有效输出。
3.key_reg(数据寄存器模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D55.tmp.jpg
我们以keynum_vld(按键输出脉冲信号)为基准,向寄存器中写入数据。
上面三个步骤即为键盘输入模块的思路。下面我们来探讨数码管模块的思路。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D56.tmp.jpg
三.数码管模块
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D67.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D68.tmp.jpg
数码管模块分为:
1.smg_light(数码管亮灭控制模块)→2.smg_display(数码管显示模块)。
1.smg_light(数码管亮灭控制模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D69.tmp.jpg
思路:
从最高位开始,从第一个不是零的开始点亮数码管。用到一个csaex语句。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7A.tmp.jpg
2.smg_display(数码管显示模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7B.tmp.jpg
一共六个数码管(3’b000~3’b101)分分别对应数码管十万,万,千,百,十,个位。再把我们在上一模块的数码管点亮使能信号与六个数码管一一对照,如图file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7C.tmp.jpg
再扫入数码管即可:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8C.tmp.jpgfile:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8D.tmp.jpg
用矩阵键盘在数码管上输出十六进制和十进制数
一.如题,要用矩阵键盘在数码管上显示十六进制数和十进制数,肯定要用到键盘输入和数码管,顶层可以这样搭建:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5CFB.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D0C.tmp.jpg
顶层包含Keyboard(键盘输入模块)和smg(数码管模块)两个子模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1D.tmp.jpg
以上信号为顶层的输入和输出。
二.接下来看键盘输入模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1E.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1F.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D20.tmp.jpg
按照电路顺序为:
1.scankey(键盘扫描模块)→2.key_xd(键盘消抖模块)→3.key_reg(数据寄存模块)
1.scankey(键盘扫描模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D21.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D31.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D32.tmp.jpg
键盘扫描模块又分两个子模块a. key_switch(进制切换模块)和b. scan(扫描模块).
a. Key_switch(进制切换模块)
我们输入的是两种进制,所以在输入的时候要有一个选择,作为我们输入进制的标志,我们在这里用板子上四位按键之中的S4按键作为我们的switch输入,控制输入进制状态state,为了便于观察,我外接了一盏LED灯(pio_led),亮的时候表示输入十进制,灭的时候表示输入十六进制。
b. Scan(扫描模块)
矩阵键盘的扫描,用FPGA向键盘发送扫描列电平col,与FPGA从键盘接收过来的行电平row,以及我们的进制状态state组成扫描码scancode={state,col[3:0],row[3:0]},用一个case语句,把我们的按键扫描出来。
注意:我的程序由外部键盘输入的十六进制数是8421码
十进制输入的直接是BCD码!
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D43.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D44.tmp.jpg
2.key_xd(键盘消抖模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D54.tmp.jpg
消抖模块大概思路:
先对键盘连续输出的N个数字进行取值,在进行判断,如果这连续的N个数值相同,则为真实输出,否则为抖动,在每一次按键按下且有真实输出的情况下,我们将keynum_vld拉高为高电平,知道按键放开再将为低电平,我们认为这是一次有效输出。
3.key_reg(数据寄存器模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D55.tmp.jpg
我们以keynum_vld(按键输出脉冲信号)为基准,向寄存器中写入数据。
上面三个步骤即为键盘输入模块的思路。下面我们来探讨数码管模块的思路。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D56.tmp.jpg
三.数码管模块
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D67.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D68.tmp.jpg
数码管模块分为:
1.smg_light(数码管亮灭控制模块)→2.smg_display(数码管显示模块)。
1.smg_light(数码管亮灭控制模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D69.tmp.jpg
思路:
从最高位开始,从第一个不是零的开始点亮数码管。用到一个csaex语句。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7A.tmp.jpg
2.smg_display(数码管显示模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7B.tmp.jpg
一共六个数码管(3’b000~3’b101)分分别对应数码管十万,万,千,百,十,个位。再把我们在上一模块的数码管点亮使能信号与六个数码管一一对照,如图file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7C.tmp.jpg
再扫入数码管即可:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8C.tmp.jpgfile:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8D.tmp.jpg
|