/***************SC92F7323+LCD88888*****************/
/***************QQ:74145445************************/
/*************快手:共同学习STM8********************/
/*************keiluvision2*************************/
/*************20210808*****************************/
/**************************************************/
// lcd88888
//|1|2|3|4|5|6|7|8|9|10|11|12|com_4|com_3|com_2|com_1|
//SC92F7323 ________ ________
// 5V-|1 /VDD \_/ P0.0/28|-com_1
// 0V-|2 /VSS P0.1/27|-com_2
// -|3 /P5.1 P0.2/26|-com_3
// -|4 /P5.0 P0.3/25|-com_4
// -|5 /P1.0 P0.4/24|-lcd_1
// -|6 /P1.1 P0.5/23|-lcd_2
// TCK-|7 /P1.2 P0.6/22|-lcd_3
// TDIO-|8 /P1.3 P0.7/21|-lcd_4
// -|9 /P1.4 P2.0/20|-lcd_5
// -|10/P1.5 P2.1/19|-lcd_6
// -|11/P1.6 P2.2/18|-lcd_7
// beiguang-|12/P1.7 P2.3/17|-lcd_8
// lcd_12-|13/P2.7 P2.4/16|-lcd_9
// lcd_11-|14/P2.6______P2.5/15|-lcd_10
/**************************************************/
/**************************************************/
/**************************************************/
#include <SC92F732x_C.H>
#define bit0 0x01
#define bit1 0x02
#define bit2 0x04
#define bit3 0x08
#define bit4 0x10
#define bit5 0x20
#define bit6 0x40
#define bit7 0x80
#define com_1_gao P0VO &= ~bit0; P00=1
#define com_1_ban P0VO |=bit0
#define com_1_di P0VO &= ~bit0; P00=0
#define com_2_gao P0VO &= ~bit1; P01=1
#define com_2_ban P0VO |=bit1
#define com_2_di P0VO &= ~bit1; P01=0
#define com_3_gao P0VO &= ~bit2; P02=1
#define com_3_ban P0VO |=bit2
#define com_3_di P0VO &= ~bit2; P02=0
#define com_4_gao P0VO &= ~bit3; P03=1
#define com_4_ban P0VO |=bit3
#define com_4_di P0VO &= ~bit3; P03=0
sbit lcd_1 =P0^4;
sbit lcd_2 =P0^5;
sbit lcd_3 =P0^6;
sbit lcd_4 =P0^7;
sbit lcd_5 =P2^0;
sbit lcd_6 =P2^1;
sbit lcd_7 =P2^2;
sbit lcd_8 =P2^3;
sbit lcd_9 =P2^4;
sbit lcd_10 =P2^5;
sbit lcd_11 =P2^6;
sbit lcd_12 =P2^7;
sbit beiguang =P1^7;
/**************************************************/
unsigned char temp_a1; //设定温度
unsigned char temp_a2; //室温
//unsigned char temp_a3; //地温
unsigned char temp_b1; //设定温度十位
unsigned char temp_b2; //设定温度个位
unsigned char temp_b3; //室温十位
unsigned char temp_b4; //室温个位
unsigned char temp_b5; //室温小数
unsigned char temp_c1; //设定温度十位字模
unsigned char temp_c2; //设定温度个位字模
unsigned char temp_c3; //室温十位字模
unsigned char temp_c4; //室温个位字模
unsigned char temp_c5; //室温小数字模
unsigned char code biao[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/**************************************************/
void lcd_xianshi(); //lcd显示
void jisuan(); //计算
void yanshi(); //延时
/**************************************************/
void main()
{
unsigned char a1,b1,b2;
/**************************************************/ //液晶初始化
P0CON |=bit0|bit1|bit2|bit3|bit4|bit5|bit6|bit7; //输出模式
P2CON |=bit0|bit1|bit2|bit3|bit4|bit5|bit6|bit7;
OTCON |=bit3|bit2; //分压电阻87.5k
/**************************************************/
P1CON |=bit7; //背光输出
temp_a1 =12;
temp_a2 =34;
temp_b5 =5;
/**************************************************/
P1CON |=bit4;
P1 |=bit4;
beiguang =1;
b1 =99;
b2 =0;
jisuan();
while (1)
{
a1++;
if(a1>50)
{
a1=0;
b1--;
if(b1<1){b1=99;}
b2++;
if(b2>99){b2=0;}
temp_a1 =b1;
temp_a2 =b2;
jisuan();
}
lcd_xianshi();
}
}
/**************************************************/
void lcd_xianshi() //lcd显示
{
/**************************************************/ //lcd正控
com_1_ban;
com_2_ban;
com_3_ban;
com_4_ban;
if(temp_c1&bit5){lcd_1 =0;} else{lcd_1 =1;}
if(temp_c1&bit0){lcd_2 =0;} else{lcd_2 =1;}
if(temp_c2&bit5){lcd_3 =0;} else{lcd_3 =1;}
if(temp_c2&bit0){lcd_4 =0;} else{lcd_4 =1;}
//if(temp_){lcd_5 =0;} else{lcd_5 =1;} //02竖(显示)
lcd_5 =0;
if(temp_c3&bit5){lcd_6 =0;} else{lcd_6 =1;}
if(temp_c3&bit0){lcd_7 =0;} else{lcd_7 =1;}
if(temp_c4&bit5){lcd_8 =0;} else{lcd_8 =1;}
if(temp_c4&bit0){lcd_9 =0;} else{lcd_9 =1;}
if(temp_c5&bit5){lcd_10 =0;} else{lcd_10 =1;}
if(temp_c5&bit0){lcd_11 =0;} else{lcd_11 =1;}
//if(temp_){lcd_12 =0;} else{lcd_12 =1;} //01锁定
lcd_12 =1;
com_1_gao; //com1高
com_2_ban;
com_3_ban;
com_4_ban;
yanshi();
com_1_ban;
com_2_ban;
com_3_ban;
com_4_ban;
if(temp_c1&bit6){lcd_1 =0;} else{lcd_1 =1;}
if(temp_c1&bit1){lcd_2 =0;} else{lcd_2 =1;}
if(temp_c2&bit6){lcd_3 =0;} else{lcd_3 =1;}
if(temp_c2&bit1){lcd_4 =0;} else{lcd_4 =1;}
//if(temp_){lcd_5 =0;} else{lcd_5 =1;} //防冻
lcd_5 =1;
if(temp_c3&bit6){lcd_6 =0;} else{lcd_6 =1;}
if(temp_c3&bit1){lcd_7 =0;} else{lcd_7 =1;}
if(temp_c4&bit6){lcd_8 =0;} else{lcd_8 =1;}
if(temp_c4&bit1){lcd_9 =0;} else{lcd_9 =1;}
if(temp_c5&bit6){lcd_10 =0;} else{lcd_10 =1;}
if(temp_c5&bit1){lcd_11 =0;} else{lcd_11 =1;}
//if(temp_){lcd_12 =0;} else{lcd_12 =1;} //中
lcd_12 =1;
com_1_ban;
com_2_gao; //com2高
com_3_ban;
com_4_ban;
yanshi();
com_1_ban;
com_2_ban;
com_3_ban;
com_4_ban;
if(temp_c1&bit4){lcd_1 =0;} else{lcd_1 =1;}
if(temp_c1&bit2){lcd_2 =0;} else{lcd_2 =1;}
if(temp_c2&bit4){lcd_3 =0;} else{lcd_3 =1;}
if(temp_c2&bit2){lcd_4 =0;} else{lcd_4 =1;}
//if(temp_){lcd_5 =0;} else{lcd_5 =1;} //保护
lcd_5 =1;
if(temp_c3&bit4){lcd_6 =0;} else{lcd_6 =1;}
if(temp_c3&bit2){lcd_7 =0;} else{lcd_7 =1;}
if(temp_c4&bit4){lcd_8 =0;} else{lcd_8 =1;}
if(temp_c4&bit2){lcd_9 =0;} else{lcd_9 =1;}
if(temp_c5&bit4){lcd_10 =0;} else{lcd_10 =1;}
if(temp_c5&bit2){lcd_11 =0;} else{lcd_11 =1;}
//if(temp_){lcd_12 =0;} else{lcd_12 =1;} //加热
lcd_12 =1;
com_1_ban;
com_2_ban;
com_3_gao; //com3高
com_4_ban;
yanshi();
com_1_ban;
com_2_ban;
com_3_ban;
com_4_ban;
//if(temp_){lcd_1 =0;} else{lcd_1 =1;} //室温
lcd_1 =1;
if(temp_c1&bit3){lcd_2 =0;} else{lcd_2 =1;}
//if(temp_){lcd_3 =0;} else{lcd_3 =1;} //设定摄氏度(显示)
lcd_3 =0;
if(temp_c2&bit3){lcd_4 =0;} else{lcd_4 =1;} //无
//if(temp_){lcd_5 =0;} else{lcd_5 =1;}
lcd_5 =1;
//if(temp_){lcd_6 =0;} else{lcd_6 =1;} //地温
lcd_6 =1;
if(temp_c3&bit3){lcd_7 =0;} else{lcd_7 =1;}
//if(temp_){lcd_8 =0;} else{lcd_8 =1;} //℃(显示)
lcd_8 =0;
if(temp_c4&bit3){lcd_9 =0;} else{lcd_9 =1;}
//if(temp_){lcd_10 =0;} else{lcd_10 =1;} //点(显示)
lcd_10 =0;
if(temp_c5&bit3){lcd_11 =0;} else{lcd_11 =1;}
//if(temp_){lcd_12 =0;} else{lcd_12 =1;} //停止
lcd_12 =1;
com_1_ban;
com_2_ban;
com_3_ban;
com_4_gao; //com4高
yanshi();
/**************************************************/ //lcd反控
com_1_ban;
com_2_ban;
com_3_ban;
com_4_ban;
if(temp_c1&bit5){lcd_1 =1;} else{lcd_1 =0;}
if(temp_c1&bit0){lcd_2 =1;} else{lcd_2 =0;}
if(temp_c2&bit5){lcd_3 =1;} else{lcd_3 =0;}
if(temp_c2&bit0){lcd_4 =1;} else{lcd_4 =0;}
//if(temp_){lcd_5 =1;} else{lcd_5 =0;} //02竖(显示)
lcd_5 =1;
if(temp_c3&bit5){lcd_6 =1;} else{lcd_6 =0;}
if(temp_c3&bit0){lcd_7 =1;} else{lcd_7 =0;}
if(temp_c4&bit5){lcd_8 =1;} else{lcd_8 =0;}
if(temp_c4&bit0){lcd_9 =1;} else{lcd_9 =0;}
if(temp_c5&bit5){lcd_10 =1;} else{lcd_10 =0;}
if(temp_c5&bit0){lcd_11 =1;} else{lcd_11 =0;}
//if(temp_){lcd_12 =1;} else{lcd_12 =0;} //01锁定
lcd_12 =0;
com_1_di; //com1低
com_2_ban;
com_3_ban;
com_4_ban;
yanshi();
com_1_ban;
com_2_ban;
com_3_ban;
com_4_ban;
if(temp_c1&bit6){lcd_1 =1;} else{lcd_1 =0;}
if(temp_c1&bit1){lcd_2 =1;} else{lcd_2 =0;}
if(temp_c2&bit6){lcd_3 =1;} else{lcd_3 =0;}
if(temp_c2&bit1){lcd_4 =1;} else{lcd_4 =0;} //防冻
//if(temp_){lcd_5 =1;} else{lcd_5 =0;}
lcd_5 =0;
if(temp_c3&bit6){lcd_6 =1;} else{lcd_6 =0;}
if(temp_c3&bit1){lcd_7 =1;} else{lcd_7 =0;}
if(temp_c4&bit6){lcd_8 =1;} else{lcd_8 =0;}
if(temp_c4&bit1){lcd_9 =1;} else{lcd_9 =0;}
if(temp_c5&bit6){lcd_10 =1;} else{lcd_10 =0;}
if(temp_c5&bit1){lcd_11 =1;} else{lcd_11 =0;}
//if(temp_){lcd_12 =1;} else{lcd_12 =0;} //中
lcd_12 =0;
com_1_ban;
com_2_di; //com2低
com_3_ban;
com_4_ban;
yanshi();
com_1_ban;
com_2_ban;
com_3_ban;
com_4_ban;
if(temp_c1&bit4){lcd_1 =1;} else{lcd_1 =0;}
if(temp_c1&bit2){lcd_2 =1;} else{lcd_2 =0;}
if(temp_c2&bit4){lcd_3 =1;} else{lcd_3 =0;}
if(temp_c2&bit2){lcd_4 =1;} else{lcd_4 =0;}
//if(temp_){lcd_5 =1;} else{lcd_5 =0;} //保护
lcd_5 =0;
if(temp_c3&bit4){lcd_6 =1;} else{lcd_6 =0;}
if(temp_c3&bit2){lcd_7 =1;} else{lcd_7 =0;}
if(temp_c4&bit4){lcd_8 =1;} else{lcd_8 =0;}
if(temp_c4&bit2){lcd_9 =1;} else{lcd_9 =0;}
if(temp_c5&bit4){lcd_10 =1;} else{lcd_10 =0;}
if(temp_c5&bit2){lcd_11 =1;} else{lcd_11 =0;}
//if(temp_){lcd_12 =1;} else{lcd_12 =0;} //加热
lcd_12 =0;
com_1_ban;
com_2_ban;
com_3_di; //com3低
com_4_ban;
yanshi();
com_1_ban;
com_2_ban;
com_3_ban;
com_4_ban;
//if(temp_){lcd_1 =1;} else{lcd_1 =0;} //室温
lcd_1 =0;
if(temp_c1&bit3){lcd_2 =1;} else{lcd_2 =0;}
//if(temp_){lcd_3 =1;} else{lcd_3 =0;} //设定摄氏度(显示)
lcd_3 =1;
if(temp_c2&bit3){lcd_4 =1;} else{lcd_4 =0;}
//if(temp_){lcd_5 =1;} else{lcd_5 =0;} //无
lcd_5 =0;
//if(temp_){lcd_6 =1;} else{lcd_6 =0;} //地温
lcd_6 =0;
if(temp_c3&bit3){lcd_7 =1;} else{lcd_7 =0;}
//if(temp_){lcd_8 =1;} else{lcd_8 =0;} //℃(显示
lcd_8 =1;
if(temp_c4&bit3){lcd_9 =1;} else{lcd_9 =0;}
//if(temp_){lcd_10 =1;} else{lcd_10 =0;} //点(显示)
lcd_10 =1;
if(temp_c5&bit3){lcd_11 =1;} else{lcd_11 =0;}
//if(temp_){lcd_12 =1;} else{lcd_12 =0;} //停止
lcd_12 =0;
com_1_ban;
com_2_ban;
com_3_ban;
com_4_di; //com4低
yanshi();
}
/**************************************************/
void jisuan() //计算
{
temp_b1 =temp_a1/10;
temp_b2 =temp_a1%10;
temp_c1 =biao[temp_b1];
//temp_c1 =biao[temp_a1/10];
temp_c2 =biao[temp_b2];
temp_b3 =temp_a2/10;
temp_b4 =temp_a2%10;
temp_c3 =biao[temp_b3];
temp_c4 =biao[temp_b4];
temp_c5 =biao[temp_b5];
}
/**************************************************/
/**************************************************/
void yanshi() //延时
{
unsigned char x,y;
for(x=50;x>0;x--)
for(y=100;y>0;y--);
}
/**************************************************/ |