单片机点阵显示汉字c语言流动,求教普中板子16×16点阵显示流动6个汉字程序

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

刚学,基本看不懂

希望改成显示6个汉字的

#include

#include

#define uchar unsigned char

sbit SCK=P3^6;

sbit LCK=P3^5;

sbit SDI=P3^4;

//一共有16行,每次刷一行的代码

uchar code NUM_HANG[]={};

//数字1的字码

uchar code NUM_ONE[]={};

//汉字“昊”的字码

uchar code CH_CHAR_PU[]={};

void HC595_Send(uchar dat1,uchar dat0,uchar dat2,uchar dat3);

void main()

{

uchar i,j;

while(1)

{

for(j=255;j>0;j--) //一个字显示的次数,刷256次然后刷第二个字。

{

for(i=0;i<32;i=i+2)//一共有16行,所以刷16次

{

HC595_Send(~NUM_ONE[i],~NUM_ONE[i+1],NUM_HANG[i],NUM_HANG[i+1]);

}

}

HC595_Send(0xff,0xff,0x00,0x00);

for(j=255;j>0;j--)

{

for(i=0;i<32;i=i+2)

{

HC595_Send(~CH_CHAR_PU[i],~CH_CHAR_PU[i+1],NUM_HANG[i],NUM_HANG[i+1]);

}

}

HC595_Send(0xff,0xff,0x00,0x00);

}

}

void HC595_Send(uchar dat1,uchar dat0,uchar dat3,uchar dat2)

{

uchar i;

SCK=1;

LCK=1;

for(i=0;i<8;i++)

{

SDI=dat0&0x01;//从高位到低位

dat0>>=1;

SCK=0;

_nop_();

_nop_();

SCK=1;

_nop_();

_nop_();

}

for(i=0;i<8;i++)

{

SDI=dat1&0x01;//从高位到低位

dat1>>=1;

SCK=0;

_nop_();

_nop_();

SCK=1;

_nop_();

_nop_();

}

for(i=0;i<8;i++)

{

SDI=dat2&0x01;//从高位到低位

dat2>>=1;

SCK=0;

_nop_();

_nop_();

SCK=1;

_nop_();

_nop_();

}

for(i=0;i<8;i++)

{

SDI=dat3&0x01;//从高位到低位

dat3>>=1;

SCK=0;

_nop_();

_nop_();

SCK=1;

_nop_();

_nop_();

}

LCK=0;//下面是输出时钟

_nop_();

_nop_();

LCK=1;

_nop_();

_nop_();

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Quartus中显示16*16点阵汉字,可以参考以下步骤: 1. 首先,需要找到一个16*16点阵汉字库,可以在网上找到相关资源进行下载。 2. 在Quartus中创建一个新工程,选择适当的FPGA芯片。 3. 在工程中创建一个新的Verilog文件,并将汉字库数据存储在一个二维数组中,如下所示: ``` reg [15:0] font [0:127]; // 将点阵数据存储在二维数组中 initial begin // 这里假设汉字库数据存储在一个文件中,每个汉字包含16个字节 $readmemh("font.hex", font); end ``` 4. 创建一个显示模块,该模块可以从汉字库中检索所需的汉字数据,并将其输出到16*16点阵显示屏上。可以参考以下代实现: ``` module display( input clk, input [7:0] address, output reg [15:0] data ); reg [7:0] font_index; // 用于存储需要显示汉字的索引 reg [3:0] row; // 用于存储当前显示的行 reg [15:0] font_data; // 用于存储当前行的汉字数据 // 每个汉字包含16个字节,所以需要将地址右移4位 always @ (posedge clk) begin font_index <= address >> 4; font_data <= font[font_index]; end // 显示模块的主要逻辑 always @ (posedge clk) begin if (row < 16) begin // 将当前行的数据输出到显示屏上 data <= font_data[(row+1)*16-1 : row*16]; row <= row + 1; end else begin // 显示完一行后,将行数重置为0 row <= 0; end end endmodule ``` 5. 在Quartus中生成比特流文件,并将其下载到FPGA芯片中。连接16*16点阵显示屏到FPGA芯片上,并使用该显示模块来控制点阵屏的显示。 以上是一个简单的16*16点阵汉字显示的实现过程,具体实现可能还需要根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值