P10显示模块移动分析
2015-06-22 07:32
330 查看
/***STC15W408AS驱动P10显示屏模块测试程序一维数据查表*********/
/***2015 6 20 20:26 通过 CODE 433 L101****显示“沁钰”*********/
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define NOP _nop_()
sfr AUXR=0x8e; //Auxiliary register
uint aa=0;
uint m;
sbit OUT1=P1^2;
//
sbit OUT2=P1^3;
//
sbit OE=P1^1; //74HC245 A1
sbit A1=P1^0; //74HC138A
sbit B1=P3^7; //74HC138B
sbit SRCK=P1^7; //11脚 移位时钟
sbit RCK=P1^4; //12脚 锁存时钟
sbit SER=P1^5; //14 脚数据输入
uchar code table[640]=
{
/***空***/
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,
/***蔡***/
0x04,0x40,0xFF,0xFE,0x04,0x40,0x10,0x00,
0x1E,0xF8,0x22,0x88,0x54,0x50,0xA8,0x20,
0x17,0xD8,0x20,0x06,0xDF,0xF8,0x01,0x00,
0x11,0x20,0x19,0x18,0x25,0x08,0x42,0x00,
/***沁***/
0x40,0x80,0x20,0x40,0x20,0x20,0x00,0x20,
0x89,0x00,0x49,0x00,0x51,0x08,0x15,0x04,
0x25,0x02,0x29,0x02,0xC9,0x00,0x51,0x08,
0x41,0x08,0x41,0x08,0x40,0xF8,0x00,0x00,
/***钰***/
0x10,0x00,0x11,0xFC,0x20,0x20,0x3E,0x20,
0x40,0x20,0x7C,0x20,0x90,0x20,0x11,0xFC,
0xFE,0x20,0x10,0x28,0x10,0x24,0x12,0x24,
0x14,0x20,0x18,0x20,0x13,0xFE,0x00,0x00
};
/**************数据串行输出到74HC595*************************/
void serial_input(uchar dat)
{
uint m;
for(m=0;m<8;m++)
{
if(dat&0x80)
SER=1;
else
SER=0;
SRCK=0;
SRCK=1;
//数据移入移位寄存器
NOP;
NOP;
SRCK=0;
NOP;
NOP;
dat=dat<<1;
}
}
/*************并出****************************************/
void serial_output()
{
RCK=1; //上升沿移位寄存器数据存入8为锁存器
NOP;
NOP;
RCK=0;
}
/*************行显控制**********************************/
void HC138_scan(uchar temp)
{
OE=1;
A1=0x01&temp;
B1=0x01&(temp>>1);
}
/***整屏显示(1 5 9 13)( 2 6 10 14)( 3 7 11 15)( 4 8 12 16) ***/
void display()
{
uint i,j,k;
for(k=0;k<4;k++) //4行同时扫描,共扫4次4X4=16
{
for(j=0;j<2;j++) //两个字的其中一个
{
for(i=0;i<2;i++) //一个字的两排 i=0为一个字的左半部i=1为一个字的右半部
{
serial_input(~table[3*8+2*k+i+j*32+m]);//第一个起始为24 J=0X*32 j*32
serial_input(~table[2*8+2*k+i+j*32+m]);//第一个起始为16
serial_input(~table[1*8+2*k+i+j*32+m]);//第一个起始为8
serial_input(~table[0*8+2*k+i+j*32+m]);//第一个起始为0
}
}
serial_output();
HC138_scan(k);
}
}
/*------------------中断子程序------------------------*/
void exint0() interrupt 1 //INT0中断入口
{
aa=aa+1;
TH0=0X53;
TL0=0X32;
if(aa==1000)
{
m++;
if (m>128)
{
m=0;
}
aa=0;
OUT1=~OUT1;
OUT2=~OUT2;
}
}
/***************************************************************/
void main()
{
AUXR=0X80; //STC系列的1T 设置
TMOD=0X01;
TH0=0X53;
TL0=0X32;
EA=1;
ET0=1;
TR0=1;
m=0;
OUT1=1;
OUT2=0;
while(1)
{
display();
}
}
/***2015 6 20 20:26 通过 CODE 433 L101****显示“沁钰”*********/
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define NOP _nop_()
sfr AUXR=0x8e; //Auxiliary register
uint aa=0;
uint m;
sbit OUT1=P1^2;
//
sbit OUT2=P1^3;
//
sbit OE=P1^1; //74HC245 A1
sbit A1=P1^0; //74HC138A
sbit B1=P3^7; //74HC138B
sbit SRCK=P1^7; //11脚 移位时钟
sbit RCK=P1^4; //12脚 锁存时钟
sbit SER=P1^5; //14 脚数据输入
uchar code table[640]=
{
/***空***/
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,
/***蔡***/
0x04,0x40,0xFF,0xFE,0x04,0x40,0x10,0x00,
0x1E,0xF8,0x22,0x88,0x54,0x50,0xA8,0x20,
0x17,0xD8,0x20,0x06,0xDF,0xF8,0x01,0x00,
0x11,0x20,0x19,0x18,0x25,0x08,0x42,0x00,
/***沁***/
0x40,0x80,0x20,0x40,0x20,0x20,0x00,0x20,
0x89,0x00,0x49,0x00,0x51,0x08,0x15,0x04,
0x25,0x02,0x29,0x02,0xC9,0x00,0x51,0x08,
0x41,0x08,0x41,0x08,0x40,0xF8,0x00,0x00,
/***钰***/
0x10,0x00,0x11,0xFC,0x20,0x20,0x3E,0x20,
0x40,0x20,0x7C,0x20,0x90,0x20,0x11,0xFC,
0xFE,0x20,0x10,0x28,0x10,0x24,0x12,0x24,
0x14,0x20,0x18,0x20,0x13,0xFE,0x00,0x00
};
/**************数据串行输出到74HC595*************************/
void serial_input(uchar dat)
{
uint m;
for(m=0;m<8;m++)
{
if(dat&0x80)
SER=1;
else
SER=0;
SRCK=0;
SRCK=1;
//数据移入移位寄存器
NOP;
NOP;
SRCK=0;
NOP;
NOP;
dat=dat<<1;
}
}
/*************并出****************************************/
void serial_output()
{
RCK=1; //上升沿移位寄存器数据存入8为锁存器
NOP;
NOP;
RCK=0;
}
/*************行显控制**********************************/
void HC138_scan(uchar temp)
{
OE=1;
A1=0x01&temp;
B1=0x01&(temp>>1);
}
/***整屏显示(1 5 9 13)( 2 6 10 14)( 3 7 11 15)( 4 8 12 16) ***/
void display()
{
uint i,j,k;
for(k=0;k<4;k++) //4行同时扫描,共扫4次4X4=16
{
for(j=0;j<2;j++) //两个字的其中一个
{
for(i=0;i<2;i++) //一个字的两排 i=0为一个字的左半部i=1为一个字的右半部
{
serial_input(~table[3*8+2*k+i+j*32+m]);//第一个起始为24 J=0X*32 j*32
serial_input(~table[2*8+2*k+i+j*32+m]);//第一个起始为16
serial_input(~table[1*8+2*k+i+j*32+m]);//第一个起始为8
serial_input(~table[0*8+2*k+i+j*32+m]);//第一个起始为0
}
}
serial_output();
HC138_scan(k);
}
}
/*------------------中断子程序------------------------*/
void exint0() interrupt 1 //INT0中断入口
{
aa=aa+1;
TH0=0X53;
TL0=0X32;
if(aa==1000)
{
m++;
if (m>128)
{
m=0;
}
aa=0;
OUT1=~OUT1;
OUT2=~OUT2;
}
}
/***************************************************************/
void main()
{
AUXR=0X80; //STC系列的1T 设置
TMOD=0X01;
TH0=0X53;
TL0=0X32;
EA=1;
ET0=1;
TR0=1;
m=0;
OUT1=1;
OUT2=0;
while(1)
{
display();
}
}
相关文章推荐
- dell r710 安装ubuntu 12.04 server 启动后进入initramfs解决办法
- PHP 能做什么?
- pv小总结
- PHP 扩展库
- mysql中间件研究(Atlas,cobar,TDDL)
- “CsGL.OSLib”的类型初始值设定项引发异常“的解决办法
- 理论的红利
- 同一cocos2dx的对象先retain再release的注意事项
- programming-challenges Common Permutation (110303) 题解
- Scala学习(二)练习
- Scala学习(二)--- 控制结构和函数
- (转)新浪微博如想自救,就要砍掉99%的功能
- Android属性动画备忘
- programming-challenges Where's Waldorf? (110302) 题解
- 高并发量网站解决方案
- 面向对象
- 史上最全最强SpringMVC详细示例实战教程
- PDO获取数据的方法fetch()、fetchAll()、setFetchMode()、bindColumn()
- 高等代数思维训练-从一道例题看高等代数的常用方法[河北师范大学麻常利教授]
- 内存共享(Shared Memory)