📄 broad_band_amplifier.c
字号:
/**********************第六届全国大学生电子设计竞赛************************/
/**************************宽带放大器程序**********************************/
/*时间: 2003.9.15*/
/*键盘分布:
1 2 3 4 5 6 7 8
9 0 + - 清除 确定*/
#include <AT89X52.H>
#include <absacc.h>
static unsigned char xdata jianpan _at_ 0xa100;
static unsigned char gain;
static unsigned char gain_buf[2];
static unsigned char buf;
unsigned int xdata c64 _at_ 0x8000;
//static unsigned char xdata channel0 _at_ 0x7ff8;
static unsigned char xdata dac0832 _at_ 0xa400;
static unsigned char xdata tlc0820 _at_ 0xc800;
#define uchar unsigned char
#define uint unsigned int
#define DELAY 5
#define SCM XBYTE[0xa300]
#define SDA XBYTE[0xa301]
#define MCM XBYTE[0xa200]
#define MDA XBYTE[0xa201]
/***************************************************/
/*调用方式:void OutMI(uchar i)
/*函数说明:发指令i到主窗口
/*程序内函数,私有
/***************************************************/
void OutMI(uchar i)
{
uchar d;
d=DELAY;
while(d)d--;
MCM=i;
}
/***************************************************/
/*调用方式:void OutMD(uchar i)
/*函数说明:发数据i到主窗口
/*程序内函数,私有
/***************************************************/
void OutMD(uchar i)
{
uchar d=DELAY;
while(d)d--;
MDA=i;
}
/***************************************************/
/*调用方式:void OutSI(uchar i)
/*函数说明:发指令i到从窗口
/*程序内函数,私有
/***************************************************/
void OutSI(uchar i)
{
uchar d=DELAY;
while(d)d--;
SCM=i;
}
/***************************************************/
/*调用方式:void OutSD(uchar i)
/*函数说明:发数据i到从窗口。(内函数,私有,用户不直接调用)
/***************************************************/
void OutSD(uchar i)
{
uchar d=DELAY;
while(d)d--;
SDA=i;
}
/***************************************************/
/*调用方式:void LcdIni(void)
/*函数说明:12232点阵液晶初始化,开机后仅调用一次。
/***************************************************/
void LcdIni(void)
{
OutMI(0XE2);OutSI(0XE2);//复位
OutMI(0XAE);OutSI(0XAE);//POWER SAVE
OutMI(0XA4);OutSI(0XA4);//动态驱动
OutMI(0XA9);OutSI(0XA9);//1/32占空比
OutMI(0XA0);OutSI(0XA0);//时钟线输出
OutMI(0XEE);OutSI(0XEE);//写模式
OutMI(0X00);OutMI(0XC0);
OutSI(0X00);OutSI(0XC0);
OutMI(0XAF);OutSI(0XAF);
}
/***************************************************/
/*调用方式:void SetPage(uchar page0,uchar page1)
/*函数说明:同时设置主从显示页为0-3页。(内函数,私有,用户不直接调用)
/***************************************************/
void SetPage(uchar page0,uchar page1)
{
OutMI(0xB8|page1);OutSI(0xB8|page0);
}
/***************************************************/
/*调用方式:void SetAddress(uchar address0,uchar address1)
/*函数说明:同时设置主从列地址为0-121。(内函数,私有,用户不直接调用)
/***************************************************/
void SetAddress(uchar address0,uchar address1)
{
OutMI(address1&0x7F);OutSI(address0&0x7F);
}
/***************************************************/
/*调用方式:void PutCharS(uchar ch)
/*函数说明:在左页当前地址画一个字节8个点。(内函数,私有,用户不直接调用)
/***************************************************/
void PutCharS(uchar ch)
{
OutSD(ch);
}
/***************************************************/
/*调用方式:void PutCharM(uchar ch)
/*函数说明:在右页当前地址画一个字节8个点。(内函数,私有,用户不直接调用)
/***************************************************/
void PutCharM(uchar ch)
{
OutMD(ch);
}
/***************************************************/
/*uchar Inva(uchar) 1000 -> 0001
/*二进制数倒置
/***************************************************/
uchar Inva(uchar b)
{
uchar v1=0,v2=0;
uchar j1=0x80,j2=0x01;
char i;
for(i=7;i>=1;i=i-2)
{
v1=((b<<i)&j1)|v1;
v2=((b>>i)&j2)|v2;
j1=j1>>1;
j2=j2<<1;
}
return(v1|v2);
}
/***************************************************/
/*void DrawDw(char Xl,uchar width,uchar *bmp)
/***************************************************/
void DrawDw(char Xl,uchar width,uchar *bmp)
{
uchar addr,i=0;
bit window=0;
char x;
for(x=Xl;x>Xl-width;x--)
{
if (x<0) {window=1;addr=61+x;}
else addr=x;
SetPage(1,1);
SetAddress(addr,addr);
if (window) PutCharM(bmp[i]);
else PutCharS(bmp[i]);//画上层
i++;
SetPage(0,0);
SetAddress(addr,addr);
if (window) PutCharM(bmp[i]);
else PutCharS(bmp[i]);//画下层
i++;
}
}
/***************************************************/
/*void DrawUp(char Xl,uchar width,uchar *bmp)
/***************************************************/
void DrawUp(char Xl,uchar width,uchar *bmp)
{
uchar addr,i=0;
char x;
bit window=0;
for(x=Xl;x>Xl-width;x--)
{
if (x<0) {window=1;addr=61+x;}
else addr=x;
SetPage(2,2);
SetAddress(addr,addr);
if (window) PutCharM(Inva(bmp[i]));
else PutCharS(Inva(bmp[i]));//画上层
i++;
SetPage(3,3);
SetAddress(addr,addr);
if (window) PutCharM(Inva(bmp[i]));
else PutCharS(Inva(bmp[i]));//画下层
i++;
}
}
/***************************************************/
/*调用方式:void clrscr(void)
/*函数说明:清屏
/***************************************************/
void clrscr(void)
{
uchar i;
uchar page;
for (page=0;page<4;page++)
{
SetPage(page,page);
SetAddress(0,0);
for (i=0;i<61;i++){PutCharS(0);PutCharM(0);}
}
}
/***************************************************/
/* void OutCmd(uint addr,uchar m)
/*
/***************************************************/
//void OutCmd(uint addr,uchar m)
//{
// uchar i=DELAY;
// while(i--);
// XBYTE[addr]=m;
//}
/*************************************************/
/* */
/* */
/* 字模区 */
/* */
/*************************************************/
uchar code up_start1[]={
/*国 CB9FA */
0x00,0x00,0x7F,0xFF,0x40,0x02,0x50,0x0A,
0x51,0x0A,0x51,0x0A,0x51,0x0A,0x5F,0xFA,
0x51,0x0A,0x53,0x4A,0x71,0x2A,0x50,0x0A,
0x40,0x02,0xFF,0xFF,0x40,0x00,0x00,0x00,
/*防 CB7C0 */
0x00,0x00,0x7F,0xFF,0x40,0x10,0x44,0x08,
0x5B,0x10,0x68,0xE1,0x08,0x02,0x08,0x0C,
0x8F,0xF0,0x69,0x02,0x09,0x01,0x09,0x02,
0x0B,0xFC,0x19,0x00,0x08,0x00,0x00,0x00,
/*科 CBFC6 */
0x24,0x08,0x24,0x10,0x24,0x60,0x25,0x80,
0x7F,0xFF,0xC5,0x00,0x44,0x80,0x00,0x40,
0x24,0x40,0x12,0x40,0x00,0x40,0xFF,0xFF,
0x00,0x80,0x01,0x80,0x00,0x80,0x00,0x00,
/*技 CBCBC */
0x08,0x20,0x08,0x22,0x08,0x41,0xFF,0xFE,
0x08,0x80,0x08,0x01,0x11,0x81,0x11,0x62,
0x11,0x14,0xFF,0x08,0x11,0x14,0x11,0x64,
0x31,0x82,0x10,0x03,0x00,0x02,0x00,0x00,
/*大 CB4F3 */
0x04,0x00,0x04,0x02,0x04,0x02,0x04,0x04,
0x04,0x08,0x04,0x30,0x05,0xC0,0xFE,0x00,
0x05,0x80,0x04,0x60,0x04,0x10,0x04,0x08,
0x04,0x04,0x0C,0x06,0x04,0x04,0x00,0x00,
/*学 CD1A7 */
0x02,0x20,0x0C,0x20,0x88,0x20,0x69,0x20,
0x09,0x20,0x09,0x22,0x89,0x21,0x69,0x7E,
0x09,0x60,0x09,0xA0,0x19,0x20,0x28,0x20,
0xC8,0x20,0x0A,0x60,0x0C,0x20,0x00,0x00
};
uchar code up_start2[]={
/*作 CD7F7 */
0x01,0x00,0x02,0x00,0x04,0x00,0x1F,0xFF,
0xE1,0x00,0x02,0x00,0x0C,0x00,0xF0,0x00,
0x1F,0xFF,0x11,0x10,0x11,0x10,0x13,0x10,
0x11,0x30,0x30,0x10,0x10,0x00,0x00,0x00,
/*者 CD5DF */
0x04,0x08,0x04,0x10,0x24,0x20,0x24,0x40,
0x24,0xFF,0x25,0x92,0xFE,0x92,0x24,0x92,
0x2C,0x92,0x34,0x92,0x24,0x92,0x45,0xFF,
0x04,0x80,0x0C,0x00,0x04,0x00,0x00,0x00,
/*: */
0x00,0x00,0x03,0x0C,0x03,0x08,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*吴 CCEE2 */
0x00,0x20,0x00,0x21,0x01,0x21,0x79,0x22,
0x49,0x22,0x49,0x24,0x49,0x38,0x49,0xE0,
0x49,0x30,0x49,0x28,0x49,0x24,0xFB,0x22,
0x41,0x23,0x00,0x62,0x00,0x20,0x00,0x00,
/*帅 CCBA7 */
0x00,0x00,0x3F,0xE1,0x00,0x02,0x00,0x0C,
0xFF,0xF0,0x00,0x00,0x00,0x00,0x1F,0xFC,
0x10,0x00,0x10,0x00,0xFF,0xFF,0x10,0x08,
0x10,0x04,0x3F,0xF8,0x10,0x00,0x00,0x00
};
uchar code down_start1[]={
/*李 CC0EE */
0x01,0x00,0x21,0x10,0x22,0x10,0x22,0x10,
0x24,0x90,0x28,0x92,0x20,0x91,0xFF,0xBE,
0x20,0xB0,0x28,0xD0,0x24,0x90,0x24,0x10,
0x62,0x30,0x23,0x10,0x02,0x00,0x00,0x00,
/*彩 CB2CA */
0x21,0x04,0x31,0x08,0x2D,0x10,0x21,0x60,
0x5B,0xFF,0x41,0x40,0x49,0x20,0xB1,0x30,
0x04,0x01,0x08,0x42,0x10,0x84,0x21,0x08,
0x62,0x10,0x06,0x30,0x00,0x00,0x00,0x00,
/*华 CBBAA */
0x00,0x20,0x02,0x20,0x04,0x20,0x08,0x20,
0x3F,0xA0,0xC0,0x20,0x02,0x20,0x04,0xFF,
0x08,0x20,0xFF,0x20,0x10,0xA0,0x20,0xA0,
0x60,0xA0,0x03,0xA0,0x00,0x20,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,0x00,0x00,
/*刘 CC1F5 */
0x10,0x02,0x14,0x04,0x92,0x08,0x51,0x90,
0x70,0x60,0x11,0x90,0x1E,0x0C,0x30,0x06,
0x10,0x00,0x00,0x00,0x3F,0xF0,0x00,0x02,
0x00,0x01,0xFF,0xFE,0x00,0x00,0x00,0x00,
/*凯 CBFAD */
0x02,0x00,0x7A,0x7E,0x0A,0x42,0x0A,0x44,
0xFA,0x44,0x0A,0x48,0x0F,0xE9,0x7A,0x02,
0x00,0x0C,0x7F,0xF0,0x40,0x00,0x40,0x00,
0xFF,0xFC,0x40,0x02,0x00,0x0E,0x00,0x00
};
uchar code up_start3[]={
/*宽 CBFED */
0x08,0x00,0x34,0x01,0x24,0x01,0x25,0xF9,
0x25,0x02,0x3F,0x04,0xA5,0x08,0x65,0x70,
0x25,0x1E,0x3F,0x01,0x25,0x01,0x27,0xF9,
0x25,0x01,0x2C,0x01,0x30,0x07,0x00,0x00,
/*带 CB4F8 */
0x01,0x00,0x26,0x00,0x24,0x00,0x24,0xFE,
0xFC,0x80,0x24,0x80,0x24,0x80,0xFF,0xFF,
0x24,0x80,0x24,0x84,0xFC,0x82,0x24,0xFC,
0x64,0x00,0x25,0x00,0x06,0x00,0x00,0x00,
/*放 CB7C5 */
0x08,0x02,0x08,0x0C,0x8F,0xF0,0x69,0x04,
0x09,0x02,0x0B,0xFC,0x09,0x01,0x08,0x02,
0x1B,0x04,0xE8,0xD8,0x08,0x20,0x08,0xD8,
0x0F,0x06,0x18,0x03,0x08,0x02,0x00,0x00,
/*大 CB4F3 */
0x04,0x00,0x04,0x02,0x04,0x02,0x04,0x04,
0x04,0x08,0x04,0x30,0x05,0xC0,0xFE,0x00,
0x05,0x80,0x04,0x60,0x04,0x10,0x04,0x08,
0x04,0x04,0x0C,0x06,0x04,0x04,0x00,0x00,
/*器 CC6F7 */
0x01,0x10,0x01,0x10,0xF9,0x3F,0x89,0x31,
0x89,0x51,0x89,0x51,0xF9,0x9F,0x07,0x00,
0xF9,0x9F,0x89,0x51,0x8D,0x51,0x8B,0x31,
0xF9,0x3F,0x03,0x10,0x01,0x10,0x00,0x00
};
uchar code up[]={
/*增 CD4F6 */
0x04,0x10,0x04,0x18,0xFF,0xF0,0x04,0x20,
0x04,0x20,0x0F,0x80,0x88,0xBF,0x4A,0xAA,
0x28,0xAA,0x0F,0xAA,0x28,0xAA,0x4A,0xAA,
0x88,0xFF,0x1F,0xA0,0x08,0x00,0x00,0x00,
/*益 CD2E6 */
0x00,0x02,0x10,0x02,0x10,0x7E,0x11,0x42,
0x92,0x42,0x54,0x7E,0x10,0x42,0x10,0x42,
0x10,0x42,0x54,0x7E,0x92,0x42,0x13,0x42,
0x30,0x7E,0x10,0x02,0x00,0x02,0x00,0x00,
/*( */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x07,0xE0,0x18,0x18,0x20,0x04,0x00,0x02,
/*d */
0x00,0x00,0x01,0xF8,0x02,0x08,0x02,0x04,
0x12,0x04,0x1F,0xF8,0x00,0x08,0x00,0x00,
/*b */
0x00,0x00,0x10,0x00,0x1F,0xF8,0x02,0x04,
0x02,0x04,0x03,0x08,0x01,0xF0,0x00,0x00,
/*) */
0x00,0x02,0x20,0x04,0x18,0x18,0x07,0xE0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*: */
0x00,0x00,0x03,0x0C,0x03,0x08,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
uchar code down[]={
/*有 CD3D0 */
0x20,0x20,0x20,0x40,0x20,0x80,0x21,0x00,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -