当前位置:文档之家› 北邮小学期电子秤实验报告

北邮小学期电子秤实验报告

2015年小学期单片机设计实验报告题目:计价电子秤班级:20班内序号:实验组号:学生姓名:指导教师:计价电子秤——2013211119班曾霜霜实验摘要本次我们制作的是基于压力传感器的既可显示重物质量又可输入单价计算总价的计价电子秤。

整个系统中,微控制器采用了Microchip公司的PIC16F877A,软件设计中涉及PORTA0作为模拟量输入端;用PORTB作为数字量输入端,连接键盘输入重物的单价;PORTA1-3作为数字输出端口连接液晶屏使能端,PORTC作为数字输出端口连接液晶屏,最终显示重物的种类,单价和总价。

概括的说,本实验是通过压力传感器形变后产生的模拟信号经过数模转换、量化、显示获得重物质量,然后输入单价后进行乘法运算的过程。

A b s t r a c tIn this experiment, we made a denominated electronic scale based on the pressure sensor, which can automatically display the weight of the heavy, input the unit price and even calculate the total price of the heavy. Throughout the system, the production of the Microchip cord--PIC16F877A is used as the microcontroller. Software design involves PORTA0 as simulation input port, the analog signal to the microcontroller and digital to analog conversion, as a digital enable output port to control the screen with PORTA1-PORTA3, using PORTB as the digital input port, connect the 4*4 keyboard input weight unit, PORTC as the digital output port is connected with the LCD screen, display the weight categories, unit price and total value.In summary, this experiment was carried out by the analog signal generated by the pressure sensor deformation after digital to analog conversion, quantization to get the weight display quality, and then enter the unit price after the multiplication process.关键字单片机——microcontroller 芯片——CMOS chip 计价——price calculating压力传感器——pressure sensor 模数转换——analog-digital conversion 一.实验论证与比较1.压力传感器模块1.1设计思想压力传感器是本实验的核心部分。

压力传感器利用形变先将压力信号转化为模拟电信号输出到单片机,再由单片机自身的A\D转换功能将其转化为数字电信号,从而显示出重物的质量。

1.2具体实现1.2.1压力传感器此次选用的是外购的电阻应变式压力传感器,电源电压为5V。

使用时,将压力传感器一端固定在万用板上,将重物放在它的另一端,使压力传感器内部的电阻应变片发生形变,从而改变压力传感器的电阻大小,进而改变通过压力传感器的电流大小,获得随重物质量而改变的模拟电信号。

1.2.2差分放大电路由于压力传感器输出电压过小,为mV级,于是增加了差分放大电路来将输出电压放大到V级,该电路由一个LM324作为差分放大装置,需用±12V的直流电作为驱动,最终放大后的模拟信号从LM324的8管脚传送到PIC16F877A的RA0端口进行模数转换。

此外,该电路通过一个1M的电位计对电源电压进行分压以达到调零的目的,另有一个1K的电位计通过调整LM324的放大倍数以达到压力传感器的校准功能。

1.2.3数模转换及量化经单片机A\D转换后,0~5V的模拟电信号被量化成了0~255的八位二进制数。

对应电子秤的量程5.000kg,将5000分成256份,于是分度值取20g.2.键盘模块2.1设计思想矩阵键盘的操作分为两个部分:一是检测是否有键被按下;二是识别被按下的键是哪一只。

我们采用“反转扫描法”同时实现上述两个部分。

基本思想是:先让行线全部输出逻辑0,接着读取列线,得到与按键横向位置对应的4位列码。

如果有键被按下,对应的列线必然会读回逻辑0,;若无键按下,则读取的列码必定为全1。

当有键按下时,将从列线上读取的列码,再从列线输出,然后再读取行线,得到与按键纵向位置对应的4位行码。

最后,将先后两次读到的行码和列码组合到一起,构成可以准确确定按键位置的位置码。

2.2具体实现我们利用小键盘的0~9以及A、B这12个按键。

数字按键用来输入单价,键A和键B 两个按键分别用来清除已输入的单价和确定已输入的单价。

键盘工作的原理是先将键盘所用的按键每个赋予一个键位码,存在从40H开始的连续地址单元中。

在无按键按下时,键盘输出低电平,而当有按键按下时,对应的输出对应高电平。

利用取反扫描法,检测键盘是否有按键按下,一旦有按键按下,查找其键位码对应的地址,利用间接寻址法,减去40H即可获得输入的按键,再转而输入到LCD上。

3.液晶显示屏模块3.1程序设计思想通常所说的12864LCD显示块是所说的点阵液晶显示模块,就是由128*64个液晶显示点组成的一个128列*64行的阵列,所以也就叫成了12864。

每个显示点都对应着有一位二进制数,0表示灭,1表示亮。

存储这些点阵信息的RAM被称为显示数据存储器。

如果要显示某个图形或汉字就是将相应的点阵信息写入到对应的存储单元中。

图形或汉字的点阵信息是由自己设计,这时候问题的关键是显示点在液晶屏上的位置与其在存储器中的地址之间的关系。

3.2具体实现本实验采用128*64LCD显示屏显示重物的重量、单价、以及计算后的总价。

RS,R/W,E 分别为命令数据选择控制端口,读写控制端口,使能控制端口,将这三个管脚分别连接到单片机的端口PORTA1-PORTA3,从而实现单片机对LCD12864的控制,并口数据DB0-DB7连接到单片机的PORTC0-PORTC7口,实现相互通信。

二.系统总体设计框图系统模块总体框图如下:三.软件设计介绍1.A\D转换及量化由于压力传感器输出的是模拟信号,需要通过单片机自身的ADC模块将其转换成数字信号。

在开始A\D转换前,选取PORTA0为模拟输入通道。

只有当模拟信号采集过程完成之后,A\D转换才能开始。

获取到数字信号后,再进行量化进行BCD码存储。

1.1流程图1.2代码分析1.2.1数模转换部分ADtransNOPNOPBSF ADCON0,GO ;开始A\D\转换,在A\D转换后,ADIF位被置1ADWAITBTFSC ADCON0,GO ;等待A\D转换过程结束GOTO ADWAIT ;如果没有转换完毕,则返回继续检测MOVF ADRESH,W ;如果转换完毕,则把A\D结果读到WMOVWF RESULT ;将A\D转换的结果用一个字节存起来CALL BCD ;进行量化1.2.2量化部分BCDCLRF BAICLRF SHICLRF GE ;三位数量化准备MOVF RESULT,FSKPNZ ;RESULT不为0,则跳到QIUBAIRETURNQIUBAIMOVLW D'100' ;对百位进行量化SUBWF RESULT,0BTFSS STATUS,C ;判断量化是否完成GOTO QIUSHI ;已完成则量化十位MOVWF RESULTINCF BAI ;百位加一GOTO QIUBAI ;量化十位以及个位同理QIUSHIMOVLW D'10'SUBWF RESULT,0BTFSS STATUS,CGOTO QIUGEMOVWF RESULTINCF SHIGOTO QIUSHI QIUGEMOVF RESULT,0MOVWF GERETURN2.键盘输入模块框图系统默认输入的单价为0~99之间的整数(即两位整数),当输入单价后,按A键可清除之前输入的数字,按B键则为确认,表示输入单价结束。

2.1流程图2.2代码分析;------------------------------- 检查输入------------------------------CHECKCALL KEYSCANCOMF VALUE,0 ;位置码取反送WBTFSC STATUS,2 ;测试有按键按下否?有,跳过下条指令GOTO CHECKCALL DELAY1CALL KEYSCANCOMF VALUE,0BTFSC STATUS,2GOTO CHECKCALL TRANSLATE ;有按键按下,调用键值翻译子程序RETURN;------------------------ 扫描键盘和按键识别子程序------------------------- 有按键按下时寄存器VALUE=按键位置码;无按键按下时VALUE=0FFH KEYSCANBCF STATUS,RP1BSF STATUS,RP0BCF OPTION_REG,7 ;启动B口上拉电阻MOVLW 0FHMOVWF T RISB ;将端口B设为高4位输出,低4位输入BCF STATUS,RP0 ;MOVLW 00H ;行线全部输出0(高4位)MOVWF P ORTBNOPNOPMOVF PORTB,0ANDLW 0FHMOVWF V ALUEXORLW 0FH ;列码是否全为1?BTFSC STATUS,ZGOTO NOKEY ;是,无按键按下BSF STATUS,RP0MOVLW 0F0HMOVWF T RISB ;将端口B设为高4位输入,低4位输出BCF STATUS,RP0MOVF VALUE,0MOVWF P ORTBNOPNOPMOVF PORTB,0ANDLW 0F0H ;屏蔽掉低4位IORWF VALUE,1 ;行码和列码组合起来并放入VALUERETURNNOKEYMOVLW 0FFHMOVWF V ALUERETURN;------------------------ 扫描键盘和按键识别子程序-------------------------有按键按下时寄存器VALUE=按键位置码;无按键按下时VALUE=0FFH KEYSCANBCF STATUS,RP1BSF STATUS,RP0BCF OPTION_REG,7 ;启动B口上拉电阻MOVLW 0FHMOVWF T RISB ;将端口B设为高4位输出,低4位输入BCF STATUS,RP0 ;MOVLW 00H ;行线全部输出0(高4位)MOVWF P ORTBNOPNOPMOVF PORTB,0ANDLW 0FHMOVWF V ALUEXORLW 0FH ;列码是否全为1?BTFSC STATUS,ZGOTO NOKEY ;是,无按键按下BSF STATUS,RP0MOVLW 0F0HMOVWF T RISB ;将端口B设为高4位输入,低4位输出BCF STATUS,RP0MOVF VALUE,0MOVWF P ORTBNOPNOPMOVF PORTB,0ANDLW 0F0H ;屏蔽掉低4位IORWF VALUE,1 ;行码和列码组合起来并放入VALUERETURNNOKEYMOVLW 0FFHMOVWF V ALUERETURN;------------------------将键盘位置码翻译成对应的数字------------------- TRANSLATEMOVLW 40H ;地址指针FSR设置表头地址MOVWF F SR ;通过寻址访问存放对应字符的码表LOOPT1MOVF 0,0XORWF VALUE,0BTFSC STATUS,2GOTO LOOPT2INCF FSR,1BTFSS FSR,4GOTO LOOPT1RETURN LOOPT2BCF FSR,6RETURN3.计价功能模块3.1 关键思想阐述计价功能的实现,是软件设计的关键。

相关主题