#include <REG51H>
#include <intrinsh>
#define NOP() _nop_() // 定义空指令 ,这个函数在库 <intrinsh> 中
//--重定义函数变量--//
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
//--定义SPI要使用的 IO--//
sbit MOSIO = P3^4;
sbit R_CLK = P3^5;
sbit S_CLK = P3^6;
//---全局变量声明--//
ulong column; //点阵列
ulong row; //点阵行
ulong dt;
//点阵显示数组
uchar code tab0[] = {0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80,
0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00};
//你的字,这个只是举例
//uchar code tab1[] = {
//0X0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF,
//0X0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF};
//函数声明
void HC595SendData( uchar BT3, uchar BT2,uchar BT1,uchar BT0);
void delay(unsigned short s)
{
for(s;s>0;s--);
}
/主函数/
void main(void)
{
int k, i, ms;
i = 80; //显示时间
while(1)
{
delay(1000);
HC595SendData(0xff,0xff,0,0);
for(ms = i; ms > 0; ms--)
{
for(k = 0; k < 16; k++)
{
//输出字
HC595SendData(~tab1[2k +1],~tab1[2k],tab0[2k],tab0[2k + 1]);
}
}
}
}
/
函 数 名 : HC595SendData
函数功能 : 通过595发送四个字节的数据
输 入 : BT3:第四个595输出数值
BT2: 第三个595输出数值
BT1:第二个595输出数值
BT0:第一个595输出数值
输 出 : 无
/
void HC595SendData( uchar BT3, uchar BT2,uchar BT1,uchar BT0)
{
uchar i;
//--发送第一个字节--//
for(i=0;i<8;i++)
{
MOSIO = BT3 >> 7 ; //从高位到低位
BT3 <<= 1;
S_CLK = 0;
S_CLK = 1;
}
//--发送第一个字节--//
for(i=0;i<8;i++)
{
MOSIO = BT2 >>7; //从高位到低位
BT2 <<= 1;
S_CLK = 0;
S_CLK = 1;
}
//--发送第一个字节--//
for(i=0;i<8;i++)
{
MOSIO = BT1 >> 7; //从高位到低位
BT1 <<= 1;
S_CLK = 0;
S_CLK = 1;
}
//--发送第一个字节--//
for(i=0;i<8;i++)
{
MOSIO = BT0 >> 7; //从高位到低位
BT0 <<= 1;
S_CLK = 0;
S_CLK = 1;
}
//--输出--//
R_CLK = 0; //set dataline low
R_CLK = 1; //片选
}
//--------------------------------------------------------------------------
//记录字模
void __fastcall TFrmHanLib::SaveFontBuf()
{
TColor dd;
char ps[MAX_BUF_SIZE];
memset(Font_array,0,sizeof(Font_array));
for(int i=0;i<size;i++)
{
memset(ps,0,sizeof(ps));
for(int j=0;j<size;j++)
{
dd = img1->Canvas->Pixels[j][i];
if(dd != clWhite) //保存非底色的点
Font_array[i][j/8] |= char(0x80 >> (j%8));
}
}
}
//---------------------------------------------------------------------------
//输出字模显示
void __fastcall TFrmHanLib::OutFontBuf()
{
AnsiString ps;
char ch;
TColor dd;
img2->Picture = NULL;
for(int i=0;i<size;i++)
{
for(int j=0;j<size/8;j++)
{
ch=Font_array[i][j];
for( int m=0;m<8;m++)
{
if(((ch>>(7-m))&1))
{
img2->Canvas->Pixels[j8 +m][i] =cbb3->SelectedColor;
}
}
}
}
}
参考这个代码。
以上就是关于急急急。。。跪求16x16点阵模块显示汉字的C语言程序全部的内容,包括:急急急。。。跪求16x16点阵模块显示汉字的C语言程序、急!C语言编写 汉字点阵字库、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)