根据51单片机的led点阵显示文档格式.docx
- 文档编号:17913780
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:14
- 大小:492.49KB
根据51单片机的led点阵显示文档格式.docx
《根据51单片机的led点阵显示文档格式.docx》由会员分享,可在线阅读,更多相关《根据51单片机的led点阵显示文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
AT89C52单片机内部的振荡电路是一个高增益反向放大器,引线XTAL1和XTAL2分别是放大器的输入端和输出端。
单片机内部虽然有振荡电路,但要形成时钟,外部还需附加电路。
AT89C52的时钟产生方式有两种:
内部时钟电方式和外部时钟方式。
由于外部时钟方式用于多片单片机组成的系统中,所以此处选用内部时钟方式。
内部时钟方式:
利用其内部的振荡电路在XTAL1和XTAL2引线上外接定时元件,内部振荡电路产生自激振荡。
最常用的是在XTAL1和XTAL2之间接晶体振荡器与电路构成稳定的自激振荡器,如图2-1电路所示为单片机最常用的时钟振荡电路的接法,其中晶振可选用振荡频率为6MHz的石英晶体,电容器一般选择30PF左右。
图2-1使用片内振荡电路的时钟电路
2单片机的复位电路
本设计中AT89C52是采用上电自动复位和按键复位两种方式。
最简单的复位电路如图2-2所示。
上电瞬间,RC电路充电,RST引线端出现正脉冲,只要RST端保持10ms以上的高电平,就能使单片机有效地复位。
其中R1和R2分别选择200Ω和1KΩ的电阻,电容器一般选择22μF。
图2-2AT89C52的复位电路
3AT89C52的最小应用系统
AT89C52是片内有程序存储器的单片机,要构成最小应用系统时只要将单片机接上外部的晶体或时钟电路和复位电路即可,如图2-3所示。
这样构成的最小系统简单可靠,其特点是没有外部扩展,有可供用户使用的大量的I∕O线。
图2-3AT89C52单片机构成的最小系统
2.3按键及接口设计
2.3.1独立式按键接口设计
本设计按键较少,采用独立式按键简单而方便。
独立式按键就是各键相互独立,每个按键各接一根输入线,一根输入线上的按键工作状态不会影响其它输入线上的工作状态。
因此,通过检测输入线的电平状态很容易判断哪个按键被按下了。
设计采用的是中断方式的独立式按键工作电路,按键直接与AT89C52的I/O口线相接,通过读I/O口,判定各I/O口线的电平状态,即可识别出按下的键。
独立式按键电路中,一般采用上拉电阻,这是为了保证在按键断开时,各I/O口线有确定的高电平。
而AT89C52芯片内已有上拉电阻,则外部的上拉电阻可以省去。
三、实现模块
1.单片机最小系统
2.按键及接口
3.显示及接口
4.驱动电路
5.电源电路
8×
8点阵LED显示器的组成原理及控制方式
本次设计中采用8×
8点阵LED显示器,简称LED点阵板或LED矩阵板。
它是以发光二极管为像素,按照行与列的顺序排列起来,用集成工艺制成的显示器件。
有单色和双色之分,这种显示器有共阳极接法和共阴极接法两种,设计中用到的是共阳极的显示器。
共阳极接法的原理图如图2-4所示,图中画出了8×
8点阵的二极管。
每一行发光二极管的阳极接在一起,有一个引出端r,每一列发光二极管的阴极接在一起,有一个引出端c。
当给发光二极管阳极引出端r1加高电平,阴极引出端c1加低电平时,左上角的二极管被点亮因此,对于行和列的电平进行扫描控制时,可以达到显示不同汉字的目的。
图2-48×
8点阵LED显示器组成原理图
图2-58×
8点阵LED引脚的排列图
电路图如下所示:
四、程序
/*
必要操作:
正确连接点阵到学习板
*/
#include<
AT89X52.H>
//包含头文件
unsignedcharmode0,mode1,mode2,mode3,mode4;
//显示模式
sbitk1=P2^7;
sbitk2=P2^6;
sbitk3=P2^5;
sbitk4=P2^4;
sbitk5=P2^0;
unsignedcharxin1[8]={
0x0,0x0,0x0,0x6C,0x92,0x44,0x28,0x10
};
//心形1
unsignedcharbxin1[8]={
0x0,0x0,0x0,0x6C,0x82,0x0,0x28,0x10
//半心形1
unsignedcharxin2[8]={
0x0,0x36,0x49,0x22,0x14,0x8,0x0,0x0
//心形2
unsignedcharbxin2[8]={
0x0,0x36,0x41,0x0,0x14,0x8,0x0,0x0
//半心形2
unsignedcharxin[8]={
0x0,0x36,0x41,0x6E,0x96,0x4C,0x28,0x10
//双心形2
unsignedcharzimu0[8]={
0x38,0x24,0x22,0x22,0x22,0x22,0x24,0x38
//D
unsignedcharzimu1[8]={
0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x3C
//I
unsignedcharzimu2[8]={
0x1E,0x20,0x40,0x40,0x4E,0x42,0x22,0x1E
//G
unsignedcharzimu3[8]={
unsignedcharzimu4[8]={
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3E
//L
unsignedcharzimu5[8]={
0x7E,0x40,0x40,0x7E,0x7E,0x40,0x40,0x7E
//E
unsignedcharzimu6[8]={
0x0,0x42,0x62,0x52,0x4A,0x46,0x42,0x0
//N
unsignedcharzimu7[8]={
0xFF,0x18,0x18,0x18,0x18,0x18,0x18,0x18
//T
unsignedcharname0[8]={
0xE9,0x2A,0xEC,0x9F,0xE8,0x2C,0x6A,0x29
//张
unsignedcharname1[8]={
0x42,0x24,0x7E,0x0,0x3C,0x0,0xFF,0x0
//兰
unsignedcharname2[8]={
0x26,0x74,0x25,0xFE,0x56,0x55,0x56,0x94
//郝
unsignedcharai0[8]={
unsignedcharai1[8]={
0x0,0x66,0xFF,0xFF,0x7E,0x3C,0x18,0x0
//实心
unsignedcharai2[8]={
0x0,0x66,0x99,0x81,0x42,0x24,0x18,0x0
//空心
unsignedcharai3[8]={
0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x3C
//U
unsignedcharxie0[8]={
0x0,0x3E,0x8,0x8,0x8,0x8,0x8,0x0
unsignedcharxie1[8]={
0x0,0x24,0x24,0x24,0x3C,0x24,0x24,0x24
//H
unsignedcharxie2[8]={
0x0,0x8,0x14,0x3E,0x41,0x41,0x0,0x0
//A
unsignedcharxie3[8]={
0x0,0x0,0x22,0x26,0x2A,0x32,0x22,0x0
unsignedcharxie4[8]={
0x22,0x24,0x28,0x30,0x28,0x24,0x22,0x0
//K
unsignedcharxie5[8]={
0x1C,0x22,0x20,0x10,0xC,0x2,0x22,0x1C
//S
voiddelay()//延时函数
{
unsignedintc;
c=300;
while(c--){}
}
voidmain(void)//主函数
unsignedinti,j,k,m;
k1=1;
k2=1;
k3=1;
k4=1;
k5=1;
m=10;
mode0=0;
for(k=0;
k<
8;
k++)
{
for(j=0;
j<
30;
j++)//调节字母变化速度
for(i=0;
i<
i++)//点阵8列动态扫描法显示,每次扫描一列并发送数据码
{
if(mode0==0)//模式0-3分别对应4种表情,根据模式选择表情所对应的显示码
P0=zimu0[i];
if(mode0==1)
P0=zimu1[i];
if(mode0==2)
P0=zimu2[i];
if(mode0==3)
P0=zimu3[i];
if(mode0==4)
P0=zimu4[i];
if(mode0==5)
P0=zimu5[i];
if(mode0==6)
P0=zimu6[i];
if(mode0==7)
P0=zimu7[i];
P1=~(1<
<
i);
//扫描该列
delay();
//延时
}
mode0++;
if(mode0>
7)
mode0=0;
}
P0=0;
//P0口各脚输出高电平,点阵不显示
while
(1)
{
mode1=0;
mode2=0;
mode3=0;
mode4=0;
if(k5==0)
//delay(5);
if(k4==0)//消抖
m=m+30;
if(m>
100)
m=10;
while(!
k5);
//松手检测
while(k1==0)//图形1
m;
j++)//调节表情变化速度
if(mode1==0)//模式0-3分别对应4种表情,根据模式选择表情所对应的显示码
P0=bxin1[i];
if(mode1==1)
P0=xin1[i];
if(mode1==2)
P0=bxin2[i];
if(mode1==3)
P0=xin2[i];
if(mode1==4)
P0=xin[i];
mode1++;
if(mode1>
4)
mode1=0;
while(k2==0)//图形2
if(mode2==0)//模式0-3分别对应4种表情,根据模式选择表情所对应的显示码
P0=name0[i];
if(mode2==1)
P0=name1[i];
if(mode2==2)
P0=name2[i];
mode2++;
if(mode2>
2)
mode2=0;
while(k3==0)//图形3
if(mode3==0)//模式0-3分别对应4种表情,根据模式选择表情所对应的显示码
P0=ai0[i];
if(mode3==1)
P0=ai1[i];
if(mode3==2)
P0=ai2[i];
if(mode3==3)
P0=ai3[i];
mode3++;
if(mode3>
3)
mode3=0;
while(k4==0)//图形4
20;
if(mode4==0)//模式0-3分别对应4种表情,根据模式选择表情所对应的显示码
P0=xie0[i];
if(mode4==1)
P0=xie1[i];
if(mode4==2)
P0=xie2[i];
if(mode4==3)
P0=xie3[i];
if(mode4==4)
P0=xie4[i];
if(mode4==5)
P0=xie5[i];
mode4++;
if(mode4>
5)
mode4=0;
P0=0X00;
P1=0XFF;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 根据 51 单片机 led 点阵 显示