3232LED点阵屏的KeilC51程序基于STC12C5A60S28个大字.docx

上传人:b****3 文档编号:4326125 上传时间:2023-05-07 格式:DOCX 页数:17 大小:17.50KB
下载 相关 举报
3232LED点阵屏的KeilC51程序基于STC12C5A60S28个大字.docx_第1页
第1页 / 共17页
3232LED点阵屏的KeilC51程序基于STC12C5A60S28个大字.docx_第2页
第2页 / 共17页
3232LED点阵屏的KeilC51程序基于STC12C5A60S28个大字.docx_第3页
第3页 / 共17页
3232LED点阵屏的KeilC51程序基于STC12C5A60S28个大字.docx_第4页
第4页 / 共17页
3232LED点阵屏的KeilC51程序基于STC12C5A60S28个大字.docx_第5页
第5页 / 共17页
3232LED点阵屏的KeilC51程序基于STC12C5A60S28个大字.docx_第6页
第6页 / 共17页
3232LED点阵屏的KeilC51程序基于STC12C5A60S28个大字.docx_第7页
第7页 / 共17页
3232LED点阵屏的KeilC51程序基于STC12C5A60S28个大字.docx_第8页
第8页 / 共17页
3232LED点阵屏的KeilC51程序基于STC12C5A60S28个大字.docx_第9页
第9页 / 共17页
3232LED点阵屏的KeilC51程序基于STC12C5A60S28个大字.docx_第10页
第10页 / 共17页
3232LED点阵屏的KeilC51程序基于STC12C5A60S28个大字.docx_第11页
第11页 / 共17页
3232LED点阵屏的KeilC51程序基于STC12C5A60S28个大字.docx_第12页
第12页 / 共17页
3232LED点阵屏的KeilC51程序基于STC12C5A60S28个大字.docx_第13页
第13页 / 共17页
3232LED点阵屏的KeilC51程序基于STC12C5A60S28个大字.docx_第14页
第14页 / 共17页
3232LED点阵屏的KeilC51程序基于STC12C5A60S28个大字.docx_第15页
第15页 / 共17页
3232LED点阵屏的KeilC51程序基于STC12C5A60S28个大字.docx_第16页
第16页 / 共17页
3232LED点阵屏的KeilC51程序基于STC12C5A60S28个大字.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

3232LED点阵屏的KeilC51程序基于STC12C5A60S28个大字.docx

《3232LED点阵屏的KeilC51程序基于STC12C5A60S28个大字.docx》由会员分享,可在线阅读,更多相关《3232LED点阵屏的KeilC51程序基于STC12C5A60S28个大字.docx(17页珍藏版)》请在冰点文库上搜索。

3232LED点阵屏的KeilC51程序基于STC12C5A60S28个大字.docx

3232LED点阵屏的KeilC51程序基于STC12C5A60S28个大字

32*32LED点阵屏的KeilC51程序(基于STC12C5A60S2,8个大字)

很早之前写的一个8字单红色LED屏显示程序,程序环境为KeilCV3,用的单片机为STC的12C5A60S2,

图的是速度比一般51快,外接11.0592的晶振,完全不延时时可以带4块8字(32*32字)不闪烁。

这个是一个朋友要我给邮局做的显示屏控制程序,顺便发上来给大家做参考。

图片效果:

P0口外接拨码开关,控制显示地址,地址不同,显示内容不同。

//对应硬件接口

//74hc138的ABCD接P2口的0123

#defineLS138_PORTP2

//关键参数声明,4为LED最多能显示的32*32的汉字个数

#defineLED_SIZE4

sbitLS138_OE=P2^4;

sbitHC595_D0=P1^0;//上半部分串行数据输入,对应595的14脚SER

sbitHC595_D1=P1^1;//下半部分串行数据输入,对应595的14脚SER

sbitHC595_CLK=P2^6;//移位寄存器时钟输入,对应595的11脚SCK

sbitHC595_STCLK=P2^7;//存储寄存器时钟输入,对应595的12脚RCK

发送数据为2行数据同时发送,所以需要将2跟线接到上下2行的数据输入端口

接口图示:

KeilC的程序如下所示:

完整程序下载地址:

8LED_STC12C5A60S2.rar

74HC595.H文件:

//Note:

74HC595驱动

//File:

74HC595.H

//Date:

09-11-6

//Time:

3:

50am

//DesignBy:

Ling.Ju

//Note:

SCLR(10脚)主复位接电源正极,G(13脚)使能端,输出有效接电源负极

//防止74HC595.H头文件被主程序重复调用

/*----------------------------------------------------------------------------*/

#ifndef__74HC595_H__

#define__74HC595_H__

//对应硬件接口

/*----------------------------------------------------------------------------*/

sbitSD0=P1^0;//串行数据输入,对应595的14脚SERD0/1D1/2D2/3D3/4

sbitSD1=P1^1;//串行数据输入,对应595的14脚SERD0/1D1/2D2/3D3/4

sbitSD2=P1^2;//串行数据输入,对应595的14脚SERD0/1D1/2D2/3D3/4

sbitSD3=P1^3;//串行数据输入,对应595的14脚SERD0/1D1/2D2/3D3/4

sbitSH_CK=P1^4;//移位寄存器时钟输入,对应595的11脚SCK

sbitST_CK=P1^5;//存储寄存器时钟输入,对应595的12脚RCK

//函数声明

voidsend_595(unsignedcharData1,unsignedcharData2);//串行输入,并行输出

/*----------------------------------------------------------------------------*/

//串行数据输入

voidsend_595(unsignedcharData1,unsignedcharData2)

{

unsignedchari;

for(i=0;i;

#include;

#include"hanzi.h"

/*----------------------------------------------------------------------------*/

//数据类型定义

#defineuint8unsignedchar

#defineuint16unsignedshort

/*----------------------------------------------------------------------------*/

//对应硬件接口

//74hc138的ABCD接P2口的0123,0xA0就是P2口地址

#defineLS138_PORTP2

/**************************************************************************/

//关键参数声明,4为LED最多能显示的32*32的汉字个数

#defineLED_SIZE4

sbitLS138_OE=P2^4;

sbitHC595_D0=P1^0;//上半部分串行数据输入,对应595的14脚SER

sbitHC595_D1=P1^1;//下半部分串行数据输入,对应595的14脚SER

sbitHC595_CLK=P2^6;//移位寄存器时钟输入,对应595的11脚SCK

sbitHC595_STCLK=P2^7;//存储寄存器时钟输入,对应595的12脚RCK

//包(0)裹

(1)寄

(2)递(3)

//特(4)快(5)专(6)递(7)

//信(8)函(9)寄(10)递(11)

//综(12)合(13)业(14)务(15)

//报(16)刊(17)订(18)阅(19)

//集(20)邮(21)业(22)务(23)

//函数声明

voidsend_595_byte(uint8Data1,uint8Data2);//595串行送入1byte数据

voidsend_data(void);//送出buff中的所有数据

voidread_data(unsignedchar*add,uint16s);//依次装载汉字的第1、16行,2、17行...所有数据

voiddelay1us(uint16i);//延时1us?

?

?

?

?

externunsignedcharcodehanzi[];

//LS138的ABCD段码表

uint8codeLS138_CODE[16]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

uint8data_buff1[(LED_SIZE<<2)];//缓存区1(上一行)

uint8data_buff2[(LED_SIZE<<2)];//缓存区2(下一行)

uint8Line;

uint16Size;

voidmain(void)

{

uint8address;

LS138_OE=1;

Size=0;

P0=0xff;//P0口加上拉电阻做地址,拨码开关拨到on则将对应管脚拉低

address=~P0;//将地址按位取反,把拉低的端口改为1,用于选择汉字

switch(address)

{

case1:

Size=0;break;

case2:

Size=128*LED_SIZE;break;

case4:

Size=128*LED_SIZE*2;break;

case8:

Size=128*LED_SIZE*3;break;

case16:

Size=128*LED_SIZE*4;break;

case32:

Size=128*LED_SIZE*5;break;

case64:

Size=128*LED_SIZE*6;break;

case128:

Size=128*LED_SIZE*7;break;

default:

Size=0;break;

}

while

(1)

{

for(Line=0;Line<16;Line++)//16行扫描

{

read_data(hanzi,Size);//装载汉字数据

send_data();//发送2整行数据

LS138_OE=1;//关闭138使能信号,关闭屏幕显示

LS138_PORT=LS138_PORT&0xF0;//清掉LS138的ABCD段码,关闭OE使能信号

LS138_PORT=LS138_PORT|LS138_CODE[Line];//输出段码

HC595_STCLK=0;//595的锁存置低

//delay1us

(2);

HC595_STCLK=1;//595的锁存拉高,上升沿锁存数据

LS138_OE=0;//送出138使能信号,点亮屏幕

delay1us(10);

}

}

}

voiddelay1us(uint16i)

{

while(i--)

{

_nop_();

}

}

/************************************************

装载数据进入缓冲器,依次转载第一个汉字的

第1行所有数据与第16行所有数据

************************************************/

voidread_data(unsignedchar*add,uint16s)

{

uint8ii,bb,cc;

uint16aa;

bb=Line<<2;

for(ii=0;ii

{

aa=((int)ii)<<7;

cc=ii<<2;

data_buff1[cc]=*(add+s+bb+aa);//上面字的前4个数据

data_buff1[cc+1]=*(add+s+bb+aa+1);

data_buff1[cc+2]=*(add+s+bb+aa+2);

data_buff1[cc+3]=*(add+s+bb+aa+3);

data_buff2[cc]=*(add+s+bb+aa+64);//下面字的前4个数据

data_buff2[cc+1]=*(add+s+bb+aa+65);

data_buff2[cc+2]=*(add+s+bb+aa+66);

data_buff2[cc+3]=*(add+s+bb+aa+67);

}

}

/******************************

voidread_data(uint16s)

{

uint8ii;

for(ii=0;ii

{

data_buff1[ii*4]=hanzi[s+Line*4];//上面字的前4个数据

data_buff1[ii*4+1]=hanzi[s+Line*4+1];

data_buff1[ii*4+2]=hanzi[s+Line*4+2];

data_buff1[ii*4+3]=hanzi[s+Line*4+3];

data_buff2[ii*4]=hanzi[s+Line*4+16];//下面字的前4个数据

data_buff2[ii*4+1]=hanzi[s+Line*4+17];

data_buff2[ii*4+2]=hanzi[s+Line*4+18];

data_buff2[ii*4+3]=hanzi[s+Line*4+19];

}

}

****************************************/

/**********************************************

74HC595串行数据输入1个字节,2行字同时输出

第一个为上半部分数据,第二个为下半部分数据

***********************************************/

voidsend_595_byte(uint8Data1,uint8Data2)

{

unsignedchari;

for(i=0;i<8;i++)

{

HC595_CLK=0;//先置为低

HC595_D0=Data1&0x80;//取数据的最高位

HC595_D1=Data2&0x80;//取数据的最高位

Data1<<=1;//将数据的次高位移到最高位,为下一次取数据做准备

Data2<<=1;//将数据的次高位移到最高位,为下一次取数据做准备

HC595_CLK=1;//再置为高,产生移位时钟上升沿,上升沿时数据寄存器的数据移位

}

}

voidsend_data(void)//送出一整行数据

{

uint8jj,kk;

kk=(LED_SIZE<<2);//总共需要发送的字节数,1个32*32汉字每行4字节

for(jj=0;jj

{

send_595_byte(data_buff1[jj],data_buff2[jj]);

}

}

hanzi.h字库文件

#ifndef__HANZI__H

#define__HANZI__H

unsignedcharcodehanzi[]=

{

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xE3,0xFF,0xFF,0xE3,0xE1,0xFF,0xF1,0xE3,0xE1,0xFF,0xF8,0xC3,0xF1,0xFF,

0xFE,0x47,0xF3,0xFF,0xFE,0x0F,0xF3,0xFF,0xFF,0x1F,0xF3,0x0F,0xFE,0x1F,0xF0,0x03,

0xFC,0x0C,0x03,0x87,0xF1,0x8C,0x73,0x8F,0xE3,0x8C,0x73,0x9F,0xFF,0x0E,0x73,0x1F,

0xFE,0x0E,0x73,0x1F,0xFE,0x0E,0x60,0x1F,0xFC,0x4F,0x03,0xFF,0xF8,0xCF,0x33,0xFF,

0xF1,0xCF,0xF3,0xFF,0xE3,0xCF,0xF3,0x1F,0xC7,0xCF,0xF3,0x87,0x9F,0x8F,0xF0,0x03,

0xFF,0x8F,0x80,0xC3,0xF8,0x00,0x07,0xE3,0xFE,0x08,0x3F,0xF3,0xFF,0x1F,0xFF,0xFF,

0xFF,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*"独",0*/

/*(32X32,楷体,加粗)*/

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,

0xFF,0xE3,0xFF,0x8F,0xFF,0xE3,0xFF,0x8F,0xFF,0xC3,0xFF,0x8F,0xFF,0xC3,0xFF,0x8F,

0xFF,0x80,0xFF,0x8F,0xFF,0x88,0x23,0x8F,0xFF,0x1C,0x31,0x8F,0xFE,0x3F,0x11,0x8F,

0xFE,0x3F,0xF1,0xCF,0xFC,0x7F,0xF1,0xCF,0xF8,0xF1,0xF1,0xCF,0xF0,0x00,0xF1,0xCF,

0xE2,0x78,0xF1,0xCF,0xCE,0x78,0xF1,0xCF,0x9E,0x79,0xF1,0xCF,0xFE,0x79,0xF1,0xCF,

0xFE,0x61,0xF1,0xCF,0xFE,0x71,0xFF,0xCF,0xFE,0x33,0x3F,0xCF,0xFE,0x3F,0x3F,0xCF,

0xFE,0x3F,0x1F,0xCF,0xFF,0x0E,0x1F,0x8F,0xFF,0x80,0x19,0x8F,0xFF,0xF1,0xFC,0x0F,

0xFF,0xFF,0xFE,0x0F,0xFF,0xFF,0xFF,0x0F,0xFF,0xFF,0xFF,0x9F,0xFF,0xFF,0xFF,0xFF,/*"创",1*/

/*(32X32,楷体,加粗)*/

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,

0xFF,0xF0,0xFF,0xFF,0xFF,0xF1,0xFF,0xFF,0xFF,0xF1,0xFF,0xFF,0xFF,0xF1,0xFF,0xFF,

0xFF,0xF1,0xFF,0xFF,0xFF,0xF1,0x81,0xFF,0xFF,0xC0,0x00,0x7F,0xF0,0x01,0xF0,0xFF,

0xF8,0xF1,0xF0,0xFF,0xF8,0xF1,0xF1,0xFF,0xFC,0xF0,0x11,0xFF,0xFC,0x00,0x71,0xFF,

0xFC,0x71,0xF1,0xFF,0xFC,0x71,0xE3,0xFF,0xFC,0x71,0xE3,0xFF,0xFE,0x70,0x03,0xFF,

0xFE,0x00,0x03,0xCF,0xFE,0x71,0xE7,0xCF,0xFF,0xF1,0xFF,0xCF,0xFF,0xF1,0xFF,0xCF,

0xFF,0xF9,0xFF,0xC7,0xFF,0xF8,0xFF,0x87,0xFF,0xF8,0x7E,0x07,0xFF,0xFC,0x00,0x0F,

0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*"电",2*/

/*(32X32,楷体,加粗)*/

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE3,0xFF,

0xFF,0xFE,0x00,0xFF,0xFF,0x00,0x20,0xFF,0xFF,0x83,0xE3,0xFF,0xFF,0xFF,0xC7,0xFF,

0xFF,0xFF,0x8F,0xFF,0xFF,0xFF,0x1F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFE,0x3F,0xFF,

0xFF,0xFE,0x3C,0x07,0xFF,0xFE,0x00,0x01,0xFF,0xC0,0x07,0xFF,0xC0,0x03,0x1F,0xFF,

0xE0,0xFF,0x1F,0xFF,0xFF,0xFF,0x1F,0xFF,0xFF,0xFF,0x1F,0xFF,0xFF,0xFF,0x1F,0xFF,

0xFF,0xFF,0x1F,0xFF,0xFF,0xFF,0x1F,0xFF,0xFF,0xFF,0x1F,0xFF,0xFF,0xFF,0x1F,0xFF,

0xFF,0xFF,0x1F,0xFF,0xFF,0xFF,0x1F,0xFF,0xFF,0xE0,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,

0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*"子",3*/

/*(32X32,楷体,加粗)*/

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xE3,0xFF,0xFF,0xE3,0xE1,0xFF,0xF1,0xE3,0xE1,0xFF,0xF8,0xC3,0xF1,0xFF,

0xFE,0x47,0xF3,0xFF,0xFE,0x0F,0xF3,0xFF,0xFF,0x1F,0xF3,0x0F,0xFE,0x1F,0xF0,0x03,

0xFC,0x0C,0x03,0x87,0xF1,0x8C,0x73,0x8F,0xE3,0x8C,0x73,0x9F,0xFF,0x0E,0x73,0x1F,

0xFE,0x0E,0x73,0x1F,0xFE,0x0E,0x60,0x1F,0xFC,0x4F,0x03,0xFF,0xF8,0xCF,0x33,0xFF,

0xF1,0xCF,0xF3,0xFF,0xE3,0xCF,0xF3,0x1F,0xC7,0xCF,0xF3,0x87,0x9F,0x8F,0xF0,0x03,

0xFF,0x8F,0x80,0xC3,0xF8,0x00,0x07,0xE3,0xFE,0x08,0x3F,0xF3,0xFF,0x1F,0xFF,0xFF,

0xFF,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*"独",4*/

/*(32X32,楷体,加粗)*/

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,

0xFF,0xE3,0xFF,0x8F,0xFF,0xE3,0xFF,0x8F,0xFF,0xC3,0xFF,0x8F,0xFF,0xC3,0xFF,0x8F,

0xFF,0x80,0xFF,0x8F,0xFF,0x88,0x23,0x8F,0xFF,0x1C,0x31,0x8F,0xFE,0x3F,0x11,0x8F,

0xFE,0x3F,0xF1,0xCF,0xFC,0x7F,0xF1,0xCF,0xF8,0xF1,0xF1,0xCF,0xF0,0x00,0xF1,0xCF,

0xE2,0x78,0xF1,0xCF,0xCE,0x78,0xF1,0xCF,0x9E,0x79,0xF1,0xCF,0xFE,0x79,0xF1,0xCF,

0xFE,0x61,0xF1,0xCF,0xFE,0x71,0xFF,0xCF,0xFE,0x33,0x3F,0xCF,0xFE,0x3F,0x3F,0xCF,

0xFE,0x3F,0x1F,0xCF,0xFF,0x0E,0x1F,0x8F,0xFF,0x80,0x19,0x8F,0xFF,0xF1,0xFC,0x0F,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2