xrwavrdiy 发表于 2010-4-15 20:25:52

stc5412AD示波器

基于STC12C5412AD单片机的存储示波器设计



魏广寅

(贵州大学 计算机科学与技术学院)



摘要:研究了基于单片机的自动量程转换频率计和存储示波器设计,经实验,效果理想,能实现1Hz~50MHz间的频率测量,同时显示信号周期,4档量程(精度),能实现1Hz~15KHz间的信号波形实时显示,采样速率120KHz,存储深度128B,还能对任何红外编码发射器码型进行破解。







关键词:高速单片机自动量程转换液晶显示器信号抽样红外PWM同步触发







引言:频率计是电子电路测量、调试中不可缺少的一种仪器,其主要功能是测量信号的频率。传统的频率计是用纯分离数字IC组成,一般由信号整形、预分频、闸门、计数器、锁存器、译码驱动电路构成,结构较复杂,而功能扩展又及其不便。因此,本设计方案摒弃了传统的结构,而采用单片机和两片外围IC来完成上述的所有模块,在不增加外围的情况下还扩展了周期测量,波形显示,红外PWM编码分析等功能,因此性价比大幅提高,而制作难度大幅下降。





参考文献:SSC12A64DRY---DataSheet

74HC390-------DataSheet

74HC03--------DataSheet

STC12C5412AD--DataSheet



























正文:本频率计采用液晶显示器做人机接口,菜单式界面设计,测量频率1Hz~50MHz自动转换量程,波形分析采用奈氏抽样,上限频率到15KHz,同步触发为过零触发,红外PWM编码分析采用一体化红外接收头,单片机内部解码,适用任何4B以下的归零曼彻斯特_码分析。

系统电路如下:


电路工作原理:

预分频部分:待测信号从Q9头输入,经C1隔直后一路直接送往单片机做奈氏抽样,另一路则送往与非门U1。R1和R2将U1的输入端偏置在转折特性区的中点,这时U1既作为小信号放大器,又起到整形作用。整形后的信号送往由74HC390构成的10/100分频器,1分频的信号、10分频的信号、100分频的信号分别用U2,U3,U4来选通。为此,要求与非门的输出必须是OC形式的才能构成线与逻辑,本电路采用高速的74HC03,线与后的信号送单片机处理。



软件流程如下:


单片机功能模块设计方法及说明:



人机对话方式:采用128X64的点阵液晶做对话窗口,10级中文菜单操作,键盘采用经典的三按键结构,仅使用两个I/O口,分“向上”,“向下”,“回车”三项基本功能,在不同的工作模块中有不同的按键功能定义。



系统自检模块:主要检测分频器选通端是否有短路。



频率计模块:本部分全由软件实现,将单片机T0设置为闸门,闸门时间为1S和0.1S,T1设置为外部触发计数器,最高计数值65535,闸门时间内T1的计数值即为信号频率。

自动转换量程的实现:采用逐次试探比较算法,即先用高量程测频,若计数值小于某值则向下跳一挡,直到最合适的量程为止。在频率计子循环中不停检测当前读数是否越界,一旦越界立即切换量程,使16位的计数器能在各个频段达到最高的分辨率,并通过T1的溢出中断来判别是否测量的是信号的谐波,然后自动切换至高档位。在屏幕上表现为小数点位置的移动和频率单位的转换,高位零消隐。分段如下:



频段
分频系数
闸门时间
单位

0.1Hz~50.000K
1
1000.0000mS
KHz

50.001K~500.00K
1
100.0000mS
KHz

500.01K~5.0000M
10
100.0000mS
MHz

5.0001M~50.000M
100
100.0000mS
MHz




周期测量:用软件实现,频率的倒数即是周期,根据不同的频段采用不同的周期单位和计算方式,已达到最高精度。



示波器模块:根据奈氏抽样原理,将连续模拟信号用冲击信号抽样,数字滤波,10位量化得到离散的数字量,存储在RAM中以便分析。这种方法的基础是高速ADC,而STC12C5412AD系列单片机内部就集成有8通道10bit的高速ADC,采样速率最高到250KHz,本设计采用120KHz采样率,据奈氏抽样原理,两倍与信号频率的抽样速度就能从数字量中还原出模拟信号,但为保证还原后的高保_真度,本设计采用8倍抽样速率,因此进行波形分析的输入信号的频率不能大于15KHz。



同步触发的实现:因为输入信号的频率和相位与显示器扫描信号的相位很少有一致的时候,这样的话前后两帧之间会存在一个相位差,使屏幕上的波形混叠不清,不便于观察和分析。为此,本设计提供了两种同步触发方式,只有满足触发条件时才启动扫描,这样就能保证波形稳定的显示,分别为(1)



过零正斜率触发:采用软件算法实现,循环的检测AD值,一旦检测值过零点(AD值=512)而且随后1,2时刻的采样值呈递增趋势(正斜率)就立刻触发扫描。(2)手动单次触发,按下定格键就将此时波形定格下来,适用于杂乱的信号显示。



编码分析仪模块:硬件是以SM0038的一体化红外接收头为基础,当接收头收到38KHz的载波信号后,输出端会呈现低电平,基带与发送端基本一致。然后送往MCU处理。

软件解码过程:将MCU的外部中断INT0设置为下跳沿触发中断,在中断服务中读取片内计数器的值,相邻两次中断的间隔即为调制脉宽,根据曼彻斯特编码的定义,两个相邻下跳沿间的脉宽即代表一个位,(如1.2mS等价于“0”,2.4mS等价于“1”),因此只要把脉宽记录下来,很轻松就可以分析任何遥控器的编码组成。



系统信息模块:主要显示固件的版本号,程序设计者等等附属信息。

元器件的选择:

U1~U4:选择HC或AC系列高速COMS与非门(OC输出),如74HC03,74HC01

MCU :选择STC12C5412AD,一时钟一周期,外部晶振最高48MHz相当于传统8052的580M主频。增强型52内核,内置高速ADC,EEPROM,Watch dog,PCA,可以ISP,IAP。或选用同样性能的AVR 单片机。

液晶显示模组:SSC12A64DRY的无字库图形液晶,价格便宜,操作方便,并行模式,INTEL总线时序,高响应速度。

其余阻容元件参数均按图示,采用CBB电容和1/4W五色环金属膜电阻。



布线方式:由于是高速电路,PCB的布线将严重影响系统性能,因此本设计全采用45度转角,大面积敷铜接地,信号线与功率线分开。如下图


            

测量结果如下:

频率源
FS413频率计读数
本机读数

555时基振荡器
1Hz
0.001KHz

555时基振荡器
10Hz
0.010KHz

555时基振荡器
100Hz
0.100KHz

555时基振荡器
1000Hz
1.000KHz

555时基振荡器
10.000KHz
10.000KHz

555时基振荡器
100.000KHz
100.00KHz

555时基振荡器
223.421KHz
223.42KHz

11.0592MHz晶振
11.0591MHz
11.059MHz

24.0000MHz晶振
24.0011MHz
24.001MHz

48.2450MHz晶振
48.2455MHz
48.246MHz
























菜单界面实拍图:



























频率测量实拍图:


波形显示实拍图:


PWM分析实拍图:










单片机开发平台:Keil uV3 8.05版





单片机程序采用C51语言用分块分级模式编写,代码量9176Byte,内存占用82.1%,外存使用256Byte. 包含以下几个模块:



1.    Menu.C                   (菜单模块)

2.    Freqen.c                  (频率计模块)

3.    Dis_Wave.C               (示波器模块)

4.    PWM.C                     (PWM分析模块)

5.    STC12C5412AD_DRIVER.C    (单片机附加功能驱动)

6.    LCD12864_Driver_New.C    (液晶显示器驱动)

7.    Lib.C   (汉字库)











完整程序清单:



//模块:Menu.C

//功能:菜单模块

//晶振:24.000MHz

//芯片: STC12C5412AD

//版本:V1.0.0

//设计:魏广寅

//日期:2007.4.10

//--------------------------------------------------------------------

#include"STC12C5412AD.h"

#define size_of_keybd_menu8

#define uint unsigned int

#define uchar unsigned char

sbit sel_1=P1^6;

sbit sel_10=P1^4;

sbit sel_100=P3^4;

sbit f_in=P3^5;

uchar temp_l,temp_h;

uchar i=0;

uint temp0=0x30,temp1=0x30,temp2=0x30,temp3=0x30,temp4=0x30;

uchar keyfuncindex=0;

void(*keyfuncptr)();

void beep(uint time);

uchar bdata gate=4;

uchar code tab=

{'0','1','2','3',

'4','5','6','7',

'8','9','A','B',

'C','D','E','F'};

extern void get_value();

extern void AD_init(uchar AD_port_sel );

extern void pwm();

extern void bin_to_hex();

extern unsigned char code x0[]; // 请

extern unsigned char code x1[];    // 选

extern unsigned char code x2[];    // 择

extern unsigned char code x3[];    // 工

extern unsigned char code x4[];    // 作

extern unsigned char code x5[];    // 模

extern unsigned char code x6[];    // 式

extern unsigned char code x7[];    // 频

extern unsigned char code x8[];    // 率

extern unsigned char code x9[];    // 计

extern unsigned char code x10[];// 示

extern unsigned char code x11[];// 波

extern unsigned char code x12[];// 器

extern unsigned char code x13[];// 测

extern unsigned char code x14[];// 量

extern unsigned char code x15[];// 红

extern unsigned char code x16[];// 外

extern unsigned char code x17[];// 分

extern unsigned char code x18[];// 析

extern unsigned char code x19[];// 固

extern unsigned char code x20[];// 件

extern unsigned char code x21[];// 版

extern unsigned char code x22[];// 本

extern unsigned char code x23[];// 信

extern unsigned char code x24[];// 息

extern unsigned char code x25[];// 程

extern unsigned char code x26[];// 式

extern unsigned char code x27[];// 设

extern unsigned char code x28[];// 计

extern unsigned char code x29[];// 魏

extern unsigned char code x30[];// 广

extern unsigned char code x31[];// 寅

extern unsigned char code x32[];// 贵

extern unsigned char code x33[];// 大

extern unsigned char code x34[];// 电

extern unsigned char code x35[];// 科

extern unsigned char code x36[];// 欢

extern unsigned char code x37[];// 迎

extern unsigned char code x38[];// 使

extern unsigned char code x39[];// 用

extern unsigned char code x40[];// 多

extern unsigned char code x41[];// 功

extern unsigned char code x42[];// 能

extern void lcd_init();

extern void delay(uint time);

extern void dis_one_zi(uchar x_add,uchar y_add,uchar code *po,bit back_flag,bit char_moudle);

extern void dis_one_char(uchar x,uchar y,uchar asc_num,bit b_flag);

externwave();

extern void dis_cls(void);

extern void freq();

sbit beep_port=P1^5;

//--------------------------------------------------------------------

void d0_3(uchar sel)

{

       dis_cls();

       dis_one_char(0,0,'1',1); //1. 50MHz频率计

       dis_one_char(0,1,'.',1);

       dis_one_char(0,2,' ',1);

       dis_one_char(0,3,'5',1);

       dis_one_char(0,4,'0',1);

       dis_one_char(0,5,'M',1);

       dis_one_char(0,6,'H',1);

       dis_one_char(0,7,'z',1);

       dis_one_zi(0,4,x7,1,1);

       dis_one_zi(0,5,x8,1,1);

       dis_one_zi(0,6,x9,1,1);



       dis_one_char(1,0,'2',1); //2. 15KHz示波器

       dis_one_char(1,1,'.',1);

       dis_one_char(1,2,' ',1);

       dis_one_char(1,3,'1',1);

       dis_one_char(1,4,'5',1);

       dis_one_char(1,5,'K',1);

       dis_one_char(1,6,'H',1);

       dis_one_char(1,7,'z',1);

       dis_one_zi(1,4,x10,1,1);

       dis_one_zi(1,5,x11,1,1);

       dis_one_zi(1,6,x12,1,1);



       dis_one_char(2,0,'3',1); //3. PWM红外分析      

       dis_one_char(2,1,'.',1);

       dis_one_char(2,2,' ',1);

       dis_one_char(2,3,'P',1);

       dis_one_char(2,4,'W',1);

       dis_one_char(2,5,'M',1);

       dis_one_zi(2,3,x15,1,1);

       dis_one_zi(2,4,x16,1,1);

       dis_one_zi(2,5,x17,1,1);

       dis_one_zi(2,6,x18,1,1);



       dis_one_char(3,0,'4',1); //4. SOW版本信息      

       dis_one_char(3,1,'.',1);

       dis_one_char(3,2,' ',1);

       dis_one_char(3,3,'S',1);

       dis_one_char(3,4,'O',1);

       dis_one_char(3,5,'W',1);

       dis_one_zi(3,3,x21,1,1);

       dis_one_zi(3,4,x22,1,1);

       dis_one_zi(3,5,x23,1,1);

       dis_one_zi(3,6,x24,1,1);



       switch (sel)

       {

            case 0:

          {

         dis_one_char(0,0,'1',0); //1. 50MHz频率计

            dis_one_char(0,1,'.',0);

            dis_one_char(0,2,' ',0);

            dis_one_char(0,3,'5',0);

            dis_one_char(0,4,'0',0);

            dis_one_char(0,5,'M',0);

            dis_one_char(0,6,'H',0);

            dis_one_char(0,7,'z',0);

            dis_one_zi(0,4,x7,0,1);

            dis_one_zi(0,5,x8,0,1);

            dis_one_zi(0,6,x9,0,1);

            dis_one_char(0,14,0x7f,1);

            dis_one_char(0,15,0x7f,1);

            break;}



            case 1:

          {

            dis_one_char(1,0,'2',0); //2. 15KHz示波器

            dis_one_char(1,1,'.',0);

            dis_one_char(1,2,' ',0);

            dis_one_char(1,3,'1',0);

            dis_one_char(1,4,'5',0);

            dis_one_char(1,5,'K',0);

            dis_one_char(1,6,'H',0);

            dis_one_char(1,7,'z',0);

            dis_one_zi(1,4,x10,0,1);

            dis_one_zi(1,5,x11,0,1);

            dis_one_zi(1,6,x12,0,1);

            dis_one_char(1,14,0x7f,1);

            dis_one_char(1,15,0x7f,1);

            break;}



            case 2:

            {

            dis_one_char(2,0,'3',0); //3. PWM红外分析      

            dis_one_char(2,1,'.',0);

            dis_one_char(2,2,' ',0);

            dis_one_char(2,3,'P',0);

            dis_one_char(2,4,'W',0);

            dis_one_char(2,5,'M',0);

            dis_one_zi(2,3,x15,0,1);

            dis_one_zi(2,4,x16,0,1);

            dis_one_zi(2,5,x17,0,1);

            dis_one_zi(2,6,x18,0,1);

            dis_one_char(2,14,0x7f,1);

            dis_one_char(2,15,0x7f,1);

            break;}



            case 3:

            {

            dis_one_char(3,0,'4',0); //4. SOW版本信息      

            dis_one_char(3,1,'.',0);

            dis_one_char(3,2,' ',0);

            dis_one_char(3,3,'S',0);

            dis_one_char(3,4,'O',0);

            dis_one_char(3,5,'W',0);

            dis_one_zi(3,3,x21,0,1);

            dis_one_zi(3,4,x22,0,1);

            dis_one_zi(3,5,x23,0,1);

            dis_one_zi(3,6,x24,0,1);

      

            dis_one_char(3,14,0x7f,1);

            dis_one_char(3,15,0x7f,1);

            break;}



       }

}

//--------------------------------------------------------------------

void d0(void)

{

       d0_3(0);

      

}

//--------------------------------------------------------------------

void d1(void)

{

       d0_3(1);

}

//--------------------------------------------------------------------

void d2(void)

{

       d0_3(2);

}

//--------------------------------------------------------------------

void d3()

{

       d0_3(3);

}

//--------------------------------------------------------------------

void d4()

{

       dis_cls();

       pwm();

}

//--------------------------------------------------------------------

void d5()

{

       dis_cls();

       dis_one_zi(0,0,x19,1,1);

       dis_one_zi(0,1,x20,1,1);

       dis_one_char(0,4,':',1);

       dis_one_char(0,5,' ',1);

       dis_one_char(0,6,'V',1);

       dis_one_char(0,7,'1',1);

       dis_one_char(0,8,'.',1);

       dis_one_char(0,9,'0',1);

       dis_one_char(0,10,'.',1);

       dis_one_char(0,11,'0',1);



       dis_one_zi(1,0,x25,1,1);

       dis_one_zi(1,1,x26,1,1);

       dis_one_zi(1,2,x27,1,1);

       dis_one_zi(1,3,x28,1,1);

       dis_one_char(1,8,':',1);

       dis_one_zi(2,4,x32,1,1);

       dis_one_zi(2,5,x33,1,1);

       dis_one_zi(2,6,x34,1,1);

       dis_one_zi(2,7,x35,1,1);

      

       dis_one_zi(3,4,x29,1,1);

       dis_one_zi(3,5,x30,1,1);

       dis_one_zi(3,6,x31,1,1);



}

//--------------------------------------------------------------------

void d6()

{

       dis_cls();

       freq();

}

//--------------------------------------------------------------------

void d7()

{

       dis_cls();

       wave();

}

//--------------------------------------------------------------------

typedef struct

{

       uchar keystateindex;

       uchar keydnstate;

       uchar keyupstate;

       uchar keycrstate;

       void(*currentoperate)();

} kbdtabstruct;

//--------------------------------------------------------------------

kbdtabstruct code keytab=

{ //第一行表示在0级菜单时按下向下键则转到1级菜单

//按下向上键则转1级菜单,按下回车键则转5级菜单

//    下 上 回车



       { 0, 1, 3, 6, (* d0)},

       { 1, 2, 0, 7, (* d1)},

       { 2, 3, 1, 4, (* d2)},

       { 3, 0, 2, 5, (* d3)},

      

       { 4, 2, 2, 2, (* d4)},//PWM分析子程序

       { 5, 3, 3, 3, (* d5)},//版本信息

       { 6, 0, 0, 0, (* d6)},//频率计子程序

       { 7, 0, 1, 1, (* d7)},//示波器子程序

};

//--------------------------------------------------------------------

void getkeyinput(void)

{



       uchar key_value,temp;

re:    temp=P3;

       temp|=0x03;

       P3=temp;

       key_value=P3&0x03;

       delay(50000);

//0:下键   2:中键   1:上键

       switch(key_value)

       {

            case 1:

            {

                     keyfuncindex=keytab.keycrstate;

                     beep(6500);

                     break;

            }

            case 2:

            {

                     keyfuncindex=keytab.keyupstate;

                     beep(6500);

                     break;

            }

            case 0:

            {

                     keyfuncindex=keytab.keydnstate;

                     beep(6500);

                     break;

            }

            default:

            goto re;

       }

            

       keyfuncptr=keytab.currentoperate;

       (*keyfuncptr)();

       delay(65535);

       delay(65535);

}

//--------------------------------------------------------------------

void beep(uint time)

{

       beep_port=0;

       delay(time);

       delay(time);

       delay(time);

       delay(time);

       beep_port=1;

}

//--------------------------------------------------------------------

void sys_auto_check(void)

{

       uchar xx,c=3;



       dis_one_zi(0,2,x36,1,1);

       dis_one_zi(0,3,x37,1,1);

       dis_one_zi(0,4,x38,1,1);

       dis_one_zi(0,5,x39,1,1);

       dis_one_zi(1,1,x40,1,1);

       dis_one_zi(1,2,x41,1,1);

       dis_one_zi(1,3,x42,1,1);

       dis_one_zi(1,4,x7,1,1);

       dis_one_zi(1,5,x8,1,1);

       dis_one_zi(1,6,x9,1,1);

       while(--c!=0)

       {

            for(xx=3;xx<13;xx++)

            {

                     dis_one_char(2,xx-1,'>',1);

                     dis_one_char(2,xx,'>',1);

                     dis_one_char(2,xx+1,'>',1);

                     delay(50000);

                     delay(50000);



                     dis_one_char(2,xx-1,' ',1);

                     dis_one_char(2,xx,' ',1);

                     dis_one_char(2,xx+1,' ',1);

               }

       }

       beep(60000);

}

//--------------------------------------------------------------------

void main(void) using 0

{

      

       beep_port=1;

       EA=0;

       SP=0x7f;

       lcd_init();

       f_in=1;

       sys_auto_check();

       AD_init(7);

       keyfuncindex=0;

       d0();

       while(1)

    {

            getkeyinput();

       }

}

//--------------------------------------------------------------------



//模块:STC12C5412AD_Driver.C

//功能:单片机增强功能驱动模块

//晶振:24.000MHz

//芯片: STC12C5412AD

//版本:V1.0.0

//设计:魏广寅

//日期:2007.4.10

#include "STC12C5412AD.h"

#define uchar unsigned char

#define uint unsigned int

//--------------------------------------------------------------------

/*void set_timer0_1T()//设置T0为1T模式

{

       AUXR=AUXR|0x80;

}

//--------------------------------------------------------------------

void set_timer1_1T()//设置T1为1T模式

{

       AUXR=AUXR|0x40;

}

//--------------------------------------------------------------------

void set_timer0_12T()//设置T0为12T模式

{

       AUXR=AUXR&0x7f;

}

//--------------------------------------------------------------------

void set_timer1_12T()//设置T1为12T模式

{

       AUXR=AUXR&0xbf;

}

//--------------------------------------------------------------------

uchar EEPROM_read(uint addr)//EEPROM字节读

{

       ISP_ADDRH=(addr&0xff00)>>8;

       ISP_ADDRL=addr&0x00ff;

       ISP_CONTR=0x81;

       ISP_CMD=1;

       ISP_TRIG=0x46;

       ISP_TRIG=0xb9;

       return ISP_DATA;

}

//--------------------------------------------------------------------

void EEPROM_write(uint addr,uchar dat)//EEPROM字节写

{

       ISP_DATA=dat;

       ISP_ADDRH=(addr&0xff00)>>8;

       ISP_ADDRL=addr&0x00ff;

       ISP_CONTR=0x81;

       ISP_CMD=2;

       ISP_TRIG=0x46;

       ISP_TRIG=0xb9;

}

//--------------------------------------------------------------------

void EEPROM_ERASE(uint addr)//EEPROM扇区擦除

{

       ISP_ADDRH=(addr&0xff00)>>8;

       ISP_ADDRL=addr&0x00ff;

       ISP_CONTR=0x81;

       ISP_CMD=3;

       ISP_TRIG=0x46;

       ISP_TRIG=0xb9;

} */

//--------------------------------------------------------------------

/*    void set_p3_tw()

{

      P3M0|=0x00;

      P3M1|=0x00;

}*/

//--------------------------------------------------------------------

void AD_init(uchar AD_port_sel ) //ADC初始化

{

       ADC_CONTR|=0x80;//开ADC电源

switch(AD_port_sel)   //选择作为ADC的端口

       {

            case 0:

            P1M0=0x01;

            P1M1=0x00;

            ADC_CONTR&=0xf8;



            break;

            

            case 1:

            P1M0=0x02;

            P1M1=0x00;

            ADC_CONTR&=0xf8;

            ADC_CONTR|=0x01;

            break;



            case 2:

            P1M0=0x04;

            P1M1=0x00;

            ADC_CONTR&=0xf8;

            ADC_CONTR|=0x02;

            break;



            case 3:

            P1M0=0x08;

            P1M1=0x10;

            ADC_CONTR&=0xf8;

            ADC_CONTR|=0x03;

            break;



            case 4:

            P1M0=0x10;

            P1M1=0x00;

            ADC_CONTR&=0xf8;

            ADC_CONTR|=0x03;

            break;



            case 5:

            P1M0=0x20;

            P1M1=0x00;

            ADC_CONTR&=0xf8;

            ADC_CONTR|=0x05;

            break;



            case 6:

            P1M0=0x40;

            P1M1=0x00;

            ADC_CONTR&=0xf8;

            ADC_CONTR|=0x06;

            break;



            case 7:

            P1M0=0x80;

            P1M1=0x80;

            ADC_CONTR&=0xf8;

            ADC_CONTR|=0x07;

            break;

       }

       ADC_CONTR=0xe7;

}

//--------------------------------------------------------------------

uint GET_AD_Result()//启动AD转换并返回转换值

{

       uchar temp;

       uint data_temp;

       data_temp=0;

       ADC_DATA=0;

       ADC_LOW2=0;

       ADC_CONTR|=0x08;

re:    temp=0x10;

       temp&=ADC_CONTR;

       if(temp==0)

            goto re;

       ADC_CONTR&=0xe7;

       data_temp=ADC_DATA;

       data_temp<<=2;

       data_temp+=ADC_LOW2;

       return data_temp;

}

//--------------------------------------------------------------------



//模块:Dis_Wave.C

//功能:示波器模块

//晶振:24.000MHz

//芯片: STC12C5412AD

//版本:V1.0.0

//设计:魏广寅

//日期:2007.4.10

#include "lcd12864_driver_new.h"

#define uchar unsigned char                  

#define uint unsigned int

extern void d0(void);

extern uchar keyfuncindex;

extern void d1(void);

extern void AD_init(uchar AD_port_sel );

extern uint GET_AD_Result();//启动AD转换并返回转换值

extern void delay_1(uchar time);

uint xdata record;

sbit key1=P3^0;

sbit key2=P3^1;

//--------------------------------------------------------------------

void delay(uint time)

{

       uchar jj,hh;

       while(--time!=0)

       {

            for(jj==0;jj<255;jj++)

            {

                     for(hh==0;hh<255;hh++);

            }

            

       }

}

//--------------------------------------------------------------------

void wave()   

{



       uchar mod=1;

       uchar data k;

       float x2;

       lcd_init();

       AD_init(7);

       while(1)

       {

      

                     for(k=0;k<128;k++)

                     {

                            record=GET_AD_Result();

                     

                     }



            switch(mod)

            {

                     case 0:   

                     {

                            if(record==512)

                            {   

                                 dis_cls();

                                 for(k=0;k<128;k++)

                                 {

                                          x2=record/16;

                                          dis_point(64-x2,k);

                                 }

                                 for(k=127;k>0;k--)

                                 {

                                          x2=record/16;

                                          dis_point(64-x2,k);

                                 }

                            }

                      }

                      break;



                      case 1:

                     {

                            dis_cls();

                            for(k=0;k<128;k++)

                            {

                                 x2=record/16;

                                 dis_point(64-x2,k);

                            }

                            for(k=127;k>0;k--)

                            {

                                 x2=record/16;

                                 dis_point(64-x2,k);

                            }

                            delay(30000);

                     }

                     break;

            }



                      key2=1;

                      if(key2==0)

                      {

                           mod=!mod;

                           delay_1(5);

                            }



                      key1=1;

                      if(key1==0)

                      {

                     delay_1(5);

                     goto exit;

                      }

       }

exit: keyfuncindex=1;

            d1();      

            delay(1);

}

//--------------------------------------------------------------------

//模块:Freqen.C

//功能:频率计模块

//晶振:24.000MHz

//芯片: STC12C5412AD

//版本:V1.0.0

//设计:魏广寅

//日期:2007.4.10

#include "stc12c5412ad.h"

#define uchar unsigned char                  

#define uint unsigned int

extern uchar keyfuncindex;

void dis_cls(void);

extern void d0(void);

extern void lcd_init(void);

extern void dis_one_char(uchar x,uchar y,uchar asc_num,bit b_flag);

extern void dis_one_zi(uchar x_add,uchar y_add,uchar code *po,bit back_flag,bit char_moudle);

extern void delay(uint time);

extern uchar bdata gate;

extern void beep(uint time);

void sel_x(uchar x);       //74HC390 分频系数选择1,10,100

void delay_1(uchar time);

extern uchar temp_l,temp_h;

extern uchar i;

extern unsigned char code x43[];// 量

extern unsigned char code x44[];// 程

extern unsigned char code x45[];// 切

extern unsigned char code x46[];// 换

extern unsigned char code x47[];// 请

extern unsigned char code x48[];// 稍

extern unsigned char code x49[];// 候

extern unsigned char code x50[];// …

extern unsigned char code x51[];// 周

extern unsigned char code x52[];// 期

extern unsigned char code x7[]; // 频

extern unsigned char code x8[]; // 率

extern uint temp0,temp1,temp2,temp3,temp4;

uchar a1,a2;

sbit sel_1=P1^6;

sbit sel_10=P1^4;

sbit sel_100=P3^4;

sbit p3_5=P3^5;

bit clr_flag0=0;

bit clr_flag1=0;

bit clr_flag2=0;

bit clr_flag3=0;

bit clr_flag4=0;

sbit key0=P3^0;

sbit key1=P3^1;

//--------------------------------------------------------------------

void timer_init()

{

       TMOD=0xd1; //T1 做门控计数

       TH1=0;

       TL1=0;

       TH0=0x3c;

       TL0=0xb0;

       ET0=1;

       EA=1;

       TR0=1;

       TR1=1;

       p3_5=1;

}

//--------------------------------------------------------------------

void time_up() interrupt 1 using 3

{

       TH0=0x3c;

       TL0=0xb0;

       if(++i==gate)

       {

            TR1=0;

            temp_l=TL1;

            temp_h=TH1;

            TH1=0;

            TL1=0;

            i=0;

            TR1=1;

       }

}

//--------------------------------------------------------------------

void sel_x(uchar x) //74HC390 分频系数选择1,10,100

{

       switch(x)

       {

            case 1:

            {

                     sel_1=1;

                     sel_10=0;

                     sel_100=0;

                     break;

            }



            case 10:

            {

                     sel_1=0;

                     sel_10=1;

                     sel_100=0;

                     break;

            }



            case 100:

            {

                     sel_1=0;

                     sel_10=0;

                     sel_100=1;

                     break;

            }

            default:

            break;

       }

}

//--------------------------------------------------------------------

void temp_to_tempx(uint temp)

{

       temp0=temp/10000;

       temp1=(temp-(temp0*10000))/1000;

       temp2=(temp-(temp0*10000)-(temp1*1000))/100;

       temp3=(temp-(temp0*10000)-(temp1*1000)-(temp2*100))/10;

       temp4=temp%10;

}            

//--------------------------------------------------------------------

void dis_mod(unsigned long temp,uchar point,uchar danwei)

{

      

       uchar danwei_t;

      

       temp_to_tempx(temp);



       dis_one_zi(0,0,x7,1,1);//频

       dis_one_zi(0,1,x8,1,1);//率



       dis_one_char(0,11,0x7f,0);

       dis_one_char(0,12,danwei,1);

       dis_one_char(0,13,'H',1);

       dis_one_char(0,14,'z',1);

       dis_one_char(0,15,0x7f,0);

       dis_one_char(0,4,0x7f,0);

       if(temp0!=0)

       {

            dis_one_char(0,5,temp0+0x30,1);

            clr_flag0=0;

       }

       else

       dis_one_char(0,5,0x7f,0);

       clr_flag0=1;



       dis_one_char(0,10,temp4+0x30,1);

       dis_one_char(0,9,temp3+0x30,1);

       switch (point)

       {

            

            case 0:

            {

                     dis_one_char(0,5,temp0+0x30,1);

                     dis_one_char(0,6,'.',1);

                     dis_one_char(0,7,temp1+0x30,1);

                     dis_one_char(0,8,temp2+0x30,1);

                     break;

            }



            case 1:

            {

                     if(temp1==0 && temp0==0)

                     dis_one_char(0,5,0x7f,0);

                     dis_one_char(0,6,temp1+0x30,1);

                     dis_one_char(0,7,'.',1);

                     dis_one_char(0,8,temp2+0x30,1);

                     break;

            }

            

            case 2:

            {

                     dis_one_char(0,6,temp1+0x30,1);

                     if(temp1==0 && temp0==0)

                     dis_one_char(0,6,0x7f,0);

                     dis_one_char(0,7,temp2+0x30,1);

                     dis_one_char(0,8,'.',1);

                     break;

            }   

            default:

            break;

       }

//--------------------------------------------------------------------

       if(danwei=='K' && point==1)

       {   

            temp=1000000/temp;

            temp&=0x0000ffff;

            temp_to_tempx(temp);

            danwei_t='u';

       }

       if(danwei=='K' && point==2)

       {

            temp=100000000/temp;

            temp&=0x0000ffff;

            temp_to_tempx(temp);

            danwei_t='n';

       }

       if(danwei=='M' && point==0)

       {

            temp=10000000/temp;

            temp&=0x0000ffff;

            temp_to_tempx(temp);

            danwei_t='n';

       }

       if(danwei=='M' && point==1)

       {

            temp=1000000/temp;

            temp&=0x0000ffff;

            temp_to_tempx(temp);

            danwei_t='n';

       }



       dis_one_zi(2,0,x51,1,1);//周

       dis_one_zi(2,1,x52,1,1);//期

       dis_one_char(2,11,0x7f,0);

       dis_one_char(2,12,danwei_t,1);

       dis_one_char(2,13,'S',1);

       dis_one_char(2,14,0x7f,0);

       dis_one_char(2,15,0x7f,0);

       dis_one_char(2,4,0x7f,0);

            if(temp==65535)

            {

                     dis_one_char(2,6,'O',1);

                     dis_one_char(2,7,'V',1);

                     dis_one_char(2,8,'E',1);

                     dis_one_char(2,9,'R',1);

                     dis_one_char(2,10,'!',1);

            }

            else

            {

                     dis_one_char(2,6,temp0+0x30,1);

                     if(temp0==0)

                     dis_one_char(2,6,0x7f,0);

                     

                     dis_one_char(2,7,temp1+0x30,1);

                     if(temp0==0 && temp1==0)

                     dis_one_char(2,7,0x7f,0);

                     

                     dis_one_char(2,8,temp2+0x30,1);

                     if(temp0==0 && temp1==0 && temp2==0)

                     dis_one_char(2,8,0x7f,0);

                     

                     dis_one_char(2,9,temp3+0x30,1);

                     if(temp0==0 && temp1==0 && temp2==0 && temp3==0)

                  dis_one_char(2,9 ,0x7f,0);

                     

                     dis_one_char(2,10,temp4+0x30,1);

            }

}

//--------------------------------------------------------------------

void delay_1(uchar time)

{

       while(--time!=0)

       delay(50000);

}

//--------------------------------------------------------------------                  

void freq()      //频率计子程序

{

       unsigned long temp=0x30;

       uchar del=5;

       timer_init();

reset: gate=4;

       sel_x(100);

       a1=1;

       a2='M';

       while(1)

       {

//---------------------------------------------------

                     key1=1;

                     key0=1;

                     delay_1(5);

                     if(key0==0 || key1==0)

                     goto exit;

                     temp=temp_h*256+temp_l;

                     if(TF1)

                     {

                            TF1=0;

                            TH1=0;

                            TL1=0;

                            dis_cls();

                            dis_one_zi(0,0,x43,1,1);

                            dis_one_zi(0,1,x44,1,1);

                            dis_one_zi(0,2,x45,1,1);

                            dis_one_zi(0,3,x46,1,1);

                            dis_one_zi(0,4,x47,1,1);

                            dis_one_zi(0,5,x48,1,1);

                            dis_one_zi(0,6,x49,1,1);

                            dis_one_zi(0,7,x50,1,1);

                            goto reset;

                            }

                     temp=temp_h*256+temp_l;

                     if(sel_100==1 && temp<=5000 && gate==4)

                     {

                            sel_x(10);

                            a1=0;

                            a2='M';

                            delay_1(del);

                     }

                     temp=temp_h*256+temp_l;

                     if(sel_10==1 && temp<=5000 && gate==4)

                     {

                            sel_x(1);

                            a1=2;

                            a2='K';

                            delay_1(del);

                     }

                     temp=temp_h*256+temp_l;

                     if(sel_1==1 && temp<=5000 && gate==4)

                     {

                            gate=40;

                            a1=1;

                            a2='K';

                            delay_1(del);

                     }

            //---------------------------------------------------

                     temp=temp_h*256+temp_l;

                     if(sel_1==1 && temp>50010 && gate==40)

                     {

                            gate=4;

                            a1=2;

                            a2='K';

                            delay_1(del);

                     }

      

                     temp=temp_h*256+temp_l;

                     if(sel_1==1 && temp>50010 && gate==4)

                     {

                            sel_x(10);

                            a1=0;

                            a2='M';

                            delay_1(del);

                     }

                     temp=temp_h*256+temp_l;

                     if(sel_10==1 && temp>50010 && gate==4)

                     {

                            sel_x(100);

                            a1=1;

                            a2='M';

                            delay_1(del);

                     }

                     if(temp>50000)

                     goto reset;

            

                     dis_mod(temp,a1,a2);

      //---------------------------------------------------

            }

exit: TMOD=0x00; //T1 做门控计数

            ET0=0;

            EA=0;

            TR0=0;

            TR1=0;

            p3_5=0;

            delay_1(10);

            keyfuncindex=0;

            d0();

}

//--------------------------------------------------------------------                  



//模块:PWM.C

//功能:PWM解码模块

//晶振:24.000MHz

//芯片: STC12C5412AD

//版本:V1.0.0

//设计:魏广寅

//日期:2007.4.10

#include "stc12c5412ad.h"

#define uchar unsigned char                  

#define uint unsigned int

#define CNT 32

//--------------------------------------------------------------------

extern uchar keyfuncindex;

extern void d2(void);

extern void lcd_init(void);

extern void dis_one_char(uchar x,uchar y,uchar asc_num,bit b_flag);

extern void dis_one_zi(uchar x_add,uchar y_add,uchar code *po,bit back_flag,bit char_moudle);

extern void delay(uint time);

extern void delay_1(uchar time);

extern void dis_cls(void);

extern uchar code tab;

uchar data value_h;

uchar count=0;

sbit key0=P3^0;

sbit key1=P3^1;

//--------------------------------------------------------------------

void pwm_init()

{

      TMOD=0x01;

       TH0=0;

       TL0=0;

       IT0=1;

       EX0=1;

       EA=1;

}

//--------------------------------------------------------------------

void clk() interrupt 0

{

       if(TH0==TL0 && TL0==0)

       {

            TR0=1;

       }

       else

       {

            TR0=0;

            value_h=TH0;

            TH0=0;

            TL0=0;

            TR0=1;

            count++;

            if(count==CNT-1)

            {

                     EX0=0;

                     count=0;

                     TH0=0;

                     TL0=0;

                     TR0=0;

            }

       }

}

//--------------------------------------------------------------------

void bin_to_hex(uchar x,uchar y,uchar bin)

{

      uchar b_h,b_l;

       b_h=bin & 0xf0;

       b_h>>=4;

       b_h=tab;

       b_l=bin & 0x0f;

       b_l=tab;

       y*=2;

       dis_one_char(x,y,b_h,1);

       dis_one_char(x,y+1,b_l,1);

}

//--------------------------------------------------------------------

void pwm()

{

      uchar i=0,x=0,y=0,ii;

       pwm_init();

       dis_cls();

       while(1)

       {

            for(x=0;x<4;x++)

            {

                     for(y=0;y<8;y++)

                     {

                            ii=value_h;

                            bin_to_hex(x,y,ii);

                           

                     }

            }

            i=0;

            key0=1;

            key1=1;

            delay_1(5);

            if(key0==0 || key1==0)

            {

                     

                     for(i=0;i<32;i++)

                     {

                            value_h=0;

                           

                     }

                     goto exit;

                            }

       }

       exit:for(i=0;i<32;i++)

                     {

                            value_h=0;

                           

                     }

       TMOD=0x00;

       TH0=0;

       TL0=0;

       count=0;

       EX0=0;

       EA=0;

       TR0=0;

       TR1=0;

       keyfuncindex=2;

       d2();

}

//--------------------------------------------------------------------



//模块:LCD12864_Driver_New.C

//功能:液晶显示器驱动模块

//晶振:24.000MHz

//芯片: STC12C5412AD

//版本:V1.0.0

//设计:魏广寅

//日期:2007.4.10

#include"STC12C5412AD.H"

#include"intrins.h"

#define dat P2

#define uchar unsigned char

#define uint unsigned int

//--------------------------------------------------------------------

sbit cs2=P1^3;

sbit cs1=P1^2;

sbit en=P3^7;

sbit rw=P1^0;

sbit di=P1^1;

//--------------------------------------------------------------------

