加兩個按鍵 k1→下移 下移到故障四返回到故障一 k2 按下k2進入故障一中 按下k3 通 D1小燈亮 斷D2小亮
#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
#include "lcd.h"
typedef unsigned char u8;
sbit k1=P1^0;
sbit jian1=P3^0; //按鍵
sbit jian2=P3^1; //按鍵
sbit jian4=P3^3; //按鍵
sbit yg1=P1^0; //箭頭
unsigned char l=1,kkk=1,vv=1;
/*******************************************************************************
* 函 數 名 : main
* 函數功能 : 主函數
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
//液晶顯示位置函數
void lcd_pos(uchar x,uchar y) //從第X行的第Y位置開始顯示
{
uchar pos;
if(x==1) //第一行
{ x=0x80;}
else if(x==2) //第二行
{ x=0x90;}
else if(x==3) //第三行
{ x=0x88;}
else if(x==4) //第四行
{ x=0x98;}
pos=x+y-1; //首地址為0X80
LcdWriteCom(pos);
}
//液晶寫一個字符串函數
void lcd_write_string(uchar *str)
{
while(*str!='\0') //未結束
{
LcdWriteData(*str++);
Lcd1602_Delay1ms(1);
}
}
void chushihua()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;
EA=1;ET0=1;TR0=1;
ET1=1;TR1=0;
}
void main(void)
{
u8 i=5;
chushihua();
LcdInit();
lcd_pos(1,1);
lcd_write_string("內蒙古電子學院");
lcd_pos(2,1);
lcd_write_string("----畢業設計----");
lcd_pos(3,1);
lcd_write_string("汽車故障設置儀");
Lcd1602_Delay1ms(2000);
LcdWriteCom(0x01);
chushihua();
lcd_pos(1,1);
lcd_write_string("設計人:");
lcd_pos(2,1);
lcd_write_string("王澤偉、韓鑫宇");
lcd_pos(3,1);
lcd_write_string(" 劉孟君 ");
lcd_pos(4,1);
lcd_write_string("指導教師:宋偉");
Lcd1602_Delay1ms(2000);
LcdWriteCom(0x01);
while(1)
{
chushihua();
lcd_pos(1,1);
lcd_write_string("故障一:");
if(yg1==1){lcd_pos(1,8);lcd_write_string("←");TR1=0;}
else {lcd_pos(1,8);lcd_write_string("← ");TR1=1;}
lcd_pos(2,1);
lcd_write_string("故障二:");
lcd_pos(3,1);
lcd_write_string("故障三:");
lcd_pos(4,1);
lcd_write_string("故障四:");
while(1);
}
}
|