您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 89C52单片机的计程车计价器设计
~1~89C52单片机的计程车计价器设计~2~摘要计程车计价器广泛应用于各出租车上,简单而实用。本课程设计应用52单片机简单实用编程简易的特点,辅助以数码管和LCD12232液晶来模拟计价器。本课程设计主要包括三大模块:1、按键模块;2、LCD12232液晶显示模块;3、数码管显示模块。1、按键模块:计价的开始及暂停,清零等。2、LCD12232液晶显示模块:显示单价,起步价,模式,合计金额。3、数码管显示模块:显示当前车速,公里。关键词:计程车计价器,52单片机,Max7219,LCD12232~3~目录1、总体概述………………………………………………………………………………………..42、电路原理图及工作过程说明………………………………………………………….53、程序流程图…………………………………………………………………………………….64、模块设计过程…………………………………………………………………………………75、源程序清单…………………………………………………………………………………...166、结束语……………………………………………………………………………………………277、参考文献………………………………………………………………………………………..28~4~1、总体概述本计价器设计以52单片机为基础,辅以max7219数码管驱动芯片,lcd液晶显示器实现了简单的计价功能,配合一个开关盒4个按键,实现了早晚模式可选、车速可调,随时开启和暂停以及清零的功能,在模拟汽车变速时用到了该种单片机的外部的两种中断,该计价器采用每隔5秒计费一次,故应用了单片机内部定时器,实现了5秒钟的定时。另外,使用液晶显示屏显示了几个简单的汉字,模拟了真实计价器的特点,同时数码管实时速度的显示和行车公里的显示更能体现计价的过程以及计费的合理性。开关的使用比较真实的模拟了早晚不同经营模式以及不同车速下的计价方式及显示。本次课程设计硬件连接非常简,这主要得益于Max7219串行共阴极数码管动态扫描显示驱动芯片的使用和LCD串行输入显示的使用,大大节省了单片机I/o口,但在程序上增加了一些实现的困难。~5~2、电路原理图及工作过程说明电路图电路工作过程说明:本电路设计以52单片机为核心,扩展了一片Max7219芯片、四个按键以及一个开关,一个8位7段数码管,一个LCD12232显示液晶。简单的工作过程如下:数码管用通过编程只使用了6位,即4、5位显示当前车速,0~3位显示当前行车里程,其中第一位显示小数点。LCD12232液晶则用来显示“模式”、“起价”、“单价”和“金额”,在程序中,首先初始化数码管以及Max7219芯片,使其显示初始设置值,然后用一个do-while循环“检测模式”键,若高电平则为“D”模式,意思是“白天”,若为低电平则为“N”模式,表示“夜间”,在改变模式的同时修改起价,白天模式起价5元,夜间模式起价6元。之后用一个while循环检测“开始/继续”键,一旦检测到按键动作,马上打开定时器,每5s进行一次定时计费中断,在中断中修改当前金额,当前行车里程。另外,设置了两个外部中断,即外中断0和外中断1,用于检测P3.2和P3.3口的点位变化,一但检测到按键动作则进入加速或减速程序,同时修改数码管显示的速度值。之后仍用while循环检测“暂停/清零”按键是否有动作,若有,第一次按下是暂停,再次按下则清零,若不清零则按“开始”键能继续计费。具体程序实现在后面具体介绍。~6~否是是否否否是是是否3、程序流程图主程序流程图10m/s定时中断流程图外部中断程序流程图开始Max7219及LCD初始化设置数码管及LCD显示初始值开始键按下?模式选择显示起价暂停键按下?设置定时器中断、外部中断、初速,开总中断清零键按下?开始键按下?入口Count==500?显示金额,count=0返回入口显示速度Speed++或speed--返回~7~4、模块设计过程(1)按键及开关实验板上按键及开关电路图如下图:开关按键程序中用到一个开关和4个按键。开关用于模式选择,具体用以do—while循环实现:do{if(key==1){模式“D”}if(key==0){模式“N”}key=day_night;}while(开始键未按下);对于按键,主要就是while循环来检测按键是否按下:while(clear_key);这句话在程序中的意思是:当清零键按下时,计费进入暂停状态,否则一直循环,~8~此过程有定时中断和外部中断。(2)数码管实验用到的数码管是由Max7219芯片驱动的,该芯片相关资料如下:MAX7219芯片是一款串行共阴极数码管动态扫描显示驱动芯片,仅使用3线串行接口即可传送数据,用户可以方便地修改其内部参数以实现多位LED显示。它内含硬件动态扫描显示控制电路,每片芯片可同时驱动8位共阴极LED或64个独立的LED。当多片MAX7219级联时,可控制更多LED。MAX7219内部主要包括移位寄存器、控制寄存器、译码器、数位驱动器、段驱动器以及亮度调节和多路扫描电路等。MAX7219采用串行接口方式,只需要LOAD、DIN、CLK三个引脚便可实现数据的串行传送。MAX7219的16位串行数据(D0—D15)的作用如表2—1所示表2-1MAX7219的16位串行数据D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0无关比特地址数据位其中,低8位表示数据本身,最高的4位D15-D12为无关比特,D11-D8用于寻址4个内部寄存器。16位中最先接收的是最高有效位D15。MAX7219的数据传送时序如图2-1所示DIN引脚上的16位串行输入数据在每个CLK的上升沿被移入到内部16位寄存器中,此过程不受LOAD状态的影响。然后,在LOAD的上升沿,数据被锁存到数据或控制寄存器中。注意,LOAD必须在第16个时钟上升沿到来之后,第17个时钟上升沿之前变高,否则将会丢失数据。DIN端的数据通过移位寄存器传送,并在16.5个时钟周期后出现在DOUT端,在CLK的下降沿输出。对于MAX7219的寄存器寻址,表2-2列出了它的寄存器地址映射。表2-2MAX7219寄存器地址映射寄存器地址16进制码D15-D12D11D10D9D8无操作寄存器X0000X0数位0寄存器X0001X1数位1寄存器X0010X2数位2寄存器X0011X3数位3寄存器X0100X4数位4寄存器X0101X5数位5寄存器X0110X6数位6寄存器X0111X7数位7寄存器X1000X8译码方式寄存器X1001X9亮度调整寄存器X1010XA扫描位数寄存器X1011XB低功耗模式寄存器X1100XC显示测试寄存器X1111XF无操作寄存器用于多片MAX7219的级联。亮度调整寄存器用于显示亮度的数字化调整。~9~低功耗模式寄存器控制字节中的最低位,D0=0时,为低功耗模式;D0=1时,为正常操作模式。译码方式控制寄存器可以设置每个数位工作于BCD译码方式,或者非译码方式。控制字节的8位正好对应8个数位,该位为1表示该数位工作于BCD码方式,为0表示数位工作于非译码方式。当选择非译码方式时,数据位D7-D0分别对应于7段LED数码管的DP、A-G段。因此,数字“0-9”对应于数据“0x7e、0x30、0x6d、0x79、0x33、0x5b、0x70、0x7f、0x7b”,字母“A-F、P、U”对应于数据位“0x77、0x1f、0x4e、0x3d、0x4f、0x47、0x67、0x3e”。当选择BCD译码方式时,数码管显示字符、数位寄存器的值和7段LED管点亮段的对应关系如表所示。数码管显示字符数位寄存器的值点亮(1)与暗(0)的段D7D6-D4D3D2D1D0DPABCDEFG0X000011111101X000101100002X001011011013X001111110014X010001100115X010110110116X011010111117X011111100008X100011111119X10011111011—X10100000001EX10111001111HX11000110111LX11010001110PX11101100111空字符X11110000000以下是根据上面的资料写的串行输入程序for(i=0;i8;i++){temp=ch&0x80;//将一个字符8位数据位一位一位输入ch=ch1;if(temp){max7219_din=1;max7219_clk=0;//时钟先给高电平,再给低电平max7219_clk=1;}~10~else{max7219_din=0;max7219_clk=0;max7219_clk=1;}}}(3)LCD12232OCM12232C-1可以显示字母、数字符号、中文字型及图形,具有绘图及文字画面混合显示功能。提供三种控制接口,分别是8位微处理器接口,4位微处理器接口及串行接口。所有的功能,包含显示RAM,字型产生器,都包含在一个芯片里面,只要一个最小的微处理系统,就可以方便操作模块。内置2M-位中文字型ROM(CGROM)总共提供8192个中文字型(16x16点阵),16K-位半宽字型ROM(HCGROM)总共提供126个符号字型(16x8点阵),64x16-位字型产生RAM(CGRAM),另外绘图显示画面提供一个64x256点的绘图区域(GDRAM),可以和文字画面混和显示。提供多功能指令:画面清除(Displayclear)、光标归位(Returnhome)、显示打开/关闭(Displayon/off)、光标显示/隐藏(Cursoron/off)、显示字符闪烁(Displaycharacterblink)、光标移位(Cursorshift)、显示移位(Displayshift)、垂直画面卷动(Verticallinescroll)、反白显示(By_linereversedisplay)、待命模式(Standbymode)。OCM12232C-1有并行和串行两种模式,在C3与R8间有3个焊接点,连P点与中间点为并行模式,连S点与中间点为串行模式。在本电路板中考虑到唐都实验箱中留有的端口有限,选用的是OCM12232C-1的串行模式来进行数据、图形、文字的显示。其引脚功能说明如下表3-1所示:表3-1引脚说明~11~串行接口与串行传输资料:当PSB脚接低电位时,模块将进入串行模式。从一个完整的串行传输流程来看,一开始先传输启始字节,它需先接收到五个连续的〝1〞(同步位字符串),在启始字节,此时传输计数将被重置并且串行传输将被同步,再跟随的两个位字符串分别指定传输方向位(RW)及寄存器选择位(RS),最后第八的位则为〝0〞。在接收到同步位及RW和RS资料的启始字节后,每一个八位的指令将被分为两个字节接收到:较高4位(DB7~DB4)的指令资料将会被放在第一个字节的LSB部分,而较低4位(DB3~DB0)的指令资料则会被放在第二个字节的LSB部分,至于相关的另四位则都为0。串行传输讯号请参考图3-1说明:图3-1串行传输讯号图串行接口时序图如图3-2所示:~12~图3-2串行接口时序图用户指令集分基本指令集(RE=0)和扩充指令集(RE=1),分别如表3-2、表3-3所示表3-2(RE=0,基本指令集)备注:1、当模块在接受指令前,微处理顺必须先确认模块内部处于非忙碌状态,即读取BF标志时BF需为0,方可接受新的指令;如果在送出一个指令前并不检查BF标志,那幺在前一个指令和这个指令中间必须延迟一段较长的时间,即是等待前一个指令确实执行完成,指令执行的时间请参考指令表中的个别指令说明。2、“RE”为基本指令集与扩充指令集的选择控制位,当变更“RE”位后,往后的指令集将维持在最后的状态,除非再次变更“RE”位,否则使用相同指令集时,不需每次重设“RE”位。具体指令介绍:~13~~14~汉字字符显示坐标液晶显示步骤:1、显示资料RAM(DDRAM)显示数据RAM提供64x2个字节的空间
本文标题:89C52单片机的计程车计价器设计
链接地址:https://www.777doc.com/doc-3259749 .html