📄 ceshi4.c
字号:
/*****************************************************************/
/* */
/*名称: LED点阵显示程序 */
/*功能: 在8*8LED点阵上显示一个英文字符 */
/*难度等级: 中 */
/* 作者: zengrenliang */
/* 版权: http://www.51kaifa.com */
/*编写日期: 2006.05.19 */
/*****************************************************************/
#include<reg52.h>
#define uchar unsigned char
sbit addr0 = P1^4;
sbit addr1 = P1^5;
sbit addr2 = P1^6;
sbit addr3 = P1^7;//系统片选地址
//行扫描数组
uchar code scan[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//row0--row7
//待显示字符"H"的点阵数据
uchar code word1[8] ={0xFF,0xA1,0xC1,0xD5,0x80,0xE6,0x80,0xFF};
uchar code word2[8] ={0xFF,0xDD,0xD3,0x8F,0xD7,0xD1,0xDF,0xFF};
uchar code word3[8] ={0xFD,0xCD,0xB3,0xB7,0x81,0xB7,0xF3,0xFF};/*"H",0*/
//格式:逐行,逆向,阳码
/*******************************延时函数******************************/
void delay (unsigned int us)
{
while(us--);
}
/*****************************8*8LED点阵扫描一屏***********************/
void ledscan()
{ unsigned char i,j,k;
for(j=0;j<500;j++)
{
for(i=0;i<8;i++){
addr0 = 0;
addr1 = 0;
addr2 = 0;//输出开发板上U1(74HC574)的片选地址
addr3 = 0;
P0 = 0xff;//关显示
addr3 = 1;
addr3 = 0;//U1的锁存引脚上产生上升沿,锁存行扫描数据
addr0 = 1;
addr1 = 0;
addr2 = 0;//输出开发板上U2(74HC574)的片选地址
if(j<120) P0 =word2[i];
else P0 =word3[i]; //取一列低字节(左半屏)显示数据
addr3 = 1;
addr3 = 0;//在U2的锁存引脚上产生上升沿,锁存列扫描数据
addr0 = 0;
addr1 = 0;
addr2 = 0;//输出开发板上U1(74HC574)的片选地址
addr3 = 0;
P0 = scan[i];//取row0--row7扫描数据
addr3 = 1;
addr3 = 0;//在U2的锁存引脚上产生上升沿,锁存行扫描数据
delay(50); //延时50us
}
}
}
/***********************************主函数*************************/
main()
{
while(1){
ledscan();
}
}
/***********************************结束***************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -