完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include
#include #define unit unsigned int #define unchar unsigned char ***it RS=P2^6; ***it RW=P2^5; ***it E=P2^7; ***it BEEP=P1^5; ***it FM=P3^0; ***it FMQ=P2^3; #define Data P0 char data tadle[]="level:"; char data table[]="speed:"; /********************/ /* 函数声明 */ /********************/ /********************/ /* 微秒延时函数 */ /********************/ void DelayUs(unsigned char us) { unsigned char uscnt; uscnt=us>>1; while(-uscnt); } void waring() { BEEP=~BEEP; } /********************/ /* 毫秒函数声明 */ /********************/ void DelayMs(unsigned char ms) { while(--ms) { DelayUs(250); DelayUs(250); DelayUs(250); DelayUs(250); } } /********************/ /* 写入命令函数 */ void Writecommand(unsigned char c) { DelayMs(5); E=0; RS=0; RW=0; _nop_(); E=1; Data=c; E=0; } /********************/ /* 写入数据函数 */ /********************/ void WriteData(unsigned char c) { DelayMs(5); E=0; RS=1; RW=0; _nop_(); E=1; Data=c; E=0; RS=0; } /*******************/ /* 初始化函数 */ /*******************/ void InitLcd() { DelayMs(15); WriteCommand(0x38); WriteCommand(0x38); WriteCommand(0x38); WriteCommand(0x06); WriteCommand(0x0c); WriteCommand(0x01); } ***it TRING=P2^0; ***it ECH0=P2^1; uchar ;flag,flag1,i; void cheak_distanceinit() { TMOD=0x11; TH0=0; TL0=0; TH1=(65536-15)/256; TL1=(65536-15)%256; EA=1; ET0=1; ET1=1; TR0=1; TR1=0; flag=0; ECH0=0; TRING=0; } void start() { TH1=(65536-15)/15; TL1=(65536-15)%256; TR1=1; TRING=1; while(flag=1); TR1=0; TRING=0; flag=0; flag1=0; } unit cheak_recievetime() { TH0=0; TL0=0; while(flag1==0); { TR0=1; while(ECH0==1)flag=1; ECH0=0; TR0=0; } return TH0*256+TL0; } float count_distance(unit x) { float date; date=(float)x*340/2/10000; return date; } /********************/ /* 主函数 */ /********************/ main() { float dis_date=0; uint time,date1=0,date2=0,baifen,shifen,ge,i,teep; Initlcd(); cheak_distanceinit(); WriteCommand(0x80); for(i=0;i<6;i==) { WriteData(table[i]); DelayMs(10); } WriteCommand(0x80+0x40); for(i=0;i<6;i++) { WriteData(table[i]); DelayMs(10); } while(1) { start(); time=cheak_recievetime(); dis_date=count_distance(time); date1=dis_date; teep=dis_date; if(teep>500) warning(); else BEEP=1; ge=date1/100; shifen=date1/10%10; baifen=date1%10; WriteCommand(0x80+0x07); WriteData(ge+0x30); DelayMs(10); WriteData('.'); WriteData(shifen+0x30); DelayMs(10); WriteData(baifen+0x30); DelayMs(10); } } void start_timer0() interrupt3 { TH1=(65536-12)/256; TL1=(65536-12)%256; flag=1; } #include #include #define uchar unsigned char #define uint unsigned int ***it EOC=P2^0; ***it OE=P2^1; ***it START=P2^2; ***it CLK=P2^3; ***it DP=P1^7; ***it beep=P2^4; ***it red=P2^5; ***it yellow=P2^6; ***it moto=P2^7; ***it xuan1=P3^5; ***it xuan2=P3^6; ***it xuan3=P3^7; Uint DATA; uchar code-tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar adc_data[]={0,0,0,0}; /******************** 函数名称:init() 功能:系统初始化 定时器中断设置 参数:无 返回值:无 ********************/ void init() { TMOD=1; TH0=0xff; TL0=0x38; EA=1; ET0=1; TR0=1; } /******************** 函数名称tim0() interrupt 1 功能:定时器中断为ADC0808提供转换需要的时钟信号 参数:无 返回值:无 ********************/ void tim0() interrupt 1 { TH0=0xff; TL0=0x38; CLK=!CLK; } /******************* 函数名称:delay() 功能:延时函数 大约0.1ms 参数:无 返回值:无 ******************/ void delay(uint i) { uchar j; for(;i>0;i--); for(j=200;j>0;j--); } /****************** 函数名称:display() 功能:数码管显示函数 将电压值显示出来 参数:无 返回值:无 ******************/ void display() { vchar s,f=0xf7; adc_data[0]=DATA/1000; adc_datd[1]=DATA%1000/100; adc_data[2]=DATA%1000%100/10; adc_data[3]=0; for(s=0;s<4;s++) { P1=tab[adc_data[s]]; P3=f; if(s==2) DP=1; delay(10); P1=0; f=_cror_(f,1); } } /***************** 函数名称:upper_limit(uchar i) 功能:水位上限报警 子程序 返回值:无 ******************/ void upper_limit(uchar i) { for(;i>0;i--); { red=1; beep=1; yellow=0; moto=1; delay(1); red=0; beep=0; yellow=0; moto=1; delay(1); } } /***************** 函数名称:lower_limit(uchar i) 功能:水位下限报警 子程序 参数:i用来表示 闪烁数字 返回值:无 ******************/ void lower_limit(uchar i) { for(;i>0;i--) { red=0; beep=1; yellow=1; moto=0; delay(1); red=0; beep=0; yellow=0; moto=0; delay(1); } } /***************** 函数名称:main() 功能: 参数: 返回值:无 ******************/ void main() { uchar s,i; red=0; yellow=0; beep=0; moto=1; xuan1=1; xuan2=1; xuan3=1; init(); while(1) { for(i=2;i>0;i--); { START=1; OE=0; START=0; while(EOC=0); OE=1; s=P0; DATA=s*1.0/255*1500; } display(); if(xuan1==0) { if(DATA<200) { lower_limit(100); } if(DATA>1400) { upper_limit(100); } } if(xuan2==0) { if(DATA<200) { lower_limit(100); } if(DATA>1300) { upper_limit(100); } } if(xuan3==0) { if(DATA<300) { lower_limit(100); } if(DATA>1200) { upper_limit(100); } } } } keil中进行生成hex文件是出现两个错误,求指导。
|
|
相关推荐
1个回答
|
|
1、Writecommand/WriteCommand大小写
2、while(flag=1);应该是while(flag==1); 3、#define unit unsigned int和使用的uint不一样。 亲,这个几个问题和编译器没关系啊! |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
5050 浏览 3 评论
6347 浏览 1 评论
6607 浏览 0 评论
Protues中自己封装的芯片元件无Program File、Clock Frequency选项怎么解决,求求大神了!
8359 浏览 1 评论
基于51单片机的车辆倒车雷达报警系统,HC-SR04超声波测距,全套资料
1248 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 08:03 , Processed in 0.492030 second(s), Total 75, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号