1、在16*16点阵上显示一个汉字
2、pctolcd2002软件的使用
3、在16*16点阵上显示一个汉字--程序编写
4、在16*16点阵上显示一个汉字--仿真演示
参考程序:
/****************************************
修改时间:2020年4月21日 17:19:20
功能:16*16LED点阵显示
目的:显示"安"
显示方式:列扫描方式
取模软件:PCtoLCD2002完美版
****************************************/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit datal595=P1^0; //列数据线
sbit datah595=P1^1; //行数据线
sbit clk595=P1^2; //数据输入时钟线
sbit str595=P1^3; //输出存储器锁存时钟线
sbit oe595=P1^4; //oe输出使能
//取模方式:阴码(0为亮,阴码1为亮)、逐列式、逆向、十六进制、C51格式自定义 (使用Pctolcd2002软件)
uchar code displaydata[]= //在ROM中定义一个可变长度数组,供用户填充一定个数的字模
//可填充的最大字模数取决于您所选用的单片机ROM空间大小
{
0x00,0x00,
0x00,0x00,0x00,0x00,0xF8,0x01,0x0C,0x07,0x0C,0x0C,0x0C,0x18,0x1C,0x30,0x18,0x30,
0x08,0x18,0x08,0x08,0x0C,0x0C,0x0C,0x06,0xF8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,/*"未命名文件",0*/
};/*"哈"*/
/*----------------------------------
函数名字: senddata
形式参数: 无字符整型 datah:行的数据
无字符整型 datal:列的数据
函数功能: 把数据发送给芯片74HC595
返回值 : 无
------------------------------------*/
void senddata(uint datah,uint datal) //向行和列的4个595同时发送数据,显示其中的一列数据
{
uchar i=0;
uint m,n;
oe595=0; //使能OE拉低,存储寄存器的数据输出到总线
str595=0; //输出存储器锁存时钟线
for(;i<16;i++) //行和列各有两片595驱动,所以行和列分别需要连续送两个字节数据
{
clk595=0; //数据输入时钟线
m=datah; //行为高电平驱动
n=~datal; //列为低电平驱动
m&=0x8000;
n&=0x8000; //得到数据的最高位
datah595=(bit)m; //在每个clk周期,同时送出行和列的1bit串行数据
datal595=(bit)n;
datah<<=1;
datal<<=1; //左移
clk595=1;
}
str595=1; //一列数据送完,锁存到输出端进行显示
str595=0;
}
/*----------------------------------
函数名字: horizontal
形式参数: 无符号字符型 指针 p:字符显示数据的首地址
函数功能: 显示字符
返回值 : 无
------------------------------------*/
void dispaly(uchar *p) //显示子程序
{
uint datah,datal; //datah是行数据,datal是列选通
uchar x;
uint j,k;
for(x=0;x<16;x++) //发送一整屏数据,16个16位
{
p=p+3; //受到取模软件的限制,需要对字模表的数据进行重新排列
j=(uint)*p;
j<<=8; //16位中的高字节数据
j&=0xff00; //低字节清零
p=p-1;
k=(uint)*p; //16位中的低字节数据
k&=0x00ff; //高字节清零
datah=j|k; //二者拼接,形成一个完整的16bit行数据
datal=0x0001<<x; //列选通位移到相应的列上进行选通
//datah=~datah; //去掉此行前面的注释则水平移动程反白显示
senddata(datah,datal); //将行和列数据发送出去进行一列的显示
}
oe595=0;
}
void main(void)
{
while(1)
{
dispaly(displaydata); //将字模表中的所有汉字进行水平移动counth
}
}

