⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd_main.ls1

📁 LCD显示温控器制作成功 参考了明浩的温度控制器V1.5和使用1602液晶显示和PS/2键盘的示例
💻 LS1
📖 第 1 页 / 共 3 页
字号:
                             ; //0-9的ASCII码,0x20为空,0x2d为负号
                     318     ; 
                     319     ; unsigned char i;
                     320     ; 
                     321     ; static unsigned char bdata StateREG;  //可位寻址的状态寄存器
                     322     ; sbit DS1820ON = StateREG^0;             //DS1820是否存在
                     323     ; sbit SetTF = StateREG^1;              //是否是在温度设置状态
                     324     ; sbit KeySETDown = StateREG^2;         //是否已按过SET键标识
                     325     ; sbit PowTF = StateREG^3;              //电源标识
                     326     ; sbit KeyTF = StateREG^4;                  //键盘是否允许
                     327     ; 
                     328     ; //sbit KeySETDowning = StateREG^5;                    //SET是否正在按下
                     329     ; static unsigned char bdata TLV _at_ 0x0029;         //温度变量高低位
                     330     ; static unsigned char bdata THV _at_ 0x0028;
                     331     ; static signed char TMV;       //转换后的温度值
                     332     ; static unsigned char KeyV,TempKeyV;      //键值
                     333     ; static signed char TMRomV _at_ 0x0027;    //高温限制
                     334     ; static signed char TMSetV _at_ 0x0026;    //温度设定值
                     335     ; static unsigned char KSDNum;    //SET键连按时的采集次数
                     336     ; static unsigned char IntNum,IntNum2,IntNum3;    //中断发生次数,IntNum用于SET长按检测,In
                             tNum2用于设定状态时LCD闪烁
                     337     ; static signed char LCD_One,LCD_Two,LCD_Three;  //LCD的显示位 LCD_One为十位,LCD_Two为个位
                     338     ; static signed char LCD_One_set,LCD_Two_set,LCD_Three_set;     //设置时的LCD值
                     339     ; static unsigned char Sign, Sign_Set; //负号标识
                     340     ; 
                     341     ; void WriteDataLCM(unsigned char WDLCM);
                     342     ; void WriteCommandLCM(unsigned char WCLCM,BuysC);
                     343     ; unsigned char ReadDataLCM(void);
                     344     ; unsigned char ReadStatusLCM(void);
                     345     ; void LCMInit(void);
                     346     ; void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
                     347     ; void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);
                     348     ; void Delay5Ms(void);
                     349     ; void Delay400Ms(void);
                     350     ; 
                     351     ; unsigned char code cdle_net[] = {"    WellCome!   "};
                     352     ; unsigned char code email[] = {" Press Power Key"};
                     353     ; unsigned char cur_temper[]={"Current Temp:   "};
                     354     ; unsigned char cur_temper_set[]={"T_Set:          "};
                     355     ; unsigned char BF = 0; //定时中断标志,=1时显示当前温度值,=0显示欢迎
                     356     ; 
                     357     ; void main(void)
                     358     
----                 359             RSEG  ?PR?main?LCD_MAIN
0000                 360     main:
                     361             USING   0
                     362                             ; SOURCE LINE # 72
                     363     ; {
                     364                             ; SOURCE LINE # 73
                     365     ;       void InitDS1820(void);   //定义函数
                     366     ;       void ROMDS1820(void);
                     367     ;       void TMVDS1820(void);
                     368     ;       void TMRDS1820(void);
                     369     ;       void TMWDS1820(void);
                     370     ;       void TMREDS1820(void);
                     371     ;       void TMERDS1820(void);
                     372     ;       void ReadDS1820(void);
                     373     ;       void WriteDS1820(void);
                     374     ;       void Delay_510(void);
A51 MACRO ASSEMBLER  LCD_MAIN                                                             08/12/2004 17:38:42 PAGE     7

                     375     ;       void Delay_110(void);
                     376     ;       void Delay_10ms(void);
                     377     ;       void Delay_4s(void);
                     378     ;       void V2ToV(void);
                     379     ; 
                     380     ;       StateREG = 0;   //初始化变量
                     381                             ; SOURCE LINE # 89
0000 E4              382             CLR     A
0001 F500     F      383             MOV     StateREG,A
                     384     ;       //SetTF = 1;    
                     385     ;       PowTF = 1;                      //关电源
                     386                             ; SOURCE LINE # 91
0003 D200     F      387             SETB    PowTF
                     388     ;       //KeyTF = 1;
                     389     ;       THV = 0;
                     390                             ; SOURCE LINE # 93
0005 F528            391             MOV     THV,A
                     392     ;       TLV = 0;
                     393                             ; SOURCE LINE # 94
0007 F529            394             MOV     TLV,A
                     395     ;       TMV = 0;
                     396                             ; SOURCE LINE # 95
0009 F500     F      397             MOV     TMV,A
                     398     ;       KeyV = 0;
                     399                             ; SOURCE LINE # 96
000B F500     F      400             MOV     KeyV,A
                     401     ;       TempKeyV = 0;
                     402                             ; SOURCE LINE # 97
000D F500     F      403             MOV     TempKeyV,A
                     404     ;       KSDNum = 0;
                     405                             ; SOURCE LINE # 98
000F F500     F      406             MOV     KSDNum,A
                     407     ;       IntNum = 0;
                     408                             ; SOURCE LINE # 99
0011 F500     F      409             MOV     IntNum,A
                     410     ;       IntNum2 = 0;
                     411                             ; SOURCE LINE # 100
0013 F500     F      412             MOV     IntNum2,A
                     413     ;       IntNum3 = 0;
                     414                             ; SOURCE LINE # 101
0015 F500     F      415             MOV     IntNum3,A
                     416     ; 
                     417     ; 
                     418     ;       
                     419     ;       InitDS1820(); //初始化
                     420                             ; SOURCE LINE # 105
0017 120000   F      421             LCALL   InitDS1820
                     422     ;       ROMDS1820();    //跳过ROM
                     423                             ; SOURCE LINE # 106
001A 120000   F      424             LCALL   ROMDS1820
                     425     ;       TMERDS1820();  //E2PRAM中温度上限值调入RAM
                     426                             ; SOURCE LINE # 107
001D 120000   F      427             LCALL   TMERDS1820
                     428     ;       InitDS1820(); //初始化
                     429                             ; SOURCE LINE # 108
0020 120000   F      430             LCALL   InitDS1820
                     431     ;       ROMDS1820();    //跳过ROM
                     432                             ; SOURCE LINE # 109
0023 120000   F      433             LCALL   ROMDS1820
                     434     ;       TMRDS1820();    //读出温度指令
                     435                             ; SOURCE LINE # 110
0026 120000   F      436             LCALL   TMRDS1820
                     437     ;       ReadDS1820(); //读出温度值和上限值
                     438                             ; SOURCE LINE # 111
0029 120000   F      439             LCALL   ReadDS1820
                     440     ;       TMSetV = TMRomV;  //拷贝保存在DS18B20ROM里的上限值到TMSetV
A51 MACRO ASSEMBLER  LCD_MAIN                                                             08/12/2004 17:38:42 PAGE     8

                     441                             ; SOURCE LINE # 112
002C 852726          442             MOV     TMSetV,TMRomV
                     443     ; 
                     444     ;       Delay400Ms(); //启动等待,等LCM讲入工作状态
                     445                             ; SOURCE LINE # 114
002F 120000   F      446             LCALL   Delay400Ms
                     447     ;       LCMInit(); //LCM初始化
                     448                             ; SOURCE LINE # 115
0032 120000   F      449             LCALL   LCMInit
                     450     ;       Delay5Ms(); //延时片刻(可不要)
                     451                             ; SOURCE LINE # 116
0035 120000   F      452             LCALL   Delay5Ms
                     453     ; 
                     454     ;       EA = 1;                                 //允许CPU中断
                     455                             ; SOURCE LINE # 118
0038 D2AF            456             SETB    EA
                     457     ;       ET0 = 1;                                //定时器0中断打开
                     458                             ; SOURCE LINE # 119
003A D2A9            459             SETB    ET0
                     460     ;       TMOD = 0x1;                     //设定时器0为模式1,16位模式
                     461                             ; SOURCE LINE # 120
003C 758901          462             MOV     TMOD,#01H
                     463     ;       TH0=0xB1;
                     464                             ; SOURCE LINE # 121
003F 758CB1          465             MOV     TH0,#0B1H
                     466     ;       TL0=0xDF;                               //设定时值为20000us(20ms)
                     467                             ; SOURCE LINE # 122
0042 758ADF          468             MOV     TL0,#0DFH
                     469     ;       TR0 = 1;                                //开始定时
                     470                             ; SOURCE LINE # 123
0045 D28C            471             SETB    TR0
0047                 472     ?C0003:
                     473     ; 
                     474     ;       do
                     475     ;               {
                     476                             ; SOURCE LINE # 126
                     477     ;                       if (BF==0)
                     478                             ; SOURCE LINE # 127
0047 E500     F      479             MOV     A,BF
0049 7019            480             JNZ     ?C0004
                     481     ;                               {
                     482                             ; SOURCE LINE # 128
                     483     ;                                       DisplayListChar(0, 0, cdle_net);        //显示欢迎

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -