基于51单片机的16×16点阵屏流动显示单片机课程设计说明

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

主程序
buff[j+j+1]=hztest[HzNum+j][count+count+1];
}
if(MoveBitNum<8)
// 判读移动距离是大于一个字节还是小于一个字节,为一
个字节左移右移最大只能8位
{ IncNum=0; MoveBitNumtemp=MoveBitNum; }
else
{ IncNum=1; MoveBitNumtemp=MoveBitNum-8;}//大于8就减去8得到的数值还 是小于8
MoveBitNumtemp));//这句比较重要,需要自行拿出2个字节的数据模拟分析

InputByte(temp);//输出到595

}//8个字节传输完锁存输出
OE = 1;
主程序
P0=15-count;//用P0口的前4位控制16行,屏内部通过4-16译码器工作,循环扫描16行
T_STR=1; //锁存有效,此时一行的数据显示到屏上
1.通过P0口控制a,b,c,d; 2. 通过2个74HC138控制行的选取; 3.通过74HC595自动选取列;
原理图
返回
四,具体的程序实现
#include<reg52.h> sbit T_STR = P2^6; //锁存引脚,屏上标识位STR sbit R1 = P0^4; //数据引脚,屏上标识R1 sbit G1 = P2^4; //数据引脚,屏上标识G1 sbit T_CLK = P2^5; //时钟引脚,屏上标识位CLK sbit OE = P2^1; //使能引脚,屏上标识EN/OE unsigned char MoveBitNum,MoveBitNumtemp,IncNum;//移动位数,临时移动位数,大于 一个字节增加字节数
{
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,
1.74HC138芯片简介; 2.74HC595芯片简介; 3.点阵原理图讲解;
1. 74HC138芯片
74HC138译码器可接受3位二进制加权地址输入(A0, A1和A2), 并当使能时,提供8个互斥的低有效输出(Y0至Y7)。74HC138特 有3个使能输入端:两个低有效(E1和E2)和一个高有效(E3)。 除非E1和E2置低且E3置高,否则74HC138将保持所有输出为高。 利用这种复合使能特性,仅需4片74HC138芯片和1个反相器,即可 轻松实现并行扩展,组合成为一个1-32(5线到32线)译码器。任 选一个低有效使能输入端作为数据输入,而把其余的使能输入端作 为选通端,则74HC138亦可充当一个8输出多路分配器,未使用的 使能输入端必须保持绑定在各自合适的高有效或低有效状态。
0x08,0x00,0x08,0x3F,0x08,0x20,0x08,0x10,0x3F,0x08,0x24,0x04,0x24,0x04,0xA4,0x7F, 0x24,0x04,0x12,0x04,0x14,0x04,0x08,0x04,0x14,0x04,0x22,0x04,0x21,0x05,0x00,0x02,
T_STR=0; //锁存无效
主程序
for(j=0;j<2;j++)
//按bit的方式移动缓冲区的内容,然后输出到595,即取出的数值
每个字节左移一定的位数,

{
连续性
//后面左移出的数据整合到前面的字节中,保持数据的

temp=(buff[j+IncNum]>>MoveBitNumtemp)|(buff[j+1+IncNum]<<(8-
输入要输出的字
0x10,0x01,0x10,0x01,0x10,0x01,0x88,0x7F,0x88,0x40,0x4C,0x20,0x2C,0x04,0x0A,0x0 4, 0x89,0x14,0x88,0x24,0x48,0x24,0x48,0x44,0x28,0x44,0x08,0x04,0x08,0x05,0x08,0x02,

HzNum=0; //完全显示完后循环调用
}
}百度文库
Delay(2);//控制扫描频率
for(j=0;j<2;j++) //取每个汉字的前2个字节,

{
//汉字个数+1
buff[j+j]=hztest[HzNum+j][count+count]; //每次移动完一个汉字后,选择下一个汉字
OE = 0;
count++;
if(count==16)
{ count=0;
}
返回
}
五,演示

返回
总结
通过这次的设计,我明白了点阵的工作原理, 对单片机以及其他外部器件有了更深的理解, 对市场上的元器件价格有了了解,也对各式各 样的点阵广告牌等电子显示屏的工作原理有了 更深的认识
知识回顾 Knowledge Review
基于51单片机的16×16点阵屏流动显示
一 ,制作所需器材 二,STC89C52简介 三,点阵的简介 四,程序 五,演示 六,总结
目录
一. 制作所需器材
1.单片机开发扳一块; 2.16*16LED点阵一块; 3.杜邦线若干;
返回
二.STC89C52简介
STC89C52是STC公司生产的一种低功耗、高性能 CMOS8位微控制器,具有 8K 在系统可编程Flash存储 器。STC89C52使用经典的MCS-51内核,但做了很多 的改进使得芯片具有传统51单片机不具备的功能。在 单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash, 使得STC89C52为众多嵌入式控制应用系统提供高灵 活、超有效的解决方案。
单片机实物图与引脚图
返回
三、点阵的简介
LED点阵屏通过LED(发光二极管)组成,以灯 珠亮灭来显示文字、图片、动画、视频等,是 各部分组件都模块化的显示器件,通常由显示 模块、控制系统及电源系统组成。
1. 点阵的用处
汽车报站器、广告屏以及公告牌等。
2,点阵的实物图
点阵实物图组成
3,点阵的原理图简介
74HC138芯片
2. 74HC595芯片
74HC595具有8位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存 储器有相互独立的时钟。
数据在SH_cp(移位寄存器时钟输入)的上升沿输入到移位寄存器中,在 ST_cp(存储器时钟输入)的上升沿输入到存储寄存器中去。如果两个时钟连 在一起,则移位寄存器总是比存储寄存器早一个脉冲。
定义所需变量
unsigned char MoveBitNum,MoveBitNumtemp,IncNum;//移动位数,临时移动位数,大于 一个字节增加字节数 unsigned int HzNum;//汉字个数
unsigned char buff[20];
unsigned char code hztest[][32]= //取模选择字节倒序 ,正序得出的字是反的,可以在 软件中设置自动倒叙
主程序
{ i=0; MoveBitNum++; if(MoveBitNum==16)//每次移动完一个汉字大小后循环
{ MoveBitNum=0; HzNum+=1; //调用下一个汉字 if(HzNum>=6)//需要显示的汉字个数,包括前面的一屏空字符的个数,后面清屏
主程序
的空字符不包含在内,这里是(汉字个数+1) 必须为>=;
移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异 步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使 能OE时(为低电平),存储寄存器的数据输出到总线。
8位串行输入/输出或者并行输出移位寄存器,具有高阻关断状态。三态。
74HC595芯片
3. 电路电阵原理图讲解
向595写入一个字节
void InputByte( unsigned char DataR1) //写一个字节 { unsigned char i; for(i=8; i>0; i--) { R1 = !(DataR1&0x01); T_CLK = 0; T_CLK = 1; DataR1 = DataR1 >> 1; }
void Delay(unsigned int t) { while(--t); }
延时程序
主程序
main() { unsigned char count;//16行扫描数据,范围0-15 unsigned int i, j; unsigned char temp; while(1) { i++; if(i==100)//更改流动速度,1T单片机和12T单片机速度大约5-8倍,注意更改参数(越小越快)
相关文档
最新文档