显示器件驱动技术实验报告Word文档下载推荐.docx
- 文档编号:18896544
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:19
- 大小:25.94KB
显示器件驱动技术实验报告Word文档下载推荐.docx
《显示器件驱动技术实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《显示器件驱动技术实验报告Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
//输出电压从最小值到0(正弦波1/4部分)
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c,0x1e,0x20,
0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x72,
0x76,0x79,0x7c,0x80};
/******************************************************************/
/*作用:
向TLC5615写入数据*/
voidwrite_5615(uintdat)//向TLC5615写数子函数
uchari;
dat<
<
=6;
//因为是10位的DA里有个16位的移位寄存器,所以dat默认为10位,所以要向左移6位,左对齐
cs=0;
sck=0;
for(i=0;
i<
12;
i++)//实际有12位数据,有效数据10位,后两位不重,要看资料
{
di=(bit)(dat&
0x8000);
//开始一位一位的送数据
sck=1;
dat<
=1;
//送完一位我们移进一位
sck=0;
}
cs=1;
voidmain()
{
while
(1)
write_5615(sin_tab[j]/3);
delay
(1);
j++;
if(j>
255)
j=0;
实验3
1、用Verilog语言编程实现任意一个基本门电路(与、或、非等等)并仿真;
2、设计一个多数表决电路,要求:
(1)当输入A、B、C、D有三个或三个以上为
1时输出F为1,输入其他状态时输出为0.用Verilog语言编程实现该电路
并仿真;
3、24进制加法计数器的VerilogHDL描述,并用quartusII仿真;
4、16、18、19分频。
1、与门电路
2、多数表决电路
3、24进制加法计数器quartusII仿真
4、19分频
1、用Verilog语言编程实现与门电路
moduleand1(
inputa,b,
outputout
);
assignout=a&
b;
endmodule
modulecount24(clk,clr,td,qq1,qq2);
inputclk,clr;
outputtd;
output[3:
0]qq1,qq2;
wire[3:
regtds;
regc1,c2;
reg[3:
0]qq11,qq22;
always@(posedgeclk)
begin
if(clr==0)beginqq11<
=0;
qq22<
tds<
end
elseif(clr)
beginqq11<
=qq11+1;
//低位jia1
if(qq11==9)//如果低位jiadao9
beginqq22<
=qq22+1;
qq11<
end//高位jia1
elseqq22<
=qq22;
end
if((qq11==3)&
&
(qq22==2))
begintds<
qq11<
qq22<
end//如果低4位为3,而且高4位也为2,tds=1
end
assignqq1=qq11;
assignqq2=qq22;
assigntd=tds;
4、16分频
moduleshiliu(clk,clk_16);
inputclk;
outputclk_16;
0]cnt;
wireclk_16;
always@(posedgeclk)
begincnt<
=cnt+1;
assignclk_16=cnt[3];
Endmodule
18分频
moduleshiba(clk,reset,clk_18);
inputclk,reset;
outputclk_18;
reg[7:
regclk_18;
always@(posedgeclk)
if(!
reset)
begin
clk_18<
cnt<
else
if(cnt==8)
=~clk_18;
19分频
modulediv19(clk,clk19,clk19_j,clk19_o);
outputclk19,clk19_j,clk19_o;
regclk19_j,clk19_o;
reg[4:
0]state1,state2;
wireclk19;
always@(posedgeclk)
case(state1)
5'
b00000:
beginclk19_j=0;
state1=state1+1;
b00001:
b00010:
b00011:
b00100:
b00101:
b00110:
b00111:
b01000:
b01001:
beginclk19_j=1;
b01010:
b01011:
b01100:
b01101:
b01110:
b01111:
b10000:
b10001:
b10010:
state1=0;
default:
endcase
always@(negedgeclk)
case(state2)
beginclk19_o=0;
state2=state2+1;
beginclk19_o=1;
state2=0;
assignclk19=clk19_j&
clk19_o;
实验4
1、使用两位拨码开关实现8个流水灯速度调节(实现4种速度或4种花样);
2、0-999计时(通过调整数码管位选的占空比来使得数码管亮度降低一些)。
2、源程序
1、流水灯速度调节
moduleliushuideng(data_in,led_out,mainclk);
inputmainclk;
input[1:
0]data_in;
output[7:
0]led_out;
reg[24:
0]cont;
reg[2:
0]state;
regcont1;
always@(posedgemainclk)
cont<
=cont+1;
always@(data_in[0]ordata_in[1])
case(data_in)
2'
b00:
cont1=cont[21];
b01:
cont1=cont[22];
b10:
cont1=cont[23];
b11:
cont1=cont[24];
always@(posedgecont1)
state<
=state+1;
always@(state)
case(state)
3'
b000:
led_out=8'
b10000000;
b001:
b01000000;
b010:
b00100000;
b011:
b00010000;
b100:
b00001000;
b101:
b00000100;
b110:
b00000010;
b111:
b00000001;
2、0-999计时
实验5
1、滚动显示两根横柱子;
2、滚动显示一根竖柱子。
1、两根横柱子
modulehz_16(mclk,rst,AB,CLK,RCK,SRCK,DATA);
inputmclk,rst;
outputAB,CLK,RCK,SRCK,DATA;
reg[3:
0]InitState;
//初始化时状态机参数;
reg[2:
0]state_164;
//刷新164时状态机参数;
0]init_cnt;
//初始化时使用,控制595芯片输出16列的高电平,确保SRCK拉低拉高16次;
0]cnt_164;
//控制164芯片依次输出16根横柱子,确保CLK拉低拉高16次;
regAB,DATA,RCK,SRCK,CLK;
reg[26:
0]delay_cnt;
//初始化595时的延时计数器;
0]delay_cnt1;
//控制164的延时计数器;
reg[20:
0]clk_cnt;
//分频计数器;
wireclk_595,clk_164;
always@(posedgemclk)
clk_cnt=clk_cnt+1;
assignclk_595=clk_cnt[10];
//595时钟;
assignclk_164=clk_cnt[10];
//164时钟;
//初始化595
always@(posedgeclk_595ornegedgerst)
begin
if(!
rst)beginInitState=0;
DATA=0;
delay_cnt=0;
init_cnt=0;
end//上电复位时,初始化第一步
//595输出16列初始化为0;
else
case(InitState)
0:
beginSRCK=0;
InitState=InitState+1;
1:
beginSRCK=1;
2:
beginRCK=0;
3:
beginRCK=1;
4:
if(delay_cnt==10000)//延时,显示第一个横柱;
begindelay_cnt=0;
elsedelay_cnt=delay_cnt+1;
5:
DATA=1;
end//初始化第二步:
SRCK=0
6:
init_cnt=init_cnt+1;
end//第三步:
SRCK=1;
7:
8:
9:
10:
if(init_cnt==15)
beginInitState=0;
elseInitState=5;
//第二步和第三步重复16次,确保595初始化;
default:
InitState=0;
endcase
end
//164初始化:
always@(posedgeclk_164ornegedgerst)
if(!
rst)begindelay_cnt1=0;
state_164=0;
cnt_164=0;
AB=0;
//写一个0进去:
点亮一行
case(state_164)
0:
beginCLK=0;
state_164=state_164+1;
1:
beginCLK=1;
cnt_164=cnt_164+1;
end//CLK拉低拉高一次,将0写入移位寄存器164
if(cnt_164==15)
begincnt_164=0;
state_164=3;
elsestate_164=0;
state_164=state_164;
state_164=0;
endmodule
2、竖柱子
moduleshuzhu(mainclk,rst,DATA,SRCK,RCK,AB,CLK);
inputmainclk,rst;
outputDATA,SRCK,RCK,AB,CLK;
0]count;
wireclk_24;
reg[4:
0]cnt_164,cnt_595;
reg[14:
0]delay_164;
reg[13:
0]delay_595;
regSRCK,RCK,DATA,CLK;
always@(posedgemainclk)
count=count+1;
assignclk_24=count[10];
assignAB=0;
always@(posedgeclk_24ornegedgerst)
if(!
rst)
state=0;
cnt_595=0;
case(state)
0:
state=state+1;
1:
2:
if(cnt_164>
=15)
beginstate=3;
beginstate=0;
cnt_164=cnt_164+1;
3:
if(delay_164<
5000)
begindelay_164=delay_164+1;
beginstate=state+1;
delay_164=0;
4:
beginDATA=0;
5:
beginSRCK=0;
6:
beginSRCK=1;
7:
beginDATA=1;
8:
if(delay_595<
begindelay_595=delay_595+1;
delay_595=0;
9:
if(cnt_595>
=14)
beginstate=10;
beginstate=5;
cnt_595=cnt_595+1;
10:
beginRCK=0;
11:
beginRCK=1;
state=0;
实验6
V
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 显示 器件 驱动 技术 实验 报告