📄 dianzhen.c
字号:
#include"reg51.h"
#include"for51.h"
typedef char bool;
#define TURE 1
#define FALSE 0
#define Length 31 //点阵长度
uchar x, y;//x表示8块点阵中的哪一块,y表示选中点阵的哪一列
void SendData(uchar ddata);
bool DisplayPic(uchar start, uchar* pic, uchar num); //向74HC595发送数据
void Delayms(uint ticks);
//图片数据
/*-- 文字: 皇 --*/
/*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/
uchar code Pic[] = {
0x00,0x00,0x7E,0x7E,0x56,0x57,0x57,0x56,0x56,0x56,0x56,0x7E,0x7E,0x00,0x00,0x00,
0x60,0x63,0x6B,0x6B,0x6B,0x6B,0x6B,0x7F,0x7F,0x6B,0x6B,0x6B,0x6B,0x63,0x60,0x00,
};
void main(void) {
while(1) {
DisplayPic(8, Pic, 32);//显示pic1
Delayms(10);
}
}
/**************************************************
函数名称: 串行数据发送函数
参数含义: ddata - 字节显示数据
函数功能: 主机向从机发送一个字节串行数据
返 回 值: 无返回
**************************************************/
void SendData(uchar ddata) {
uchar count=0;
for(; count != 8; count++) {
SCK = 0;
if(ddata & 0x80)
MOSI=1; //发送数据
else
MOSI=0;
SCK = 1; //发送时钟
ddata <<= 1; //数据右移一位
}
SS = 0;
SS = 1; //锁存数据
SS = 0;
}
/**************************************************
函数名称: 延时函数
参数含义: 延长时间
函数功能: 延时
返 回 值: 无返回
**************************************************/
void Delayms(uint ticks) {
uchar i;
for(; ticks != 0; ticks--)
for(i = 100; i != 0; i--);
}
/**************************************************
函数名称: 图片显示函数
参数含义: start - 从哪一列开始显示
pic - 图片数据指针
num - 图片数组字节数
函数功能: 从某一列开始显示一副图片
返 回 值: bool类型,正确显示返回TURE,异常返回FALSE
**************************************************/
bool DisplayPic(uchar start, uchar* pic, uchar num) {
uchar i;
uchar tempx, tempy;
if((Length - 8 + 1) < (start/2))//如果显示长度不够图片显示则出现异常返回FALSE
return FALSE;
x = start / 8;//选中哪一块
y = start % 8;//选中那块的哪一列
for(i = 0; i < num; i++) {
if(i < num/2) {//先扫描上一排
tempx = x;
tempy = y;
}
else {//扫描下一排
tempx = x + 4;
tempy = y;
}
if(tempy != y && tempy % 8 == 0) {//当此块点阵扫描到最后一列,则换到下一块
tempx++;
tempy = 0;
}
P0 &= 0xf0;//第几块点阵译码器
P0 |= 1;//关总显示
SendData(pic[i]);//发送数据
P2 = tempy++;//第几列译码器数据
P0 = tempx << 1;//第几块译码器数据
P0 &= 0xfe;//开块译码器
Delayms(10);
}
return TURE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -