基于单片机STC12C5A60S2芯片的1602液晶显示,跳线按照要求连接
附上主程序
#include "stc12c5a60s2.h"
#include "intrins.h"
#include "onewire.h"#define uchar unsigned char
#define uint unsigned intuchar table[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; //数码uint temp = 123;void display_C()
{write_com(0x80); //命令先将指针定义到第一行第一个字处write_data('T');write_data('e');write_data('m');write_data('p');write_data(':');write_data('1' );write_data('2' );write_data('3' );write_data('4' );write_data('C');
}void display_L()
{write_com(0xC0); //命令先将指针定义到第二行第一个字处write_data('d');write_data('i');write_data('s');write_data(':');write_data( table[temp/100] );write_data( table[temp/10%10] );write_data( table[temp%10%10] );
}void main()
{LCD_init(); //初始化LCDwhile(1){display_C(); display_L(); } }
在COM中的(0XC0),(0X80)负责液晶显示的第一行和第二行
以下附上.C文件
#include "stc12c5a60s2.h"
#include "intrins.h"#define uint unsigned int
#define uchar unsigned charsbit lcden=P2^5;
sbit lcdrw=P1^1;
sbit lcdrs=P1^0;void delay(uint z)
{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);
}void write_com(uchar com)
{lcdrw=0;lcdrs=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;
}void write_data(uchar date)
{lcdrs=1; //选择写命令模式P0=date; //将要写的命令字送到数据总线上delay(5); //稍做延时以待数据稳定lcden=1; //使能端给一个高脉冲,因为初始化函数中已将leden置为000delay(5); //稍作延时lcden=0; //将使能端置0已完成高脉冲
}void LCD_init()
{lcden=0;write_com(0x38); //设置16*2显示5*7点阵,8位数据接口write_com(0x0c); //设置开显示,不显示光标write_com(0x06); //写一个字符后地址指针加11write_com(0x01); //显示清0,数据指针清00}
附上.H文件
#ifndef _LCD1602_H
#define _LCD1602_H#define uint unsigned int
#define uchar unsigned charvoid delay(uint z);
void write_com(uchar com);
void write_data(uchar date);
void LCD_init();#endif
上面做了一个基础显示,如需继续写入,只用把date数据往后复制添加即可