找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2347|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

keil 4編譯沒問題,但是protues無法仿真,想請(qǐng)教一下!題目是汽車超速報(bào)警系統(tǒng)設(shè)計(jì)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
#include<reg52.h>
sbit LCD_RS=P1^0;
sbit LCD_RW=P1^1;
sbit LCD_E=P1^2;
#define LCD_DATA P2
#define LCD_BUSY 0x80
#define uchar unsigned char
#define uint unsigned int
uint speed;
uchar test=1;
uchar normal=0;
uchar nor_speed;
uchar exc_speed;
uchar cnt_ovtime;
uint data dis[5]={0x00,0x00,0x00,0x00,0x00};
void lcd_init(void);
void display_string(uchar x,uchar y,uchar *s);
void disp_selec(uchar bit_selec,uchar seg);
void init_timer0();
void init_timer1();
void delay_ms(uint i)
{
uint j;
while(i--)
{
for(j=0;j<125;j++);
}
}
void dellay(uint h)
{
while(h--);
}
void init_timer0()
{
TMOD=0x51;
TH0=0xD8;
TL0=0xF0;
ET0=1;
EA=1;
TR0=1;
}
void init_timer1()
{
TMOD=0x51;
TH1=0x00;
TL1=0x00;
ET1=1;
EA=1;
TR1=1;
}
void it_timer0() interrupt 1
{
uchar counter;
TF0=0;
TH0=0xD8;
TL0=0xF0;
counter++;
if(counter==100)
{
speed=(TH1*256+TL1+65536*cnt_ovtime)/100;
if(speed>=1200)
{
exc_speed=1;
nor_speed=0;
}
else
{
nor_speed=1;
exc_speed=0;
}
TH1=TL1=0x00;
counter=0;
cnt_ovtime=0;
}
}
void it_timer1()interrupt 3
{
TF1=0;
cnt_ovtime++;
}
void WriteDataLcd(uchar wdata)
{
LCD_DATA=wdata;
LCD_RS=1;
LCD_RW=0;
LCD_E=0;
dellay(100);
LCD_E=1;
}
void WriteCommandLcd(uchar wdata)
{
LCD_DATA=wdata;
LCD_RS=0;
LCD_RW=0;
LCD_E=0;
dellay(100);
LCD_E=1;
}
void lcd_init(void)
{
LCD_DATA=0;
WriteCommandLcd(0x38);
dellay(1000);
WriteCommandLcd(0x38);
WriteCommandLcd(0x08);
WriteCommandLcd(0x01);
WriteCommandLcd(0x06);
WriteCommandLcd(0x0c);
}
void display_xy(uchar x,uchar y)
{
if(y==1)
x+=0x40;
x+=0x80;
WriteCommandLcd(x);
}
void display_char(uchar x,uchar y,uchar dat)
{
display_xy(x,y);
WriteDataLcd(dat);
}
void display_string(uchar x,uchar y,uchar *s)
{
display_xy(x,y);
while(*s)
{
WriteDataLcd(*s);
s++;
}
}
void main()
{
lcd_init();
init_timer0();
init_timer1();
if(test)
{
P3 |=0x07;
display_string(0,0,"Life is precious!");
display_string(0,1,"Safe Driving!");
delay_ms(2000);
P3 &=~0x07;
lcd_init();
test=0;
normal=1;
delay_ms(2000);
}
if(normal)
{
while(1)
{
if(nor_speed)
{
P3 |=0x01;
P3 &=~0x06;
display_string(0,0,"Speed:");
dis[3]=speed/1000;
dis[4]=speed%1000;
dis[2]=dis[4]/100;
dis[4]=dis[4]%100;
dis[1]=dis[4]/10;
dis[0]=dis[4]%10;
if(dis[3]!=0)
{
display_char(6,0,dis[3]+0x30);
}
else
{
display_char(6,0,0xA0);
}
display_char(7,0,dis[2]+0x30);
display_char(8,0,dis[1]+0x30);
display_char(10,0,dis[0]+0x30);
display_string(9,0,".");
display_string(11,0,"km/h");
display_string(0,1,"Status:Normal");
}
if(exc_speed)
{
display_string(0,0,"Speed:");
dis[3]=speed/1000;
dis[4]=speed%1000;
dis[2]=dis[4]/100;
dis[4]=dis[4]%100;
dis[1]=dis[4]/10;
dis[0]=dis[4]%10;
if(dis[3]!=0)
{
display_char(6,0,dis[3]+0x30);
}
else
{
display_char(6,0,0xA0);
}
display_char(7,0,dis[2]+0x30);
display_char(8,0,dis[1]+0x30);
display_char(10,0,dis[0]+0x30);
display_string(9,0,".");
display_string(11,0,"km/h");
display_string(0,1,"Status:Speeding!");
P3 &=~0x01;
P3 |=0x06;
delay_ms(500);
display_string(0,1,"Warning!");
P3 &=~0x06;
delay_ms(500);
}
}
}
}



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:327088 發(fā)表于 2018-5-11 21:38 | 只看該作者
生成hex文件了嗎?生成hex文件后需要將程序添加到單片機(jī)中運(yùn)行
回復(fù)

使用道具 舉報(bào)

板凳
ID:308479 發(fā)表于 2018-5-12 00:32 | 只看該作者
lcd接線接完了嗎?
回復(fù)

使用道具 舉報(bào)

地板
ID:327962 發(fā)表于 2018-5-12 12:50 來自觸屏版 | 只看該作者
防真軟件一點(diǎn)都不靠譜
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表