📄 lcd.c
字号:
/****************************************************************/
/* */
/* FILE: Lcd.c */
/* */
/* AUTHOR: machaoqun */
/* */
/* DATE CREATED: 2005.6.16 */
/* */
/* DESCRIPTION: LCD MODULE */
/* */
/* */
/****************************************************************/
#include <reg51.h>
#include <intrins.h>
#include "Lcd.h"
#include "globedef.h"
#include "delay.h"
unsigned char lcd_18temp;
unsigned char lcd_28temp;
unsigned char lcd_38temp;
unsigned char lcd_48temp;
unsigned char lcd_58temp;
unsigned char lcd_68temp;
unsigned char lcd_maintemp;
unsigned char lcd_aux1temp;
unsigned char lcd_aux2temp;
unsigned char lcd_mutetemp;
unsigned char lcd_9bartemp;
unsigned char lcd_10bartemp;
code unsigned char lcd_table1_18[10][2] =
{
/*第一位数码管,地址0,1*/
/* 0 */
{0x0f,0x0a},
/* 1 */
{0x00,0x0a},
/* 2 */
{0x0b,0x0c},
/* 3 */
{0x09,0x0e},
/* 4 */
{0x04,0x0e},
/* 5 */
{0x0d,0x06},
/* 6 */
{0x0f,0x06},
/* 7 */
{0x08,0x0a},
/* 8 */
{0x0f,0x0e},
/* 9 */
{0x0d,0x0e}
};
code unsigned char lcd_table1_main[] =
{
/* MAIN ,地址1*/
0x01,
};
code unsigned char lcd_table1_28[10][2] =
{
/*第二位数码管,地址2,3*/
/* 0 */
{0x0f,0x0a},
/* 1 */
{0x00,0x0a},
/* 2 */
{0x0b,0x0c},
/* 3 */
{0x09,0x0e},
/* 4 */
{0x04,0x0e},
/* 5 */
{0x0d,0x06},
/* 6 */
{0x0f,0x06},
/* 7 */
{0x08,0x0a},
/* 8 */
{0x0f,0x0e},
/* 9 */
{0x0d,0x0e}
};
code unsigned char lcd_table1_aux1[10][2] =
{
/* AUX1 地址3*/
0x01,
};
code unsigned char lcd_table1_mohao[] =
{
/* : 地址4*/
0x06,
};
code unsigned char lcd_table1_38[10][2] =
{
/* 第三位数码管地址5,6 */
/* 0 */
{0x0f,0x0a},
/* 1 */
{0x00,0x0a},
/* 2 */
{0x0b,0x0c},
/* 3 */
{0x09,0x0e},
/* 4 */
{0x04,0x0e},
/* 5 */
{0x0d,0x06},
/* 6 */
{0x0f,0x06},
/* 7 */
{0x08,0x0a},
/* 8 */
{0x0f,0x0e},
/* 9 */
{0x0d,0x0e}
};
code unsigned char lcd_table1_aux2[] =
{
/* AUX2 地址6*/
0x01,
};
code unsigned char lcd_table1_48[10][2] =
{
/* 第四位数码管地址7,8 */
/* 0 */
{0x0f,0x0a},
/* 1 */
{0x00,0x0a},
/* 2 */
{0x0b,0x0c},
/* 3 */
{0x09,0x0e},
/* 4 */
{0x04,0x0e},
/* 5 */
{0x0d,0x06},
/* 6 */
{0x0f,0x06},
/* 7 */
{0x08,0x0a},
/* 8 */
{0x0f,0x0e},
/* 9 */
{0x0d,0x0e}
};
code unsigned char lcd_table1_mute[] =
{
/* MUTE 地址8 */
0x01,
};
code unsigned char lcd_table1_bar[] =
{
/* | 地址0x0a */
0x01,
/* || 地址0x09,0x0a */
0x01,
0x01,
/* ||| 地址0x09,0x0a */
0x01,
0x03,
/* |||| 地址0x09,0x0a */
0x03,
0x03,
/* ||||| 地址0x09,0x0a */
0x03,
0x07,
/* |||||| 地址0x09,0x0a */
0x07,
0x07,
/* ||||||| 地址0x09,0x0a */
0x07,
0x0f,
/* |||||||| 地址0x09,0x0a */
0x0f,
0x0f,
/* ||||||||| 地址0x09,0x0a,0x0c */
0x0f,
0x0f,
0x08,
/* |||||||||| 地址0x09,0x0a,0x0c,0x0e */
0x0f,
0x0f,
0x08,
0x08,
};
code unsigned char lcd_table1_58[10][2] =
{
/* 第五位数码管地址0x0b,0x0c */
/* 0 */
{0x0d,0x07},
/* 1 */
{0x00,0x06},
/* 2 */
{0x0b,0x05},
/* 3 */
{0x0a,0x07},
/* 4 */
{0x06,0x06},
/* 5 */
{0x0e,0x03},
/* 6 */
{0x0f,0x03},
/* 7 */
{0x08,0x06},
/* 8 */
{0x0f,0x07},
/* 9 */
{0x0e,0x07}
};
code unsigned char lcd_table1_68[10][2] =
{
/* 第六位数码管地址0x0d,0x0e */
/* 0 */
{0x0d,0x07},
/* 1 */
{0x00,0x06},
/* 2 */
{0x0b,0x05},
/* 3 */
{0x0a,0x07},
/* 4 */
{0x06,0x06},
/* 5 */
{0x0e,0x03},
/* 6 */
{0x0f,0x03},
/* 7 */
{0x08,0x06},
/* 8 */
{0x0f,0x07},
/* 9 */
{0x0e,0x07}
};
/**************************************/
/* */
/* Lcd写数据函数,写地址时调用 */
/* */
/**************************************/
void lcd_wr_addr(unsigned char i)
{
lcd_cs = 1;//切换到数据方式
lcd_cs = 0;
/* 写命令码ID:101 */
lcd_wr = 0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_data = 1; // 1
lcd_wr = 1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_wr = 0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_data = 0; // 0
lcd_wr = 1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_wr =0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_data = 1; // 1
lcd_wr = 1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
/* 写地址 */
lcd_wr = 0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_data = (bit)((i & 0x20)>>5); // A5
lcd_wr = 1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_wr = 0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_data = (bit)((i & 0x10)>>4); // A4
lcd_wr = 1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_wr =0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_data = (bit)((i & 0x08)>>3); // A3
lcd_wr = 1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_wr = 0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_data = (bit)((i & 0x04)>>2); // A2
lcd_wr = 1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_wr =0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_data = (bit)((i & 0x02)>>1); // A1
lcd_wr = 1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_wr = 0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_data = (bit)((i & 0x01)>>0); // A0
lcd_wr = 1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
/**************************************/
/* */
/* Lcd写数据函数,写data时调用 */
/* */
/**************************************/
void lcd_wr_data(unsigned char i)
{
lcd_wr = 0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_data = (bit)((i & 0x01)>>0); // D0
lcd_wr = 1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_wr = 0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_data = (bit)((i & 0x02)>>1); // D1
lcd_wr = 1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_wr =0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_data = (bit)((i & 0x04)>>2); // D2
lcd_wr = 1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_wr = 0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_data = (bit)((i & 0x08)>>3); // D3
lcd_wr = 1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_cs = 1;
}
/**************************************/
/* */
/* 选择内部RC振荡源256kHz为系统时钟 */
/* ID:100 命令码:000110xxx */
/* */
/* */
/**************************************/
void lcd_wr_rc256k(void)
{
lcd_cs = 0;//片选有效
/* 写命令码ID:100 */
/*
lcd_wr = 0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_data = 1; // 1
lcd_wr = 1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_wr = 0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_data = 0; // 0
lcd_wr = 1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_wr =0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcd_data = 0; // 0
lcd_wr = 1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -