📄 main.c
字号:
/********************************************************
程序名称:LED3216点阵反白交替显示图片
简要说明:可显示分辨率为32*16的图片
P0口接上行线,P2口接下行线,P3口接扫描线
P3.0接左屏译码器使能端(CS1)
P3.1接右屏译码器使能端(CS2)
编 写:JiangX.net
********************************************************/
#include<AT89X52.h>
#define uchar unsigned char //宏定义
#define hang1 P0 //上半屏行线
#define hang2 P2 //下半屏行线
#define lie P1 //扫描列线
#define CS1 P3_0 //接左屏译码器使能端,低电平使能
#define CS2 P3_1 //接右屏译码器使能端,低电平使能
/*****参数调整项*****/
#define light 150 //显示亮度调节,数值不可过大,以不感到屏幕闪烁为准
/*******************************
图片取模:纵向取模,字节倒序
图片大小:32*16
*******************************/
uchar code pic[]={
0x00,0x00,0x08,0xF8,0xF8,0x08,0x00,0x00,0xF0,0xF8,0xFC,0xFC,0xFC,0xFC,0xF8,0xF0,
0xF8,0xFC,0xFC,0xFC,0xFC,0xF8,0xF0,0x00,0xF8,0xF8,0x00,0x00,0x00,0xF8,0xF8,0x00,
0x00,0x00,0x10,0x1F,0x1F,0x10,0x00,0x00,0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,
0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00,0x00,0x0F,0x1F,0x18,0x18,0x18,0x1F,0x0F,0x00 //I LOVE YOU
};
/*****延时子程序*****/
void delay() //专门设置的延时程序用来改变扫描速度以方便调节亮度
{
uchar i;
for(i=0;i<light;i++);
}
/*****显示子程序*****/
void display1()
{
uchar i,j;
CS2=1; //关右屏
CS1=0; //开左屏
for(i=0;i<16;i++)
{
lie=i; //左屏列扫描信号输出
hang1=pic[i];
hang2=pic[i+32]; //行信号输出
delay();
hang1=0;
hang2=0;
}
CS1=1; //关左屏
CS2=0; //开右屏
for(j=0;j<16;j++)
{
lie=j<<4;; //右屏列扫描信号输出
hang1=pic[j+16];
hang2=pic[j+48]; //行信号输出
delay();
hang1=0;
hang2=0;
}
}
/*****反白显示相同内容*****/
void display2()
{
uchar i,j;
CS2=1; //关右屏
CS1=0; //开左屏
for(i=0;i<16;i++)
{
lie=i; //左屏列扫描信号输出
hang1=~pic[i];
hang2=~pic[i+32]; //取反、行信号输出
delay();
hang1=0;
hang2=0;
}
CS1=1; //关左屏
CS2=0; //开右屏
for(j=0;j<16;j++)
{
lie=j<<4;; //右屏列扫描信号输出
hang1=~pic[j+16];
hang2=~pic[j+48]; //取反、行信号输出
delay();
hang1=0;
hang2=0;
}
}
/*****主程序*****/
void main()
{
uchar i;
while(1)
{
for(i=0;i<80;i++)
{
display1();
}
for(i=0;i<80;i++)
{
display2();
}
}
}
/*****END*****/
/*****欢迎到作者博客交流:http://www.jiangx.net*****/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -