汉字滚动显示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字系统课程设计<汉字滚动显示>
学生姓名:班级学号:指导老师:
实验5
一.实验名称:汉字滚动显示
二.实验学时:9学时
三.实验目的
1、深入了解Verilog HDL语言语法
2、学会独立思考、设计及实现较大规模的数字电路系统
四.实验内容
1.用8×8点阵显示屏滚动显示至少4个汉字;
2.可以用拨码开关控制左、右滚动显示。
五.实验仪器
1.PC机
2.数字系统设计实验开发板
六.实验分析
汉字滚动显示原理为依次对多汉字抽取像素信息,并按序排队存放于ROM之中,便可得到一个待显示数据序列。进一步通过寻址的方法来控制该数据序列的释放过程,就可实现在8×8 LED 发光二极管点阵上滚动显示多汉字信息的目的。下图给出的就是实现滚动显示多汉字信息的原理示意图。
由图可知,某一时刻能在显示数据序列中定位待显示数据的地址指针可用下式计算:addr=n+m。显然,n的取值范围应为0~N,并由它控制汉字显示的滚动速度;m的取值范围应为0~7,并由它决定LED点阵的开关的扫描速度。因此,控制n扫遍全部待显示数据的时间,可调节汉字信息的滚动速度;改变m的重复扫描周期,可改善在LED点阵上显示完整汉字信息的稳定性。由此可见,要实现汉字向左滚动,则汉字信息定位指针依次加1,如果实现汉字向右滚动,则依次减1。
七、实验步骤
1.根据实验要求作预习。
2.建立工程,设计程序:
1)新建工程;
2)新建verilog HDL文件(注:文件名和模块名称要和工程名保持一致)。
3)调试程序:见实验附录
3. 配置管脚:
参照实验指导中的管脚图,配置管脚。
4.下载到开发板,观察实验结果(见实验结果),尝试创造自己的实验方案。
八、实验结果
显示“天天开心”
显示“四”
九、实验附录
module hzgd(clk,R,C,k); input clk,k;//k 左右滚动控制output C,R; //C -1,R - 0 亮reg tick,tick0;
reg [30:0]j;
reg [32:0]i;
reg [0:7]R;
reg [0:7]C;
reg [4:0]a;
reg [3:0]b;
reg [0:7]c[0:7];//ROM
reg [0:7]r[0:31];//ROM
//分频
always @(posedge clk) begin
i<=i+1;
if(i==3999999)
begin
tick<=~tick;
i<=0;
end
end
always@(posedge clk) begin
if (j==999)
begin
tick0<=~tick0;
j<=0;
end
else
j<=j+1;
end
always @(posedge tick)
begin
if(k)
begin
if(a==24)
a<=0;
else
a<=a+1;//向左滚动
end
else
begin
if(a==0)
a<=24;
else
a<=a-1;//向右滚动
end
end
always@(posedge tick0)//存储器循环begin
case(b)
0:begin R<=r[a+0];C<=c[0]; end 1:begin R<=r[a+1];C<=c[1]; end 2:begin R<=r[a+2];C<=c[2]; end 3:begin R<=r[a+3];C<=c[3]; end 4:begin R<=r[a+4];C<=c[4]; end 5:begin R<=r[a+5];C<=c[5]; end
6:begin R<=r[a+6];C<=c[6]; end
7:begin R<=r[a+7];C<=c[7]; end endcase
b<=b+1;
if(b==7)
b<=0;
end
always @(posedge clk)
begin
//显示天
c[0]<=8'b10000000;r[0]<=8'b11011101; c[1]<=8'b01000000;r[1]<=8'b01011011; c[2]<=8'b00100000;r[2]<=8'b01010111; c[3]<=8'b00010000;r[3]<=8'b00001111; c[4]<=8'b00001000;r[4]<=8'b01010111; c[5]<=8'b00000100;r[5]<=8'b01011011; c[6]<=8'b00000010;r[6]<=8'b11011101; c[7]<=8'b00000001;r[7]<=8'b11111110; //显示天
c[0]<=8'b10000000; r[8]<=8'b11011101; c[1]<=8'b01000000; r[9]<=8'b01011011; c[2]<=8'b00100000;r[10]<=8'b01010111; c[3]<=8'b00010000;r[11]<=8'b00001111; c[4]<=8'b00001000;r[12]<=8'b01010111; c[5]<=8'b00000100;r[13]<=8'b01011011;