历史上的今天
今天是:2024年12月20日(星期五)
2021年12月20日 | 出租车计价器的项目设计
2021-12-20 来源:eefocus
最近接到一个项目,是位一款出租车计价器设计一套软硬件系统
我用51单片机设计了一个方案,效果还不错,欢迎大家共同留言学习,讨论
废话不多说,先上实物图

AD设计原理图


出租车计价器元件清单
元件名称 单位(只) 型号 参数 备注
单片机 2 AT89S52
整流二极管 20 IN4007
电容 10 30P
电容 10 104
电解电容 8 100UF/50V
电解电容 2 220UF/50V
电解电容 10 10UF/25
微动开关(按钮) 12
74ls164 8
自锁开关 2 (白色,六脚的)
排针 2排
晶振 2 11.0592M
精调电阻 5 103 3296W 10K
排线 1米 20p
稳压管 2 LM7805
稳压管 2 LM7812
焊锡丝 若干
散热片 3 YB-20
三极管 20个 2TY 贴片(PNP)
万能板 3块
掉电保护 2 24c02
L298N 2
七段数码管 8 LG5011BSR
光耦 2 TP521-4
接线端子 8个 2P
管座 5 40P
管座 5 16P
热缩管 1米 直径1.5mm
铜柱 8 长20mm
直流电机 1
电源线 1
变压器 1
深度传感器 3 MOCH26A
驱动 1 L297和L292
C语言代码源程序
#include #include #include #define uchar unsigned char sbit P3_4=P3^4; sbit jia=P2^0;//价格加 sbit jian=P2^1;//价格减 sbit gl=P2^2; //公里 sbit hp=P2^3; //换屏 sbit j=P2^4;//记数 unsigned char keycnt=0; unsigned char cnt=0; bit write=0; //写24C08 的标志; //code uchar tab[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,}; //code uchar tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,}; code uchar tab[10]={0xbf,0x06,0xdb,0xcf,0x66,0xed,0xfd,0x87,0xff,0xef,}; uchar sz[6]; int yw,ww,qw,bw,sw,gw,a,b,c,d,e,f,g,u,v,w,z; d=46; //单价 e=00; //公里数 f=05; u=12;//时 v=00;//分 w=00;//秒 //jiage=d*e; //金额 /24C08 读写驱动程序 sbit scl=P3^4; // 24c08 SCL sbit sda=P3^5; // 24c08 SDA void delay1(unsigned char x) { unsigned int i; for(i=0;i void flash() { ; ; } void x24c08_init() //24c08 初始化子程序 {scl=1; flash(); sda=1; flash();} void start() //启动(I方C)总线 {sda=1; flash(); scl=1; flash(); sda=0; flash(); scl=0; flash();} void stop() //停止(I方C)总线 {sda=0; flash(); scl=1; flash(); sda=1; flash();} void writex(unsigned char j) //写一个字节 { unsigned char i,temp; temp=j; for (i=0;i<8;i++) {temp=temp<<1; scl=0; flash(); sda=CY; flash(); scl=1; flash();} scl=0; flash(); sda=1; flash(); } unsigned char readx() //读一个字节 { unsigned char i,j,k=0; scl=0; flash(); sda=1; for (i=0;i<8;i++) { flash(); scl=1; flash(); if (sda1) j=1; else j=0; k=(k<<1)|j; scl=0;} flash(); return(k); } void clock() //(I方C)线时钟 { unsigned char i=0; scl=1; flash(); while ((sda1)&&(i<255))i++; scl=0; flash(); } 从24c02 的地址address 中读取一个字节数据/ unsigned char x24c08_read(unsigned char address) { unsigned char i; start(); writex(0xa0); clock(); writex(address); clock(); start(); writex(0xa1); clock(); i=readx(); stop(); delay1(10); return(i); } //向24c02 的address 地址中写入一字节数据info/ void x24c08_write(unsigned char address,unsigned char info) { EA=0; start(); writex(0xa0); clock(); writex(address); clock(); writex(info); clock(); stop(); EA=1; delay1(50); } /24C08 读写驱动程序完/ void Delay(unsigned int tc) //延时程序 { while( tc != 0 ) {unsigned int i; for(i=0; i<100; i++); tc–;} } / void jishuqi() { if(j0) { cnt++; switch(cnt) { case 30: e++; cnt=0; break; while(hp0); } } } void disp(void) { for(c=5;c>=0;c–) { SBUF=tab[sz[c]]; while(!TI); TI=0; } } /*void KEY() //按键扫描程序 { unsigned char i,j; if(jian==0) { for(i=20;i>0;i–) //延时去干扰 for(j=248;j>0;j–); if(hp==0) { keycnt++; switch(keycnt) //按下次数判断 { case 1: //第一次按下 d=46; break; case 2: //第二次按下 d=12; break; case 3: //第三次按下 d=78; keycnt=0; //重新开始判断键值 break; } while(hp==0); } } }*/ void shizhong(void) { z=TH0*256+TL0; if(z>1) { w++;z=0; } if(w>59) { v++;w=0; } if(v>59) { u++;v=0; } if(u>23) { u=0; } } void led(void) //显示时间 { if(jian0) { u++; } if(gl0) { v++; } if(hp==0) { w++; } qw=sz[0]=u/10%10; bw=sz[1]=u%10; sw=sz[2]=v/10%10; gw=sz[3]=v%10; yw=sz[4]=w/10%10; ww=sz[5]=w%10; } void led1(void) //显示 价格 里程 金额 { //KEY(); if(jian0) { d=46; } if(gl0) { d=78; } if(hp==0) { e=00; f=05; } qw=sz[0]=d/10%10; bw=sz[1]=d%10; sw=sz[2]=e/10%10; gw=sz[3]=e%10; yw=sz[4]=f/10%10; ww=sz[5]=f%10; jishuqi(); x24c08_write(2,e); } void scjs(void)interrupt 3 { TH1=0X3C; TL1=0xB0; a=a+1; if(a12) { a=0; P3_4=!P3_4; if(P3_40) { //b=TH0256+TL0; //f=5; / if(jia==0) {d++;} if(jian==0) {d–;} if(gl==0) {e++;} */ if(e>3) { g=(e-3)*d/10+5; f=g; } shizhong(); if(jia==0) 鉴于篇幅限制,只能写部分代码,
下一篇:无线充电检测与控制电路
史海拾趣
|
在测量、控制等领域的应用中,常要求单片机内部和外部RAM中的数据在电源掉电时不丢失,重新加电时,RAM中的数据能够保存完好,这就要求对单片机系统加接掉电保护电路。掉电保护通常可采用以下三种方法:一是加接不间断电源,让整个系统在掉电 ...… 查看全部问答> |
|
<汇编器提示> COPYRIGHT MANLEY ELECTRONICS CO., LTD. 2001-2006 <汇编器提示> ASSEMBLY COMPLETE. 0 WARNING(S), 1 ERROR(S) ERROR #14 IN 560 (VCJPDH.ASM, LINE 560): TAR ...… 查看全部问答> |
|
版主,我有问题请教: 我用ST—LINK在线调试芯片,程序烧录进MCU一次后,再次连接时,MCU与ST—LINK链接不上!以后一直连不上。连续两个板子都是一样的情况。 STVD报错:×× Connection error(usb://usb):gdi-error[40701]pt ...… 查看全部问答> |
|
MSP430F541x, MSP430F543x ,MSP430F543xA,MSP430F541x,MSP430F55xxA官方示例代码 附件中代码是TI提供的MSP430F541x, MSP430F543x ,MSP430F543xA,MSP430F541xA, MSP430F55xx 官方示例代码,可以作为MSP430使用过程中最可靠的代码参考 [ 本帖最后由 wstt 于 2012-5-31 20:52 编辑 ]… 查看全部问答> |
|
高性能数据采集系统增强数字X射线和MRI的图像数字X射线 (DXR)、磁共振成像和其他医疗设备要求数据采集系统具备小型、高性能、低功耗等特性,以满足竞争市场上医生、病人和制造商的需求。本文展示一款高精度、低功耗信号链,可解决多通道应用(如数 ...… 查看全部问答> |




