📄 波形发生器.c
字号:
void write_24lc16b(uint adrress, uchar *wdata, uchar number)
{
uchar control;
uchar sub_addr;
uchar flag;
flag = 0;
control = (uchar)(adrress >> 7) & 0x0e;
control |= 0xa0;
sub_addr = (uchar)(adrress & 0x00ff);
do
{
flag = ISendStr(control, sub_addr, wdata, number);
}while(flag == 0);
}
/**************************************************************************
读函数 *
函数原型: void read_24lc16b(uint adrress, uchar *data, uchar number); *
功能: 向24lc16b以address地址开始的单元读number个数据,number从1到2048*
**************************************************************************/
void read_24lc16b(uint adrress, uchar *rdata, uchar number)
{
uchar control;
uchar sub_addr;
uchar flag;
flag = 0;
control = (uchar)(adrress >> 7) & 0x0e;
control |= 0xa0;
sub_addr = (uchar)(adrress & 0x00ff);
do
{
flag = IRcvStr(control, sub_addr, rdata, number);
}while(flag == 0);
}
void write_string(uchar word_data[16],uchar hang,uchar lie ) //对LCD进行字符写入
{//hang 1-4 ,lie1-16
uchar i;
uchar lie1;
if(hang<=4&&lie<=16)
{
if(lie<=8)
for(i=0;i<16;i++)
{
if(i%2==0)
{
_nop_();
setlstartx(strat_xaddr+2*hang-2);//设置行1
setlstarty(strat_yaddr+8*lie-8+i/2);//设置列
lcdlwrite(word_data[i]);
}
else
{
_nop_();
setlstartx(strat_xaddr+2*hang-1);//设置行1
setlstarty(strat_yaddr+8*lie-8+i/2);//设置列
lcdlwrite(word_data[i]);
}
_nop_();
}
else
{
lie1=lie-8;
for(i=0;i<16;i++)
{
if(i%2==0)
{
_nop_();
setrstartx(strat_xaddr+2*hang-2);//设置行1
setrstarty(strat_yaddr+8*lie1-8+i/2);//设置列
lcdrwrite(word_data[i]);
}
else
{
_nop_();
setrstartx(strat_xaddr+2*hang-1);//设置行1
setrstarty(strat_yaddr+8*lie1-8+i/2);//设置列
lcdrwrite(word_data[i]);
}
_nop_();
}
}
}
else
_nop_();
}
/* 对LCD进行汉字字符写入*/
void write_chinese(uchar word_datas1[32], uchar hang,uchar lie )
{
uchar i;
uchar lie1;
if(hang<=4&&lie<=8)
{
if(lie<=4)
for(i=0;i<32;i++)
{
if(i%2==0)
{
_nop_();
setlstartx(strat_xaddr+2*hang-2);//设置行1
setlstarty(strat_yaddr+16*lie-16+i/2);//设置列
lcdlwrite(word_datas1[i]);
}
else
{
_nop_();
setlstartx(strat_xaddr+2*hang-1);//设置行1
setlstarty(strat_yaddr+16*lie-16+i/2);//设置列
lcdlwrite(word_datas1[i]);
}
_nop_();
}
else
{
lie1=lie-4;
for(i=0;i<32;i++)
{
if(i%2==0)
{
_nop_();
setrstartx(strat_xaddr+2*hang-2);//设置行1
setrstarty(strat_yaddr+16*lie1-16+i/2);//设置列
lcdrwrite(word_datas1[i]);
}
else
{
_nop_();
setrstartx(strat_xaddr+2*hang-1);//设置行1
setrstarty(strat_yaddr+16*lie1-16+i/2);//设置列
lcdrwrite(word_datas1[i]);
}
_nop_();
}
}
}
else
_nop_();
}
void write_data(uint datas,uchar i,uchar j)//第i行第j列开始显示;注:data的值0~9之间
{
if(datas<10)
{
switch(datas)
{
case 0:
write_string(shuzi0,i,j);
break;
case 1:
write_string(shuzi1,i,j);
break;
case 2:
write_string(shuzi2,i,j);
break;
case 3:
write_string(shuzi3,i,j);
break;
case 4:
write_string(shuzi4,i,j);
break;
case 5:
write_string(shuzi5,i,j);
break;
case 6:
write_string(shuzi6,i,j);
break;
case 7:
write_string(shuzi7,i,j);
break;
case 8:
write_string(shuzi8,i,j);
break;
case 9:
write_string(shuzi9,i,j);
break;
}
}
else
_nop_();
}
//数值的液晶显示
void show_data(double print,uchar hang,uchar lie,uchar wei)
{
long printz;
bit biaozhi;
uint m=0;
uint counter=0;
biaozhi=0;
if(print>=10000||print<=0.0001)//科学计数法
{ if(print>=10)
{
biaozhi=1;
for(;;)
{
print=print/10;
counter++;
if(print<10)
break;
else
_nop_();
}
}
else if(print<1&&print>0)
{
for(;;)
{
print=print*10;
counter++;
if(print>=1)
break;
else
_nop_();
}
}
else if(print>=1&&print<10)
biaozhi=1;
else
_nop_();
for(m=0;m<=wei;m++)
{
if(m==1)
_nop_();
else
{
printz=(long)(print);
printz=printz%10;
write_data(printz,hang,lie+m);
print=print*10;
}
}
write_string(dian,hang,lie+1);
write_string(space,hang,lie+wei+1);
write_string(exp,hang,lie+wei+2);
if(biaozhi==0)
write_string(fuhao,hang,lie+wei+3);
else
write_string(space,hang,lie+wei+3);
write_data(counter,hang,lie+wei+4);
}
else//小数表示
{
if(print>=10)
{
for(;;)
{
print=print/10;
counter++;
if(print<10)
break;
else
_nop_();
}
}
for(m=0;m<=wei;m++)
{
if(m=counter+1&&m!=wei)
write_string(dian,hang,lie+counter+1);
else
{
printz=(long)(print);
printz=printz%10;
write_data(printz,hang,lie+m);
print=print*10;
}
}
}
}
void show_bfs(double print,uchar hang,uchar lie,uchar wei)//百分数(0~1)
{
long printz;
bit biaozhi;
uint m=0;
uint counter=0;
biaozhi=0;
if(print<1&&print>0)
{
print=print*100;
if(print>=10)
{
biaozhi=1;
print=print/10;
}
for(m=0;m<=wei;m++)
{
if(m==1&&biaozhi==0)
_nop_();
else if(m==2&&biaozhi==1)
_nop_();
else
{
printz=(long)(print);
printz=printz%10;
write_data(printz,hang,lie+m);
print=print*10;
}
}
if(biaozhi==0)
write_string(dian,hang,lie+1);
else
write_string(dian,hang,lie+2);
write_string(baifenhao,hang,lie+wei+1);
}
else
_nop_();
}
/*液晶显示使用的字符数据*/
uchar code shuzi0[16] = {
0x00,0x00,0xE0,0x0F,0x10,0x10,0x08,0x20,
0x08,0x20,0x10,0x10,0xE0,0x0F,0x00,0x00}; /*"0"*/
uchar code shuzi1[16] = {
0x00,0x00,0x10,0x20,0x10,0x20,0xF8,0x3F,
0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00}; /*"1"*/
uchar code shuzi2[16] = {
0x00,0x00,0x70,0x30,0x08,0x28,0x08,0x24,
0x08,0x22,0x88,0x21,0x70,0x30,0x00,0x00}; /*"2"*/
uchar code shuzi3[16] = {
0x00,0x00,0x30,0x18,0x08,0x20,0x88,0x20,
0x88,0x20,0x48,0x11,0x30,0x0E,0x00,0x00}; /*"3"*/
uchar code shuzi4[16] = {
0x00,0x00,0x00,0x07,0xC0,0x04,0x20,0x24,
0x10,0x24,0xF8,0x3F,0x00,0x24,0x00,0x00}; /*"4"*/
uchar code shuzi5[16] = {
0x00,0x00,0xF8,0x19,0x08,0x21,0x88,0x20,
0x88,0x20,0x08,0x11,0x08,0x0E,0x00,0x00}; /*"5"*/
uchar code shuzi6[16] = {
0x00,0x00,0xE0,0x0F,0x10,0x11,0x88,0x20,
0x88,0x20,0x18,0x11,0x00,0x0E,0x00,0x00}; /*"6"*/
uchar code shuzi7[16] = {
0x00,0x00,0x38,0x00,0x08,0x00,0x08,0x3F,
0xC8,0x00,0x38,0x00,0x08,0x00,0x00,0x00}; /*"7"*/
uchar code shuzi8[16] = {
0x00,0x00,0x70,0x1C,0x88,0x22,0x08,0x21,
0x08,0x21,0x88,0x22,0x70,0x1C,0x00,0x00}; /*"8"*/
uchar code shuzi9[16] = {
0x00,0x00,0xE0,0x00,0x10,0x31,0x08,0x22,
0x08,0x22,0x10,0x11,0xE0,0x0F,0x00,0x00}; /*"9"*/
uchar code exp[16]={
0x08,0x20,0xF8,0x3F,0x88,0x20,0x88,0x20,
0xE8,0x23,0x08,0x20,0x10,0x18,0x00,0x00}; /*"E"*/
uchar code space[16]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; /*" "*/
uchar code fuhao[16]={
0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,
0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01}; /*"-"*/
uchar code dian[16]={
0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; /*"."*/
uchar code baifenhao[16]={
0xF0,0x00,0x08,0x21,0xF0,0x1C,0x00,0x03,
0xE0,0x1E,0x18,0x21,0x00,0x1E,0x00,0x00}; /*"%"*/
uchar code string_k[16]={
0x08,0x20,0xF8,0x3F,0x00,0x24,0x00,0x02,
0x80,0x2D,0x80,0x30,0x80,0x20,0x00,0x00}; /*"k"*/
uchar code string_H[16]={
0x08,0x20,0xF8,0x3F,0x08,0x21,0x00,0x01,
0x00,0x01,0x08,0x21,0xF8,0x3F,0x08,0x20}; /*"H"*/
uchar code string_z[16]={
0x00,0x00,0x80,0x21,0x80,0x30,0x80,0x2C,
0x80,0x22,0x80,0x21,0x80,0x30,0x00,0x00}; /*"z"*/
uchar code string_V[16]={
0x08,0x00,0x78,0x00,0x88,0x07,0x00,0x38,
0x00,0x0E,0xC8,0x01,0x38,0x00,0x08,0x00}; /*"V"*/
uchar code arrow[32]={
0x00,0x00,0x00,0x00,0xE0,0x07,0xE0,0x07,
0xE0,0x07,0xE0,0x07,0xE0,0x07,0xE0,0x07,
0xE0,0x07,0xFE,0x7F,0xFC,0x3F,0xF8,0x1F,
0xF0,0x0F,0xE0,0x07,0xC0,0x03,0x80,0x01}; /*"arrow"*/
uchar code functionlists[11][32]={
/*方(0) 波(1) 三(2) 角(3) 波(4) 正(5) 弦(6) 波(7)
脉(8) 冲(9) 波(10)*/
0x08,0x40,0x08,0x40,0x08,0x20,0x08,0x10,
0x08,0x0C,0x08,0x03,0xF9,0x00,0x4A,0x00,
0x4C,0x20,0x48,0x40,0x48,0x40,0xC8,0x3F,
0x08,0x00,0x08,0x00,0x08,0x00,0x00,0x00,/*"方",0*/
0x10,0x04,0x60,0x04,0x01,0xFF,0xE6,0x40,
0x00,0x30,0xF8,0x8F,0x88,0x80,0x88,0x41,
0x88,0x26,0xFF,0x18,0x88,0x18,0x88,0x26,
0x88,0x61,0x18,0xC0,0x08,0x40,0x00,0x00,/*"波",1*/
0x00,0x00,0x04,0x20,0x84,0x20,0x84,0x20,
0x84,0x20,0x84,0x20,0x84,0x20,0x84,0x20,
0x84,0x20,0x84,0x20,0x84,0x20,0x84,0x20,
0x84,0x20,0x04,0x20,0x00,0x20,0x00,0x00,/*"三",2*/
0x00,0x00,0x40,0x80,0x20,0x60,0xF0,0x1F,
0x98,0x04,0x97,0x04,0x92,0x04,0x92,0x04,
0xF2,0xFF,0x92,0x04,0x9A,0x04,0x96,0x44,
0x92,0x84,0xF0,0x7F,0x00,0x00,0x00,0x00,/*"角",3*/
0x10,0x04,0x60,0x04,0x01,0xFF,0xE6,0x40,
0x00,0x30,0xF8,0x8F,0x88,0x80,0x88,0x41,
0x88,0x26,0xFF,0x18,0x88,0x18,0x88,0x26,
0x88,0x61,0x18,0xC0,0x08,0x40,0x00,0x00,/*"波",4*/
0x00,0x20,0x02,0x20,0x02,0x20,0xC2,0x3F,
0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,
0xFE,0x3F,0x82,0x20,0x82,0x20,0x82,0x20,
0x82,0x20,0x82,0x20,0x02,0x20,0x00,0x00,/*"正",5*/
0x02,0x01,0xF2,0x23,0x12,0x41,0x12,0x81,
0x3E,0x7F,0x00,0x00,0x04,0x21,0x84,0x71,
0x44,0x29,0xB5,0x25,0x86,0x22,0x84,0x21,
0xE4,0x28,0x44,0x70,0x04,0x20,0x00,0x00,/*"弦",6*/
0x10,0x04,0x60,0x04,0x01,0xFF,0xE6,0x40,
0x00,0x30,0xF8,0x8F,0x88,0x80,0x88,0x41,
0x88,0x26,0xFF,0x18,0x88,0x18,0x88,0x26,
0x88,0x61,0x18,0xC0,0x08,0x40,0x00,0x00,/*"波",7*/
0x00,0x60,0xFE,0x1F,0x12,0x41,0x12,0x81,
0xFE,0x7F,0x00,0x10,0x48,0x08,0xC8,0x47,
0x09,0x80,0xFE,0x7F,0x82,0x00,0x40,0x01,
0x38,0x06,0x10,0x1C,0x00,0x08,0x00,0x00,/*"脉",8*/
0x00,0x04,0x02,0x04,0x1C,0xFE,0xC8,0x01,
0x00,0x00,0xF8,0x03,0x08,0x01,0x08,0x01,
0x08,0x01,0xFF,0xFF,0x08,0x01,0x08,0x01,
0x08,0x01,0xF8,0x03,0x00,0x00,0x00,0x00,/*"冲",9*/
0x10,0x04,0x60,0x04,0x01,0xFF,0xE6,0x40,
0x00,0x30,0xF8,0x8F,0x88,0x80,0x88,0x41,
0x88,0x26,0xFF,0x18,0x88,0x18,0x88,0x26,
0x88,0x61,0x18,0xC0,0x08,0x40,0x00,0x00/*"波",10*/};
uchar code shujuchuanshu[4][32]={
//发(0) 送(1) 接(2) 受(3)
0x00,0x40,0x10,0x20,0x3E,0x10,0x10,0x88,
0x10,0x87,0xF0,0x41,0x9F,0x46,0x90,0x28,
0x90,0x10,0x92,0x28,0x94,0x27,0x1C,0x40,
0x10,0xC0,0x10,0x40,0x10,0x00,0x00,0x00,/*"发",0*/
0x40,0x40,0x41,0x20,0xC6,0x1F,0x00,0x20,
0x40,0x40,0x48,0x48,0x49,0x44,0x4E,0x43,
0xF8,0x40,0x4C,0x41,0x4B,0x42,0x48,0x4C,
0x48,0x40,0x40,0x40,0x00,0x40,0x00,0x00,/*"送",1*/
0x08,0x02,0x08,0x42,0x08,0x81,0xFF,0x7F,
0x88,0x02,0x68,0x82,0x24,0x8A,0x2C,0x4E,
0xB4,0x53,0x25,0x32,0x26,0x12,0x34,0x2E,
0x2C,0x42,0x24,0xC2,0x20,0x02,0x00,0x00,/*"接",2*/
0x80,0x00,0x62,0x80,0x26,0x80,0x2A,0x41,
0x32,0x43,0x22,0x25,0x26,0x29,0x3A,0x11,
0x2B,0x11,0x21,0x2D,0x31,0x23,0x2F,0x40,
0xA5,0xC0,0x60,0x40,0x20,0x00,0x00,0x00/*"受",3*/};
uchar code pinlvzhi[3][32]={
//频(0) 率(1) 值(2)
0x20,0x44,0x3C,0x43,0x20,0x20,0x20,0x10,
0xBF,0x0B,0x24,0x04,0x24,0x43,0x00,0x40,
0xF2,0x27,0x1A,0x18,0xD6,0x07,0x12,0x08,
0x12,0x10,0xF2,0x27,0x02,0x60,0x00,0x00,/*"频",0*/
0x00,0x08,0x0C,0x0A,0x14,0x09,0xA4,0x08,
0x04,0x08,0x64,0x0A,0x35,0x0B,0xAE,0xFE,
0x64,0x0A,0x24,0x0B,0x14,0x0C,0xA4,0x08,
0x14,0x09,0x04,0x0A,0x04,0x08,0x00,0x00,/*"率",1*/
0x80,0x00,0x40,0x00,0xF0,0xFF,0x2F,0x00,
0x02,0x40,0x04,0x40,0xE4,0x7F,0xA4,0x4A,
0xB4,0x4A,0xAF,0x4A,0xA6,0x4A,0xA4,0x4A,
0xE4,0x7F,0x04,0x40,0x00,0x40,0x00,0x00/*"值",2*/};
uchar code fuduzhi[3][32]={
// 幅(0) 度(1) 值(2)
0xF8,0x0F,0x08,0x00,0xFF,0xFF,0x08,0x08,
0xF8,0x0F,0x00,0x00,0x02,0x7F,0x7A,0x25,
0x4A,0x25,0x4A,0x25,0x4A,0x3F,0x4A,0x25,
0x4A,0x25,0x7A,0x25,0x02,0x7F,0x00,0x00,/*"幅",0*/
0x00,0x80,0x00,0x60,0xFC,0x1F,0x04,0x80,
0x24,0x80,0x24,0x42,0xFC,0x46,0xA5,0x2A,
0xA6,0x12,0xA4,0x12,0xFC,0x2A,0x24,0x26,
0x24,0x42,0x24,0xC0,0x04,0x40,0x00,0x00,/*"度",1*/
0x80,0x00,0x40,0x00,0xF0,0xFF,0x2F,0x00,
0x02,0x40,0x04,0x40,0xE4,0x7F,0xA4,0x4A,
0xB4,0x4A,0xAF,0x4A,0xA6,0x4A,0xA4,0x4A,
0xE4,0x7F,0x04,0x40,0x00,0x40,0x00,0x00/*"值",2*/};
uchar code bujinzhi[4][32]={
// 步(0) 进(1) 选(2) 择(3)
0x00,0x00,0x20,0x44,0x20,0x44,0x20,0x42,
0xBC,0x41,0x20,0x20,0x20,0x20,0x20,0x20,
0xFF,0x17,0x24,0x10,0x24,0x08,0x24,0x04,
0x24,0x03,0x20,0x02,0x20,0x00,0x00,0x00,/*"步",0*/
0x80,0x00,0x82,0x40,0x9C,0x20,0x88,0x1F,
0x00,0x20,0x88,0x50,0x88,0x4C,0xFF,0x43,
0x88,0x40,0x88,0x40,0x88,0x40,0xFF,0x5F,
0x88,0x40,0x88,0x40,0x80,0x40,0x00,0x00,/*"进",1*/
0x40,0x00,0x40,0x40,0x42,0x20,0xCC,0x1F,
0x00,0x20,0x50,0x48,0x4E,0x46,0xC8,0x41,
0x48,0x40,0x7F,0x40,0xC8,0x47,0x48,0x48,
0x48,0x48,0x40,0x4E,0x00,0x40,0x00,0x00,/*"选",2*/
0x08,0x42,0x08,0x81,0xFF,0x7F,0x88,0x00,
0x48,0x00,0x08,0x08,0x42,0x09,0x46,0x09,
0x2A,0x09,0xD2,0xFF,0x2A,0x09,0x46,0x09,
0x42,0x09,0x80,0x08,0x80,0x08,0x00,0x00/*"择",3*/};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -