出租车计价器调试报告.docx
- 文档编号:5958141
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:35
- 大小:1.92MB
出租车计价器调试报告.docx
《出租车计价器调试报告.docx》由会员分享,可在线阅读,更多相关《出租车计价器调试报告.docx(35页珍藏版)》请在冰豆网上搜索。
出租车计价器调试报告
出租车计价器调试报告
本设计可分为单片机主控模块、键盘、显示器、温度检测、状态指示、时钟日历、语音收录播报、分频器电路、脉冲信号发生器等9部分。
仔细分析系统的工作原理,分别按照模块在系统中的作用,对各个模块分别单独调试,最后形成该系统的用户程序,实现功能要求。
一、接通电源
调试要求:
1.首先仔细检查该系统板的电源和地是否有短路问题,在未接入电源轻快下,使用万用表检验电源和地检查是否短路,如果没有短路,再仔细核查电源极性后予以通电,观察电源指示灯D1是否点亮。
如果电源指示的灯不亮应立即关闭电源,并用手触摸各个芯片,检查是否用某芯片发热。
如果没有发热的器件,很可能是电源指示二极管极性安装错误,或者是该发光二极管的串联电阻阻值偏大。
2.黑板上调试要求:
(1)焊接好电路板加电前,用万用表测量板上Vcc和GND之间的电阻,应大于1KΩ
(2)加电后测量电路板上各电压,应大于4.2V
调试结果:
1.经万用表检验,电路板无短路问题。
2.通电后,D1指示灯点亮。
3.测量Vcc与地之间的电阻,1.14KΩ>1KΩ
4.测量Vcc与地之间的电压:
4.28V>4.20V
二、测试状态指示
本系统中状态指示二极管共有3个,它们分别是D1、D2、D3。
D1是指示电源的,可以在电源接通时直接看到,D2用于指示语音芯片的工作状态,留作语音模块调试时观察。
D3是可以由单片机的引脚控制的。
编写测试D3的程序:
#include
#include
sbita_c=P1^0;
externserial_initial();
main(){
serial_initial();
a_c=0;
while
(1);
}
测试结果:
1.
2.
三、脉冲信号发生器测试
测试要求:
该模块由5G555芯片构成一个多谐振荡器,使用示波器观察该芯片的第3引脚的波形,并调节电位器W1,观察输出波形及频率变化。
测试结果:
调整W1前,f=147.1Hz
调整W1后,f=130.5Hz
四、分频电路测试
测试要求:
该模块由一个4位二进制计数器74HC161和一个多路选择器74HC153构成。
调试时可以利用由5G555芯片构成一个多谐振荡器的输出,或信号发生器作为计数器74HC161的计数输入信号。
值得注意的是控制多路选择器74HC153的S0、S1与单片机调试时所使用的引脚复用,要采取特殊措施才能正确试验检测。
测试结果:
利用函数信号发生器生成一个方波,周期/频率如图:
其在输出端输出的波形为:
=3.881kHz
=1.235kHz
分频功能无误。
五、键盘测试
测试要求:
本系统相对比较简单,仅有5个按键,其中4个为系统功能键,它们分别是S1、S2、S3、S4,另一个是系统复位按键S6。
对于系统复位按键S6可以在上电之后,使用万用表予以检查,按下该按键,单片机的第9脚应该为高电平,释放后应该为点电平。
对于系统功能键,编写如下程序予以测试检查:
#include
#include
#include
#include
#defineSEGMENTXBYTE[0x0c000]
#defineBIT_LEDXBYTE[0x0a000]
voiddisplay();
sbitk1=P1^0;
sbitk2=P1^1;
sbitk3=P1^2;
sbitk4=P1^3;
unsignedchara;
unsigned
chartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0x40,0x00,0x63,0x39,};
voiddelay(unsignedinti);
main()
{
while
(1)
{
if(k1==0)a=0x06;
if(k2==0)a=0x5b;
if(k3==0)a=0x4f;
if(k4==0)a=0x66;
display();
}
}
测试结果:
对于复位键S6,按下前应为低电平,按下后应为高电平
按下前
按下后
对于S1—S4,按下前为高电平,按下后为低电平。
其测试结果均符合预期。
六、动态数码管测试
测试要求:
本系统中的数码管的原理采用的是动态扫描方式,即某一时刻只用一个数码管在显示,利用人的视觉暂留特性,让数码管高速轮流显示,达到完整显示的目的。
编写如下程序进行测试:
#include
#include
#include
#include
#defineSEGMENTXBYTE[0x0c000]
#defineBIT_LEDXBYTE[0x0a000]
voiddisplayhello();
sbitk1=P1^0;
sbitk2=P1^1;
sbitk3=P1^2;
sbitk4=P1^3;
unsignedchara;
unsignedchartable[]={0x06,0x06,0x3f,0x3e,0x79,0x6e,0x3f,0x3e,0x7f,0x67,0x40,0x00,0x63,0x39,};
voiddelayms(unsignedinti);
main()
{
while
(1){
displayhello();
}
}
voiddisplayhello()
{
unsignedcharBIT=1;
unsignedinti;
BIT_LED=1;
for(i=0;i<=7;i++)
{
SEGMENT=table[i];
BIT_LED=BIT;
BIT=BIT<<1;
delayms
(1);
}
}
voiddelayms(unsignedinti)
{
unsignedintn;
while(i--){
for(n=0;n<125;n++);
}
}
测试结果:
显示“Iloveyou”
由于是动态显示,所以按下复位键后,只有一个数码管点亮
七、温度传感器测试
测试要求:
本系统使用的是一款单线温度传感器(DS18B20),可将温度穿换成12的数字量,以表示温度。
编写如下程序予以测试检查:
#include
#include
#include
#include
#defineSEGMENTXBYTE[0x0c000]//段码寄存器地址
#defineBIT_LEDXBYTE[0x0a000]//位码寄存器地址
#definefosc11.0592
unsignedchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0x40,0x00,0x63,0x39,};//分别显示0123456789-oC
unsignedchartable1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//分别显示0.1.2.3.4.5.6.7.8.9.
unsignedchartable2[]={0x76,0x79,0x38,0x38,0x3f};
sbitk1=P1^0;
sbitk2=P1^1;
sbitk3=P1^2;
unsignedchardatadisplay_buffer[13];
unsignedcharbdatadata_ds1302;
unsignedchardisbuf[]={0,0,0,0};
sbitk4=P1^3;
sbitTMDAT=P3^4;//温度入口
voiddmsec(unsignedintcount);
voidtmreset(void);//ds18b20reset
voidtmstart(void);//
voidtmrtemp(void);
voidDisbuf(unsignedinttemper);
voiddisplaytemper();
voiddelay(unsignedint);
main()
{
display_buffer[0]=0x01;
display_buffer[1]=0x00;
display_buffer[2]=0x00;
display_buffer[3]=0x08;
display_buffer[4]=0x05;
display_buffer[5]=0x00;
display_buffer[6]=0x01;
display_buffer[7]=0x04;
display_buffer[8]=0x00;
display_buffer[9]=0x05;
display_buffer[10]=0x00;
display_buffer[11]=0x01;
display_buffer[12]=0x04;
while
(1){
tmstart();//ds1820
tmrtemp();
displaytemper();
}
}
voidtmreset(void){//ResetTX
unsignedinti;
TMDAT=0;
i=103;while(i>0)i--;
TMDAT=1;
i=4;while(i>0)i--;
}
voidtmpre(void){
unsignedinti;
while(TMDAT);
while(~TMDAT);
i=4;while(i>0)i--;
}
bittmrbit(void){
unsignedinti;
bitdat;
TMDAT=0;i++;
TMDAT=1;i++;i++;
dat=TMDAT;
i=8;while(i>0)i--;
return(dat);
}
unsignedchartmrbyte(void){
unsignedchari,j,dat;
dat=0;
for(i=1;i<=8;i++){
j=tmrbit();
dat=(j<<7)|(dat>>1);
}
return(dat);
}
voidtmwbyte(unsignedchardat){
unsignedinti;
unsignedcharj;
bittestb;
for(j=1;j<=8;j++){
testb=dat&0x01;
dat=dat>>1;
if(testb){
TMDAT=0;
i++;i++;
TMDAT=1;
i=8;while(i>0)i--;
}
else{
TMDAT=0;
i=8;while(i>0)i--;
TMDAT=1;
i++;i++;
}
}
}
voidtmstart(void){//ds1820
tmreset();
tmpre();
displaytemper();//delay(100);
tmwbyte(0xcc);
tmwbyte(0x44);
}
voidtmrtemp(void){
unsignedchara,xiao,b,y1,y2,y3;
tmreset();
tmpre();
delay
(1);
tmwbyte(0xcc);
tmwbyte(0xbe);
a=tmrbyte();
b=tmrbyte();
xiao=a&0x0f;//小数部分
y1=a>>4;
y2=b<<4;
y3=y1|y2;
if((b&0x0f8)==0x0f8)
{y3=~y3+1;
disbuf[0]=10;//显示符号
disbuf[1]=y3/10;
disbuf[2]=y3%10;
disbuf[3]=xiao*10*0.0625;}
else
disbuf[0]=11;//不显示
disbuf[1]=y3/10;
disbuf[2]=y3%10;
disbuf[3]=xiao*10*0.0625;
}
voiddisplaytemper()//温度显示函数
{
unsignedinti;
unsignedchare=0x01;//<<1;
for(i=1;i<6;i++)
{switch(i)
{
case1:
{SEGMENT=table[disbuf[1]];BIT_LED=e;break;}
case2:
{SEGMENT=table1[disbuf[2]];BIT_LED=e;break;}
case3:
{SEGMENT=table[disbuf[3]];BIT_LED=e;break;}
case4:
{SEGMENT=table[12];BIT_LED=e;break;}
case5:
{SEGMENT=table[13];BIT_LED=e;break;}
}
e=e<<1;
delay(80);
}
BIT_LED=0;
}
voiddelay(unsignedinti)//delay函数
{
while(i--);
}
测试结果:
经传感器及数码管延时,温度重新显示
八、时钟日历测试
测试要求:
本系统使用了时钟日历专用芯片,该芯片是以串行方式实现控制和数据传输的。
编写如下程序进行测试:
#include
#include
#include
#include
#defineSEGMENTXBYTE[0x0c000]//段码寄存器地址
#defineBIT_LEDXBYTE[0x0a000]//位码寄存器地址
#definefosc11.0592
unsignedchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0x40,0x00,0x63,0x39,};
unsignedchartable1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
unsignedchartable2[]={0x76,0x79,0x38,0x38,0x3f};
sbitk1=P1^0;
sbitk2=P1^1;
sbitk3=P1^2;
sbitk4=P1^3;//利用开关量实现切换
//频率变量及子函数预定义
voiddisplayfreq();
voidread_freq();
unsignedchartcount=0,timecount=0;
unsignedlongfreq=0.0;
bitfreqflag=0;
unsignedcharfr[6];
unsignedinti=0,x=0;
//日期变量及子函数预定义
sbitSCL_ds1302=P2^0;
sbitIO_ds1302=P2^1;
sbitRST_ds1302=P2^2;
unsignedchardatadisplay_buffer[13];
unsignedcharbdatadata_ds1302;//传输符
unsignedchardisbuf[]={0,0,0,0};
voidopen_write_bit();
voidinitial_ds1302();
unsignedcharread_ds1302(charcommand);
voidclose_write_bit();
voidread_time();
voidset_time();
voiddelay(unsignedinti);
voiddelayms(unsignedinti);
voiddisplaytime();
voiddisplaydate();
main()
{
initial_ds1302();//上电走时
read_time();//读取当前时间,放到数组中
display_buffer[0]=0x01;
display_buffer[1]=0x05;
display_buffer[2]=0x01;
display_buffer[3]=0x07;
display_buffer[4]=0x04;
display_buffer[5]=0x00;
display_buffer[6]=0x01;
display_buffer[7]=0x06;
display_buffer[8]=0x00;
display_buffer[9]=0x05;
display_buffer[10]=0x00;
display_buffer[11]=0x01;
display_buffer[12]=0x04;
set_time();//设置时间
while
(1)
{
if(k1==0)
{
while
(1){
read_time();
displaytime();
if(k2==0)break;
}
}
read_time();
displaydate();
}
}
voidclose_write_bit()//closewrite
{
unsignedinti;
SCL_ds1302=0;
_nop_();
RST_ds1302=1;
_nop_();
_nop_();
data_ds1302=0x8e;//打开写保护
for(i=1;i<=8;i++)
{
SCL_ds1302=0;
IO_ds1302=(data_ds1302&0x01);
_nop_();
SCL_ds1302=1;
data_ds1302=data_ds1302>>1;
}
data_ds1302=0x80;//关闭写保护
IO_ds1302=0;
for(i=1;i<=8;i++)
{
SCL_ds1302=0;
IO_ds1302=(data_ds1302&0x01);
_nop_();
SCL_ds1302=1;
data_ds1302=data_ds1302>>1;
}
}
voidopen_write_bit()//openwrite
{
unsignedinti;
SCL_ds1302=0;
_nop_();
RST_ds1302=1;
_nop_();_nop_();
data_ds1302=0x8e;
for(i=1;i<=8;i++)
{
SCL_ds1302=0;
IO_ds1302=data_ds1302&0x01;
_nop_();SCL_ds1302=1;
data_ds1302=data_ds1302>>1;
}
data_ds1302=0x00;//0x00,书上为0x80
IO_ds1302=0;
for(i=1;i<=8;i++)
{
SCL_ds1302=0;
IO_ds1302=data_ds1302&0x01;
_nop_();SCL_ds1302=1;
data_ds1302=data_ds1302>>1;
}
}
voidinitial_ds1302()//初始化函数
{
unsignedinti;
SCL_ds1302=0;
_nop_();
RST_ds1302=1;
_nop_();_nop_();
data_ds1302=0x8e;
for(i=1;i<=8;i++)
{
SCL_ds1302=0;
IO_ds1302=data_ds1302&0x01;
_nop_();SCL_ds1302=1;
data_ds1302=data_ds1302>>1;
}
IO_ds1302=0;
data_ds1302=0x00;
for(i=1;i<=8;i++)
{
SCL_ds1302=0;
IO_ds1302=data_ds1302&0x01;
_nop_();SCL_ds1302=1;
data_ds1302=data_ds1302>>1;
}
RST_ds1302=0;
SCL_ds1302=0;
_nop_();
RST_ds1302=1;
_nop_();
_nop_();
data_ds1302=0x90;
for(i=1;i<=8;i++)
{
SCL_ds1302=0;
IO_ds1302=data_ds1302&0x01;
_nop_();SCL_ds1302=1;
data_ds1302=data_ds1302>>1;
}
data_ds1302=0x0a4;
for(i=1;i<=8;i++)
{
SCL_ds1302=0;
IO_ds1302=data_ds1302&0x01;
_nop_();SCL_ds1302=1;
data_ds1302=data_ds1302>>1;
}
RST_ds1302=0;
_nop_();
SCL_ds1302=0;
_nop_();
RST_ds1302=1;
data_ds1302=0x8e;
for(i=1;i<=8;i++)
{
SCL_ds1302=0;
IO_ds1302=data_ds1302&0x01;
_nop_();SCL_ds1302=1;
data_ds1302=data_ds1302>>1;
}
data_ds1302=0x80;
for(i=1;i<=8;i++)
{
SCL_ds1302=0;
IO_ds1302=data_ds1302&0x01;
_nop_();SCL_ds1302=1;
d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 出租车 计价器 调试 报告