村网通总站 姬家寨村 455496.nync.com 欢迎您!
一《姬家寨村电子科技研究所51单片机LED点阵操作1》:
https://v.qq.com/x/page/f0700c8w6gn.html?__t=1&ptag=1.qzone&_out=101
二《姬家寨村电子科技研究所51单片机LED点阵操作2》:
https://v.qq.com/x/page/m0700qz9a9k.html?__t=1&ptag=1.qzone&_out=101
////////////////////////////////////////////////////////////////////////////
// 给力者单片机开发学习系统,开发学习都给力! //
////////////////////////////////////////////////////////////////////////////
// 学习51单片机,其实可以很简单 //
////////////////////////////////////////////////////////////////////////////
// 宁波芯动电子有限公司 www.MovingChip.com //
////////////////////////////////////////////////////////////////////////////
#include <AT89X52.h> //调用51单片机的头文件
//---------------------------------------
//"宁波芯动电子有限公司"10个字的字形表的上半屏,供显示时查询
unsigned char code han1[]=
{ //定义表格一定要使用code,这样会做到程序存储区中
/*-- 文字: 因为移动汉字,所以首尾都填充一些0 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
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,
/*-- 文字: 宁 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x09,0x31,0x21,0x21,0x21,0xA1,0x61,0x21,0x21,0x21,0x21,0x29,0x71,0x20,0x00,
/*-- 文字: 波 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x08,0x06,0x80,0x67,0x00,0x1F,0x11,0x11,0x11,0xFF,0x11,0x11,0x11,0x18,0x10,0x00,
/*-- 文字: 芯 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x20,0x20,0x20,0x21,0xF8,0x24,0x23,0x21,0x20,0xF8,0x21,0x20,0x20,0x20,0x00,
/*-- 文字: 动 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x04,0x24,0x24,0x27,0x24,0x24,0x24,0x04,0x08,0x08,0xFF,0x08,0x08,0x0F,0x00,0x00,
/*-- 文字: 电 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x1F,0x12,0x12,0x12,0x12,0xFF,0x12,0x12,0x12,0x12,0x1F,0x00,0x00,0x00,
/*-- 文字: 子 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x47,0x48,0x50,0x60,0x40,0x00,0x01,0x00,0x00,
/*-- 文字: 有 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x20,0x21,0x22,0x27,0x2C,0x34,0xE4,0x24,0x24,0x24,0x27,0x20,0x20,0x20,0x00,
/*-- 文字: 限 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x7F,0x40,0x4C,0x72,0x41,0x00,0x7F,0x52,0x53,0x52,0x52,0x52,0x7E,0x00,0x00,0x00,
/*-- 文字: 公 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x01,0x02,0x0C,0x70,0x21,0x00,0x00,0x70,0x08,0x06,0x03,0x01,0x01,0x00,
/*-- 文字: 司 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x08,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x48,0x40,0x40,0x7F,0x00,0x00,
/*-- 文字: 因为移动汉字,所以首尾都填充一些0 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
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,
};
//---------------------------------------
//"宁波芯动电子有限公司"10个字的字形表的下半屏,供显示时查询
unsigned char code han2[]=
{ //定义表格一定要使用code,这样会做到程序存储区中
/*-- 文字: 因为移动汉字,所以首尾都填充一些0 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
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,
/*-- 文字: 宁 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0x00,0x02,0x01,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 波 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x20,0xFF,0x02,0x0C,0xF1,0x01,0x82,0x64,0x18,0x18,0x64,0x86,0x03,0x02,0x00,
/*-- 文字: 芯 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x08,0x70,0x00,0x00,0xFC,0x02,0x02,0x02,0xC2,0x02,0x02,0x1E,0x84,0x70,0x20,0x00,
/*-- 文字: 动 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x38,0xD0,0x10,0x30,0xA0,0x72,0x24,0x08,0x30,0xC0,0x04,0x02,0xFC,0x00,0x00,
/*-- 文字: 电 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xF0,0x20,0x20,0x20,0x20,0xFC,0x22,0x22,0x22,0x22,0xF2,0x02,0x0E,0x00,
/*-- 文字: 子 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x80,0x80,0x80,0x80,0x80,0x82,0x81,0xFE,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,
/*-- 文字: 有 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x40,0x80,0x00,0x00,0xFF,0x90,0x90,0x90,0x94,0x92,0x93,0xFE,0x00,0x00,0x00,0x00,
/*-- 文字: 限 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0xFF,0x00,0x40,0x20,0xC0,0x00,0xFF,0x02,0x04,0xC0,0x30,0x48,0x84,0x06,0x04,0x00,
/*-- 文字: 公 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x80,0x04,0x0E,0x14,0x24,0xC4,0x8C,0x08,0x08,0x28,0x1E,0x0C,0x80,0x00,0x00,
/*-- 文字: 司 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0xF0,0x00,0x04,0x02,0xFC,0x00,0x00,
/*-- 文字: 因为移动汉字,所以首尾都填充一些0 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
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,
};
//---------------------------------------
//LED点阵屏相关I/O设置
sbit U15E3=P1^3; //LED点阵屏单元的U15(74HC138)的使能端E3脚接在P1.3口上
sbit U14E3=P1^4; //LED点阵屏单元的U14(74HC138)的使能端E3脚接在P1.4口上
//---------------------------------------
//---------------------------------------
//LED点阵屏寄存器设置
unsigned char m=15; //设置8位的unsigend char型寄存器用来做汉字显示的索引
unsigned char n; //设置8位的unsigend char型寄存器用来做延时用
unsigned char w; //设置8位的unsigend char型寄存器用来做延时用
unsigned char v; //设置8位的unsigend char型寄存器用来做移动索引
//---------------------------------------
//---------------------------------------
//名称: 主函数
//适用:给力者GL9单片机开发学习系统
//公司:宁波芯动电子有限公司
//网址:www.MovingChip.com
//日期:20120914
//---------------------------------------
void main(void) //主函数,单片机开机后就是从这个函数开始运行
{
while(1) //死循环,单片机初始化后,将一直运行这个死循环
{
for(n=0;n<80;n++); //做一个0-80的循环,不执行其他操作,只为延时
if(++w>220) //再嵌套一个延时,每220个扫描周期将汉字左移一格
{
w=0; //清零,以准备下一个延时
if(++v>176) v=0;//移动索引,限定在0-176
}
if(++m>15) m=0; //每调用一次函数将m加1,并限制在0-15以内
P1=0; //将LED点阵屏的列控制信号全部清零,准备重置
P0=han1[m+v]; //LED点阵屏的上半屏,按m+v索引查表han1送P0
P2=han2[m+v]; //LED点阵屏的下半屏,按m+v索引查表han2送P2
P1|=m&0x07; //将索引m的低3位送给P1的低3位,以使74HC138去片选
if(m<8) U15E3=1; //前8列需要使能U15(74HC138)
else U14E3=1; //后8列需要使能U14(74HC138)
}
}