本文件包括多路选择器器建模,译码器实验程序,加法器实验程序,比较器实验程序,计数器建模,I2C接口标准建模源码,串行接口RS232标准建模源码标准,LCM建模源码,时钟6分频源码,串并转化源码。 ,对于硬件设计初学者来说有一定的参考价值。
上传时间: 2014-01-21
上传用户:stvnash
MSP430有许多寄存器来设定程序的频率和周期,本文总结如定时器A,看门狗,模拟比较器等的代码,供大家参考学习.
上传时间: 2014-11-29
上传用户:qunquan
ADC0809是一款8通道复用的8位AD转换器,数据获取的关键部分是它的8位模/数转换器。这个部分主要是由3部分组成:256R的阶梯网络,连续逼近的电阻,和比较器。 ADC0809在单片机上的应用,C语言源码,Keil uVision3工程文件,附原理图及说明学习文档
上传时间: 2017-01-27
上传用户:gut1234567
/* * _168ZHONGDUAN2.c * * Created: 2014/11/2 15:12:45 * Author: lenovo */ #include <avr/io.h> #include <avr/iom168pa.h> #include <avr/interrupt.h> #include <util/delay.h> #include <avr/eeprom.h> //#include <util/delay_basic.h> //unsigned char const SEGtable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; #define BIT(x) (1<<(x)) #include<avr/signal.h> #include<avr/pgmspace.h> #include<util/delay.h> #include<avr/eeprom.h> #define setb(val,bitn) (val|=(1<<(bitn)))//设置某IO口某位为1 #define clr(val,bitn) (val&=~(1<<(bitn)))//设置某IO口某位为0 #define get(val,bitn) (val&(1<<(bitn)))//读取某位状态 //uchar ACT[8] ={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; #define CPL_BIT(x,y) (x^=(1<<y)) #define CLR_BIT(x,y) (x&=~(1<<y)) #define SET_1(a,b) a|=(1<<b) #define CLE_0(a,b) a&=~(1<<b) /*------宏定义------*/ #include <avr/wdt.h> #include <avr/sleep.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <util/delay.h> #include <avr/eeprom.h> #define setb(val,bitn) (val|=(1<<(bitn)))//设置某IO口某位为1 #define clr(val,bitn) (val&=~(1<<(bitn)))//设置某IO口某位为0 #define get(val,bitn) (val&(1<<(bitn)))//读取某位状态 #define uint8 unsigned char #define uint16 unsigned int #define P_LCDCS1 setb(PORTB,5) #define P_LCDCS0 clr(PORTB,5) #define P_LCDRST1 setb(PORTB,1) #define P_LCDRST0 clr(PORTB,1) #define P_LCDRS1 setb(PORTB,2) #define P_LCDRS0 clr(PORTB,2) #define P_LCDDAT1 setb(PORTB,4) #define P_LCDDAT0 clr(PORTB,4) #define P_LCDCLK1 setb(PORTB,3) #define P_LCDCLK0 clr(PORTB,3) //#define LCD_ //-----页地址定义----- #define Page1 0 #define Page2 1 #define Page3 2 #define Page4 3 #define Page5 4 #define Page6 5 #define Page7 6 #define Page8 7 //-----列地址定义-----每8列地址增1 #define List8_1 0 #define List8_2 7 #define List8_3 15 #define List8_4 23 #define List8_5 31 #define List8_6 39 #define List8_7 47 #define List8_8 55 #define List8_9 63 #define List8_10 71 #define List8_11 79 #define List8_12 87 #define List8_13 95 #define List8_14 103 #define List8_15 111 #define List8_16 119 //#define List8_17 127 //-----列地址定义-----每16列地址增1 #define List16_1 0 #define List16_2 15 #define List16_3 31 #define List16_4 47 #define List16_5 63 #define List16_6 79 #define List16_7 95 #define List16_8 111 //---------------------------------- #define STR_CHARG "Charge" //提示充电 #define STR_PRCE "%" //电量百分比 #define STR_ERR "Err" //出错显示 #define STR_OFF "OFF" //关机显示 //待机显示 #define STR_WAIT1 "Portable UPS" #define STR_WAIT2 "110V/60HZ" #define STR_WAIT3 "Select:DC OR AC" #define STR_WAIT4 "BATTERY:" //开机显示 #define STR_OUTSTATUS "Out Status:" #define STR_DCOUT12V "DC12V" #define STR_DCOUT5V "DC5V" #define STR_ACOUT "AC110V" //#define STR_MAOHAO ":" //====================================== extern uint8 LOCKA[2][16] ; //extern uint8 code BATS[10][16] ; extern uint8 BAT2S[12][32] ; extern uint8 NC[] ; extern uint8 mao_hao[] ; extern uint8 num1[] ; extern uint8 num2[] ; extern uint8 num3[] ; extern uint8 num4[] ; extern uint8 num5[] ; extern uint8 num6[] ; extern uint8 num7[] ; extern uint8 num8[] ; extern uint8 num9[] ; extern uint8 Tab_Ascii_8x16[95][16] ; extern uint8 Tab_Ascii_5x7[95][5] ; extern uint8 zhuang1[] ; extern uint8 tai1[] ; extern uint8 shi1[] ; extern uint8 yong1[] ; //---------------------------------- //extern void LcdWriteCommand(uint8 data1) ; extern void Display_Graphic_32x32(uint8 page,uint8 column,uint8 *dp) ; extern void Display_Graphic_32x16(uint8 page,uint8 column,uint8 *dp) ; extern void Display_Graphic_16x16(uint8 page,uint8 column,uint8 *dp) ; extern void Display_Graphic_8x16(uint8 page,uint8 column,uint8 *dp) ; extern void Display_String_8x16(uint8 page,uint8 column,uint8 *text) ; extern void Display_Num_8x16(uint8 page,uint8 column,uint8 Num) ; extern void Display_Digital_8x16(uint8 page,uint8 column,uint8 *a) ; extern void Display_Nop_8x16(uint8 page,uint8 column,uint8 DatLong) ; extern void Display_String_5x7(uint8 page,uint8 column,uint8 *text) ; extern void Full_Display(void) ; extern void Clear_Screen(void) ; extern void Init_lcd12864(void) ; //#endif //========c12864.c============================================== /*************************************************** LCD:晶联讯电子 JLX12864G-086-PN(不带字库IC-UC1701X) 仅支持串行驱动方式 ***************************************************/ //#include "global.h" //#include "c12864.h" #define Tab_Ascii_8x16_CALL1 //粗体字形 #define Tab_Ascii_8x16_CALL2 //细体字形 #define Tab_Ascii_5x7_CALL #define Display_Graphic_32x32_CALL #define Display_Graphic_32x16_CALL #define Display_Graphic_16x16_CALL #define Display_Graphic_8x16_CALL #define Display_String_8x16_CALL //显示字符串 #define Display_Num_8x16_CALL //显示单个数据0-9 #define Display_Digital_8x16_CALL //显示数据0-9999 #define Display_Nop_8x16_CALL //填充8*16的空字符N个 #define Display_String_5x7_CALL #define Full_Display_CALL //============================================================================== uint8 aa[]={0,1,2,3,4,5,6,7,8,9}; uint8 LOCKA[2][16]={ //-- 童锁符号 -- //-- 此字体下对应的点阵为:宽x高=16x16 -- //0x00, 0x00, 0xc0, 0xe0, 0xf0, 0xd8, 0xcc, 0xc4, 0xc4, 0xcc, 0xd8, 0xf0, 0xe0, 0xc0, 0x00, 0x00, //0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xb0, 0x98, 0x8c, 0x8c, 0x8c, 0x8c, 0x98, 0xb0, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x00, 0x00, } ; const PROGMEM uint8_t BATS[10][16]={ //-- 电池符号 -- //-- 此字体下对应的点阵为:宽x高=16x16 -- 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x0c, 0x0e, 0x0e, 0x0c, 0x08, 0x08, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x0c, 0x0e, 0x0e, 0x0c, 0x08, 0x08, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x0c, 0x0e, 0x0e, 0x0c, 0x08, 0x08, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xc8, 0xc8, 0xcc, 0xce, 0xce, 0xcc, 0xc8, 0xc8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0xf8, 0xfc, 0xfe, 0xfe, 0xfc, 0xf8, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, }; const PROGMEM uint8_t BAT2S1[12][32]={ /*-- 电池符号 --*/ /*-- 此字体下对应的点阵为:宽x高=32x16 --*/ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0xc0, 0x80}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3f, 0x07, 0x03}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0xe8, 0xe8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0xc0, 0x80}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3f, 0x07, 0x03}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0xe8, 0xe8, 0x08, 0x08, 0xe8, 0xe8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0xc0, 0x80}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3f, 0x07, 0x03}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0xe8, 0xe8, 0x08, 0x08, 0xe8, 0xe8, 0x08, 0x08, 0xe8, 0xe8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0xc0, 0x80}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3f, 0x07, 0x03}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0xe8, 0xe8, 0x08, 0x08, 0xe8, 0xe8, 0x08, 0x08, 0xe8, 0xe8, 0x08, 0x08, 0xe8, 0xe8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0xc0, 0x80}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3f, 0x07, 0x03}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0xe8, 0xe8, 0x08, 0x08, 0xe8, 0xe8, 0x08, 0x08, 0xe8, 0xe8, 0x08, 0x08, 0xe8, 0xe8, 0x08, 0x08, 0xe8, 0xe8, 0x08, 0x08, 0xf8, 0xc0, 0x80}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x3f, 0x07, 0x03}, } ; const PROGMEM uint8_t BAT2S2[2][32]={ //-- 电池符号 不显示 -- //-- 此字体下对应的点阵为:宽x高=32x16 -- 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, 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, } ; uint8 NC[]={ /*-- 文字: 空符号 --*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, } ; uint8 mao_hao[]={ /*-- 文字: : (冒号) --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00}; uint8 num0[]={ /*-- 文字: 0 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00 }; uint8 num1[]={ /*-- 文字: 1 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00 }; uint8 num2[]={ /*-- 文字: 2 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00 //细体 //0x08,0x0C,0x84,0xC4,0x64,0x3C,0x18,0x00,0x0E,0x0F,0x09,0x08,0x08,0x0C,0x0C,0x00, // 粗体 }; uint8 num3[]={ /*-- 文字: 3 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00 }; uint8 num4[]={ /*-- 文字: 4 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00 }; uint8 num5[]={ /*-- 文字: 5 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00 }; uint8 num6[]={ /*-- 文字: 6 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00 }; uint8 num7[]={ /*-- 文字: 7 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00 }; uint8 num8[]={ /*-- 文字: 8 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00 }; uint8 num9[]={ /*-- 文字: 9 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00 }; //=======8x16======================================================================= #ifdef Display_String_8x16_CALL //Tab_Ascii_8x16_CALL const PROGMEM uint8_t Tab_Ascii_8x161[95][16]={ //粗体字形 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // - - 0x00,0x00,0x38,0xFC,0xFC,0x38,0x00,0x00,0x00,0x00,0x00,0x0D,0x0D,0x00,0x00,0x00, // -!- 0x00,0x0E,0x1E,0x00,0x00,0x1E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -"- 0x20,0xF8,0xF8,0x20,0xF8,0xF8,0x20,0x00,0x02,0x0F,0x0F,0x02,0x0F,0x0F,0x02,0x00, // -#- 0x38,0x7C,0x44,0x47,0x47,0xCC,0x98,0x00,0x03,0x06,0x04,0x1C,0x1C,0x07,0x03,0x00, // -$- 0x30,0x30,0x00,0x80,0xC0,0x60,0x30,0x00,0x0C,0x06,0x03,0x01,0x00,0x0C,0x0C,0x00, // -%- 0x80,0xD8,0x7C,0xE4,0xBC,0xD8,0x40,0x00,0x07,0x0F,0x08,0x08,0x07,0x0F,0x08,0x00, // -&- 0x00,0x10,0x1E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -'- 0x00,0x00,0xF0,0xF8,0x0C,0x04,0x00,0x00,0x00,0x00,0x03,0x07,0x0C,0x08,0x00,0x00, // -(- 0x00,0x00,0x04,0x0C,0xF8,0xF0,0x00,0x00,0x00,0x00,0x08,0x0C,0x07,0x03,0x00,0x00, // -)- 0x80,0xA0,0xE0,0xC0,0xC0,0xE0,0xA0,0x80,0x00,0x02,0x03,0x01,0x01,0x03,0x02,0x00, // -*- 0x00,0x80,0x80,0xE0,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x00, // -+- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x1E,0x0E,0x00,0x00,0x00, // -,- 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // --- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00, // -.- 0x00,0x00,0x00,0x80,0xC0,0x60,0x30,0x00,0x0C,0x06,0x03,0x01,0x00,0x00,0x00,0x00, // -/- 0xF8,0xFC,0x04,0xC4,0x24,0xFC,0xF8,0x00,0x07,0x0F,0x09,0x08,0x08,0x0F,0x07,0x00, // -0- 0x00,0x10,0x18,0xFC,0xFC,0x00,0x00,0x00,0x00,0x08,0x08,0x0F,0x0F,0x08,0x08,0x00, // -1- 0x08,0x0C,0x84,0xC4,0x64,0x3C,0x18,0x00,0x0E,0x0F,0x09,0x08,0x08,0x0C,0x0C,0x00, // -2- 0x08,0x0C,0x44,0x44,0x44,0xFC,0xB8,0x00,0x04,0x0C,0x08,0x08,0x08,0x0F,0x07,0x00, // -3- 0xC0,0xE0,0xB0,0x98,0xFC,0xFC,0x80,0x00,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00, // -4- 0x7C,0x7C,0x44,0x44,0xC4,0xC4,0x84,0x00,0x04,0x0C,0x08,0x08,0x08,0x0F,0x07,0x00, // -5- 0xF0,0xF8,0x4C,0x44,0x44,0xC0,0x80,0x00,0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00, // -6- 0x0C,0x0C,0x04,0x84,0xC4,0x7C,0x3C,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00, // -7- 0xB8,0xFC,0x44,0x44,0x44,0xFC,0xB8,0x00,0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00, // -8- 0x38,0x7C,0x44,0x44,0x44,0xFC,0xF8,0x00,0x00,0x08,0x08,0x08,0x0C,0x07,0x03,0x00, // -9- 0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00, // -:- 0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x08,0x0E,0x06,0x00,0x00,0x00, // -;- 0x00,0x80,0xC0,0x60,0x30,0x18,0x08,0x00,0x00,0x00,0x01,0x03,0x06,0x0C,0x08,0x00, // -<- 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00, // -=- 0x00,0x08,0x18,0x30,0x60,0xC0,0x80,0x00,0x00,0x08,0x0C,0x06,0x03,0x01,0x00,0x00, // ->- 0x18,0x1C,0x04,0xC4,0xE4,0x3C,0x18,0x00,0x00,0x00,0x00,0x0D,0x0D,0x00,0x00,0x00, // -?- 0xF0,0xF8,0x08,0xC8,0xC8,0xF8,0xF0,0x00,0x07,0x0F,0x08,0x0B,0x0B,0x0B,0x01,0x00, // -@- 0xE0,0xF0,0x98,0x8C,0x98,0xF0,0xE0,0x00,0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00, // -A- 0x04,0xFC,0xFC,0x44,0x44,0xFC,0xB8,0x00,0x08,0x0F,0x0F,0x08,0x08,0x0F,0x07,0x00, // -B- 0xF0,0xF8,0x0C,0x04,0x04,0x0C,0x18,0x00,0x03,0x07,0x0C,0x08,0x08,0x0C,0x06,0x00, // -C- 0x04,0xFC,0xFC,0x04,0x0C,0xF8,0xF0,0x00,0x08,0x0F,0x0F,0x08,0x0C,0x07,0x03,0x00, // -D- 0x04,0xFC,0xFC,0x44,0xE4,0x0C,0x1C,0x00,0x08,0x0F,0x0F,0x08,0x08,0x0C,0x0E,0x00, // -E- 0x04,0xFC,0xFC,0x44,0xE4,0x0C,0x1C,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00, // -F- 0xF0,0xF8,0x0C,0x84,0x84,0x8C,0x98,0x00,0x03,0x07,0x0C,0x08,0x08,0x07,0x0F,0x00, // -G- 0xFC,0xFC,0x40,0x40,0x40,0xFC,0xFC,0x00,0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00, // -H- 0x00,0x00,0x04,0xFC,0xFC,0x04,0x00,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00, // -I- 0x00,0x00,0x00,0x04,0xFC,0xFC,0x04,0x00,0x07,0x0F,0x08,0x08,0x0F,0x07,0x00,0x00, // -J- 0x04,0xFC,0xFC,0xC0,0xF0,0x3C,0x0C,0x00,0x08,0x0F,0x0F,0x00,0x01,0x0F,0x0E,0x00, // -K- 0x04,0xFC,0xFC,0x04,0x00,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x08,0x0C,0x0E,0x00, // -L- 0xFC,0xFC,0x38,0x70,0x38,0xFC,0xFC,0x00,0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00, // -M- 0xFC,0xFC,0x38,0x70,0xE0,0xFC,0xFC,0x00,0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00, // -N- 0xF0,0xF8,0x0C,0x04,0x0C,0xF8,0xF0,0x00,0x03,0x07,0x0C,0x08,0x0C,0x07,0x03,0x00, // -O- 0x04,0xFC,0xFC,0x44,0x44,0x7C,0x38,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00, // -P- 0xF8,0xFC,0x04,0x04,0x04,0xFC,0xF8,0x00,0x07,0x0F,0x08,0x0E,0x3C,0x3F,0x27,0x00, // -Q- 0x04,0xFC,0xFC,0x44,0xC4,0xFC,0x38,0x00,0x08,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00, // -R- 0x18,0x3C,0x64,0x44,0xC4,0x9C,0x18,0x00,0x06,0x0E,0x08,0x08,0x08,0x0F,0x07,0x00, // -S- 0x00,0x1C,0x0C,0xFC,0xFC,0x0C,0x1C,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00, // -T- 0xFC,0xFC,0x00,0x00,0x00,0xFC,0xFC,0x00,0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00, // -U- 0xFC,0xFC,0x00,0x00,0x00,0xFC,0xFC,0x00,0x01,0x03,0x06,0x0C,0x06,0x03,0x01,0x00, // -V- 0xFC,0xFC,0x00,0x80,0x00,0xFC,0xFC,0x00,0x03,0x0F,0x0E,0x03,0x0E,0x0F,0x03,0x00, // -W- 0x0C,0x3C,0xF0,0xC0,0xF0,0x3C,0x0C,0x00,0x0C,0x0F,0x03,0x00,0x03,0x0F,0x0C,0x00, // -X- 0x00,0x3C,0x7C,0xC0,0xC0,0x7C,0x3C,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00, // -Y- 0x1C,0x0C,0x84,0xC4,0x64,0x3C,0x1C,0x00,0x0E,0x0F,0x09,0x08,0x08,0x0C,0x0E,0x00, // -Z- 0x00,0x00,0xFC,0xFC,0x04,0x04,0x00,0x00,0x00,0x00,0x0F,0x0F,0x08,0x08,0x00,0x00, // -[- 0x38,0x70,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x0E,0x00, // -\- 0x00,0x00,0x04,0x04,0xFC,0xFC,0x00,0x00,0x00,0x00,0x08,0x08,0x0F,0x0F,0x00,0x00, // -]- 0x08,0x0C,0x06,0x03,0x06,0x0C,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -^- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, // -_- 0x00,0x00,0x03,0x07,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -`- 0x00,0xA0,0xA0,0xA0,0xE0,0xC0,0x00,0x00,0x07,0x0F,0x08,0x08,0x07,0x0F,0x08,0x00, // -a- 0x04,0xFC,0xFC,0x20,0x60,0xC0,0x80,0x00,0x08,0x0F,0x07,0x08,0x08,0x0F,0x07,0x00, // -b- 0xC0,0xE0,0x20,0x20,0x20,0x60,0x40,0x00,0x07,0x0F,0x08,0x08,0x08,0x0C,0x04,0x00, // -c- 0x80,0xC0,0x60,0x24,0xFC,0xFC,0x00,0x00,0x07,0x0F,0x08,0x08,0x07,0x0F,0x08,0x00, // -d- 0xC0,0xE0,0xA0,0xA0,0xA0,0xE0,0xC0,0x00,0x07,0x0F,0x08,0x08,0x08,0x0C,0x04,0x00, // -e- 0x40,0xF8,0xFC,0x44,0x0C,0x18,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00, // -f- 0xC0,0xE0,0x20,0x20,0xC0,0xE0,0x20,0x00,0x27,0x6F,0x48,0x48,0x7F,0x3F,0x00,0x00, // -g- 0x04,0xFC,0xFC,0x40,0x20,0xE0,0xC0,0x00,0x08,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00, // -h- 0x00,0x00,0x20,0xEC,0xEC,0x00,0x00,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00, // -i- 0x00,0x00,0x00,0x00,0x20,0xEC,0xEC,0x00,0x00,0x30,0x70,0x40,0x40,0x7F,0x3F,0x00, // -j- 0x04,0xFC,0xFC,0x80,0xC0,0x60,0x20,0x00,0x08,0x0F,0x0F,0x01,0x03,0x0E,0x0C,0x00, // -k- 0x00,0x00,0x04,0xFC,0xFC,0x00,0x00,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00, // -l- 0xE0,0xE0,0x60,0xC0,0x60,0xE0,0xC0,0x00,0x0F,0x0F,0x00,0x0F,0x00,0x0F,0x0F,0x00, // -m- 0x20,0xE0,0xC0,0x20,0x20,0xE0,0xC0,0x00,0x00,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00, // -n- 0xC0,0xE0,0x20,0x20,0x20,0xE0,0xC0,0x00,0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00, // -o- 0x20,0xE0,0xC0,0x20,0x20,0xE0,0xC0,0x00,0x40,0x7F,0x7F,0x48,0x08,0x0F,0x07,0x00, // -p- 0xC0,0xE0,0x20,0x20,0xC0,0xE0,0x20,0x00,0x07,0x0F,0x08,0x48,0x7F,0x7F,0x40,0x00, // -q- 0x20,0xE0,0xC0,0x60,0x20,0x60,0xC0,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00, // -r- 0x40,0xE0,0xA0,0x20,0x20,0x60,0x40,0x00,0x04,0x0C,0x09,0x09,0x0B,0x0E,0x04,0x00, // -s- 0x20,0x20,0xF8,0xFC,0x20,0x20,0x00,0x00,0x00,0x00,0x07,0x0F,0x08,0x0C,0x04,0x00, // -t- 0xE0,0xE0,0x00,0x00,0xE0,0xE0,0x00,0x00,0x07,0x0F,0x08,0x08,0x07,0x0F,0x08,0x00, // -u- 0x00,0xE0,0xE0,0x00,0x00,0xE0,0xE0,0x00,0x00,0x03,0x07,0x0C,0x0C,0x07,0x03,0x00, // -v- 0xE0,0xE0,0x00,0x00,0x00,0xE0,0xE0,0x00,0x07,0x0F,0x0C,0x07,0x0C,0x0F,0x07,0x00, // -w- 0x20,0x60,0xC0,0x80,0xC0,0x60,0x20,0x00,0x08,0x0C,0x07,0x03,0x07,0x0C,0x08,0x00, // -x- 0xE0,0xE0,0x00,0x00,0x00,0xE0,0xE0,0x00,0x47,0x4F,0x48,0x48,0x68,0x3F,0x1F,0x00, // -y- 0x60,0x60,0x20,0xA0,0xE0,0x60,0x20,0x00,0x0C,0x0E,0x0B,0x09,0x08,0x0C,0x0C,0x00, // -z- 0x00,0x40,0x40,0xF8,0xBC,0x04,0x04,0x00,0x00,0x00,0x00,0x07,0x0F,0x08,0x08,0x00, // -{- 0x00,0x00,0x00,0xBC,0xBC,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00, // -|- 0x00,0x04,0x04,0xBC,0xF8,0x40,0x40,0x00,0x00,0x08,0x08,0x0F,0x07,0x00,0x00,0x00, // -}- 0x08,0x0C,0x04,0x0C,0x08,0x0C,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -~- } ; #endif //Tab_Ascii_8x16_CALL1 //=======8x16======================================================================= //#ifdef Tab_Ascii_8x16_CALL2 // #ifdef Display_Num_8x16_CALL const PROGMEM uint8_t Tab_Ascii_8x162[95][16]={ //细体字形 /*-- 文字: --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- 文字: ! --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00, /*-- 文字: " --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- 文字: # --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00, /*-- 文字: $ --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00, /*-- 文字: % --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00, /*-- 文字: & --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10, /*-- 文字: ' --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- 文字: ( --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00, /*-- 文字: ) --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00, /*-- 文字: * --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00, /*-- 文字: + --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00, /*-- 文字: , --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00, /*-- 文字: - --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01, /*-- 文字: . --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00, /*-- 文字: / --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00, /*-- 文字: 0 --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00, /*-- 文字: 1 --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00, /*-- 文字: 2 --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00, /*-- 文字: 3 --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00, /*-- 文字: 4 --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00, /*-- 文字: 5 --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00, /*-- 文字: 6 --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00, /*-- 文字: 7 --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00, /*-- 文字: 8 --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00, /*-- 文字: 9 --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00, /*-- 文字: : --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00, /*-- 文字: ; --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00, /*-- 文字: < --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00, /*-- 文字: = --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00, /*-- 文字: > --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00, /*-- 文字: ? --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00, /*-- 文字: @ --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00, /*-- 文字: A --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20, /*-- 文字: B --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00, /*-- 文字: C --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00, /*-- 文字: D --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00, /*-- 文字: E --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00, /*-- 文字: F --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00, /*-- 文字: G --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00, /*-- 文字: H --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20, /*-- 文字: I --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00, /*-- 文字: J --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00, /*-- 文字: K --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00, /*-- 文字: L --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00, /*-- 文字: M --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00, /*-- 文字: N --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00, /*-- 文字: O --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00, /*-- 文字: P --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00, /*-- 文字: Q --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00, /*-- 文字: R --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20, /*-- 文字: S --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00, /*-- 文字: T --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00, /*-- 文字: U --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00, /*-- 文字: V --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00, /*-- 文字: W --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00, /*-- 文字: X --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20, /*-- 文字: Y --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00, /*-- 文字: Z --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00, /*-- 文字: [ --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00, /*-- 文字: \ --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00, /*-- 文字: ] --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00, /*-- 文字: ^ --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- 文字: _ --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, /*-- 文字: ` --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- 文字: a --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20, /*-- 文字: b --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00, /*-- 文字: c --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00, /*-- 文字: d --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20, /*-- 文字: e --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00, /*-- 文字: f --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00, /*-- 文字: g --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00, /*-- 文字: h --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20, /*-- 文字: i --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00, /*-- 文字: j --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00, /*-- 文字: k --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00, /*-- 文字: l --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00, /*-- 文字: m --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F, /*-- 文字: n --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20, /*-- 文字: o --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00, /*-- 文字: p --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00, /*-- 文字: q --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80, /*-- 文字: r --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00, /*-- 文字: s --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00, /*-- 文字: t --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00, /*-- 文字: u --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20, /*-- 文字: v --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00, /*-- 文字: w --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00, /*-- 文字: x --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00, /*-- 文字: y --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00, /*-- 文字: z --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00, /*-- 文字: { --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40, /*-- 文字: | --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, /*-- 文字: } --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00, /*-- 文字: ~ --*/ /*-- Comic Sans MS12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; ///#endif //#endif //Tab_Ascii_8x16_CALL1 //=======5x7======================================================================= //#ifdef Tab_Ascii_5x7_CALL const PROGMEM uint8_t Tab_Ascii_5x71[95][5]={ /*全体ASCII 列表:5x7点阵*/ 0x00,0x00,0x00,0x00,0x00,//space 0x00,0x00,0x4f,0x00,0x00,//! 0x00,0x07,0x00,0x07,0x00,//" 0x14,0x7f,0x14,0x7f,0x14,//# 0x24,0x2a,0x7f,0x2a,0x12,//$ 0x23,0x13,0x08,0x64,0x62,//% 0x36,0x49,0x55,0x22,0x50,//& 0x00,0x05,0x07,0x00,0x00,//] 0x00,0x1c,0x22,0x41,0x00,//( 0x00,0x41,0x22,0x1c,0x00,//) 0x14,0x08,0x3e,0x08,0x14,//* 0x08,0x08,0x3e,0x08,0x08,//+ 0x00,0x50,0x30,0x00,0x00,//, 0x08,0x08,0x08,0x08,0x08,//- 0x00,0x60,0x60,0x00,0x00,//. 0x20,0x10,0x08,0x04,0x02,/// 0x3e,0x51,0x49,0x45,0x3e,//0 0x00,0x42,0x7f,0x40,0x00,//1 0x42,0x61,0x51,0x49,0x46,//2 0x21,0x41,0x45,0x4b,0x31,//3 0x18,0x14,0x12,0x7f,0x10,//4 0x27,0x45,0x45,0x45,0x39,//5 0x3c,0x4a,0x49,0x49,0x30,//6 0x01,0x71,0x09,0x05,0x03,//7 0x36,0x49,0x49,0x49,0x36,//8 0x06,0x49,0x49,0x29,0x1e,//9 0x00,0x36,0x36,0x00,0x00,//: 0x00,0x56,0x36,0x00,0x00,//; 0x08,0x14,0x22,0x41,0x00,//< 0x14,0x14,0x14,0x14,0x14,//= 0x00,0x41,0x22,0x14,0x08,//> 0x02,0x01,0x51,0x09,0x06,//? 0x32,0x49,0x79,0x41,0x3e,//@ 0x7e,0x11,0x11,0x11,0x7e,//A 0x7f,0x49,0x49,0x49,0x36,//B 0x3e,0x41,0x41,0x41,0x22,//C 0x7f,0x41,0x41,0x22,0x1c,//D 0x7f,0x49,0x49,0x49,0x41,//E 0x7f,0x09,0x09,0x09,0x01,//F 0x3e,0x41,0x49,0x49,0x7a,//G 0x7f,0x08,0x08,0x08,0x7f,//H 0x00,0x41,0x7f,0x41,0x00,//I 0x20,0x40,0x41,0x3f,0x01,//J 0x7f,0x08,0x14,0x22,0x41,//K 0x7f,0x40,0x40,0x40,0x40,//L 0x7f,0x02,0x0c,0x02,0x7f,//M 0x7f,0x04,0x08,0x10,0x7f,//N 0x3e,0x41,0x41,0x41,0x3e,//O 0x7f,0x09,0x09,0x09,0x06,//P 0x3e,0x41,0x51,0x21,0x5e,//Q 0x7f,0x09,0x19,0x29,0x46,//R 0x46,0x49,0x49,0x49,0x31,//S 0x01,0x01,0x7f,0x01,0x01,//T 0x3f,0x40,0x40,0x40,0x3f,//U 0x1f,0x20,0x40,0x20,0x1f,//V 0x3f,0x40,0x38,0x40,0x3f,//W 0x63,0x14,0x08,0x14,0x63,//X 0x07,0x08,0x70,0x08,0x07,//Y 0x61,0x51,0x49,0x45,0x43,//Z 0x00,0x7f,0x41,0x41,0x00,//[ 0x02,0x04,0x08,0x10,0x20,//\ 0x00,0x41,0x41,0x7f,0x00,//] 0x04,0x02,0x01,0x02,0x04,//^ 0x40,0x40,0x40,0x40,0x40,//_ 0x01,0x02,0x04,0x00,0x00,//` 0x20,0x54,0x54,0x54,0x78,//a 0x7f,0x48,0x48,0x48,0x30,//b 0x38,0x44,0x44,0x44,0x44,//c 0x30,0x48,0x48,0x48,0x7f,//d 0x38,0x54,0x54,0x54,0x58,//e 0x00,0x08,0x7e,0x09,0x02,//f 0x48,0x54,0x54,0x54,0x3c,//g 0x7f,0x08,0x08,0x08,0x70,//h 0x00,0x00,0x7a,0x00,0x00,//i 0x20,0x40,0x40,0x3d,0x00,//j 0x7f,0x20,0x28,0x44,0x00,//k 0x00,0x41,0x7f,0x40,0x00,//l 0x7c,0x04,0x38,0x04,0x7c,//m 0x7c,0x08,0x04,0x04,0x78,//n 0x38,0x44,0x44,0x44,0x38,//o 0x7c,0x14,0x14,0x14,0x08,//p 0x08,0x14,0x14,0x14,0x7c,//q 0x7c,0x08,0x04,0x04,0x08,//r 0x48,0x54,0x54,0x54,0x24,//s 0x04,0x04,0x3f,0x44,0x24,//t 0x3c,0x40,0x40,0x40,0x3c,//u 0x1c,0x20,0x40,0x20,0x1c,//v 0x3c,0x40,0x30,0x40,0x3c,//w 0x44,0x28,0x10,0x28,0x44,//x 0x04,0x48,0x30,0x08,0x04,//y 0x44,0x64,0x54,0x4c,0x44,//z 0x08,0x36,0x41,0x41,0x00,//{ 0x00,0x00,0x77,0x00,0x00,//| 0x00,0x41,0x41,0x36,0x08,//} 0x04,0x02,0x02,0x02,0x01,//~ }; //#endif //Tab_Ascii_5x7_CALL uint8 zhuang1[]={ /*-- 文字: 状 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x08,0x30,0x00,0xFF,0x20,0x20,0x20,0x20,0xFF,0x20,0xE1,0x26,0x2C,0x20,0x20,0x00, 0x04,0x02,0x01,0xFF,0x40,0x20,0x18,0x07,0x00,0x00,0x03,0x0C,0x30,0x60,0x20,0x00 }; uint8 tai1[]={ /*-- 文字: 态 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x04,0x04,0x04,0x84,0x44,0x34,0x4F,0x94,0x24,0x44,0x84,0x84,0x04,0x00,0x00, 0x00,0x60,0x39,0x01,0x00,0x3C,0x40,0x42,0x4C,0x40,0x40,0x70,0x04,0x09,0x31,0x00 }; uint8 shi1[]={ /*-- 文字: 使 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x40,0x20,0xF0,0x1C,0x07,0xF2,0x94,0x94,0x94,0xFF,0x94,0x94,0x94,0xF4,0x04,0x00, 0x00,0x00,0x7F,0x00,0x40,0x41,0x22,0x14,0x0C,0x13,0x10,0x30,0x20,0x61,0x20,0x00 }; uint8 yong1[]={ /*-- 文字: 用 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0xFE,0x00,0x00, 0x80,0x40,0x30,0x0F,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x42,0x82,0x7F,0x00,0x00 }; //x=9 y=16 点阵 0-9 const PROGMEM uint8_t lcd_numbers_lit[]={ 0x00,0xE0,0xE0,0x60,0x20,0x60,0xE0,0xE0,0x00,//0 0x00,0x7F,0x7F,0x60,0x40,0x60,0x7F,0x7F,0x00, 0x00,0x00,0x40,0x40,0xE0,0xE0,0x00,0x00,0x00,//1 0x00,0x00,0x00,0x00,0x7F,0x7F,0x00,0x00,0x00, 0x00,0xE0,0xE0,0x20,0x20,0xE0,0xE0,0xC0,0x00,//2 0x00,0x71,0x79,0x78,0x5E,0x47,0x43,0x41,0x00, 0x00,0xE0,0xE0,0x20,0x20,0xE0,0xE0,0xC0,0x00,//3 0x00,0x78,0x78,0x42,0x47,0x7F,0x7D,0x39,0x00, 0x00,0x00,0x00,0x80,0xE0,0xE0,0xE0,0x00,0x00,//4 0x00,0x0E,0x0F,0x0B,0x7F,0x7F,0x7F,0x08,0x00, 0x00,0xE0,0xE0,0xE0,0x20,0x20,0x20,0x20,0x00,//5 0x00,0x73,0x73,0x43,0x41,0x7F,0x7F,0x3E,0x00, 0x00,0xE0,0xE0,0x60,0x20,0x60,0x60,0x60,0x00,//6 0x00,0x7F,0x7F,0x43,0x43,0x7F,0x7E,0x3C,0x00, 0x00,0x20,0x20,0x20,0xA0,0xE0,0xE0,0x60,0x00,//7 0x00,0x00,0x40,0x78,0x7F,0x0F,0x01,0x00,0x00, 0x00,0xE0,0xE0,0x20,0x20,0x20,0xE0,0xE0,0x00,//8 0x00,0x7D,0x7D,0x47,0x42,0x47,0x7D,0x7D,0x00, 0x00,0xE0,0xE0,0x20,0x20,0xE0,0xE0,0x80,0x00,//9 0x00,0x67,0x6F,0x4C,0x6C,0x7F,0x3F,0x0F,0x00 }; //x=12 y=16 点阵 0-9数字 const PROGMEM uint8_t lcd_numbers[]={ 0x00,0xF0,0xFC,0xFC,0x0E,0x02,0x02,0x0E,0xFC,0xFC,0xF0,0x00,//0 0x00,0x07,0x3F,0x3F,0x70,0x40,0x40,0x70,0x3F,0x3F,0x07,0x00, 0x00,0x00,0x00,0x08,0x08,0xFC,0xFE,0xFE,0x00,0x00,0x00,0x00,//1 0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0x7F,0x00,0x00,0x00,0x00, 0x00,0x38,0x3C,0x3E,0x06,0x02,0x86,0xFE,0xFC,0x78,0x00,0x00,//2 0x00,0x60,0x78,0x7C,0x5E,0x4F,0x43,0x41,0x40,0x40,0x00,0x00, 0x00,0x18,0x1C,0x1E,0x86,0x82,0xC6,0xFE,0x7C,0x38,0x00,0x00,//3 0x00,0x1C,0x3C,0x7C,0x60,0x40,0x61,0x7F,0x3F,0x1E,0x00,0x00, 0x00,0x00,0x80,0xC0,0xF0,0x3C,0xFE,0xFE,0xFE,0x00,0x00,0x00,//4 0x00,0x06,0x07,0x05,0x04,0x04,0x7F,0x7F,0x7F,0x04,0x04,0x00, 0x00,0x00,0xFE,0xFE,0xFE,0x62,0x62,0xE2,0xE2,0x82,0x00,0x00,//5 0x00,0x18,0x38,0x78,0x60,0x40,0x60,0x7F,0x3F,0x1F,0x00,0x00, 0x00,0xF0,0xFC,0xFC,0xCE,0x42,0xC6,0xCE,0x8E,0x0C,0x00,0x00,//6 0x00,0x0F,0x3F,0x7F,0x60,0x40,0x60,0x7F,0x3F,0x1F,0x00,0x00, 0x00,0x02,0x02,0x02,0x02,0x82,0xF2,0xFE,0x7E,0x0E,0x00,0x00,//7 0x00,0x00,0x00,0x60,0x7C,0x7F,0x1F,0x03,0x00,0x00,0x00,0x00, 0x00,0x38,0x7C,0x7E,0xC6,0x82,0x82,0xC6,0x7E,0x7C,0x38,0x00,//8 0x00,0x1E,0x3F,0x7F,0x61,0x40,0x40,0x61,0x7F,0x3F,0x1E,0x00, 0x00,0xF8,0xFC,0xFE,0x06,0x02,0x06,0xFE,0xFC,0xF0,0x00,0x00,//9 0x00,0x30,0x71,0x73,0x63,0x42,0x73,0x3F,0x1F,0x07,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//. 0x00,0x00,0x00,0x38,0x38,0x38,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,//- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00 }; const PROGMEM uint8_t Tab_Ascii_5x72[95][5]={ /*全体ASCII 列表:5x7点阵*/ 0x00,0x00,0x00,0x00,0x00,//space 0x00,0x00,0x4f,0x00,0x00,//! 0x00,0x07,0x00,0x07,0x00,//" 0x14,0x7f,0x14,0x7f,0x14,//# 0x24,0x2a,0x7f,0x2a,0x12,//$ 0x23,0x13,0x08,0x64,0x62,//% 0x36,0x49,0x55,0x22,0x50,//& 0x00,0x05,0x07,0x00,0x00,//] 0x00,0x1c,0x22,0x41,0x00,//( 0x00,0x41,0x22,0x1c,0x00,//) 0x14,0x08,0x3e,0x08,0x14,//* 0x08,0x08,0x3e,0x08,0x08,//+ 0x00,0x50,0x30,0x00,0x00,//, 0x08,0x08,0x08,0x08,0x08,//- 0x00,0x60,0x60,0x00,0x00,//. 0x20,0x10,0x08,0x04,0x02,/// 0x3e,0x51,0x49,0x45,0x3e,//0 0x00,0x42,0x7f,0x40,0x00,//1 0x42,0x61,0x51,0x49,0x46,//2 0x21,0x41,0x45,0x4b,0x31,//3 0x18,0x14,0x12,0x7f,0x10,//4 0x27,0x45,0x45,0x45,0x39,//5 0x3c,0x4a,0x49,0x49,0x30,//6 0x01,0x71,0x09,0x05,0x03,//7 0x36,0x49,0x49,0x49,0x36,//8 0x06,0x49,0x49,0x29,0x1e,//9 0x00,0x36,0x36,0x00,0x00,//: 0x00,0x56,0x36,0x00,0x00,//; 0x08,0x14,0x22,0x41,0x00,//< 0x14,0x14,0x14,0x14,0x14,//= 0x00,0x41,0x22,0x14,0x08,//> 0x02,0x01,0x51,0x09,0x06,//? 0x32,0x49,0x79,0x41,0x3e,//@ 0x7e,0x11,0x11,0x11,0x7e,//A 0x7f,0x49,0x49,0x49,0x36,//B 0x3e,0x41,0x41,0x41,0x22,//C 0x7f,0x41,0x41,0x22,0x1c,//D 0x7f,0x49,0x49,0x49,0x41,//E 0x7f,0x09,0x09,0x09,0x01,//F 0x3e,0x41,0x49,0x49,0x7a,//G 0x7f,0x08,0x08,0x08,0x7f,//H 0x00,0x41,0x7f,0x41,0x00,//I 0x20,0x40,0x41,0x3f,0x01,//J 0x7f,0x08,0x14,0x22,0x41,//K 0x7f,0x40,0x40,0x40,0x40,//L 0x7f,0x02,0x0c,0x02,0x7f,//M 0x7f,0x04,0x08,0x10,0x7f,//N 0x3e,0x41,0x41,0x41,0x3e,//O 0x7f,0x09,0x09,0x09,0x06,//P 0x3e,0x41,0x51,0x21,0x5e,//Q 0x7f,0x09,0x19,0x29,0x46,//R 0x46,0x49,0x49,0x49,0x31,//S 0x01,0x01,0x7f,0x01,0x01,//T 0x3f,0x40,0x40,0x40,0x3f,//U 0x1f,0x20,0x40,0x20,0x1f,//V 0x3f,0x40,0x38,0x40,0x3f,//W 0x63,0x14,0x08,0x14,0x63,//X 0x07,0x08,0x70,0x08,0x07,//Y 0x61,0x51,0x49,0x45,0x43,//Z 0x00,0x7f,0x41,0x41,0x00,//[ 0x02,0x04,0x08,0x10,0x20,// 0x00,0x41,0x41,0x7f,0x00,//] 0x04,0x02,0x01,0x02,0x04,//^ 0x40,0x40,0x40,0x40,0x40,//_ 0x01,0x02,0x04,0x00,0x00,//` 0x20,0x54,0x54,0x54,0x78,//a 0x7f,0x48,0x48,0x48,0x30,//b 0x38,0x44,0x44,0x44,0x44,//c 0x30,0x48,0x48,0x48,0x7f,//d 0x38,0x54,0x54,0x54,0x58,//e 0x00,0x08,0x7e,0x09,0x02,//f 0x48,0x54,0x54,0x54,0x3c,//g 0x7f,0x08,0x08,0x08,0x70,//h 0x00,0x00,0x7a,0x00,0x00,//i 0x20,0x40,0x40,0x3d,0x00,//j 0x7f,0x20,0x28,0x44,0x00,//k 0x00,0x41,0x7f,0x40,0x00,//l 0x7c,0x04,0x38,0x04,0x7c,//m 0x7c,0x08,0x04,0x04,0x78,//n 0x38,0x44,0x44,0x44,0x38,//o 0x7c,0x14,0x14,0x14,0x08,//p 0x08,0x14,0x14,0x14,0x7c,//q 0x7c,0x08,0x04,0x04,0x08,//r 0x48,0x54,0x54,0x54,0x24,//s 0x04,0x04,0x3f,0x44,0x24,//t 0x3c,0x40,0x40,0x40,0x3c,//u 0x1c,0x20,0x40,0x20,0x1c,//v 0x3c,0x40,0x30,0x40,0x3c,//w 0x44,0x28,0x10,0x28,0x44,//x 0x04,0x48,0x30,0x08,0x04,//y 0x44,0x64,0x54,0x4c,0x44,//z 0x08,0x36,0x41,0x41,0x00,//{ 0x00,0x00,0x77,0x00,0x00,//| 0x00,0x41,0x41,0x36,0x08,//} 0x04,0x02,0x02,0x02,0x01,//~ }; /////////////// #define Start_T1 TCCR1B|=_BV(CS11);TCNT1=0//复位预计分频器并开启定时器T1 #define Stop_T1 TCCR1B&=~_BV(CS11) //关闭定时器T1 //数码管的段码编码 unsigned char table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; volatile unsigned char i,j,k; volatile unsigned char IRcode; //定义一个长度为4字节的无符号long类型变量来存储代码 volatile unsigned char IR_OK=0; //IR信号接收有效 当程序响应接收以后请马上清零 这样才会继续接收下一IR码 volatile unsigned char IR_con=0; //IR信号当前接收位 0时表示第0位即同步码(4.5ms高电平) volatile unsigned int Pulse_length=0; //捕获的脉冲宽度 volatile unsigned char ICP_Parity=0; //捕获中断奇偶次计数 1时为偶次 并在此时判断脉宽 volatile unsigned char address; volatile unsigned char code_data; volatile unsigned char code_data1; unsigned char clrbit; #define FREQ 8 //定义单片机工作频率为 4M /////////////// //**************************************************************** // 函数名称:DelayLcd // 函数功能:延时 // 入口参数: // 出口参数: //***************************************************************** void DelayLcd(uint16 i) { uint16 j; for(j=200;j>0;j--) for(;i>0;i--); //while(i--); } //**************************************************************** // 函数名称:LcdWriteCommand // 函数功能:写指令到LCD模块 // 入口参数:数据 // 出口参数: //***************************************************************** void LcdWriteCommand(uint8 data1) // { uint8 i ; P_LCDCS0 ; P_LCDRS0 ; for(i=8;i>0;i--) { P_LCDCLK0; if(data1&0x80) P_LCDDAT1; else P_LCDDAT0; P_LCDCLK1; data1 <<= 1; } } //**************************************************************** // 函数名称:LcdWritedata // 函数功能:写数据到LCD模块 // 入口参数:数据 // 出口参数: //***************************************************************** void LcdWritedata(uint8 data1) // { uint8 i; P_LCDCS0 ; P_LCDRS1 ; for(i=8;i>0;i--) { P_LCDCLK0; if(data1&0x80) P_LCDDAT1; else P_LCDDAT0; P_LCDCLK1; data1 <<= 1; } } //**************************************************************** // 函数名称:Lcd_SetAddr // 函数功能:设置LCD显示地址 // 入口参数: 页地址 列地址 // 出口参数: //***************************************************************** void Lcd_SetAddr(uint8 page,uint8 column) { //LcdWriteCommand(0xb0 | (y+yy)); //LcdWriteCommand(0x10 | (x>>4)); //LcdWriteCommand(0x00 | (x&0x0f)); //P_LCDCS0 ; LcdWriteCommand(0xb0|page); /*设置页地址*/ LcdWriteCommand((column>>4)|0x10); /*设置列地址的高4位*/ LcdWriteCommand(column&0x0f); /*设置列地址的低4位*/ } ////// void Display_Graphic_32x2(uint8 page,uint8 column,PROGMEM uint8_t *dp) // 电池显示 0、2、4、6、8、10 { uint8 i,j; uint8 page_address; uint8 column_address_L,column_address_H; page_address = 0xb0|page; column_address_L =(column&0x0f); column_address_H =(column>>4)|0x10; P_LCDCS0 ; for(j=0;j<2;j++) { LcdWriteCommand(page_address+j); /*设置页地址*/ LcdWriteCommand(column_address_H); /*设置列地址的高4位*/ LcdWriteCommand(column_address_L); /*设置列地址的低4位*/ for (i=32;i>0;i--) //写32行 { LcdWritedata(pgm_read_byte(dp++)); /*写数据到LCD,每写完一个8位的数据后列地址自动加1*/ } LcdWritedata(0x00); } P_LCDCS1 ; } //#ifdef Display_Graphic_32x32_CALL void Display_Graphic_32x32(uint8 page,uint8 column,PROGMEM uint8_t *dp) { uint8 i,j; uint8 page_address; uint8 column_address_L,column_address_H; page_address = 0xb0|page; column_address_L =(column&0x0f); column_address_H =(column>>4)|0x10; P_LCDCS0 ; &
标签: 程序
上传时间: 2016-03-03
上传用户:彦 yan
/****************temic*********t5557***********************************/ #include <at892051.h> #include <string.h> #include <intrins.h> #include <stdio.h> #define uchar unsigned char #define uint unsigned int #define ulong unsigned long //STC12C2051AD的SFR定义 sfr WDT_CONTR = 0xe1;//stc2051的看门狗?????? /**********全局常量************/ //写卡的命令 #define write_command0 0//写密码 #define write_command1 1//写配置字 #define write_command2 2//密码写数据 #define write_command3 3//唤醒 #define write_command4 4//停止命令 #define TRUE 1 #define FALSE 0 #define OK 0 #define ERROR 255 //读卡的时间参数us #define ts_min 250//270*11.0592/12=249//取近似的整数 #define ts_max 304//330*11.0592/12=304 #define t1_min 73//90*11.0592/12=83:-10调整 #define t1_max 156//180*11.0592/12=166 #define t2_min 184//210*11.0592/12=194 #define t2_max 267//300*11.0592/12=276 //***********不采用中断处理:采用查询的方法读卡时关所有中断****************/ sbit p_U2270B_Standby = P3^5;//p_U2270B_Standby PIN=13 sbit p_U2270B_CFE = P3^3;//p_U2270B_CFE PIN=6 sbit p_U2270B_OutPut = P3^7;//p_U2270B_OutPut PIN=2 sbit wtd_sck = P1^7;//SPI总线 sbit wtd_si = P1^3; sbit wtd_so = P1^2; sbit iic_data = P1^2;//lcd IIC sbit iic_clk = P1^7; sbit led_light = P1^6;//测试绿灯 sbit led_light1 = P1^5;//测试红灯 sbit led_light_ok = P1^1;//读卡成功标志 sbit fengmingqi = P1^5; /***********全局变量************************************/ uchar data Nkey_a[4] = {0xA0, 0xA1, 0xA2, 0xA3};//初始密码 //uchar idata card_snr[4]; //配置字 uchar data bankdata[28] = {1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7}; //存储卡上用户数据(1-7)7*4=28 uchar data cominceptbuff[6] = {1,2,3,4,5,6};//串口接收数组ram uchar command; //第一个命令 uchar command1;// //uint temp; uchar j,i; uchar myaddr = 8; //uchar ywqz_count,time_count; //ywqz jishu: uchar bdata DATA; sbit BIT0 = DATA^0; sbit BIT1 = DATA^1; sbit BIT2 = DATA^2; sbit BIT3 = DATA^3; sbit BIT4 = DATA^4; sbit BIT5 = DATA^5; sbit BIT6 = DATA^6; sbit BIT7 = DATA^7; uchar bdata DATA1; sbit BIT10 = DATA1^0; sbit BIT11 = DATA1^1; sbit BIT12 = DATA1^2; sbit BIT13 = DATA1^3; sbit BIT14 = DATA1^4; sbit BIT15 = DATA1^5; sbit BIT16 = DATA1^6; sbit BIT17 = DATA1^7; bit i_CurrentLevel;//i_CurrentLevel BIT 00H(Saves current level of OutPut pin of U2270B) bit timer1_end; bit read_ok = 0; //缓存定时值,因用同一个定时器 union HLint { uint W; struct { uchar H;uchar L; } B; };//union HLint idata a union HLint data a; //缓存定时值,因用同一个定时器 union HLint0 { uint W; struct { uchar H; uchar L; } B; };//union HLint idata a union HLint0 data b; /**********************函数原型*****************/ //读写操作 void f_readcard(void);//全部读出1~7 AOR唤醒 void f_writecard(uchar x);//根据命令写不同的内容和操作 void f_clearpassword(void);//清除密码 void f_changepassword(void);//修改密码 //功能子函数 void write_password(uchar data *data p);//写初始密码或数据 void write_block(uchar x,uchar data *data p);//不能用通用指针 void write_bit(bit x);//写位 /*子函数区*****************************************************/ void delay_2(uint x) //延时,时间x*10us@12mhz,最小20us@12mhz { x--; x--; while(x) { _nop_(); _nop_(); x--; } _nop_();//WDT_CONTR=0X3C;不能频繁的复位 _nop_(); } ///////////////////////////////////////////////////////////////////// void initial(void) { SCON = 0x50; //串口方式1,允许接收 //SCON =0x50; //01010000B:10位异步收发,波特率可变,SM2=0不用接收到有效停止位才RI=1, //REN=1允许接收 TMOD = 0x21; //定时器1 定时方式2(8位),定时器0 定时方式1(16位) TCON = 0x40; //设定时器1 允许开始计时(IT1=1) TH1 = 0xfD; //FB 18.432MHz 9600 波特率 TL1 = 0xfD; //fd 11.0592 9600 IE = 0X90; //EA=ES=1 TR1 = 1; //启动定时器 WDT_CONTR = 0x3c;//使能看门狗 p_U2270B_Standby = 0;//单电源 PCON = 0x00; IP = 0x10;//uart you xian XXXPS PT1 PX1 PT0 PX0 led_light1 = 1; led_light = 0; p_U2270B_OutPut = 1; } /************************************************/ void f_readcard()//读卡 { EA = 0;//全关,防止影响跳变的定时器计时 WDT_CONTR = 0X3C;//喂狗 p_U2270B_CFE = 1;// delay_2(232); //>2.5ms /* // aor 用唤醒功能来防碰撞 p_U2270B_CFE = 0; delay_2(18);//start gap>150us write_bit(1);//10=操作码读0页 write_bit(0); write_password(&bankdata[24]);//密码block7 p_U2270B_CFE =1 ;// delay_2(516);//编程及确认时间5.6ms */ WDT_CONTR = 0X3C;//喂狗 led_light = 0; b.W = 0; while(!(read_ok == 1)) { //while(p_U2270B_OutPut);//等一个稳定的低电平?超时判断? while(!p_U2270B_OutPut);//等待上升沿的到来同步信号检测1 TR0 = 1; //deng xia jiang while(p_U2270B_OutPut);//等待下降沿 TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1;//定时器晚启动10个周期 //同步头 if((324 < a.W) && (a.W < 353)) ;//检测同步信号1 else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } //等待上升沿 while(!p_U2270B_OutPut); TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1;//b.N1<<=8; if(a.B.L < 195);//0.5p else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } //读0~7块的数据 for(j = 0;j < 28;j++) { //uchar i; for(i = 0;i < 16;i++)//8个位 { //等待下降沿的到来 while(p_U2270B_OutPut); TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1; if(t2_max < a.W/*)&&(a.W < t2_max)*/)//1P { b.W >>= 2;//先左移再赋值 b.B.L += 0xc0; i++; } else if(t1_min < a.B.L/*)&&(a.B.L < t1_max)*/)//0.5p { b.W >>= 1; b.B.L += 0x80; } else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } i++; while(!p_U2270B_OutPut);//上升 TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1; if(t2_min < a.W/*)&&(a.W < t2_max)*/)//1P { b.W >>= 2; i++; } else if(t1_min < a.B.L/*a.W)&&(a.B.L < t1_max)*/)//0.5P //else if(!(a.W==0)) { b.W >>= 1; //temp+=0x00; //led_light1=0;led_light=1;delay_2(40000); } else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } i++; } //取出奇位 DATA = b.B.L; BIT13 = BIT7; BIT12 = BIT5; BIT11 = BIT3; BIT10 = BIT1; DATA = b.B.H; BIT17 = BIT7; BIT16 = BIT5; BIT15 = BIT3; BIT14 = BIT1; bankdata[j] = DATA1; } read_ok = 1;//读卡完成了 read_error: _nop_(); } } /***************************************************/ void f_writecard(uchar x)//写卡 { p_U2270B_CFE = 1; delay_2(232); //>2.5ms //psw=0 standard write if (x == write_command0)//写密码:初始化密码 { uchar i; uchar data *data p; p = cominceptbuff; p_U2270B_CFE = 0; delay_2(31);//start gap>330us write_bit(1);//写操作码1:10 write_bit(0);//写操作码0 write_bit(0);//写锁定位0 for(i = 0;i < 35;i++) { write_bit(1);//写数据位1 } p_U2270B_CFE = 1; led_light1 = 0; led_light = 1; delay_2(40000);//测试使用 //write_block(cominceptbuff[4],p); p_U2270B_CFE = 1; bankdata[20] = cominceptbuff[0];//密码存入 bankdata[21] = cominceptbuff[1]; bankdata[22] = cominceptbuff[2]; bankdata[23] = cominceptbuff[3]; } else if (x == write_command1)//配置卡参数:初始化 { uchar data *data p; p = cominceptbuff; write_bit(1);//写操作码1:10 write_bit(0);//写操作码0 write_bit(0);//写锁定位0 write_block(cominceptbuff[4],p); p_U2270B_CFE= 1; } //psw=1 pssword mode else if(x == write_command2) //密码写数据 { uchar data*data p; p = &bankdata[24]; write_bit(1);//写操作码1:10 write_bit(0);//写操作码0 write_password(p);//发口令 write_bit(0);//写锁定位0 p = cominceptbuff; write_block(cominceptbuff[4],p);//写数据 } else if(x == write_command3)//aor //唤醒 { //cominceptbuff[1]操作码10 X xxxxxB uchar data *data p; p = cominceptbuff; write_bit(1);//10 write_bit(0); write_password(p);//密码 p_U2270B_CFE = 1;//此时数据不停的循环传出 } else //停止操作码 { write_bit(1);//11 write_bit(1); p_U2270B_CFE = 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /************************************/ void f_clearpassword()//清除密码 { uchar data *data p; uchar i,x; p = &bankdata[24];//原密码 p_U2270B_CFE = 0; delay_2(18);//start gap>150us //操作码10:10xxxxxxB write_bit(1); write_bit(0); for(x = 0;x < 4;x++)//发原密码 { DATA = *(p++); for(i = 0;i < 8;i++) { write_bit(BIT0); DATA >>= 1; } } write_bit(0);//锁定位0:0 p = &cominceptbuff[0]; write_block(0x00,p);//写新配置参数:pwd=0 //密码无效:即清除密码 DATA = 0x00;//停止操作码00000000B for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /*********************************/ void f_changepassword()//修改密码 { uchar data *data p; uchar i,x,addr; addr = 0x07;//block7 p = &Nkey_a[0];//原密码 DATA = 0x80;//操作码10:10xxxxxxB for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } for(x = 0;x < 4;x++)//发原密码 { DATA = *(p++); for(i = 0;i < 8;i++) { write_bit(BIT7); DATA >>= 1; } } write_bit(0);//锁定位0:0 p = &cominceptbuff[0]; write_block(0x07,p);//写新密码 p_U2270B_CFE = 1; bankdata[24] = cominceptbuff[0];//密码存入 bankdata[25] = cominceptbuff[1]; bankdata[26] = cominceptbuff[2]; bankdata[27] = cominceptbuff[3]; DATA = 0x00;//停止操作码00000000B for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /***************************子函数***********************************/ void write_bit(bit x)//写一位 { if(x) { p_U2270B_CFE = 1; delay_2(32);//448*11.0592/120=42延时448us p_U2270B_CFE = 0; delay_2(28);//280*11.0592/120=26写1 } else { p_U2270B_CFE = 1; delay_2(92);//192*11.0592/120=18 p_U2270B_CFE = 0; delay_2(28);//280*11.0592/120=26写0 } } /*******************写一个block*******************/ void write_block(uchar addr,uchar data *data p) { uchar i,j; for(i = 0;i < 4;i++)//block0数据 { DATA = *(p++); for(j = 0;j < 8;j++) { write_bit(BIT0); DATA >>= 1; } } DATA = addr <<= 5;//0地址 for(i = 0;i < 3;i++) { write_bit(BIT7); DATA <<= 1; } } /*************************************************/ void write_password(uchar data *data p) { uchar i,j; for(i = 0;i < 4;i++)// { DATA = *(p++); for(j = 0;j < 8;j++) { write_bit(BIT0); DATA >>= 1; } } } /*************************************************/ void main() { initial(); TI = RI = 0; ES = 1; EA = 1; delay_2(28); //f_readcard(); while(1) { f_readcard(); //读卡 f_writecard(command1); //写卡 f_clearpassword(); //清除密码 f_changepassword(); //修改密码 } }
标签: 12345
上传时间: 2017-10-20
上传用户:my_lcs
lm75A温度数字转换器 FPGA读写实验Verilog逻辑源码Quartus工程文件+文档资料,FPGA为CYCLONE4系列中的EP4CE6E22C8. 完整的工程文件,可以做为你的学习设计参考。LM75A 是一个使用了内置带隙温度传感器和模数转换技术的温度数字转换器。它也是一个温度检测器,可提供一个过热检测输出。LM75A 包含许多数据寄存器:配置寄存器用来存储器件的某些配置,如器件的工作模式、OS 工作模式、OS 极性和OS 故障队列等(在功能描述一节中有详细描述);温度寄存器(Temp),用来存储读取的数字温度;设定点寄存器(Tos & Thyst),用来存储可编程的过热关断和滞后限制,器件通过2 线的串行I2C 总线接口与控制器通信。LM75A 还包含一个开漏输出(OS),当温度超过编程限制的值时该输出有效。LM75A 有3 个可选的逻辑地址管脚,使得同一总线上可同时连接8个器件而不发生地址冲突。LM75A 可配置成不同的工作条件。它可设置成在正常工作模式下周期性地对环境温度进行监控或进入关断模式来将器件功耗降至最低。OS 输出有2 种可选的工作模式:OS 比较器模式和OS 中断模式。OS 输出可选择高电平或低电平有效。故障队列和设定点限制可编程,为了激活OS 输出,故障队列定义了许多连续的故障。温度寄存器通常存放着一个11 位的二进制数的补码,用来实现0.125℃的精度。这个高精度在需要精确地测量温度偏移或超出限制范围的应用中非常有用。正常工作模式下,当器件上电时,OS 工作在比较器模式,温度阈值为80℃,滞后75℃,这时,LM75A就可用作一个具有以上预定义温度设定点的独立的温度控制器。module LM75_SEG_LED ( //input input sys_clk ,input sys_rst_n ,inout sda_port ,//output output wire seg_c1 ,output wire seg_c2 ,output wire seg_c3 ,output wire seg_c4 ,output reg seg_a ,output reg seg_b ,output reg seg_c ,output reg seg_e ,output reg seg_d ,output reg seg_f ,output reg seg_g ,output reg seg_h , output reg clk_sclk );//parameter define parameter WIDTH = 8;parameter SIZE = 8;//reg define reg [WIDTH-1:0] counter ;reg [9:0] counter_div ;reg clk_50k ;reg clk_200k ;reg sda ;reg enable ;
上传时间: 2021-10-27
上传用户:
电学中的测量技术涉及范围非常广,电流测量在电学计量中占有非常重要的位置。如何精确地进行电流测量是精密测量的一大难题。传统的电流检测电路多采用运算放大芯片与片外电流检测电路相结合的方式,电路集成度很低,需要较多的接口和资源才能完成对电路的检测。本文把所有电路部分都集成在一块芯片上,包括检测电阻,运算放大器电路及模拟转数字转换电路,从而在电路内部可以进行电流检测,使电路更好的集成化。前置电路使用二级共源共栅结构的运算放大器,减小沟道长度调制效应造成的电流误差。10位SAR ADC中采用电容驱动能力强的传输门保证了模数转化器的有效精度。比较器模块采用再生锁存器与迟滞比较器作为基础单元组合解决精密测量的问题。本设计可以作为嵌入芯片内的一小部分而检测芯片中的微小电流1mA~100mA,工作电压在1.8v左右,电流检测精度预期达到10uA的需求。The measurement technology in electricity involves a wide range,and current measurement plays a very important position in electrical measurement.How to accurately measure current is a big problem in precision measurement. The traditional current detecting circuit adopts the combination of the operational amplifier chip and theoff-chip current detecting circuit, The circuit integration is very low, and more interfaces and resources are needed tocomplete the circuit detection.This topic integrates all the circuit parts into one chip, including detection resistance, operational amplifier circuit andanalog to digital conversion circuit. Highly integrated circuit makes the external resources on the chip more intensive,so that current detection can be carried out inside the circuit, so that the circuit can be better integrated. Thefront-end circuit of this project uses two-stage cascade operational amplifier and cascade tube to reduce the currenterror caused by channel length modulation effect. In 10-bit SAR ADC, the transmission gate with strong capacitivedriving ability ensures the effective accuracy of the analog-to-digital converter. Comparator module uses regenerativelatch and hysteresis comparator as basic unit to solve the difficult problem of precision measurement. This topic can beused as a small part of the embedded chip to detect the micro-current in the chip 1 mA~100 mA, the working voltageis about 1.8v, and the current detection accuracy is expected to reach the requirement of 10 uA.
上传时间: 2022-04-03
上传用户:
摘要:建立了数字控制DC/DC开关电源闭环系统的s域小信号模型,采用数字重设计法针对给定的系统季数设计了数字补偿器。应用SISO Design Tool仿真平台,在伯德图分析和根轨连法的基础上设计了连续城的模拟补偿器,并进行了离散化处理。在建立系统s城模型时引入了模数转换器和数字脉宽调制发生器产生的延迟效应,使补偿器的设计考虑了采样速率对系统的影响,改善了传统离散设计的误盖。基于教字重设计法构建的数字补偿器实现了对脉宽调制信号的可编程精确控制,保证了变换器闭环工作良好的动态特性。仿真实验结果验证了所设计的数字补偿器的性能。关键词:数字控制系统;模数转换;数字重设计法;数字补偿器;数字脉宽调制1引言传统的开关电源采用模拟控制技术,使用比较器、误差放大器和模拟电源管理芯片等元器件来调整电源输出电压,存在着控制电路复杂、元器件数量多以及控制电路成型后很难修改等缺点,不利于开关电源的集成化和小型化。近年来随着微电子学的迅速发展,电源的控制也已经由模拟控制、模数混合控制,进入到数字控制阶段”,具有可编程性、设计可延续性、元件数量减少、先进的校正能力等优点。以往由于DSP等控制芯片的高成本,数字控制多用于大功率AC/DC变换器、PFC功率因数校正等场合”,而对于DC/DC高频开关电源只是实现了一些数字化的简单应用,如采用MCU提供保护、监控和通信功能。随着数字控制芯片成本的降低,数字控制也逐渐应用于DC/DC直流变换器,直接参与电源的反馈回路控制,实现了信号采样补偿和PWM调节的数字化。数字PID补偿器的设计非常关键,直接决定了电源的输出精度、动态响应等指标。近年来对DC/DC开关电源的数字补偿器的建模研究已有很多论述],主要基于数字重设计法和直接数字设计法。数字重设计是在传统模拟电源研究方法的基础上,首先将数字电源简化为一个连续的线性系统,忽略了采样保持器效应后设计模拟补偿器,然后采用双线性近似(Tustin)、匹配零极点(MPZ)等方法对其离散化得到数字补偿器。直接数字设计是直接建立零阶保持器和被控对象的离散模型,再构建包括离散补偿器的反馈系统。数字重设计和直接数字设计法在高采样速率下设计的数字补偿器性能差别不是很大,只是在低采样速率下直接数字设计更加精确。
上传时间: 2022-06-18
上传用户:zhanglei193
LTspice1.变压器仿真的简单步骤:A.为每个变压器绕组绘制一个电感器B.采用一个互感(K)描述语句通过一条SPICE指令对其实施耦合:K1L1L21K语句的最后一项是耦合系数,其变化范围介于0和1之间,1代表没有漏电感。对于实际电路,建议您采用耦合系数=l作为起点。每个变压器只需要一个K语句;LTspice为一个变压器内部的所有电感器应用了单一耦合系数。下面所列是上述语句的等效语句:K1L1L21K2L2L31K3LlL31C.采用“移动”(F7)、“旋转”(Ctrl+R)和“镜像”(Ctrl+E)命令来调节电感器位置以与变压器的极性相匹配。添加K语句可显示所含电感器的调相点。D.LTspice采用个别组件值(在本场合中为个别电感器的电感)而非变压器的匝数比进行变压器的仿真。电感比与匝数比的对应关系如下:
标签: ltspice
上传时间: 2022-06-24
上传用户:
第1章 引 言产业界人士和观察家(甚至包括那些经过多年外层空间旅行刚刚返回这个世界的人)都已经很清楚,因特网( I n t e r n e t)发展所达到的地位和其所产生的现象都不同于本世纪或上世纪所提出的任何一种技术。 I n t e r n e t的延伸和影响范围、有关 I n t e r n e t 出版物、以及包括美国在线(A O L)、美国电报电话公司( AT & T)和微软公司等I n t e r n e t产业界的大量风险投资者,这一切都会使我们有一种纷繁迷乱的感觉。所有这些都是通过这样或那样的方式与 I n t e r n e t连接起来。I n t e r n e t也是Joe Sixpack和Fortune 1000这样的网站每天都关心、考虑和使用的唯一技术。或许I n t e r n e t是世界上少有的几个能够以相同的平等程度来对待每一个用户的实体组织之一。一个企业的首席执行官( C E O)如果想给公司提供更好的网络服务保证,他必须建立一个专用网络。而在I n t e r n e t中,每一个人对网络的访问都是平等的。I n t e r n e t的发展并没有损害到那些在过去 1 5 0年中所发展起来的其他技术。的确,电话技术是相当重要的,它可以使我们能够在双方不见面的情况下通过声音与线路另一端的人通话。同样,汽车也改变了我们的生活,汽车的出现能够使我们在一天之内跨越更大的距离,而这个距离要比任何其他动物多出一个数量级。电灯、无线电和电视都曾经是改善我们日常生活的十分重要的技术,扩展了我们在非睡眠状态的时间,向我们传播各种信息,使我们享受更多的娱乐。我们已经在很大程度上解决了生存问题。大多数人的饭桌上有足够的食品、有温暖的住所,并且都有一个工作场所,可以每天早出晚归地工作。我们也可以不必被动地接收各种电视节目,而可以轻松地使用遥控器选择欣赏自己喜爱的频道。I n t e r n e t除了有把事情变得更好的能力外,也可能会把事情搞得更糟。在好的一方面,I n t e r n e t能够使我们在世界范围同人们进行对等通信;使我们能够访问那些存储在数以百万计的网络计算机上的几乎无限的大量信息。一些功能强大的搜索引擎能够使我们更加简单和迅速地实现对有用、有意义的信息资源的定位。不同阶段的商务活动,包括从最初的偶然兴趣直到成熟的采购定单等,都可以在 I n t e r n e t上完成。甚至于许多人已经开始幻想在将来的某天,I n t e r n e t能使我们不再需要每天早起去上班了。人们可以靠在枕头上使用一台膝上型计算机(或许将来可能出现的任何先进的计算机)通过拨接 I n t e r n e t对所有的商务活动和某些消遣娱乐进行管理和维护。在不利的一方面,I n t e r n e t也可能使我们成为有电子怪癖的人,使我们缺乏与其他人进行直接交流的能力。人们仅有的非睡眠时间都将被耗费在计算机的荧光屏前,不停地键入I n t e r n e t地址(U R L)或指向其他的超级链接。最令人不安的是,由于“等待回应( W F R E,waiting for reply)”而浪费的时间是不可挽回的。 W F R E现象的出现是由于I n t e r n e t上太拥塞、太慢,以至于你的浏览器似乎进入了一个永久“等待回应”的状态。有时候它只是几秒钟的问题;另一些情况下可能是几分钟。你在 W F R E状态下盯着计算机荧光屏等待所花费的时间第一部分 概 述是相当大的,这些时间的总和可能会是一个令人吃惊的数字,其数量级或许是几个月甚至几年。我们所讨论的要点在于:1) Internet已经经历了巨大的增长过程,并且这种增长将会继续。2) 不论是居民用户或者是团体用户, I n t e r n e t都受到了同等的欢迎。对于后者, I n t e r n e t还意味着新的收入增长点。3) 一些实力很强并且有创造力的产业巨头正在致力于 I n t e r n e t的应用,以便为其企业自身及其消费者提供有利条件。无庸置疑,不论是偶尔对 I n t e r n e t的临时使用还是正式规范地应用I n t e r n e t,都将导致对I n t e r n e t更多的兴趣和广告宣传。与此同时,也将伴随着 I n t e r n e t应用和及其流量的成比例的增长。4) 目前I n t e r n e t的带宽和容量还是缺乏的,这导致了 I n t e r n e t上不稳定的响应时间和不可预知的性能。同时产生的问题是, I n t e r n e t是否有能力支持未来的、高带宽需求的、时延敏感的应用?或者说I n t e r n e t是否有能力支持居民对带宽容量的适度增长的需求?我们是如何进入了这样一个不稳定的状态呢?这个问题有若干答案,但其中没有一个是真正有权威性的解释,或许还有一些是可以根本不考虑的。首先, I n t e r n e t是其自身成功的一个受害者。每一天都有新的用户加入到 I n t e r n e t中,越来越多的人不停地使用浏览器通过一个We b站点搜寻他们所感兴趣的下一个 We b站点。由于访问 I n t e r n e t的价格仅是电话的市话费用附加一个适度的费率,因此并没有一个价格上的保护手段来防止某些浏览者对 I n t e r n e t资源的长时间占用。另一种资源的缺乏不一定是由于网络资源的不足引起的,而更大程度上是由于服务器的资源不足造成的。对某些服务器或服务器阵列来说,突发性的连接请求所引起的负荷和突发的频度可能大大超过了这些服务器的处理能力。这种突发的大量的连接请求一般发生在大量的客户试图同时访问同一个 We b服务器的时候。这个问题可以被认为是一个临时性的问题,因为服务器的供应商通常会不断地提供新型的内容服务器主机、负载平衡器、 We b缓存器等来使该问题得到缓解 。另一个问题是某些链路可能正好没有足够的带宽来支持业务所提供的流量负荷。这个问题的部分解决方案当然是增加更多的带宽;一些新的技术,如波分复用( W D M)技术,似乎可以为用户提供几乎无限的带宽。所有这些我们上述所讨论的问题都是造成 I n t e r n e t及I n t r a n e t(I n t r a n e t是I n t e r n e t在企业范围内的一个著名的复制品)性能极其不稳定的重要因素。在这些问题中,有很多都已经被研究清楚了;虽然其中有些诸如价格等问题是不可能在一夜之间得到解决的,但是我们至少已经知道解决方案是存在的,并且可以在不久的将来得到应用。然而,有关I n t e r n e t性能和基于I P协议进行网络互连的最基本问题,很大程度上还在于基本 I P路由转发处理过程和该功能的实现平台。
标签: ip交换技术
上传时间: 2022-07-27
上传用户:fliang