- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
`timescale 1ns / 1ps
module iicmax(
????????????clk,rst_n,
????????????sw1,sw2,sw3,sw4,
????????????scl,sda,
????????????leddata,ledcom
????????);
?????????
input clk;????? // 50MHz
input rst_n;??? //复位信号,低有效
input sw1,sw2,sw3,sw4;? //按键,(1按下执行写入操作,2按下执行读操作,3按下执行连写操作,4按下执行连读操作)
output scl;???? // 24C08的时钟端口
inout sda;????? // 24C08的数据端口
?
output [7:0] ledcom;??? //数码管片选信号,低有效
output [7:0] leddata;?? //7段数码管(不包括小数点)
?
?
wire[7:0] tansdata;???? //传送的数据
wire[2:0] ackflag;????? //标志
?
iiccom????? iiccom(
????????????????????.clk(clk),
????????????????????.rst_n(rst_n),
????????????????????.sw1(sw1),
????????????????????.sw2(sw2),
????????????????????.sw3(sw3),
????????????????????.sw4(sw4),
????????????????????.sda(sda),
????????????????????.scl(scl),
????????????????????.ackflag(ackflag),
????????????????????.outdata(tansdata)
??????????????????);
ledshow???? ledshow(
????????????????.clk(clk),
????????????????.rst_n(rst_n),
????????????????.ackflag(ackflag),
????????????????.ledcom(ledcom),
????????????????.leddata(leddata),
????????????????.indata(tansdata)??
????????????????);
?????
?????????
?
endmodule??????
font face=Verdana IICCOM 模块/font
`timescale 1ns / 1ps
module iiccom(
????????????clk,rst_n,
????????????sw1,sw2,sw3,sw4,
????????????scl,sda,
????????????ackflag,
????????????outdata
????????);
?
input clk;????? // 50MHz
input rst_n;??? //复位信号,低有效
input sw1,sw2,sw3,sw4;? //按键,(1按下执行写入操作,2按下执行读操作,3按下执行连写操作,4按下执行连读操作)
output scl;???? // 24C08的时钟端口
output [2:0]ackflag;//后面显示接收到数据的标准
inout sda;????? // 24C08的数据端口
output [7:0] outdata;?? //数码管显示的数据
?
//
????????//按键检测
reg sw1_r,sw2_r,sw3_r,sw4_r;??? //键值锁存寄存器,每20ms检测一次键值
reg[19:0] cnt_20ms; //20ms计数寄存器
?
always @ (posedge clk or negedge rst_n)
????if(!rst_n) cnt_20ms = 20d0;
????else?if(cnt_20ms == 20hfffff) cnt_20ms = 20h0;
????else?cnt_20ms = cnt_20ms+1b1;? //不断计数
?
always @ (posedge clk or negedge rst_n)
????if(!rst_n) begin
????????????sw1_r = 1b1;?? //键值寄存器复位,没有键盘按下时键值都为1
????????????sw2_r = 1b1;
??????????
文档评论(0)