uchar code ASC_20 = {

/*    CHAR_20 */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

uchar code ASC_21 = {

/*!   CHAR_21 */

0x00,0x00,0x00,0xF8,0xF8,0x00,0x00,0x00,

0x00,0x00,0x00,0x33,0x33,0x00,0x00,0x00};

uchar code ASC_22 = {

/*"   CHAR_22 */

0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

uchar code ASC_23 = {

/*#   CHAR_23 */

0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,

0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00};

uchar code ASC_24 = {

/*$   CHAR_24 */

0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,

0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00};

uchar code ASC_25 = {

/*%   CHAR_25 */

0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,

0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00};

uchar code ASC_26 = {

/*&   CHAR_26 */

0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,

0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10};

uchar code ASC_27 = {

/*`   CHAR_60 */

0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

uchar code ASC_28 = {

/*(   CHAR_28 */

0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,

0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00};

uchar code ASC_29 = {

/*)   CHAR_29 */

0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,

0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00};

uchar code ASC_2a = {

/**   CHAR_2A */

0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,

0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00};

uchar code ASC_2b = {

/*+   CHAR_2B */

0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,

0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00};

uchar code ASC_2c = {

/*'   CHAR_27 */

0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

uchar code ASC_2d = {

/*-   CHAR_2D */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01};

uchar code ASC_2e = {

/*.   CHAR_2E */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00};

uchar code ASC_2f = {

/*/   CHAR_2F */

0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,

0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00};

uchar code ASC_30 = {

/*0   CHAR_30 */

0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,

0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00};

uchar code ASC_31 = {

/*1   CHAR_31 */

0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,

0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00};

uchar code ASC_32 = {

/*2   CHAR_32 */

0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,

0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00};

uchar code ASC_33 = {

/*3   CHAR_33 */

0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,

0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00};

uchar code ASC_34 = {

/*4   CHAR_34 */

0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,

0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00};

uchar code ASC_35 = {

/*5   CHAR_35 */

0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,

0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00};

uchar code ASC_36 = {

/*6   CHAR_36 */

0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,

0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00};

uchar code ASC_37 = {

/*7   CHAR_37 */

0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,

0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00};

uchar code ASC_38 = {

/*8   CHAR_38 */

0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,

0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00};

uchar code ASC_39 = {

/*9   CHAR_39 */

0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,

0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00};

uchar code ASC_3a = {

/*:   CHAR_3A */

0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,

0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00};

uchar code ASC_3b = {

/*;   CHAR_3B */

0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,

0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00};

uchar code ASC_3c = {

/*<   CHAR_3C */

0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,

0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00};

uchar code ASC_3d = {

/*=   CHAR_3D */

0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,

0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00};

uchar code ASC_3e = {

/*>   CHAR_3E */

0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,

0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00};

uchar code ASC_3f = {

/*?   CHAR_3F */

0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,

0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00};

uchar code ASC_40 = {

/*@   CHAR_40 */

0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,

0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00};

uchar code ASC_41 = {

/*A   CHAR_41 */

0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,

0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20};

uchar code ASC_42 = {

/*B   CHAR_42 */

0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,

0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00};

uchar code ASC_43 = {

/*C   CHAR_43 */

0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,

0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00};

uchar code ASC_44 = {

/*D   CHAR_44 */

0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,

0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00};

uchar code ASC_45 = {

/*E   CHAR_45 */

0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,

0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00};

uchar code ASC_46 = {

/*F   CHAR_46 */

0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,

0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00};

uchar code ASC_47 = {

/*G   CHAR_47 */

0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,

0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00};

uchar code ASC_48 = {

/*H   CHAR_48 */

0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,

0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20};

uchar code ASC_49 = {

/*I   CHAR_49 */

0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,

0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00};

uchar code ASC_4a = {

/*J   CHAR_4A */

0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,

0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00};

uchar code ASC_4b = {

/*K   CHAR_4B */

0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,

0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00};

uchar code ASC_4c = {

/*L   CHAR_4C */

0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,

0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00};

uchar code ASC_4d = {

/*M   CHAR_4D */

0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,

0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,};

uchar code ASC_4e = {

/*N   CHAR_4E */

0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,

0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00};

uchar code ASC_4f = {

/*O   CHAR_4F */

0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,

0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00};

uchar code ASC_50 = {

/*P   CHAR_50 */

0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,

0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00};

uchar code ASC_51 = {

/*Q   CHAR_51 */

0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,

0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00};

uchar code ASC_52 = {

/*R   CHAR_52 */

0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,

0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20};

uchar code ASC_53 = {

/*S   CHAR_53 */

0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,

0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00};

uchar code ASC_54 = {

/*T   CHAR_54 */

0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,

0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00};

uchar code ASC_55 = {

/*U   CHAR_55 */

0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,

0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00};

uchar code ASC_56 = {

/*V   CHAR_56 */

0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,

0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00};

uchar code ASC_57 = {

/*W   CHAR_57 */

0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,

0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00};

uchar code ASC_58 = {

/*X   CHAR_58 */

0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,

0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20};

uchar code ASC_59 = {

/*Y   CHAR_59 */

0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,

0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00};

uchar code ASC_5a = {

/*Z   CHAR_5A */

0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,

0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00};

uchar code ASC_5b = {

/*[   CHAR_5B */

0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,

0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00};

uchar code ASC_5c = {

/*\   CHAR_5C */

0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00};

uchar code ASC_5d = {

/*]   CHAR_5D */

0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,

0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00};

uchar code ASC_5e = {

/*^   CHAR_5E */

0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

uchar code ASC_5f = {

/*_   CHAR_5F */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80};

uchar code ASC_60 = {

/*、   CHAR_2E */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x0C,0x38,0x30,0x00,0x00,0x00};

uchar code ASC_61 = {

/*a   CHAR_61 */

0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,

0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20};

uchar code ASC_62 = {

/*b   CHAR_62 */

0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,

0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00};

uchar code ASC_63 = {

/*c   CHAR_63 */

0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,

0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00};

uchar code ASC_64 = {

/*d   CHAR_64 */

0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,

0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20};

uchar code ASC_65 = {

/*e   CHAR_65 */

0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,

0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00};

uchar code ASC_66 = {

/*f   CHAR_66 */

0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,

0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00};

uchar code ASC_67 = {

/*g   CHAR_67 */

0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,

0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,};

uchar code ASC_68 = {

/*h   CHAR_68 */

0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,

0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20};

uchar code ASC_69 = {

/*i   CHAR_69 */

0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,

0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00};

uchar code ASC_6a = {

/*j   CHAR_6A */

0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,

0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00};

uchar code ASC_6b = {

/*k   CHAR_6B */

0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,

0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00};

uchar code ASC_6c = {

/*l   CHAR_6C */

0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,

0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00};

uchar code ASC_6d = {

/*m   CHAR_6D */

0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,

0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F};

uchar code ASC_6e = {

/*n   CHAR_6E */

0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,

0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20};

uchar code ASC_6f = {

/*o   CHAR_6F */

0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,

0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00};

uchar code ASC_70 = {

/*p   CHAR_70 */

0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,

0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00};

uchar code ASC_71 = {

/*q   CHAR_71 */

0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,

0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80};

uchar code ASC_72 = {

/*r   CHAR_72 */

0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,

0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00};

uchar code ASC_73 = {

/*s   CHAR_73 */

0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,

0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00};

uchar code ASC_74 = {

/*t   CHAR_74 */

0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,

0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00};

uchar code ASC_75 = {

/*u   CHAR_75 */

0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,

0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20};

uchar code ASC_76 = {

/*v   CHAR_76 */

0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,

0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00};

uchar code ASC_77 = {

/*w   CHAR_77 */

0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,

0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00};

uchar code ASC_78 = {

/*x   CHAR_78 */

0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,

0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00};

uchar code ASC_79 = {

/*y   CHAR_79 */

0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,

0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00};

uchar code ASC_7a = {

/*z   CHAR_7A */

0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,

0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00};

uchar code ASC_7b = {

/*{   CHAR_7B */

0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,

0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40};

uchar code ASC_7c = {

/*|   CHAR_7C */

0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00};

uchar code ASC_7d = {

/*}   CHAR_7D */

0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,

0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00};

uchar code ASC_7e = {

/*~   CHAR_7E */

0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

uchar code ASC_7f = {

/*||   CHAR_7F */

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};



#pragma REGISTERBANK(0)

//--------------------------------------------------------------------

void lcd_c(bit flag,uchar ldata)

{



       uchar data i;

       di=!flag;

       en=0;

       rw=0;

       dat=ldata;

       _nop_();

       _nop_();

       _nop_();

       _nop_();

       _nop_();

       _nop_();

       en=1;

       _nop_();

       _nop_();

       _nop_();

       _nop_();

       _nop_();

       _nop_();

       en=0;

       rw=1;

       di=1;

       for(i=0;i<20;i++);

}

//--------------------------------------------------------------------

void dis_one_zi(uchar x_add,uchar y_add,uchar code *po,bit back_flag,bit char_moudle)

{

       uchar i,j,w,pp,m,n,o,p;

      

       if(char_moudle==0)

       {m=8;

       n=16;

       o=8;

       p=8;

       }

       else

       {

       m=4;

       n=32;

       o=16;

       p=16;

       }



       j=x_add*2+0xb8;

       w=(y_add<m?y_add:y_add-m)*p+0x40;

       cs1=(y_add<m);

       cs2=!(y_add<m);

       lcd_c(1,j);

       lcd_c(1,w);

       for(i=0;i<n;i++)

       {

            if(i==o)

            {

                     lcd_c(1,j+1);

                     lcd_c(1,w);

               }

if(back_flag==0)

{

      pp=*po++;

      pp=pp^0xff;

      lcd_c(0,pp);



}

else if( back_flag==1)

{

      lcd_c(0,*po++);

       }

}

cs1=0;

cs2=0;

}

//--------------------------------------------------------------------

void dis_point(uchar x_add,uchar y_add)

{

       uchar j,w;

       uchar xx,cc,xxx=0;

       xx=x_add/8;

       xxx=x_add%8;

       switch(xxx)

       {

            case 0:

            cc=1;

            break;



            case 1:

            cc=2;

            break;

            case 2:

            cc=4;

            break;

            case 3:

            cc=8;

            break;

            case 4:

            cc=16;

            break;

            case 5:

            cc=32;

            break;

            case 6:

            cc=64;

            break;

            case 7:

            cc=128;

            break;

       }

       j=xx+0xb8;

       w=(y_add<64?y_add:y_add-64)+0x40;

       cs1=(y_add<64);

       cs2=!cs1;

       lcd_c(1,j);

       lcd_c(1,w);

       lcd_c(0,cc);

    cs1=0;

    cs2=0;

}

//--------------------------------------------------------------------



void dis_cls(void)

{

       uchar data i,j;

       cs1=cs2=1;

       for(i=0xb8;i<0xc0;i++)

       {

            lcd_c(1,i);

            lcd_c(1,0x40);

            for(j=0;j<0x40;j++)

            lcd_c(0,0);

       }

       cs1=cs2=0;

}

//--------------------------------------------------------------------







uchar *get_asc(uchar a)

{

       uchar *p;

       p=ASC_20+((a-32)*16);

       return p;

}

//--------------------------------------------------------------------

void dis_one_char(uchar x,uchar y,uchar asc_num,bit b_flag)

{//显示函数,X为列坐标,Y为行坐标,左上角为(0,0)右下角为(3,15)

//asc_num为待显示字符的ASCII码值,b_falg为背景标志,1为正显,0为反显

       uchar *p;

       p=get_asc(asc_num);

       dis_one_zi(x,y,p,b_flag,0);

}   

//--------------------------------------------------------------------

void lcd_init(void)

{

       lcd_c(1,0x3e);

       lcd_c(1,0xc0);

       lcd_c(1,0x3f);

      dis_cls();

}

//--------------------------------------------------------------------

//模块:Lib.C

//功能:汉字库

//晶振:24.000MHz

//芯片: STC12C5412AD

//版本:V1.0.0

//设计:魏广寅

//日期:2007.4.10

//--------------------------------------------------------------------

unsigned char code x0 = {

/*请   CC7EB */

0x00,0x80,0x84,0x88,0x10,0x00,0x88,0xA8,

0xA8,0xA8,0xFC,0xA8,0xA8,0xA8,0x88,0x80,

0x00,0x00,0x00,0x7F,0x20,0x10,0x00,0x7E,

0x2A,0x2A,0x2A,0x2A,0x6A,0x7E,0x00,0x00};

unsigned char code x1 = {

/*选   CD1A1 */

0x00,0x80,0x84,0x98,0x10,0x80,0xA0,0x98,

0x90,0x90,0xFC,0x90,0x90,0x90,0x90,0x00,

0x00,0x40,0x20,0x3F,0x20,0x20,0x50,0x48,

0x47,0x40,0x40,0x5F,0x50,0x50,0x48,0x00};

unsigned char code x2 = {

/*择   CD4F1 */

0x20,0x20,0x20,0xFC,0x20,0xA0,0x08,0x08,

0x18,0xA8,0xC8,0xC8,0xA8,0x18,0x08,0x00,

0x00,0x44,0x42,0x7F,0x01,0x10,0x15,0x15,

0x15,0x14,0x7F,0x14,0x14,0x15,0x11,0x11};

unsigned char code x3 = {

/*工   CB9A4 */

0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,

0xF8,0x08,0x08,0x08,0x08,0x08,0x00,0x00,

0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,

0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x00};

unsigned char code x4 = {

/*作   CD7F7 */

0x00,0xC0,0x60,0xF8,0x04,0x00,0x80,0x60,

0x30,0xEC,0x20,0x20,0x20,0x20,0x20,0x20,

0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,

0x00,0x7F,0x09,0x09,0x09,0x09,0x09,0x00};

unsigned char code x5 = {

/*模   CC4A3 */

0x00,0x20,0x20,0x20,0xFC,0x20,0x20,0xE8,

0xA8,0xBC,0xA8,0xA8,0xBC,0xA8,0xE8,0x08,

0x00,0x08,0x04,0x03,0x7F,0x41,0x49,0x4B,

0x2A,0x2A,0x1E,0x1A,0x2A,0x4A,0x4B,0x08};

unsigned char code x6 = {

/*式   CCABD */

0x00,0x20,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,

0xA0,0x20,0xFC,0x20,0x24,0x28,0x20,0x20,

0x00,0x00,0x20,0x20,0x20,0x3F,0x10,0x10,

0x10,0x00,0x03,0x1C,0x30,0x60,0x40,0x60};

unsigned char code x7 = {

/*频   CC6B5 */

0x00,0x40,0x40,0x78,0x40,0x7C,0x50,0x50,

0x40,0xE8,0x28,0xB8,0xA8,0x28,0xE8,0x08,

0x00,0x48,0x44,0x42,0x20,0x1F,0x18,0x06,

0x42,0x4F,0x20,0x1E,0x01,0x20,0x2F,0x40};

unsigned char code x8 = {

/*率   CC2CA */

0x00,0x00,0x28,0x28,0x48,0x48,0x48,0x68,

0xDC,0x48,0xA8,0x48,0x48,0x28,0x08,0x00,

0x00,0x08,0x0E,0x0A,0x09,0x0A,0x0A,0x0B,

0xFE,0x0A,0x0B,0x0E,0x09,0x0A,0x0E,0x08};

unsigned char code x9 = {

/*计   CBCC6 */

0x40,0x40,0x44,0xC8,0x10,0x50,0x40,0x40,

0x40,0x40,0xFC,0x40,0x40,0x40,0x40,0x00,

0x00,0x00,0x00,0x7F,0x20,0x10,0x08,0x00,

0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00};

unsigned char code x10 = {

/*示   CCABE */

0x00,0x80,0x80,0x88,0x88,0x88,0x88,0x88,

0x88,0x88,0x88,0x88,0x88,0x88,0x80,0x80,

0x00,0x30,0x10,0x08,0x06,0x02,0x40,0x40,

0x7F,0x00,0x00,0x02,0x04,0x08,0x10,0x00};

unsigned char code x11 = {

/*波   CB2A8 */

0x00,0x40,0x48,0x88,0x10,0x00,0xF0,0x90,

0x90,0x90,0xFC,0x90,0x90,0xD0,0x30,0x00,

0x00,0x20,0x38,0x0E,0x40,0x38,0x47,0x40,

0x63,0x24,0x18,0x18,0x26,0x21,0x40,0x00};

unsigned char code x12 = {

/*器   CC6F7 */

0x00,0x00,0x78,0x48,0x48,0x48,0x78,0xC0,

0x40,0x78,0x48,0xC8,0xC8,0x78,0x00,0x00,

0x00,0x09,0x79,0x4D,0x4D,0x4B,0x7B,0x01,

0x01,0x7B,0x4B,0x4D,0x4D,0x79,0x09,0x00};

unsigned char code x13 = {

/*测   CB2E2 */

0x00,0x20,0x44,0x84,0x08,0xF8,0x08,0xE8,

0x28,0x08,0xF8,0x00,0xF0,0x00,0xFC,0x00,

0x00,0x60,0x30,0x0E,0x40,0x6F,0x30,0x0F,

0x08,0x18,0x3F,0x20,0x4F,0x40,0x7F,0x00};

unsigned char code x14 = {

/*量   CC1BF */

0x00,0x80,0x80,0xB8,0xB4,0xB4,0xB4,0xB4,

0xB4,0xB4,0xB4,0xB4,0xB4,0xB8,0x80,0x80,

0x00,0x40,0x40,0x57,0x57,0x57,0x57,0x57,

0x7F,0x57,0x57,0x57,0x57,0x57,0x50,0x40};

unsigned char code x15 = {

/*红   CBAEC */

0x00,0x40,0x60,0x58,0xCC,0x44,0x30,0x00,

0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0x00,

0x00,0x24,0x26,0x25,0x24,0x14,0x12,0x30,

0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20};

unsigned char code x16 = {

/*外   CCDE2 */

0x00,0x80,0xC0,0x30,0x2C,0x20,0x20,0xE0,

0x00,0x00,0xFC,0x00,0x40,0x80,0x00,0x00,

0x00,0x61,0x20,0x11,0x0A,0x0C,0x03,0x00,

0x00,0x00,0x7F,0x00,0x00,0x00,0x01,0x02};

unsigned char code x17 = {

/*分   CB7D6 */

0x00,0x00,0x80,0xC0,0x60,0x10,0x0C,0x04,

0x00,0x00,0x0C,0x10,0x60,0xC0,0x80,0x00,

0x00,0x41,0x41,0x20,0x21,0x11,0x0F,0x01,

0x01,0x41,0x41,0x61,0x1F,0x00,0x01,0x00};

unsigned char code x18 = {

/*析   CCEF6 */

0x00,0x20,0x20,0xA0,0xFC,0xA0,0x20,0x00,

0xF8,0x88,0x88,0x88,0x88,0x88,0x8C,0x88,

0x00,0x0C,0x06,0x01,0x7F,0x40,0x43,0x30,

0x0F,0x00,0x00,0x00,0x7F,0x00,0x00,0x00};

unsigned char code x19 = {

/*固   CB9CC */

0x00,0x00,0xFC,0x04,0x44,0x44,0x44,0x44,

0xF4,0x44,0x44,0x44,0x44,0x04,0xFC,0x00,

0x00,0x00,0x7F,0x20,0x20,0x2F,0x29,0x29,

0x29,0x29,0x2F,0x20,0x20,0x20,0x7F,0x00};

unsigned char code x20 = {

/*件   CBCFE */

0x00,0x80,0x60,0xF0,0x0C,0x80,0x60,0x38,

0x20,0x20,0xFC,0x20,0x20,0x20,0x20,0x00,

0x00,0x00,0x00,0x7F,0x00,0x02,0x02,0x02,

0x02,0x02,0x7F,0x02,0x02,0x02,0x02,0x02};

unsigned char code x21 = {

/*版   CB0E6 */

0x00,0x00,0xFC,0x40,0x40,0x7C,0x40,0x40,

0xF8,0x48,0xC8,0x48,0x48,0x48,0xC4,0x00,

0x00,0x60,0x1F,0x02,0x02,0x7E,0x20,0x30,

0x4F,0x40,0x23,0x3C,0x18,0x26,0x61,0x40};

unsigned char code x22 = {

/*本   CB1BE */

0x00,0x00,0x20,0x20,0x20,0x20,0xA0,0x60,

0xFC,0x60,0xA0,0x20,0x20,0x20,0x20,0x00,

0x00,0x10,0x10,0x08,0x04,0x0B,0x09,0x08,

0x7F,0x08,0x09,0x0B,0x04,0x08,0x18,0x10};

unsigned char code x23 = {

/*信   CD0C5 */

0x00,0x80,0x60,0xF8,0x04,0x10,0x10,0x50,

0x50,0x54,0x58,0x50,0x50,0x50,0x10,0x10,

0x00,0x00,0x00,0x7F,0x00,0x00,0x7C,0x25,

0x25,0x25,0x25,0x25,0x25,0x7D,0x00,0x00};

unsigned char code x24 = {

/*息   CCFA2 */

0x00,0x00,0x00,0x00,0xF8,0xA8,0xA8,0xAC,

0xA8,0xA8,0xA8,0xA8,0xF8,0x00,0x00,0x00,

0x00,0x20,0x18,0x00,0x03,0x7E,0x42,0x42,

0x4E,0x4A,0x42,0x42,0x73,0x28,0x10,0x20};

unsigned char code x25 = {

/*程   CB3CC */

0x00,0x40,0x48,0x48,0xF8,0x48,0x44,0x00,

0x78,0x48,0x48,0x48,0x48,0x48,0x78,0x00,

0x00,0x08,0x0C,0x03,0x7F,0x01,0x06,0x41,

0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x41};

unsigned char code x26 = {

/*式   CCABD */

0x00,0x20,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,

0xA0,0x20,0xFC,0x20,0x24,0x28,0x20,0x20,

0x00,0x00,0x20,0x20,0x20,0x3F,0x10,0x10,

0x10,0x00,0x03,0x1C,0x30,0x60,0x40,0x60};

unsigned char code x27 = {

/*设   CC9E8 */

0x00,0x40,0x44,0xCC,0x18,0x10,0x00,0x80,

0x78,0x08,0x08,0x08,0x78,0x40,0x40,0x40,

0x00,0x00,0x00,0x7F,0x20,0x50,0x48,0x41,

0x27,0x29,0x11,0x29,0x25,0x43,0x40,0x00};

unsigned char code x28 = {

/*计   CBCC6 */

0x40,0x40,0x44,0xC8,0x10,0x50,0x40,0x40,

0x40,0x40,0xFC,0x40,0x40,0x40,0x40,0x00,

0x00,0x00,0x00,0x7F,0x20,0x10,0x08,0x00,

0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00};

unsigned char code x29 = {

/*魏   CCEBA */

0x00,0x28,0xA8,0xA8,0xF8,0x68,0xA4,0xA0,

0xF0,0x50,0x5C,0xF4,0x50,0x50,0xF0,0x00,

0x00,0x03,0x2A,0x2F,0x13,0x1A,0x36,0x40,

0x23,0x11,0x0F,0x7D,0x49,0x4D,0x4B,0x38};

unsigned char code x30 = {

/*广   CB9E3 */

0x00,0x00,0x00,0xF0,0x10,0x10,0x10,0x10,

0x14,0x1C,0x10,0x10,0x10,0x10,0x10,0x00,

0x00,0x40,0x30,0x0F,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

unsigned char code x31 = {

/*寅   CD2FA */

0x00,0x00,0x38,0x88,0xA8,0xA8,0xA8,0xAC,

0xE8,0xA8,0xA8,0xA8,0xA8,0x08,0x38,0x00,

0x00,0x40,0x40,0x4F,0x2A,0x2A,0x3A,0x0A,

0x0F,0x0A,0x2A,0x2A,0x2F,0x40,0x40,0x00};

unsigned char code x32 = {

/*贵   CB9F3 */

0x00,0x80,0x80,0xB8,0xA8,0xA8,0xA8,0xA8,

0xFC,0xA8,0xA8,0xA8,0xA8,0xB8,0x80,0x80,

0x00,0x00,0x40,0x5E,0x42,0x22,0x22,0x1E,

0x06,0x12,0x12,0x22,0x3E,0x40,0x40,0x00};

unsigned char code x33 = {

/*大   CB4F3 */

0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,

0xFC,0x40,0x40,0x40,0x40,0x40,0x40,0x40,

0x00,0x00,0x60,0x20,0x30,0x18,0x0C,0x06,

0x01,0x03,0x04,0x08,0x10,0x30,0x60,0x00};

unsigned char code x34 = {

/*电   CB5E7 */

0x00,0x00,0xF0,0x90,0x90,0x90,0x90,0xFC,

0x90,0x90,0x90,0x90,0x90,0xF0,0x00,0x00,

0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x7F,

0x44,0x44,0x44,0x44,0x44,0x4F,0x30,0x00};

unsigned char code x35 = {

/*科   CBFC6 */

0x00,0x48,0x48,0x48,0xF8,0x48,0x4C,0x40,

0x80,0x98,0x30,0x20,0x00,0xFC,0x00,0x00,

0x00,0x18,0x04,0x03,0x7F,0x01,0x02,0x0A,

0x08,0x04,0x07,0x04,0x04,0x7F,0x04,0x04};

unsigned char code x36 = {

/*欢   CBBB6 */

0x00,0x00,0x48,0x88,0x08,0xC8,0x38,0x80,

0x70,0x1C,0x50,0x90,0x10,0x10,0x70,0x00,

0x00,0x10,0x18,0x04,0x03,0x06,0x4D,0x41,

0x20,0x10,0x0E,0x07,0x18,0x30,0x60,0x40};

unsigned char code x37 = {

/*迎   CD3AD */

0x00,0x44,0x44,0xC8,0x00,0x00,0xF8,0x08,

0x04,0x00,0x00,0xF8,0x08,0x08,0xF8,0x00,

0x00,0x60,0x20,0x3F,0x20,0x20,0x47,0x44,

0x42,0x40,0x40,0x7F,0x44,0x48,0x47,0x40};

unsigned char code x38 = {

/*使   CCAB9 */

0x00,0x80,0xC0,0xF8,0x04,0x10,0xD0,0x50,

0x50,0x50,0xFC,0x50,0x50,0x50,0xD0,0x10,

0x00,0x01,0x00,0x7F,0x40,0x40,0x41,0x25,

0x29,0x19,0x27,0x21,0x41,0x41,0x41,0x40};

unsigned char code x39 = {

/*用   CD3C3 */

0x00,0x00,0x00,0xF8,0x48,0x48,0x48,0x48,

0xF8,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,

0x00,0x00,0xE0,0x1F,0x02,0x02,0x02,0x02,

0x3F,0x02,0x02,0x42,0x42,0x7F,0x00,0x00};

unsigned char code x40 = {

/*多   CB6E0 */

0x00,0x00,0x20,0x10,0x10,0x28,0xAC,0xC8,

0x48,0x48,0xE8,0x18,0x08,0x00,0x00,0x00,

0x00,0x00,0x41,0x41,0x49,0x45,0x44,0x22,

0x2F,0x19,0x11,0x09,0x09,0x07,0x01,0x00};

unsigned char code x41 = {

/*功   CB9A6 */

0x00,0x10,0x10,0x10,0xF0,0x10,0x10,0x30,

0x20,0x20,0xFC,0x20,0x20,0x20,0xE0,0x00,

0x00,0x30,0x10,0x10,0x1F,0x10,0x48,0x68,

0x30,0x0C,0x03,0x00,0x40,0x20,0x1F,0x00};

unsigned char code x42 = {

/*能   CC4DC */

0x00,0x20,0xB0,0xA8,0xA4,0xA0,0xA8,0xB0,

0x40,0xFC,0x90,0x90,0x88,0xC8,0x40,0x00,

0x00,0x00,0x7F,0x0A,0x0A,0x4A,0x4A,0x7F,

0x00,0x7F,0x48,0x44,0x44,0x42,0x20,0x00};



unsigned char code x43 = {

/*量   CC1BF */

0x00,0x80,0x80,0xB8,0xB4,0xB4,0xB4,0xB4,

0xB4,0xB4,0xB4,0xB4,0xB4,0xB8,0x80,0x80,

0x00,0x40,0x40,0x57,0x57,0x57,0x57,0x57,

0x7F,0x57,0x57,0x57,0x57,0x57,0x50,0x40};

unsigned char code x44 = {

/*程   CB3CC */

0x00,0x40,0x48,0x48,0xF8,0x48,0x44,0x00,

0x78,0x48,0x48,0x48,0x48,0x48,0x78,0x00,

0x00,0x08,0x0C,0x03,0x7F,0x01,0x06,0x41,

0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x41};

unsigned char code x45 = {

/*切   CC7D0 */

0x00,0x40,0x40,0x40,0xFC,0x40,0x20,0x28,

0x08,0x08,0xF8,0x08,0x08,0x08,0xF8,0x00,

0x00,0x00,0x00,0x00,0x1F,0x10,0x48,0x64,

0x34,0x1C,0x03,0x00,0x40,0x40,0x3F,0x00};

unsigned char code x46 = {

/*换   CBBBB */

0x00,0x20,0x20,0xFC,0x20,0x20,0x20,0xF0,

0x48,0x4C,0xC8,0x68,0x58,0x48,0xC0,0x00,

0x00,0x42,0x42,0x7F,0x41,0x45,0x44,0x27,

0x24,0x1C,0x0F,0x1C,0x34,0x24,0x47,0x44};

unsigned char code x47 = {

/*请   CC7EB */

0x00,0x80,0x84,0x88,0x10,0x00,0x88,0xA8,

0xA8,0xA8,0xFC,0xA8,0xA8,0xA8,0x88,0x80,

0x00,0x00,0x00,0x7F,0x20,0x10,0x00,0x7E,

0x2A,0x2A,0x2A,0x2A,0x6A,0x7E,0x00,0x00};

unsigned char code x48 = {

/*稍   CC9D4 */

0x00,0x40,0x48,0x48,0xF8,0x44,0x44,0x40,

0xC8,0x50,0x40,0x7C,0x40,0x70,0xCC,0x00,

0x00,0x08,0x0C,0x03,0x7F,0x01,0x06,0x04,

0x7F,0x09,0x09,0x09,0x49,0x49,0x7F,0x00};

unsigned char code x49 = {

/*候   CBAF2 */

0x00,0x80,0x40,0xF8,0x04,0xF0,0x00,0x28,

0xA8,0xE8,0xA8,0xA8,0xB8,0xA0,0xA0,0x20,

0x00,0x00,0x00,0x7F,0x00,0x0F,0x40,0x46,

0x65,0x24,0x1C,0x0F,0x14,0x24,0x44,0x44};

unsigned char code x50 = {

/*…   CA1AD */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x01,

0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x00



};

unsigned char code x51 = {

/*周   CD6DC */

0x00,0x00,0x00,0xF8,0x88,0xA8,0xA8,0xA8,

0xF8,0xA8,0xA8,0xA8,0x88,0xF8,0x00,0x00,

0x00,0x00,0x60,0x3F,0x00,0x1E,0x12,0x12,

0x12,0x12,0x1E,0x40,0x40,0x7F,0x00,0x00};

unsigned char code x52 = {

/*期   CC6DA */

0x00,0x10,0x10,0xFC,0x50,0x50,0x50,0xFC,

0x10,0x00,0xF8,0x48,0x48,0x48,0xF8,0x00,

0x00,0x44,0x24,0x1F,0x05,0x05,0x15,0x37,

0x24,0x64,0x1F,0x02,0x42,0x42,0x7F,0x00

};

xrwavrdiy 发表于 2010-4-15 20:38:41

从别的网站看到的,觉得不错就转过来了,没想到图片COPY不过来,这是那个网站的地址:http://yan-wei.net/wgy/wgy2.htm

jrcsh 发表于 2010-4-15 20:44:40

要多少K才放得下这个程序阿
页: [1]
查看完整版本: stc5412AD示波器