欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
實現數顯油箱程序,大神們幫忙修改修改,跪求!
[打印本頁]
作者:
楊青木
時間:
2018-1-4 22:00
標題:
實現數顯油箱程序,大神們幫忙修改修改,跪求!
#include<reg52.h>
#include<absacc.h>
#include<intrins.h>
typedef unsigned int uint;
typedef unsigned char uchar;
sbit RS=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
sbit BUZZER=P2^3; //蜂鳴器io口
sbit LR=P2^4; //剩余油量過低LED紅燈警告 端口
sbit LG=P2^5; //剩余油量過高LED綠燈警告 端口
sbit EOC=P3^0;
char *t[]={" ","#","##","###","####","#####","######","#######","########","#########","##########"};
unsigned char code Str1[]=" Welcome ! ";
unsigned char code Str2[]=" Please wait ";
void delay_10us(uint n); //10微秒的延時子程序
void delay_50us(uint n); //50微秒的延時子程序
void write_com(uchar com); //寫指令函數
void write_data(uchar dat);//輸入數據函數
void set_xy(uchar x,uchar y); //設置顯示位置
void display(uchar x,uchar y,uchar *s); // 顯示一個字符串函數
void ADC0808(); //ADC0808轉換函數
void TMOD_Init(); //定時器初始化函數
void guodi(); //產生蜂鳴器所需震蕩LED紅
void guogao(); //產生蜂鳴器所需震蕩LED綠
void contrast(x); //比較函數
void main()
{
TMOD_Init(); //初始化定時器
display(0x00, Str1);
display(0x40, Str2);
BUZZER=1;
LR=1;
LG=1;
while(1)
{
uchar n,x,s[4];
int i;
ADC0808(); //不斷地進行數模轉化
contrast(x);
switch(i)
{
case 0: display(0,1,*t),guodi();
case 1: display(0,1,*t);
case 2: display(0,1,*t);
case 3: display(0,1,*t);
case 4: display(0,1,*t);
case 5: display(0,1,*t);
case 6: display(0,1,*t);
case 7: display(0,1,*t);
case 8: display(0,1,*t);
case 9: display(0,1,*t),guogao();
}
for(n=0;n<16;n++)
{
write_data(s
);
}
}
}
void delay_10us(uint n) //10微秒的延時子程序
{
uint i,j;
for(i=n;i>0;i--)
for(j=2;j>0;j--);
}
void delay_50us(uint n) //50微秒的延時子程序
{
uint i,j;
for(i=n;i>0;i--)
for(j=22;j>0;j--);
}
void TMOD_Init()
{
TMOD=0X01;
TH0=0xfc;
TL0=0x18;
EA=1;
ET0=1;
TR0=0;
}
void write_com(uchar com)//寫指令
{
E=0;
RS=0;
RW=0;
P0=com;
delay_50us(10);
E=1;
delay_50us(20);
E=0;
}
void write_data(uchar dat)//輸入數據
{
E=0;
RS=1;
RW=0;
P0=dat; //送數據
delay_50us(10);
E=1;
delay_50us(20);
E=0;
}
void init(void)
{
delay_50us(300); //延時15ms,換算15ms等于300us
write_com(0x38);
delay_50us(100);
write_com(0x38);
delay_50us(100);
write_com(0x38);
write_com(0x38);
write_com(0x08);
write_com(0x01);
write_com(0x06);
write_com(0x0c);
}
void LCD_init(void) //初始化LCD1602
{
delay_10us(20);
write_com(0x38); //設置8位格式,2行,5x7
delay_10us(5);
write_com(0x0c); //整體顯示,關光標,不閃爍
delay_10us(5);
write_com(0x06); //設定輸入方式,增量不移位
delay_10us(5);
write_com(0x01); //清除屏幕顯示
delay_50us(40);
}
void LCD_set_xy(uchar x,uchar y) //設置顯示位置
{
uchar address;
if(y==1)
{
address=0x80+x; //第一行位置
} else {
address=0xc0+x; //第二行位置
}
delay_10us(5);
write_com(address);
}
void display(uchar x,uchar y,uchar *s) //顯示一個字符串函數
{
set_xy(x,y);
delay_10us(5);
while(*s!='\0')
{
write_data(*s);
s++;
}
}
void ADC0808() //adc0808始
{
uchar temp;
uint voldata;
uchar dispbuf[4];
while(1)
{
do
{;}
while(~EOC); //轉換是否完成
temp = ADC0808; //讀出轉換結果
voldata = temp*1.0/255*1000;
dispbuf[3] = voldata%10;
dispbuf[2] = voldata/10%10;
dispbuf[1] = voldata/100%10;
dispbuf[0] = voldata/1000;
}
} //ADC止
void guodi() //產生蜂鳴器所需震蕩LED紅
{
BUZZER=~BUZZER;
LR=~LR;
}
void guogao() //產生蜂鳴器所需震蕩LED綠
{
BUZZER=~BUZZER;
LG=~LG;
}
void contrast(x) //比較函數
{
uint i;
if(0<x<100)i=0;
else if(100<x<200)i=1;
else if(200<x,300)i=2;
else if(300<x<400)i=3;
else if(400<x<500)i=4;
else if(500<x<600)i=5;
else if(600<x<700)i=6;
else if(700<x<800)i=7;
else if(800<x<900)i=8;
else if(900<x<1000)i=9;
}
數顯油箱.png
(70.58 KB, 下載次數: 39)
下載附件
2018-1-4 22:00 上傳
作者:
cjjcjj1
時間:
2018-1-5 10:36
提示:
作者被禁止或刪除 內容自動屏蔽
作者:
村風
時間:
2018-1-5 10:45
這個,要考慮油箱里的油位震蕩產生的波動問題的,不然直接出來靜態的結果用到動態的物體上除了不準確還會數值亂跳,至少,要加阻尼器。
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1