📄 pt6311 16311 程序(汇编版和c语言版).txt
字号:
DB 70H,0C8H ,00H ;---E
DB 70H,48H ,00H ;---F
DB 68H,0C8H ,00H ;---G
DB 78H,44H ,00H ;---H
DB 02H,89H ,00H ;---I
DB 08H,0C4H ,00H ;---J
DB 06H,03H ,00H ;---K
DB 40H,0C0H ,00H ;---L
DB 0C8H,46H ,00H ;---M
DB 0CCH,44H ,00H ;---N
DB 48H,0CCH ,00H ;---O
DB 70H,4CH ,00H ;---P
DB 4CH,0CCH ,00H ;---Q
DB 74H,4CH ,00H ;---R
DB 02H,09H ,00H ;---T
DB 48H,0C4H ,00H ;---U
DB 41H,42H ,00H ;---V
DB 4DH,44H ,00H ;---W
DB 85H,02H ,00H ;---X
DB 82H,02H ,00H ;---Y
DB 01H,8AH ,00H ;---Z
DB 32H,01H ,00H ;---"+"
DB 30H,00H ,00H ;---"-"
DB 01H,02H ,00H ;---"/"
DB 0CH,04H ,00H ;---".1"000000010 00000011
DB 04H,00H ,00H ;0---DOT
DB 00H,00H,00H ;DB
END
C版程序:
/*序说明:本程序摸拟功放:按K1-显示"DVD",按K2-显示"VCD",按K3-显示"TAPE",按K4-显示"CD/LD" ;按K5-显示"89C51",按K6-显示"591MCU",按K7-显示"HAIER",按K8-显示"8888888"*/
#include <REGX51.H>
#include <intrins.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
#define ZG 16
#define ZH 17
#define ZI 18
#define ZJ 19
#define ZK 20
#define ZL 21
#define ZM 22
#define ZN 23
#define ZO 24
#define ZP 25
#define ZQ 26
#define ZR 27
#define ZT 28
#define ZU 29
#define ZV 30
#define ZW 31
#define ZX 32
#define ZY 33
#define ZZ 34
#define ZADD 35
#define ZSUBB 36
#define Zxg 37
#define ZAC_3 38
#define ZDOT 39
#define ZNO 40
#define SING0 41
#define SIGN1 42
#define SIGN2 43
/*以上是定义字模的值*/
#define SMG1 0xc3 /*第一个数码管的地址*/
#define SMG2 0xc6 /*第二个数码管的地址*/
#define SMG3 0xc9 /*第三个数码管的地址*/
#define SMG4 0xcc /*第四个数码管的地址*/
#define SMG5 0xcf /*第五个数码管的地址*/
#define SMG6 0xd2 /*第六个数码管的地址*/
#define SMG7 0xd5 /*第七个数码管的地址*/
#define dispMode 0x0a /*显示模式11位17段--0x, 0a*/
&, nbsp; #define&nbs, p; datamode 0x40 /*数据设置命令__正常自动加1,写数据到RAM0x40*/
#, define lium 0x89 /*显示控制命令,显示开,亮度10/160x8b*/ #defin, e rdkey 0x42 /*数据设置读键*/
#define STB P0_0
#define CLK P0_1
#define DO P0_3
#define DI P0_2
uchar txbuf[11];
uchar val;
void clrVFD(uchar j,address);
//16段码表//
uchar code vfddata[]={/* H F M G C N P R D E A B K J
P8 P7 P6 P5 P4 P3 P2 P1 P16 P15 P14 P13 P12 P11 P10 P9*/
0x49,0xCE,0x00, //;---0
0x08,0x04,0x00, //;---1
0x30,0xCC,0x00, //;---2
0x38,0x8C,0x00, //;---3
0x28,0x05,0x00, //;---4
0x78,0x88,0x00, //;---5
0x78,0xC8,0x00, //;---6
0x08,0x0C,0x00, //;---7
0x78,0xCC,0x00, //;---8
0x78,0x8C,0x00, //;---9
0x29,0x06,0x00, //;---A
0x2A,0x8D,0x00, //;---B
0x40,0xC8,0x00, //;---C
0x0A,0x8D,0x00, //;---D
0x70,0xC8,0x00, //;---E
0x70,0x48,0x00, //;---F
0x68,0xC8,0x00, //;---G
0x78,0x44,0x00, //;---H
0x02,0x89,0x00, //;---I
0x08,0xC4,0x00, //;---J
0x06,0x03,0x00, //;---K
0x40,0xC0,0x00, //;---L
0xC8,0x46,0x00, //;---M
0xCC,0x44,0x00, //;---N
0x48,0xCC,0x00, //;---O
0x70,0x4C,0x00, , //;---P
0x4C,0xCC,0x00, //;---Q
0x74,0x4C,0x00, //;---R
0x02,0x09,0x00, //;---T
0x48,0xC4,0x00, //;---U
0x41,0x42,0x00, //;---V
0x4D,0x44,0x00, //;---W
0x85,0x02,0x00, //;---X
0x82,0x02,0x00, //;---Y
0x01,0x8A,0x00, //;---Z
0x32,0x01,0x00, //;---"+"
0x30,0x00,0x00, //;---"-"
0x01,0x02,0x00, //;---"/"
0x0C,0x04,0x00, //;---".1"000000010 00000011
0x04,0x00,0x00, //;0---DOT
0x00,0x00,0x00, //DB
0x00,0x00,0x00, //SIGN0
0x00,0x00,0x00, //SIGN1
0x00,0x08,0x00, //SIGN2
};
#define yk P3_2
uchar ykcode[4];
uchar Mvol=40;
bit Fcont_hit=0;
#define LFtime 20
uchar code keycode[8]={0x10,0x06,0x09,0x1d,0x1f,0x19,0x1b,0x11 void delay(uchar t)
{
while(--t);
}
void delay840(void)
{
delay(210);
}
void delay4740(void)
{ uchar i=0;
for(i=5;i>0;i--) delay(237);
}
/*带进位右环移写8位数据*/
void w8bit_VFD(uchar g)
{uchar i;
for(i=8;i>0;i--)
{
CLK=0;
if(g&0x01) DI=1;
else DI=0;
CLK=1;
g>>=1;
}
}
/*写命令子程序*/
void wcom_VFD(uchar m)
{
STB=0;
w8bit_VFD(m);
STB=1;
}
/*写地址子程序*/
void waddr_VFD(uchar m)
{
STB=0;
w8bit_VFD(m);
}
/*PT6311初始化*/
void inivfd(void)
{
wcom_VFD(dispMode);
}
/******************************************************************************
Name: wrbytes(uchar address,uchar zf);
Function: 写多个字符数据
******************************************************************************/
void wrbytes(uchar address,uchar n) /*zf表示数字或者字符*/
{
uchar *p;
uchar i;
clrVFD(11,0xc0);
wcom_VFD(datamode);
waddr_VFD(address);
for(i=0;i<n;i++)
{
p=vfddata + 3*txbuf[i];
w8bit_VFD(*p);
p++;
w8bit_VFD(*p);
p++;
w8bit_VFD(*p);
}
STB=1;
wcom_VFD(lium);
}
/*清屏程序*/
void clrVFD(uchar j,address)
{uchar k =0;
wcom_VFD(datamode);
waddr_VFD(address);
for(;k<j;k++)
{
w8bit_VFD(0x00);
w8bit_VFD(0x00);
w8bit_VFD(0x00);
}
STB=1;
wcom_VFD(lium);
}
/*以下是VFD数据显示*/
void dispSXDZ(void)//SXDZ
{
txbuf[0] = 5;
txbuf[1] = ZX;
txbuf[2] = 0x0D;
txbuf[3] = ZZ;
wrbytes(SMG1,4);
}
void dispVCD(void)//VCD
{
txbuf[0] = ZV;
txbuf[1] = 0x0c;
txbuf[2] = 0x0d;
wrbytes(SMG1,3);
}
void dispAT89C51(void)//AT89C51
{
txbuf[0] = 10;
txbuf[1] = ZT;
txbuf[2] = 8;
txbuf[3] = 9;
txbuf[4] = 12;
txbuf[5] = 5;
txbuf[6] = 1;
wrbytes(SMG1,7);
}
void dispCCTV5(void)//CCTV5
{
txbuf[0] = 12;
txbuf[1] = 12;
txbuf[2] = ZT;
txbuf[3] = ZV;
txbuf[4] = 5;
wrbytes(SMG1,5);
}
void dispSCTV(void)//SCTV
{
txbuf[0] = 5;
txbuf[1] = 0X0C;
txbuf[2] = ZT;
txbuf[3] = ZV;
wrbytes(SMG1,4);
}
void dispHUSHAN(void)//HUSHAN
{
txbuf[0] = ZH;
txbuf[1] = ZU;
txbuf[2] = 5;
txbuf[3] = ZH;
txbuf[4] = 0x0A;
txbuf[5] = ZN;
wrbytes(SMG1,6);
}
void dispMvol(void)//音量加
{
txbuf[0] = ZM;
txbuf[1] = ZV;
txbuf[2] = ZO;
txbuf[3] = ZL;
txbuf[4] = ZNO;
txbuf[5] = Mvol/10;
txbuf[6] = Mvol%10;
wrbytes(SMG1,7);
}
/*读键子程序*/
uchar ReadKey(void)
{ uchar i;
STB=0;
w8bit_VFD(rdkey);
for (i=0;i<8;i++)
{CLK=1;
delay(1);
CLK=0;
if(DO) val|=0x80;
if(i<7) val>>=1;
CLK=1;
delay(1);
}
STB=1;
return val;
}
/***************************************************************
//遥控中断处理程序
***************************************************************/
void int0(void) interrupt 0
{uchar i=0;
uchar k=0;
EA=0;
for(i=10;i>0;i--){delay840();if(yk) {EA=1;return;}}
while(!yk);
delay4740();
if(yk&&Fcont_hit){for(i=LFtime;i>0;i--) delay4740();}/
else {for(i=0;i<4;i++)
{for(k=0;k<8;k++)
{while(!yk);
delay840();
if(yk){
ykcode[i]|=0x80;delay(245);
if(yk) {EA=1;return;}
}
else ykcode[i]&=0x7f;
if(k<7) ykcode[i]>>=1;
}
}
}
if((ykcode[0]==0x10)&&(ykcode[0]==~ykcode[1])&&(ykcode[2]==~ykcode[3]))
{
if(ykcode[2]==keycode[0]) {dispSXDZ(); Fcont_hit=0;}
if(ykcode[2]==keycode[1]) {dispAT89C51();Fcont_hit=0;}
if(ykcode[2]==keycode[2]) {dispVCD(); Fcont_hit=0;}
if(ykcode[2]==keycode[3]) {dispCCTV5(); Fcont_hit=0;}
if(ykcode[2]==keycode[4]) {dispHUSHAN(); Fcont_hit=0;}
if(ykcode[2]==keycode[5]) {dispSCTV(); Fcont_hit=0;}
if(ykcode[2]==keycode[6]) {if(Mvol<80) Mvol++;else Mvol=80; dispMvol(); Fcont_hit=1;}
if(ykcode[2]==keycode[7]) {if(Mvol>0) Mvol--;else Mvol=0; dispMvol(); Fcont_hit=1;}
}
EA=1;
}
void main(void)
{ IT0=1;
EX0=1;
EA=1;
inivfd();
txbuf[0] = 5;
txbuf[1] = ZU;
txbuf[2] = 0x0c;
txbuf[3] = 0x0c;
txbuf[4] = 0x0e;
txbuf[5] = 5;
txbuf[6] = 5;
wrbytes(SMG1,7);
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -