标题:
16x64-M2点阵屏完整资料包(含单片机源码与电路)
[打印本页]
作者:
深夜小怪侠
时间:
2018-4-26 17:28
标题:
16x64-M2点阵屏完整资料包(含单片机源码与电路)
16*64点阵完整资料包
电路原理图如下:
0.jpg
(85.31 KB, 下载次数: 41)
下载附件
2018-4-27 01:29 上传
注意事项:
1、提供的电源要插在扩展板的电源接口
2、下载程序用USB线通过stc-isp软件下载程序
3、提供2个测试程序,不做其他技术支持
4、由于版权问题,keil编程软件现在不提供,请自己百度下载,抱歉
5、发货收到的货,我们内置了程序,直接插上电源会有现象,一般烧写的是全亮的现象,请记住线是怎么接的,以免回头拆了忘记了
0.jpg
(40.39 KB, 下载次数: 36)
下载附件
2018-4-27 01:27 上传
单片机源程序如下:
/*-----------------------------------------------
名称:IO口高低电平控制
修改:无
内容:点亮P1口的1个LED灯闪烁
该程序是单片机学习中最简单最基础的,
通过程序了解如何控制端口的高低电平
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,
//头文件包含特殊功能寄存器的定义
sfr AUXR = 0x8e;
sfr P3M1=0xB1;
sfr P3M0=0xB2;
sfr P1M1=0x91;
sfr P1M0=0x92;
sbit KEY = P3^2;
sbit T_STR = P3^7; //锁存引脚,一般标识位STR
sbit T_IO = P1^4; //数据引脚,屏上标识R1或者G1
sbit T_CLK = P3^6; //时钟引脚,标识位CLK
sbit T_OE = P3^5;
unsigned char MoveBitNum,MoveBitNumtemp,IncNum;//移动位数,临时移动位数,大于一个字节增加字节数
unsigned int HzNum;//汉字个数
unsigned char buff[10];
/*-----------------------------------------------
16x16汉字取模数据
------------------------------------------------*/
unsigned char code hztest[]= //取模选择字节倒序 ,正序得出的字是反的,可以在软件中设置自动倒叙
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //前面一屏大小的空字符,不显示,这里根据屏的大小修改,这个是4个汉字屏
//所以写入4个汉字
…………
…………
…………限于本文篇幅 余下代码请从51黑下载附件…………
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
/*-----------------------------------------------
向595写入一个字节
------------------------------------------------*/
void InputByte(unsigned char dat) //写一个字节
{
unsigned char i;
for(i=0;i<8;i++)
{
T_IO=!(dat&0x01);
dat>>=1;
T_CLK=0;
T_CLK=1;
}
}
/*-----------------------------------------------
延时程序
------------------------------------------------*/
void Delay(unsigned int t)
{
while(--t);
}
/*------------------------------------------------
主函数
------------------------------------------------*/
void main (void)
{
unsigned char count;//16行扫描数据,范围0-15
unsigned int i, j;
unsigned char temp;
P3M0=0xff;//推挽
P1M0=0xff;
P3M1=0;
P1M1=0;
AUXR |= 0x80; //1T
//AUXR &= 0x7f; //12T
while (1) //主循环
{
i++;
if(i==100)//更改流动速度,1T单片机和12T单片机速度大约5-8倍,注意更改参数
{
i=0;
MoveBitNum++;
if(MoveBitNum==16)//每次移动完一个汉字大小后循环
{
MoveBitNum=0;
HzNum+=32; //调用下一个汉字
if(HzNum>=800)//需要显示的汉字个数乘以32,包括前面的一屏空字符的个数,后面清屏的空字符不包含在内,这里是(汉字个数+4)x32
HzNum=0; //完全显示完后循环调用
}
}
Delay(1);//控制扫描频率
T_OE =0;
for(j=0;j<5;j++) //取每个汉字的前2个字节,4个汉字组成一行,数据传输完成后锁存输出即可,这里需要多取出一个汉字作为缓冲
{ //原来j=4,现在j=5.
buff[2*j]=hztest[HzNum+j*32+count*2]; //每次移动完一个汉字后,选择下一个汉字
buff[2*j+1]=hztest[HzNum+j*32+count*2+1];
}
if(MoveBitNum<8) // 判读移动距离是大于一个字节还是小于一个字节,因为一个字节左移右移最大只能8位
{ IncNum=0; MoveBitNumtemp=MoveBitNum; }
else
{ IncNum=1; MoveBitNumtemp=MoveBitNum-8;}//大于8就减去8得到的数值还是小于8
T_STR=0; //锁存无效
for(j=0;j<8;j++) //按bit的方式移动缓冲区的内容,然后输出到595,即取出的数值每个字节左移一定的位数,
{ //后面左移出的数据整合到前面的字节中,保持数据的连续性
temp=(buff[j+IncNum]>>MoveBitNumtemp)|(buff[j+1+IncNum]<<(8-MoveBitNumtemp));//这句比较重要,需要自行拿出2个字节的数据模拟分析
InputByte(temp);//输出到595
}//8个字节传输完锁存输出
P1=count;//用P1口的前4位控制16行,屏内部通过4-16译码器工作,循环扫描16行
T_STR=1; //锁存有效,此时一行的数据显示到屏上
T_OE =1;
count++;
if(count==16)
count=0;
}
}
复制代码
所有资料51hei提供下载:
16x64-M2点阵屏资料.rar
(1.02 MB, 下载次数: 94)
2018-4-27 01:29 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
wzyfang
时间:
2018-5-10 15:50
用一下 课设需要 谢谢楼主
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1