?? lcd_motor.c
字號:
#include<reg52.h>
#include<math.h>
#include<intrins.h>
#define uchar unsigned char
#define ulong unsigned long
#define uint unsigned int
#define LCDLIMIT 0x80
#define LCD_D P1
uchar code num[192]={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,
0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00
};//0,1,2,3,4,5,6,7,8,9,:,.
uchar code ch1[320]={0x00,0x00,0xF8,0x49,0x4A,0x4C,0x48,0xF8,0x48,0x4C,0x4A,0x49,0xFC,0x08,0x00,0x00,
0x10,0x10,0x17,0x12,0x12,0x12,0x12,0xFF,0x12,0x12,0x12,0x12,0x13,0x18,0x10,0x00,
0x80,0x40,0x20,0xF8,0x87,0x40,0x20,0x90,0x08,0x07,0x08,0x90,0x20,0xC0,0x40,0x00,
0x00,0x00,0x00,0xFF,0x00,0x80,0x40,0x3F,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,
0x20,0x20,0x22,0x22,0x22,0xE2,0x22,0x22,0x22,0xE2,0x22,0x23,0x22,0x30,0x20,0x00,
0x80,0x80,0x40,0x20,0x18,0x07,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x70,0x00,
0x00,0xFE,0x42,0xC2,0x42,0x7F,0x12,0x08,0x8C,0x57,0x24,0x54,0x8C,0x84,0x80,0x00,
0x40,0x7E,0x40,0x3F,0x22,0x22,0x01,0xFF,0x42,0x42,0x42,0x42,0x42,0xFF,0x02,0x00,
0x24,0x24,0xA4,0xFE,0xA3,0x22,0x20,0x7E,0x42,0x42,0x42,0x42,0x42,0x7F,0x02,0x00,
0x08,0x06,0x01,0xFF,0x00,0x43,0x41,0x49,0x49,0x49,0x7F,0x49,0x4D,0x69,0x41,0x00,
0x00,0x00,0x80,0x40,0x30,0x0C,0x00,0xC0,0x06,0x18,0x20,0x40,0x80,0x80,0x80,0x00,
0x01,0x01,0x00,0x30,0x28,0x24,0x23,0x20,0x20,0x28,0x30,0x60,0x00,0x01,0x00,0x00,
0x00,0x00,0xFE,0x12,0x12,0x12,0x12,0xFE,0x12,0x12,0x12,0x12,0xFF,0x02,0x00,0x00,
0x40,0x48,0x49,0x49,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x49,0x4D,0x68,0x40,0x00,
0x00,0x00,0x00,0xF1,0x12,0x14,0x10,0x10,0x10,0x14,0x12,0xF9,0x10,0x00,0x00,0x00,
0x20,0x18,0x00,0x3B,0x41,0x41,0x45,0x49,0x59,0x41,0x41,0x73,0x00,0x08,0x30,0x00,
0x80,0x80,0x40,0x20,0x50,0x48,0x44,0xC3,0x44,0x68,0x50,0x20,0x40,0xC0,0x40,0x00,
0x00,0x40,0x40,0x4A,0x52,0x62,0x42,0x7F,0x42,0x62,0x52,0x4A,0x60,0x40,0x00,0x00,
0x10,0x8C,0x44,0xB5,0x26,0xA4,0x74,0x0C,0x02,0xF2,0x1A,0xD6,0x12,0xFB,0x12,0x00,
0x10,0x08,0xFC,0x4A,0x49,0x4A,0x7C,0x08,0x80,0x4F,0x20,0x1F,0x20,0x4F,0xC0,0x00,
};//單,價,元,路,程,公,里,總,金,額
uchar code ch2[480]={0x04,0x34,0xC4,0x04,0xC4,0x3C,0x20,0x10,0x0F,0xE8,0x08,0x08,0x28,0x18,0x00,0x00,
0x10,0x08,0x06,0x01,0x82,0x8C,0x40,0x30,0x0C,0x03,0x0C,0x10,0x60,0xC0,0x40,0x00,
0x40,0x42,0x44,0xC8,0x00,0xFC,0x04,0x02,0x82,0xFC,0x04,0x04,0x04,0xFE,0x04,0x00,
0x00,0x40,0x20,0x1F,0x20,0x47,0x42,0x41,0x40,0x7F,0x40,0x42,0x44,0x63,0x20,0x00,
0x40,0x20,0xF8,0x07,0x04,0xF4,0x14,0x14,0x14,0xFF,0x14,0x14,0x14,0xF6,0x04,0x00,
0x00,0x00,0xFF,0x00,0x80,0x43,0x45,0x29,0x19,0x17,0x21,0x21,0x41,0xC3,0x40,0x00,
0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0xFF,0x02,0x00,0x00,
0x80,0x60,0x1F,0x02,0x02,0x02,0x02,0x7F,0x02,0x02,0x42,0x82,0x7F,0x00,0x00,0x00,
0x00,0x00,0xFC,0x40,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0xFC,0x00,0x00,0x00,
0x00,0xFE,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0xFE,0x00,0x00,
0x24,0x24,0xA4,0xFE,0x23,0x32,0x20,0xFC,0x44,0x44,0x44,0x44,0xFE,0x04,0x00,0x00,
0x08,0x06,0x01,0xFF,0x41,0x42,0x40,0x7F,0x44,0x44,0x44,0x44,0x7F,0x40,0x40,0x00,
0x00,0x04,0xC4,0xA4,0x94,0x8C,0x87,0xF4,0x84,0x84,0xC4,0x84,0x06,0x04,0x00,0x00,
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x06,0x04,0x00,
0x40,0x40,0x42,0xCC,0x00,0x40,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x60,0x40,0x00,
0x00,0x00,0x00,0x7F,0x20,0x10,0x08,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x3A,0x2A,0x2A,0xAA,0x7F,0x2A,0x2A,0x2A,0xFF,0x2A,0x2A,0xAF,0x22,0xE0,0x00,
0x02,0x02,0x81,0x9F,0x41,0x41,0x21,0x1D,0x21,0x21,0x41,0x5F,0x80,0x01,0x00,0x00,
0x00,0x02,0x22,0x22,0x32,0x2E,0xA2,0x62,0x22,0x22,0x91,0x09,0x01,0x00,0x00,0x00,
0x00,0x00,0x42,0x22,0x1A,0x43,0x82,0x7E,0x02,0x02,0x0A,0x13,0x66,0x00,0x00,0x00,
0x20,0x30,0xAC,0x63,0x30,0x88,0xC8,0xA8,0x99,0x8E,0x88,0xA8,0xCC,0x88,0x00,0x00,
0x22,0x67,0x22,0x12,0x92,0x40,0x30,0x0F,0x00,0x00,0x3F,0x40,0x40,0x41,0x70,0x00,
0x40,0x20,0x10,0x8C,0x63,0x00,0x82,0x02,0x02,0xFE,0x82,0x82,0xC3,0x82,0x00,0x00,
0x04,0x02,0x01,0xFF,0x40,0x40,0x7F,0x40,0x40,0x7F,0x40,0x40,0x40,0x60,0x40,0x00,
0x40,0x42,0x44,0xCC,0x00,0x20,0x10,0x28,0x24,0xE3,0x24,0x28,0x90,0x30,0x10,0x00,
0x00,0x40,0x20,0x1F,0x20,0x51,0x89,0xA5,0xC1,0xBF,0x81,0x85,0x89,0xD9,0x40,0x00,
0x00,0x00,0xFC,0x40,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0xFC,0x00,0x00,0x00,
0x00,0xFE,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0xFE,0x00,0x00,
0x00,0x00,0x00,0x7E,0x22,0x22,0xA2,0x22,0x22,0x22,0x22,0x7F,0x02,0x80,0x00,0x00,
0x00,0xFF,0x41,0x41,0x41,0x41,0xFF,0x01,0xFF,0x41,0x41,0x41,0x41,0xFF,0x01,0x00
};//歡,迎,使,用,出,租,車,計,費,系,統,征,途,出,品
uchar code ch3[256]={0x10,0x10,0xD0,0xFF,0x94,0x14,0xE4,0xBF,0xA4,0xA4,0xA4,0xBF,0xF4,0x26,0x04,0x00,
0x04,0x03,0x00,0xFF,0x08,0x89,0x8B,0x4A,0x2A,0x1E,0x2A,0x2A,0x4B,0xC8,0x48,0x00,
0x10,0x10,0x90,0x90,0x90,0x90,0x90,0x10,0xFF,0x10,0x12,0x14,0x10,0x18,0x10,0x00,
0x00,0x20,0x60,0x20,0x1F,0x10,0x10,0x08,0x01,0x06,0x18,0x20,0x40,0x80,0x70,0x00,
0x40,0x42,0x44,0xCC,0x00,0x60,0x5E,0x48,0xC8,0x7F,0xC8,0x48,0x4C,0x68,0x40,0x00,
0x00,0x40,0x20,0x1F,0x20,0x60,0x90,0x8C,0x83,0x80,0x8F,0x90,0x90,0xD0,0x5C,0x00,
0x10,0x10,0x10,0xFF,0x90,0x50,0x82,0x46,0x2A,0x92,0x2A,0x46,0x82,0x80,0x80,0x00,
0x02,0x42,0x81,0x7F,0x00,0x09,0x08,0x09,0x09,0xFF,0x09,0x09,0x0C,0x09,0x00,0x00,
0x00,0x00,0x00,0xF8,0x48,0x4C,0x4A,0x49,0x48,0x48,0x48,0xFC,0x08,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xFF,0x00,0x00,0x00,0x00,
0x20,0x24,0x24,0xE4,0x26,0x34,0x20,0x10,0x10,0xFF,0x10,0x10,0x10,0xF8,0x10,0x00,
0x08,0x1C,0x0B,0x08,0x08,0x8A,0x4C,0x30,0x0C,0x03,0x40,0x80,0x40,0x3F,0x00,0x00,
0x00,0x04,0x24,0x24,0x24,0x24,0x24,0xFC,0x22,0x22,0x22,0x33,0x22,0x00,0x00,0x00,
0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x03,0x02,0x00,
0x20,0x24,0x24,0xE4,0x26,0x34,0x20,0x10,0x10,0xFF,0x10,0x10,0x10,0xF8,0x10,0x00,
0x08,0x1C,0x0B,0x08,0x08,0x8A,0x4C,0x30,0x0C,0x03,0x40,0x80,0x40,0x3F,0x00,0x00
};//模,式,選,擇,自,動,手,動
uchar code chf[8]={0x10,0x30,0x70,0xF0,0xF0,0x70,0x30,0x10};
uchar code speedup[7]={0x10,0x30,0x50,0x80,0xa0,0xb0,0xe0};
uchar col,row; //列,行
//uchar cbyte; //要顯示的8個點
bit nigf,nig_pf; //是否夜間
bit stopf; //是否停車超過1分
bit startf; //是否超過三公里
bit car_mod;
bit set_pt;
bit refresh;
bit updospeed;
bit quan;
sbit RS=P2^3;
sbit RW=P2^4;
sbit CSA=P2^5;
sbit CSB=P2^6;
sbit E=P2^7;
sbit COMTO1=P2^2;
bit starting;
uchar motor_zhuan;
uchar speed_quan;
uchar speed_count;
uchar set_count;
uchar mod_flag_count;
uchar price_10,price_1; //單價
uchar jour_6,jour_5,jour_4,jour_3,jour_2,jour_1; //路程
uchar time_10h,time_h,time_10m,time_m; //時間
ulong total_amount; //總金額
uint time_count; //1分鐘計數器
void add_amount(); //加1公里的價錢
void add_stop_amount(); //加停車1分鐘的價錢
void disp_amount(); //顯示總金額
void disp(uchar disbyte); //顯示一個數字,包含定位信息
void disp_num(uchar numch); //顯示一個數字
void wrdata(uchar wrbyte); //寫入一個字節
void locatexy(); //定位要寫入的字節的行和列地址
void wten(); //LCD寫允許判斷
void welcome(); //LCD顯示歡迎界面
void lcdinit(); //LCD初始化
void rollscreen(uchar roll); //LCD顯示起始行設置,實現滾屏效果
void ready_work(); //LCD顯示工作界面
void wrchz(uchar * pch1); //往LCD上寫一個漢字
void disp_modch(); //自動,手動出租車模擬系統切換
void disp_modf(uchar modfch); //顯示操作控制三角符
void add_night_price(); //是否需要夜間加單價
void start_motor(); //開電機,開車
void stop_motor(); //關電機,停車
void t0int() interrupt 1
{
TH0=0x3C;
TL0=0x60;
time_count++;
if(time_count==1200)
{
time_count=0;
time_m++;
if(time_m==10)
{
time_m=0;
time_10m++;
if(time_10m==6)
{
time_10m=0;
time_h++;
if(time_h==4&&time_10h==2)
{
time_h=0;
time_10h=0;
}
else if(time_h==10)
{
time_h=0;
time_10h++;
}
}
}
if((time_10h*10+time_h)>=6&&(time_10h*10+time_h)<18)
nigf=0;
else nigf=1;
}
}
void t1int() interrupt 3
{
TH1=speedup[speed_count];
TL1=0x00;
if(!quan){speed_quan=(speed_count+2)*0x20;quan=1;}
speed_quan--;
if(!speed_quan)
{
if(!updospeed)
{
speed_count++;
if(speed_count==8)speed_count=7;
}
else
{
if(speed_count==0)TR1=0;
else speed_count--;
}
}
motor_zhuan=motor_zhuan<<1|0x01;
if(motor_zhuan==0xff)motor_zhuan=0xef;
P0=motor_zhuan;
}
void sint() interrupt 4
{
uchar sbyte;
if(RI)
sbyte=SBUF;
switch(sbyte&0xF0)
{
case 0x10:{price_10=sbyte&0x0f;break;}
case 0x20:{price_1=sbyte&0x0f;break;}
case 0x30:{time_10h=sbyte&0x0f;break;}
case 0x40:{time_h=sbyte&0x0f;break;}
case 0x50:{time_10m=sbyte&0x0f;break;}
case 0x60:{time_m=sbyte&0x0f;break;}
case 0x70:{jour_6=sbyte&0x0f;break;}
case 0x80:{jour_5=sbyte&0x0f;break;}
case 0x90:{jour_4=sbyte&0x0f;break;}
case 0xa0:{jour_3=sbyte&0x0f;add_amount();break;}
case 0xb0:{jour_2=sbyte&0x0f;break;}
case 0xc0:{jour_1=sbyte&0x0f;break;}
case 0xd0:{if(sbyte&0x0f)starting=1;
else add_stop_amount();break;}
case 0xe0:{if(sbyte&0x0f){
start_motor();
set_pt=0;}
else stop_motor();
break;}
case 0xf0:{if(sbyte&0x0f)car_mod=!car_mod;
else {
set_pt=1;
set_count++;
if(set_count==7)set_count=1;
}
break;}
}
RI=0;
}
void add_amount()
{
if(starting)
total_amount=total_amount+price_10<<3+price_10<<1+price_1;
if(total_amount>999999)
total_amount=0;
}
void add_stop_amount()
{
total_amount++;
if(total_amount>999999)
total_amount=0;
}
void disp_amount()
{
uchar amount_6,amount_5,amount_4,amount_3,amount_2,amount_1;
amount_6=total_amount/100000;
col=56;row=5;disp_num(amount_6);
amount_5=total_amount%100000/10000;
col=64;row=5;disp_num(amount_5);
amount_4=total_amount%10000/1000;
col=72;row=5;disp_num(amount_4);
amount_3=total_amount%1000/100;
col=80;row=5;disp_num(amount_3);
amount_2=total_amount%100/10;
col=88;row=5;disp_num(amount_2);
amount_1=total_amount%10;
col=96;row=5;disp_num(amount_1);
}
void disp(uchar disbyte)
{
switch(disbyte&0xF0)
{
case 0x10:{col=24;row=0;disp_num(disbyte&0x0f);break;}
case 0x20:{col=32;row=0;disp_num(disbyte&0x0f);break;}
case 0x30:{col=56;row=0;disp_num(disbyte&0x0f);break;}
case 0x40:{col=64;row=0;disp_num(disbyte&0x0f);break;}
case 0x50:{col=80;row=0;disp_num(disbyte&0x0f);break;}
case 0x60:{col=88;row=0;disp_num(disbyte&0x0f);break;}
case 0x70:{col=40;row=3;disp_num(disbyte&0x0f);break;}
case 0x80:{col=48;row=3;disp_num(disbyte&0x0f);break;}
case 0x90:{col=56;row=3;disp_num(disbyte&0x0f);break;}
case 0xa0:{col=64;row=3;disp_num(disbyte&0x0f);break;}
case 0xb0:{col=80;row=3;disp_num(disbyte&0x0f);break;}
case 0xc0:{col=88;row=3;disp_num(disbyte&0x0f);break;}
}
}
void disp_num(uchar numch)
{
uchar i,disx,disy;
uchar cbyte;
uchar * pnum;
disx=col;
disy=row;
pnum=num+numch*0x10;
for(i=0;i<8;i++)
{
cbyte=*(pnum+i);
wrdata(cbyte);
col++;
if(col==LCDLIMIT){col=0;row++;row++;};
if(row>7)row=row%7;
}
col=disx;
row=disy+1;
for(i=8;i<16;i++)
{
cbyte=*(pnum+i);
wrdata(cbyte);
col++;
if(col==LCDLIMIT){col=0;row++;row++;};
if(row>7)row=row%7;
}
row=disy;
}
void wrdata(uchar wrbyte)
{
locatexy();
wten();
RS=1;
RW=0;
LCD_D=wrbyte;
E=1;
_nop_();
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -