|
IO直接驅(qū)動(dòng)
溫度.jpg (96.19 KB, 下載次數(shù): 25)
下載附件
2022-7-7 08:47 上傳
單片機(jī)源程序如下:
//================================
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(); //時(shí)鐘設(shè)置初始化 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;
}
}
|
評(píng)分
-
查看全部評(píng)分
|