标题:
51单片机IO直接驱动LCD6402显示实时温度源程序
[打印本页]
作者:
tty397
时间:
2022-7-7 08:58
标题:
51单片机IO直接驱动LCD6402显示实时温度源程序
IO直接驱动
温度.jpg
(96.19 KB, 下载次数: 25)
下载附件
2022-7-7 08:47 上传
单片机源程序如下:
//================================
void data_display()
{
lcd_segbuf[0]=lcd_data_buf[3]&0x0f;
lcd_segbuf[1]=(lcd_data_buf[4]&0xf0)>>4;
}
//================================
void main(void)
{
IO_INT(); //IO口初始化 main.c
CLK_INT(); //时钟设置初始化 main.c
clr_wtd();
lcd_int();
init_global_value(); //初始化全局变量 key.c
Init_Open_T0();
while(1)
{
data_display();
clr_wtd();
}
}
unsigned char seg_cnt=0;
//=============================
void timer0(void) interrupt INTERRUPT_TIMER0
{
static unsigned char lcd_buf=0;
static unsigned char lcd_cnt=0;
TL0 = (65536-200)%256; //重装初始值
TH0 = (65536-200)/256;
if(++lcd_cnt==10)
{
lcd_cnt=0;
switch(seg_cnt)
{
case 0: P1DIR=0xfe;
P1=0x00;
lcd_buf=0;
lcd_buf|=(lcd_seg[lcd_segbuf[0]]&0x03)<<0;
lcd_buf|=(lcd_seg[lcd_segbuf[1]]&0x03)<<2;
lcd_buf|=(lcd_seg[lcd_segbuf[2]]&0x03)<<4;
if(model_flag==1)
{
lcd_buf|=(lcd_seg[lcd_segbuf[3]]&0x03)<<6;
}
else
{
lcd_buf|=(lcd_seg[lcd_segbuf[3]]&0x02)<<6;
}
P0=lcd_buf;
break;
case 1: P1DIR=0xfe;
P1=0x01;
lcd_buf=0;
lcd_buf|=(lcd_seg[lcd_segbuf[0]]&0x03)<<0;
lcd_buf|=(lcd_seg[lcd_segbuf[1]]&0x03)<<2;
lcd_buf|=(lcd_seg[lcd_segbuf[2]]&0x03)<<4;
if(model_flag==1)
{
lcd_buf|=(lcd_seg[lcd_segbuf[3]]&0x03)<<6;
}
else
{
lcd_buf|=(lcd_seg[lcd_segbuf[3]]&0x02)<<6;
}
P0=lcd_buf^0xff;
break;
case 2: P1DIR=0xfd;
P1=0x00;
lcd_buf=0;
lcd_buf|=(lcd_seg[lcd_segbuf[0]]&0x0c)>>2;
lcd_buf|=(lcd_seg[lcd_segbuf[1]]&0x0c)<<0;
lcd_buf|=(lcd_seg[lcd_segbuf[2]]&0x0c)<<2;
lcd_buf|=(lcd_seg[lcd_segbuf[3]]&0x0c)<<4;
P0=lcd_buf;
break;
case 3: P1DIR=0xfd;
P1=0x02;
lcd_buf=0;
lcd_buf|=(lcd_seg[lcd_segbuf[0]]&0x0c)>>2;
lcd_buf|=(lcd_seg[lcd_segbuf[1]]&0x0c)<<0;
lcd_buf|=(lcd_seg[lcd_segbuf[2]]&0x0c)<<2;
lcd_buf|=(lcd_seg[lcd_segbuf[3]]&0x0c)<<4;
P0=lcd_buf^0xff;
break;
case 4: P1DIR=0xfb;
P1=0x00;
lcd_buf=0;
lcd_buf|=(lcd_seg[lcd_segbuf[0]]&0x30)>>4;
lcd_buf|=(lcd_seg[lcd_segbuf[1]]&0x30)>>2;
lcd_buf|=(lcd_seg[lcd_segbuf[2]]&0x30)<<0;
lcd_buf|=(lcd_seg[lcd_segbuf[3]]&0x30)<<2;
P0=lcd_buf;
break;
case 5: P1DIR=0xfb;
P1=0x04;
lcd_buf=0;
lcd_buf|=(lcd_seg[lcd_segbuf[0]]&0x30)>>4;
lcd_buf|=(lcd_seg[lcd_segbuf[1]]&0x30)>>2;
lcd_buf|=(lcd_seg[lcd_segbuf[2]]&0x30)<<0;
lcd_buf|=(lcd_seg[lcd_segbuf[3]]&0x30)<<2;
P0=lcd_buf^0xff;
break;
case 6: P1DIR=0xf7;
P1=0x00;
lcd_buf=0;
lcd_buf|=(lcd_seg[lcd_segbuf[0]]&0xc0)>>6;
lcd_buf|=(lcd_seg[lcd_segbuf[1]]&0xc0)>>4;
lcd_buf|=(lcd_seg[lcd_segbuf[2]]&0xc0)>>2;
lcd_buf|=(lcd_seg[lcd_segbuf[3]]&0xc0)<<0;
P0=lcd_buf;
break;
case 7: P1DIR=0xf7;
P1=0x08;
lcd_buf=0;
lcd_buf|=(lcd_seg[lcd_segbuf[0]]&0xc0)>>6;
lcd_buf|=(lcd_seg[lcd_segbuf[1]]&0xc0)>>4;
lcd_buf|=(lcd_seg[lcd_segbuf[2]]&0xc0)>>2;
lcd_buf|=(lcd_seg[lcd_segbuf[3]]&0xc0)<<0;
P0=lcd_buf^0xff;
break;
default: break;
}
seg_cnt++;
if(seg_cnt>7)
seg_cnt=0;
}
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1