原创 基于18b20和5110LCD的温度计实验

2009-12-16 10:20 2557 8 9 分类: MCU/ 嵌入式

18b20是51单片机中最常用的温度检测器件了,,就是时序要求严格,不太好掌握。最近搭了个板子,终于掌握了这个器件。


点击看大图


本程序在89S52、5110LCD上调试通过。显示部分采用了自己编写的5110LCD驱动,可以在本人博客上找到。


汇编源程序如下:


WENDU_L  EQU 29H         ;用于保存读出温度的低字节
WENDU_H  EQU 28H         ;用于保存读出温度的高字节
XIAOSHU  EQU 27H         ;用于保存温度的小数部分
ZHENGSHU  EQU 26H         ;用于保存温度的整数部分
BIAOZHI  BIT F0         ;18B20检查位;1为存在,0为不存在
DQ   BIT P2.7        ;18b20数据线接P2.7
FLAG  BIT 20H         ;正负温度标志位,1为负温度,0为正温度


LCD_CE    BIT P2.0       ;芯片使能。
LCD_RES   BIT P2.1       ;外部复位。


LCD_DC    BIT P2.2              ;写数据指令选择。=1写数据,=0写指令。


LCD_DIN   BIT P2.3              ;数据输入。


LCD_CLK   BIT P2.4              ;时钟。CLK脉冲高和低宽度>100ns.
LCDXADD   EQU 40H         ;LCD扫描X地址
LCDYADD   EQU 41H          ;LCD扫描Y地址



   ORG  0000H
   AJMP  MAIN
   ORG  0030H
MAIN:  
   MOV    SP,#5FH        ;
   MOV  SCON,#00H       ;使用18b20要禁止一切中断
   ACALL  DUWEN
   ACALL  ZHENGHE
   ACALL  BCD
   ACALL  DISPLAY        ;调用显示子程序
   ACALL   TIME1        ;
   AJMP  MAIN        ;


;***********************************************************************************************************************
;子程序名:DUWEN       功能:读18b20温度子程序
;入口条件:无
;使用资源:A、P2.7(DQ)
;子程序嵌套:调用FUWEI、XIE、TIME1、DUSHU子程序
;***********************************************************************************************************************
DUWEN:
   SETB  DQ
   ACALL  FUWEI        ;读温度之前必须先复位
   JB   BIAOZHI,CUNZAI     ;查看标志位看18B20是否存在,1为存在,0为不存在
      RET          ;不存在则返回
CUNZAI:            ;存在则开始读温度
   MOV  A,#0CCH       ;跳过ROM匹配
   ACALL  XIE        ;调写子程序
   MOV  A,#44H        ;发出温度转换命令
   ACALL  XIE        ;调写子程序
   ACALL  TIME1        ;调1秒延时,等AD转换完成,现在分辨率为12位,温度最大转换时间为750MS
   ACALL  FUWEI        ;读温前需要复位
   MOV  A,#0CCH       ;跳过ROM匹配
   ACALL  XIE        ;
   MOV  A,#0BEH       ;发读温度命令
   ACALL  XIE
   ACALL  DUSHU        ;将温度数据读出
   CLR  DQ
   RET
;**************************************************************************************************************************************************
;子程序名:FUWEI       功能:18b24复位子程序。18B20复位需要将数据位拉低500us,收到信号后要等待16-60us,然后发出60-240us的低脉冲
;入口条件:无
;使用资源:R0、R1、F0(BIAOZHI)、P2.7(DQ)
;子程序嵌套:无
;**************************************************************************************************************************************************
FUWEI:
   SETB  DQ        ;
   NOP
   CLR   DQ
   MOV   R0,#3
  INTE:  
   MOV   R1,#107       ;设一个537us延时
 KK1:  DJNZ   R1,KK1
   DJNZ  R0,INTE
   SETB   DQ        ;拉高数据线,等待回应
   NOP
   NOP
   NOP
   MOV   R0,#25;
  INTE1: JNB   DQ,INTE2       ;延时延时50us等待18B20回应,若返回低脉冲则说明18B20存在
   DJNZ  R0 ,INTE1
   AJMP   INTE3        ;经过反应时间而没检测到18B20的存在,则跳转去清零标志位
  INTE2: SETB   BIAOZHI       ;检测到18B20存在,置1标志位
   CLR   DQ
   AJMP  INTE4
  INTE3: CLR   BIAOZHI       ;没检测到18B20,清零标志位
   AJMP  INTE5
  INTE4: MOV   R0,#120        ;延时240us,确定回应信号已发完
  KK:   DJNZ  R0,KK
  INTE5: SETB  DQ
   RET



;*************************************************************************************
;子程序名:XIE          功能:写18B20子程序
;入口条件:A(待写入18b20的指令、数据)
;使用资源:A、C、DQ(P2.7)、R2、R3
;子程序嵌套:无
;*************************************************************************************


XIE:
   MOV  R2,#8        ;写计数寄存器,一共有8位数据
   CLR  C
   LP: CLR  DQ        ;
   MOV  R3,#6       ;设一个延时
   LL1: DJNZ R3,LL1
   RRC  A        ;右循环,先输出低位
   MOV  DQ,C
   MOV  R3,#23       ;设延时
   LL:  DJNZ R3,LL;
   SETB  DQ        
   NOP
   NOP
   DJNZ R2,LP        ;判断是否完成数据传送
   SETB  P2.0        ;完成传送拉高数据位
   RET


;*************************************************************************************************
;子程序名:DUSHU         功能:从18B20中读出温度数据子程序
;入口条件:无
;使用资源:A、C、R1、R2、R3、R4、DQ(P2.7)、29H(WENDU_L)、28H(WENDU_H)
;子程序嵌套:无
;*************************************************************************************************
DUSHU:
   MOV  R4,#2        ;设读回数据个数指针
   MOV  R1,#WENDU_L      ;把温度数据低位存入29H
 RE:  MOV  R2,#8        ;设数据长度指针
 RE1:  CLR  C
   SETB DQ
   NOP
   NOP
   CLR  DQ
   NOP
   NOP
   NOP
   SETB  DQ
   MOV  R3,#9       ;延时
   DJNZ  R3,$
   MOV  C,DQ  
   MOV  R3,#23
 NN:  DJNZ  R3,NN       ;延时
   RRC  A
   DJNZ  R2,RE1
   MOV  @R1,A
   DEC  R1        ;高位存入28H
   DJNZ  R4,RE
   RET
   
;************************************************************************************************************************************************
;子程序名:ZHENGHE         功能:数据整合子程序:读出数据的高字节的低四位决定温度的整数部分;低字节的低四位决定小数部分
;入口条件:WENDU_L(29H)、WENDU_H(28H)
;使用资源:A、C、29H(WUNDU_L)、26H(ZHENGSHU)、27H(XIAOSHU)
;子程序嵌套:无
;************************************************************************************************************************************************
ZHENGHE:
   MOV  A,#0FH
   ANL  A,WENDU_L      ;低字节的低四位就是小数部分
   MOV  XIAOSHU,A       ;获得小数部分
   MOV  A,WENDU_L      ;将高字节的低四位移入低字节的高4位,
   MOV  C,40H       ;WENDU_H(28H)低4位对应的位地址为40H、41H、42H、43H
   RRC  A
   MOV  C,41H
   RRC  A
   MOV  C,42H
   RRC  A
   MOV  C,43H       ;
   RRC  A
   MOV  ZHENGSHU,A      ;获得的新字节就是整数部分的数据
   JNB  ZHENGSHU.7,ZW     ;整数部分最高位为0,结束子程序
   CPL  A        ;整数部分最高位为1,温度是负数,求补码
   ADD  A,#1       ;
   MOV  ZHENGSHU,A      ;
   SETB    FLAG       ;温度标志位置1,负温度
   ajmp    ZH        ;
 ZW:  CLR  FLAG       ;温度标志位置0,正温度
 ZH:  RET


;***********************************************************************************************
;子程序名:BCD        功能:显示数据拆解程序,即BCD码转换
;入口条件:26H(ZHENGSHU)、27H(XIAOSHU)
;使用资源:A、B、R0、R2、50H~53H
;子程序嵌套:无
;***********************************************************************************************
BCD:
   MOV  A,ZHENGSHU      ;整数部分送A
   MOV  B,#10
   DIV  AB        ;整数部分除以10
   MOV  50H,A
   MOV  51H,B       ;商和余数分别存入50H、51H
   MOV  A,XIAOSHU      ;小数部分送A
      MOV  R0,#52H       ;小数部分存储地址
   MOV  R2,#2       ;小数位数
 D0:  MOV  B,#10
   MUL  AB        ;小数部分乘以10
      MOV  B,#16
      DIV  AB         ;小数部分除以16
   MOV  @R0,A       ;商存入以52H为起始地址的连续存储单元
      INC  R0
   MOV  A,B        ;余数送A
   DJNZ R2,D0
   RET


;***********************************************************
;子程序名:TIME1、TIME、D1MS     功能:延时
;入口条件:无
;使用资源:R5、R6、R7
;子程序嵌套:无
;************************************************************
TIME1:
   MOV  R6,#4
  LOOP2: MOV  R5,#250
  LOOP1: ACALL D1MS
   DJNZ R5,LOOP1
   DJNZ R6,LOOP2
   RET


TIME:  
   MOV  R6,#200
  LOOP3: ACALL D1MS
   DJNZ R6,LOOP3
   RET


D1MS:
   MOV  R7,#250
  LOOP0: NOP
   NOP
   NOP
   DJNZ R7,LOOP0
   RET
;********************************************************************************************************
;子程序名:DISPLAY       功能:显示子程序
;
;********************************************************************************************************
DISPLAY:
    MOV   LCDXADD,#10000000B ;x初始地址
    MOV   LCDYADD,#01000000B ;y初始地址
    ACALL LCDRESET    ;LCD复位
    MOV   A,#00100001B   ;
    ACALL SENDDC    ;基本操作指令,使用扩展指令
    MOV   A,#11000100B   ;
    ACALL SENDDC    ;设置Vop0~Vop6,调整对比度。Vop0~Vop6取值范围:00H~7FH
    MOV   A,#00100000B   ;
    ACALL SENDDC    ;使用基本指令,水平寻址方式
    MOV   A,#00001100B   ;显示配置,普通显示模式
    ACALL SENDDC    ;
    MOV   A,LCDYADD    ;
    ACALL SENDDC    ;传送y初始地址
    MOV   A,LCDXADD    ;
    ACALL SENDDC    ;传送x初始地址
    ACALL LCDCLR    ;初始化完成,清屏


DISPLAY1:         ;
    MOV   LCDYADD,#01000000B ;   
    MOV   LCDXADD,#10000000B ;扫描初始地址
    CLR   A      ;
    MOV   DPTR,#TABLE1   ;
    MOV   R6,#5     ;共5个中文字符
 DISP1:  ACALL DISP_C    ;
    DJNZ  R6,DISP1    ;


DISPLAY2:         
    JNB   FLAG,DISP2      ;温度标志位为0,转DISP2
    MOV   LCDYADD,#01000010B ;
    MOV   LCDXADD,#10010010B ;
    MOV   DPTR,#TABLE3   ;温度标志位为1,显示-号
    MOV   A,#12     ;
    ACALL DISP_E    ;
 DISP2:  
    MOV   LCDYADD,#01000010B ;显示温度的整数部分
    MOV   LCDXADD,#10011000B ;
    MOV   R1,#50H    ;50H中的数据是温度整数部分的10位
    MOV   A,@R1     ;
    MOV   DPTR,#TABLE   ;数据表首地址
    MOV   B,#12     ;
    MUL   AB     ;每个数字字符共12个字节,所以乘以12就是该数字在表中的起始位置
    ACALL DISP_E    ;
    INC   R1     ;
    MOV   LCDYADD,#01000010B ;
    MOV   LCDXADD,#10011110B ;
    MOV   A,@R1     ;
    MOV   DPTR,#TABLE   ;
    MOV   B,#12     ;
    MUL   AB     ;
    ACALL DISP_E    ;
       MOV   LCDYADD,#01000010B ;显示小数点
    MOV   LCDXADD,#10100100B ;
    CLR   A      ;
    MOV   DPTR,#TABLE3   ;
    ACALL DISP_E    ;
    MOV   LCDYADD,#01000010B ;显示温度的小数部分
    MOV   LCDXADD,#10101010B ;
    MOV   R1,#52H    ;
    MOV   A,@R1     ;
    MOV   DPTR,#TABLE   ;
    MOV   B,#12     ;
    MUL   AB     ;
    ACALL DISP_E    ;
    INC   R1     ;
    MOV   LCDYADD,#01000010B ;
    MOV   LCDXADD,#10110000B ;
    MOV   A,@R1     ;
    MOV   DPTR,#TABLE           ;
    MOV   B,#12                 ;
    MUL   AB     ;
    ACALL DISP_E    ;
    MOV   LCDYADD,#01000010B ;显示温度符号℃
    MOV   LCDXADD,#10110110B ;
    CLR   A      ;
    MOV   DPTR,#TABLE4   ;
    ACALL DISP_C    ;    


DISPLAY3:         ;第三行显示5个中文字符
    MOV   LCDYADD,#01000100B ;
    MOV   LCDXADD,#10000000B ;扫描初始位置设置
    CLR   A      ;
    MOV   DPTR,#TABLE2   ;
    MOV   R6,#7     ;
 DISP3:  ACALL DISP_C    ;
    DJNZ  R6,DISP3    ;
    RET       ;      ;


           
;*************************************************************************************************************************************
;子程序名:DISP_C   功能:在LCD上显示一个12x12点阵的中文字符。12x12点阵中文字符共24个字节,每次提取12字节扫描,分两次扫描完成
;入口条件:DPTR(数据表)、A(数据指针)、50H、51H(扫描初始地址存储单元)               
;使用资源:A、R5                             
;子程序嵌套:调用SENDDC/SENDDC1子程序                        
;*************************************************************************************************************************************
DISP_C:          ;
    PUSH ACC     ;保护A中的数据指针
    MOV  A,LCDXADD      ;扫描初始地址
    ACALL SENDDC    ;
    MOV  A,LCDYADD   ;
    ACALL SENDDC    ;
    POP  ACC     ;
    MOV  R5,#12    ;本次循环取12字节的数据,显示中文字符的上半部分
  LOOP: PUSH ACC     ;保护A中的数据指针
       MOVC A,@A+DPTR   ;
    ACALL SENDDC1    ;传送数据给LCD
    POP  ACC     ;取出数据指针
    INC  A     ;数据指针加1
    DJNZ R5,LOOP    ;循环次数未到12,继续取数


    INC  LCDYADD    ;扫描Y地址加1,移动到下一行继续扫描
    PUSH ACC     ;
    MOV  A,LCDXADD   ;
    ACALL SENDDC    ;设置新的扫描地址
    MOV  A,LCDYADD   ;
    ACALL SENDDC    ;
    POP  ACC     ;


    MOV  R5,#12    ;本次循环显示中文字符的下半部分
  LOOP11: PUSH ACC     ;
    MOVC A,@A+DPTR   ;
    ACALL SENDDC1    ;
    POP  ACC     ;
    INC  A     ;数据指针加1
    INC  LCDXADD    ;X地址加1,为下一个字符的扫描做准备
    DJNZ R5,LOOP11   ;循环次数未到12,继续取数
    DEC  LCDYADD    ;Y地址减1,回到初始位置
          
       RET       ;
;************************************************************************************************************************************
;子程序名:DISP_E    功能:在LCD上显示一个6x12点阵的英文或数字字符。6x12字符共12个字节,每次提取6字节数据,分两次扫描完成
;入口条件:DPTR(数据表)、A(数据指针)、50H、51H(扫描初始地址存储单元)
;使用资源:A、R5
;子程序嵌套:调用SENDDC/SENDDC1子程序
;************************************************************************************************************************************
DISP_E:          ;
    PUSH ACC     ;
    MOV  A,LCDXADD      ;扫描初始地址
    ACALL SENDDC    ;
    MOV  A,LCDYADD   ;
    ACALL SENDDC    ;
    POP  ACC     ;
    MOV  R5,#6    ;本次循环取6字节的数据,显示字符的上半部分
  LOOP22: PUSH ACC     ;保护A中的数据指针
       MOVC A,@A+DPTR   ;
    ACALL SENDDC1    ;传送数据给LCD
    POP  ACC     ;取出数据指针
    INC  A     ;数据指针加1
    DJNZ R5,LOOP22   ;循环次数未到6,继续取数


    INC  LCDYADD    ;扫描Y地址加1
    PUSH ACC     ;
    MOV  A,LCDXADD   ;
    ACALL SENDDC    ;设置新的扫描地址
    MOV  A,LCDYADD   ;
    ACALL SENDDC    ;
    POP  ACC     ;


    MOV  R5,#6    ;本次循环显示字符的下半部分
  LOOP33: PUSH ACC     ;
    MOVC A,@A+DPTR   ;
    ACALL SENDDC1    ;传送数据给LCD
    POP  ACC     ;
    INC  A     ;
    INC  LCDXADD    ;X地址加1,为下一个字符的扫描做准备
    DJNZ R5,LOOP33   ;循环次数未到6,继续取数
    DEC  LCDYADD    ;Y地址减1,回到初始位置
          
       RET



;**********************************************************
;子程序名:LCDRESET     功能:LCD复位
;入口条件:无
;使用资源:LCD_RES
;子程序嵌套:无
;**********************************************************
LCDRESET:
    CLR  LCD_RES    ;LCD_RES位置0
    NOP       ;延时
    NOP       ;
    NOP       ;
    SETB LCD_RES    ;LCD_RES位置1
    RET       ;
;***************************************************************************************************
;子程序名:LCDCLR     功能:LCD清屏。5110LCD没有专用的清屏指令,采用全部写0的方式清屏
;入口条件:无
;使用资源:A、R2、R3
;子程序嵌套:调用SENDDC1子程序
;***************************************************************************************************
LCDCLR:  
    MOV  R3,#84     ;x地址的循环次数
 LCDCLR1: MOV  R2,#6     ;y地址的循环次数
 LCDCLR2: MOV  A,#00H     ;要写入LCD的数据
    ACALL SENDDC1    ;
    DJNZ R2,LCDCLR2    ;
    DJNZ R3,LCDCLR1    ;
    RET


;****************************************************************************************************
;子程序名:SENDDC/SENDDC1   功能:给LCD传送数据或指令。SENDDC:传送命令;SENDDC1:传送数据
;入口条件:A(数据或指令)
;使用资源:A;R7;LCD_DC;LCD_CE;LCD_CLK;LCD_DIN;
;子程序嵌套:无
;****************************************************************************************************
SENDDC:
    CLR  LCD_DC     ;DC置0,传送指令
  SENDDC1:  
      CLR  LCD_CE     ;芯片使能
      MOV  R7,#08H    ;每次次传送8位数据
  SENDDC2:  
      CLR  LCD_CLK    ;时钟信号
    RLC  A      ;数据每次从高位移动到CY位
    MOV  LCD_DIN,C    ;传送数据
    SETB LCD_CLK    ;
      DJNZ R7,SENDDC2  ;
    SETB LCD_DC     ;DC置1,为下一次传送做准备
    SETB LCD_CE     ;
    RET    
    
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TABLE:
;--  文字:  0  --
;--  宋体9;  此字体下对应的点阵为:宽x高=6x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=6x16  --;
DB  0F8H,004H,004H,004H,0F8H,000H,001H,002H,002H,002H,001H,000H


;--  文字:  1  --
;--  宋体9;  此字体下对应的点阵为:宽x高=6x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=6x16  --;
DB  000H,008H,0FCH,000H,000H,000H,000H,002H,003H,002H,000H,000H


;--  文字:  2  --
;--  宋体9;  此字体下对应的点阵为:宽x高=6x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=6x16  --;
DB  018H,084H,044H,024H,018H,000H,003H,002H,002H,002H,002H,000H


;--  文字:  3  --
;--  宋体9;  此字体下对应的点阵为:宽x高=6x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=6x16  --;
DB  008H,004H,024H,024H,0D8H,000H,001H,002H,002H,002H,001H,000H


;--  文字:  4  --
;--  宋体9;  此字体下对应的点阵为:宽x高=6x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=6x16  --;
DB  040H,0B0H,088H,0FCH,080H,000H,000H,000H,000H,003H,002H,000H


;--  文字:  5  --
;--  宋体9;  此字体下对应的点阵为:宽x高=6x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=6x16  --;
DB  03CH,024H,024H,024H,0C4H,000H,001H,002H,002H,002H,001H,000H


;--  文字:  6  --
;--  宋体9;  此字体下对应的点阵为:宽x高=6x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=6x16  --;
DB  0F8H,024H,024H,02CH,0C0H,000H,001H,002H,002H,002H,001H,000H


;--  文字:  7  --
;--  宋体9;  此字体下对应的点阵为:宽x高=6x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=6x16  --;
DB  00CH,004H,0E4H,01CH,004H,000H,000H,000H,003H,000H,000H,000H


;--  文字:  8  --
;--  宋体9;  此字体下对应的点阵为:宽x高=6x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=6x16  --;
DB  0D8H,024H,024H,024H,0D8H,000H,001H,002H,002H,002H,001H,000H


;--  文字:  9  --
;--  宋体9;  此字体下对应的点阵为:宽x高=6x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=6x16  --;
DB  038H,044H,044H,044H,0F8H,000H,000H,003H,002H,002H,001H,000H


;--  文字:  a  --
;--  宋体9;  此字体下对应的点阵为:宽x高=6x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=6x16  --;
DB  000H,040H,0A0H,0A0H,0C0H,000H,000H,001H,002H,002H,003H,002H


;--  文字:  b  --
;--  宋体9;  此字体下对应的点阵为:宽x高=6x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=6x16  --;
DB  004H,0FCH,020H,020H,0C0H,000H,000H,003H,002H,002H,001H,000H


;--  文字:  c  --
;--  宋体9;  此字体下对应的点阵为:宽x高=6x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=6x16  --;
DB  000H,0C0H,020H,020H,060H,000H,000H,001H,002H,002H,002H,000H


;--  文字:  d  --
;--  宋体9;  此字体下对应的点阵为:宽x高=6x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=6x16  --;
DB  000H,0C0H,020H,024H,0FCH,000H,000H,001H,002H,002H,003H,002H


 


TABLE1:
;--  文字:  当  --
;--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=12x16  --;
DB  010H,092H,094H,090H,090H,09FH,090H,098H,094H,0F2H,000H,000H,004H,004H,004H,004H
DB  004H,004H,004H,004H,004H,007H,000H,000H


;--  文字:  前  --
;--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=12x16  --;
DB  004H,0F4H,054H,055H,0F6H,004H,006H,0F5H,004H,0F6H,004H,000H,000H,007H,001H,005H
DB  007H,000H,000H,005H,004H,007H,000H,000H


;--  文字:  温  --
;--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=12x16  --;
DB  089H,072H,000H,0C0H,05FH,0D5H,055H,0D5H,055H,0DFH,000H,000H,007H,000H,004H,007H
DB  004H,007H,004H,007H,004H,007H,004H,000H


;--  文字:  度  --
;--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=12x16  --;
DB  000H,0FEH,00AH,08AH,0BEH,0AAH,0ABH,0AAH,0BEH,00AH,00AH,000H,006H,001H,004H,004H
DB  004H,003H,002H,003H,004H,004H,004H,000H


;--  文字:  :  --
;--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=12x16  --;
DB  000H,000H,000H,000H,08CH,08CH,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB  001H,001H,000H,000H,000H,000H,000H,000H



TABLE2:
;--  文字:  任  --
;--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=12x16  --;
DB  020H,010H,0FCH,023H,024H,024H,024H,0FEH,022H,022H,020H,000H,000H,000H,007H,000H
DB  004H,004H,004H,007H,004H,004H,004H,000H


;--  文字:  卫  --
;--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=12x16  --;
DB  000H,001H,001H,001H,001H,0FFH,001H,041H,041H,07FH,000H,000H,004H,004H,004H,004H
DB  004H,007H,004H,004H,004H,004H,004H,000H


;--  文字:  东  --
;--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=12x16  --;
DB  002H,022H,032H,0AAH,026H,0FBH,022H,062H,0A2H,022H,002H,000H,002H,002H,001H,000H
DB  004H,007H,000H,000H,000H,001H,002H,000H


;--  文字:  设  --
;--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=12x16  --;
DB  010H,011H,0F2H,020H,010H,06FH,0A1H,021H,0AFH,068H,008H,000H,000H,000H,003H,005H
DB  004H,004H,002H,001H,002H,004H,004H,000H


;--  文字:  计  --
;--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=12x16  --;
DB  010H,0F1H,002H,000H,010H,010H,010H,0FFH,010H,010H,010H,000H,000H,007H,002H,001H
DB  000H,000H,000H,007H,000H,000H,000H,000H


;--  文字:  制  --
;--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=12x16  --;
DB  018H,0D6H,054H,0FFH,054H,056H,0D4H,000H,0FCH,000H,0FFH,000H,000H,003H,000H,007H
DB  000H,002H,003H,000H,004H,004H,007H,000H


;--  文字:  造  --
;--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=12x16  --;
DB  010H,0F1H,002H,010H,0D8H,056H,054H,05FH,054H,0D4H,010H,000H,006H,001H,002H,002H
DB  005H,005H,005H,005H,005H,005H,004H,000H



TABLE3:
;--  文字:  .  --
;--  宋体9;  此字体下对应的点阵为:宽x高=6x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=6x16  --;
DB  000H,000H,000H,000H,000H,000H,000H,002H,000H,000H,000H,000H
;--  文字:  -  --
;--  宋体9;  此字体下对应的点阵为:宽x高=6x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=6x16  --;
DB  020H,020H,020H,020H,020H,000H,000H,000H,000H,000H,000H,000H


TABLE4:
;--  文字:  ℃  --
;--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --
;--  高度不是8的倍数,现调整为:宽度x高度=12x16  --;
DB  00EH,00AH,00EH,0F8H,004H,002H,002H,002H,004H,08EH,000H,000H,000H,000H,000H,000H
DB  001H,002H,002H,002H,002H,001H,000H,000H


   END


硬件电路很简单,也就是单片机最小系统+18b20+5110LCD的连接,就不画出来了

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1584993 2009-12-16 15:29

支持博主非专业人士,希望继续狂热下去

tengjingshu_112148725 2009-7-26 13:37

是啊,希望有详细的介绍
相关推荐阅读
用户808327 2009-12-20 19:51
一种简单易制的升压电路
在业余制作中,常常为了成品的体积等问题需要使用轻便的电源,这时使用DC-DC转换就成了唯一的选择。降压相对而言比较容易实现,升压就困难些了。虽然现在DC-DC的IC很多,但在业余条件下的如何选择一种简...
用户808327 2009-12-17 14:53
34063A的中文资料
自己翻译的,水平有限,仅供参考啊。https://static.assets-stash.eet-china.com/album/old-resources/2009/12/17/9febbf8e-a...
用户808327 2009-12-09 18:02
936型恒温电烙铁电路图
这是我在网上找到的一个936电烙铁的电路图,有愿意参考的可以看看。...
用户808327 2009-12-07 11:13
电容降压式电源
最近想做个LED灯了,找了这篇文章,觉得还有用。将交流市电转换为低压直流的常规方法是采用变压器降压后再整流滤波,当受体积和成本等因素的限制时,最简单实用的方法就是采用电容降压式电源。 一、电路原理图:...
用户808327 2009-12-07 10:33
MAGA128最小系统原理图
最近准备学AVR了,正在到处找原理图,准备做个最小系统板了...
EE直播间
更多
我要评论
1
8
关闭 站长推荐上一条 /3 下一条