1、北邮小学期电子秤实验报告2015年小学期单片机设计实验报告题目:计价电子秤 班 级: 20 班内序号: 实验组号: 学生姓名: 指导教师: 期中检查教师评语指导教师签字: 年 月 日计价电子秤2013211119班 曾霜霜实验摘要 本次我们制作的是基于压力传感器的既可显示重物质量又可输入单价计算总价的计价电子秤。整个系统中,微控制器采用了Microchip公司的PIC16F877A,软件设计中涉及PORTA0作为模拟量输入端;用PORTB作为数字量输入端,连接键盘输入重物的单价;PORTA1-3作为数字输出端口连接液晶屏使能端,PORTC作为数字输出端口连接液晶屏,最终显示重物的种类,单价和总
2、价。概括的说,本实验是通过压力传感器形变后产生的模拟信号经过数模转换、量化、显示获得重物质量,然后输入单价后进行乘法运算的过程。AbstractIn 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 t
3、he 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, us
4、ing 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 sen
5、sor 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设计思想压力传感器是本实验的
6、核心部分。压力传感器利用形变先将压力信号转化为模拟电信号输出到单片机,再由单片机自身的AD转换功能将其转化为数字电信号,从而显示出重物的质量。1.2具体实现1.2.1压力传感器此次选用的是外购的电阻应变式压力传感器,电源电压为5V。使用时,将压力传感器一端固定在万用板上,将重物放在它的另一端,使压力传感器内部的电阻应变片发生形变,从而改变压力传感器的电阻大小,进而改变通过压力传感器的电流大小,获得随重物质量而改变的模拟电信号。1.2.2差分放大电路由于压力传感器输出电压过小,为mV级,于是增加了差分放大电路来将输出电压放大到V级,该电路由一个LM324作为差分放大装置,需用12V的直流电作为驱
7、动,最终放大后的模拟信号从LM324的8管脚传送到PIC16F877A的RA0端口进行模数转换。此外,该电路通过一个1M的电位计对电源电压进行分压以达到调零的目的,另有一个1K的电位计通过调整LM324的放大倍数以达到压力传感器的校准功能。1.2.3数模转换及量化 经单片机AD转换后,05V的模拟电信号被量化成了0255的八位二进制数。对应电子秤的量程5.000kg,将5000分成256份,于是分度值取20g.2.键盘模块2.1设计思想 矩阵键盘的操作分为两个部分:一是检测是否有键被按下;二是识别被按下的键是哪一只。我们采用“反转扫描法”同时实现上述两个部分。基本思想是:先让行线全部输出逻辑0
8、,接着读取列线,得到与按键横向位置对应的4位列码。如果有键被按下,对应的列线必然会读回逻辑0,;若无键按下,则读取的列码必定为全1。当有键按下时,将从列线上读取的列码,再从列线输出,然后再读取行线,得到与按键纵向位置对应的4位行码。最后,将先后两次读到的行码和列码组合到一起,构成可以准确确定按键位置的位置码。2.2具体实现我们利用小键盘的09以及A、B这12个按键。数字按键用来输入单价,键A和键B两个按键分别用来清除已输入的单价和确定已输入的单价。键盘工作的原理是先将键盘所用的按键每个赋予一个键位码,存在从40H开始的连续地址单元中。在无按键按下时,键盘输出低电平,而当有按键按下时,对应的输出
9、对应高电平。利用取反扫描法,检测键盘是否有按键按下,一旦有按键按下,查找其键位码对应的地址,利用间接寻址法,减去40H即可获得输入的按键,再转而输入到LCD上。3.液晶显示屏模块3.1程序设计思想通常所说的12864LCD显示块是所说的点阵液晶显示模块,就是由128*64个液晶显示点组成的一个128列*64行的阵列,所以也就叫成了12864。每个显示点都对应着有一位二进制数,0表示灭,1表示亮。存储这些点阵信息的RAM被称为显示数据存储器。如果要显示某个图形或汉字就是将相应的点阵信息写入到对应的存储单元中。图形或汉字的点阵信息是由自己设计,这时候问题的关键是显示点在液晶屏上的位置与其在存储器中
10、的地址之间的关系。3.2具体实现本实验采用128*64LCD显示屏显示重物的重量、单价、以及计算后的总价。RS,R/W,E分别为命令数据选择控制端口,读写控制端口,使能控制端口,将这三个管脚分别连接到单片机的端口PORTA1-PORTA3,从而实现单片机对LCD12864的控制,并口数据DB0-DB7连接到单片机的PORTC0-PORTC7口,实现相互通信。二系统总体设计框图系统模块总体框图如下: 三软件设计介绍1.AD转换及量化由于压力传感器输出的是模拟信号,需要通过单片机自身的ADC模块将其转换成数字信号。在开始AD转换前,选取PORTA0为模拟输入通道。只有当模拟信号采集过程完成之后,A
11、D转换才能开始。获取到数字信号后,再进行量化进行BCD码存储。1.1流程图1.2代码分析1.2.1数模转换部分ADtrans NOP NOP BSF ADCON0,GO ;开始AD转换,在AD转换后,ADIF位被置1ADWAIT BTFSC ADCON0,GO ;等待AD转换过程结束 GOTO ADWAIT ;如果没有转换完毕,则返回继续检测 MOVF ADRESH,W ;如果转换完毕,则把AD结果读到W MOVWF RESULT ;将AD转换的结果用一个字节存起来 CALL BCD ;进行量化1.2.2量化部分BCDCLRF BAICLRF SHI CLRF GE ;三位数量化准备 MOVF
12、 RESULT,F SKPNZ ;RESULT不为0,则跳到QIUBAIRETURN QIUBAIMOVLW D100 ;对百位进行量化SUBWF RESULT,0 BTFSS STATUS,C ;判断量化是否完成 GOTO QIUSHI ;已完成则量化十位 MOVWF RESULT INCF BAI ;百位加一 GOTO QIUBAI ;量化十位以及个位同理QIUSHI MOVLW D10 SUBWF RESULT,0 BTFSS STATUS,C GOTO QIUGE MOVWF RESULT INCF SHI GOTO QIUSHIQIUGE MOVF RESULT,0 MOVWF GE
13、 RETURN2.键盘输入模块框图 系统默认输入的单价为099之间的整数(即两位整数),当输入单价后,按A键可清除之前输入的数字,按B键则为确认,表示输入单价结束。2.1流程图2.2代码分析;- 检查输入 -CHECK CALL KEYSCAN COMF VALUE,0 ;位置码取反送W BTFSC STATUS,2 ;测试有按键按下否?有,跳过下条指令 GOTO CHECK CALL DELAY1 CALL KEYSCAN COMF VALUE,0 BTFSC STATUS,2 GOTO CHECK CALL TRANSLATE ;有按键按下,调用键值翻译子程序 RETURN;- 扫描键盘和
14、按键识别子程序-有按键按下时寄存器VALUE=按键位置码;无按键按下时VALUE=0FFHKEYSCAN BCF STATUS,RP1 BSF STATUS,RP0 BCF OPTION_REG,7 ;启动B口上拉电阻 MOVLW 0FH MOVWF TRISB ;将端口B设为高4位输出,低4位输入 BCF STATUS,RP0 ; MOVLW 00H ;行线全部输出0(高4位) MOVWF PORTB NOP NOP MOVF PORTB,0 ANDLW 0FH MOVWF VALUE XORLW 0FH ;列码是否全为1? BTFSC STATUS,Z GOTO NOKEY ;是,无按键按
15、下 BSF STATUS,RP0 MOVLW 0F0H MOVWF TRISB ;将端口B设为高4位输入,低4位输出 BCF STATUS,RP0 MOVF VALUE,0 MOVWF PORTB NOP NOP MOVF PORTB,0 ANDLW 0F0H ;屏蔽掉低4位 IORWF VALUE,1 ;行码和列码组合起来并放入VALUE RETURN NOKEY MOVLW 0FFH MOVWF VALUE RETURN;- 扫描键盘和按键识别子程序-有按键按下时寄存器VALUE=按键位置码;无按键按下时VALUE=0FFHKEYSCAN BCF STATUS,RP1 BSF STATUS
16、,RP0 BCF OPTION_REG,7 ;启动B口上拉电阻 MOVLW 0FH MOVWF TRISB ;将端口B设为高4位输出,低4位输入 BCF STATUS,RP0 ; MOVLW 00H ;行线全部输出0(高4位) MOVWF PORTB NOP NOP MOVF PORTB,0 ANDLW 0FH MOVWF VALUE XORLW 0FH ;列码是否全为1? BTFSC STATUS,Z GOTO NOKEY ;是,无按键按下 BSF STATUS,RP0 MOVLW 0F0H MOVWF TRISB ;将端口B设为高4位输入,低4位输出 BCF STATUS,RP0 MOVF
17、 VALUE,0 MOVWF PORTB NOP NOP MOVF PORTB,0 ANDLW 0F0H ;屏蔽掉低4位 IORWF VALUE,1 ;行码和列码组合起来并放入VALUE RETURN NOKEY MOVLW 0FFH MOVWF VALUE RETURN;-将键盘位置码翻译成对应的数字-TRANSLATE MOVLW 40H ;地址指针FSR设置表头地址 MOVWF FSR ;通过寻址访问存放对应字符的码表LOOPT1 MOVF 0,0 XORWF VALUE,0 BTFSC STATUS,2 GOTO LOOPT2 INCF FSR,1 BTFSS FSR,4 GOTO L
18、OOPT1 RETURNLOOPT2 BCF FSR,6 RETURN 3.计价功能模块3.1 关键思想阐述计价功能的实现,是软件设计的关键。此过程涉及到的关键量包括量化后的重物的质量、键盘输入的单价以及最后输出在显示屏的总价。其间关键的算法就是乘法计算。对于重物的质量,获得的是5.000以内的小数,在此做去小数点处理,即为四位整数,转成BCD码后用四个地址分别存储四位。对于输入的单价,先将输入的数码转成对应的数值,然后和重物的质量进行乘法计算获取总价。3.2流程图 3.2.1总价计算 3.2.2乘法运算数字都是通过BCD码的形式逐位存储的。由于本实验最多只会涉及四位数和两位数的乘法计算,故所
19、有乘法计算都是通过循环累加来实现的。3.3代码分析;-BCD量化-ZHUAN MOVLW .19 ;分度值为20 MOVWF MULTI2;19次累加完成*20的整数乘法运算B2 ;逐位累加的过程 MOVF GE,0 ADDWF GE2,0 MOVWF GE2 MOVLW .10 SUBWF GE2,0 BTFSC STATUS,C CALL GEJINYI MOVF SHI,0 ADDWF SHI2,0 MOVWF SHI2 MOVLW .10SUBWF SHI2,0BTFSC STATUS,C CALL SHIJINYIMOVF BAI,0 ADDWF BAI2,0 MOVWF BAI2
20、MOVLW .10 SUBWF BAI2,0 BTFSC STATUS,CCALL BAIJINYIMOVF QIAN,0 ADDWF QIAN2,1DECFSZ MULTI2,1 GOTO B2 RETURN;-进位处理-GEJINYI MOVWF GE2 INCF SHI2 RETURNSHIJINYI MOVWF SHI2 INCF BAI2 RETURNBAIJINYI MOVWF BAI2 INCF QIAN2 RETURN(算总价的乘法运算与称重部分的同理,在此不再赘述)4.LCD液晶显示模块 4.1流程图 4.2代码分析 ;-初始化LCD -INITIALLCD;调用延时,刚上电
21、LCD复位不一定有PIC(196MS) CALL DELAY ;清屏命令,数据指针清零,所有显示清零 MOVLW 01H MOVWF PORTC ;调用写命令程序CALL ENABLE MOVLW 38H MOVWF PORTC CALL ENABLE MOVLW 0CH MOVWF PORTC CALL ENABLE MOVLW 06H MOVWF PORTC CALL ENABLE RETURN;- 显示要求输入的信息-SHOWREQUEST MOVLW 80H MOVWF PORTC CALL ENABLE CALL WRITE MOVLW 90H MOVWF PORTC CALL EN
22、ABLE CALL WRITE1 MOVLW 88H MOVWF PORTC CALL ENABLE CALL WRITE2 MOVLW 98H MOVWF PORTC CALL ENABLE CALL WRITE3 RETURN;- 显示欢迎界面 -WELCOME MOVLW 91H MOVWF PORTC CALL ENABLE CALL WRITE11 MOVLW 89H MOVWF PORTC CALL ENABLE CALL WRITE22 RETURN;-显示第三行- WRITE3 CLRF COUNT WRITE3_A MOVF COUNT,W BSF PCLATH,4 CALL
23、 T3 BCF PCLATH,4MOVWF TMP1 ;送暂存器 INCF COUNT,1 ;偏移地址加1 MOVF TMP1,W ;判断是否显示完所有数据(约定表格做后一个00H做为结束标志) XORLW 00H BTFSC STATUS,Z GOTO ET3 ;全部显示完成 MOVF TMP1,W BSF PCLATH,3 BSF PCLATH,4;没有显示完,把当前查表所得数据送LCD显示 CALL SEND_INS GOTO WRITE3_A ;调用显示程序ET3 NOP RETURN ;子程序返回四硬件系统设计1.系统总体设计 1.1管脚分布图 1.2系统总体连接 1.3硬件设计电路
24、连接图2.压力传感器模块2.1压力传感器与单片机的连接问题压力传感器内部有电阻应变片,其阻值大小会随形变大小而改变,从而产生随压力而变的电信号,再通过差分放大电路放大电信号。因此,压力传感器输出的是模拟信号。想要能够得到数字信号,必须利用PIC16F877A自身的RA端口所带的模数转换功能。经过查阅,决定选取PORTA0为模拟端口。另外在接PORTA0之前必须接一个分压电路,来决定模拟信号的分度值,使输出的数字信号能在想要的范围内。 2.2差分放大电路图 3.LCD液晶显示模块 2.1液晶显示模块 液晶显示模块由LCD板(液晶显示板),PCB板(印刷电路板)和控制驱动电路三部分组成。 2.2与
25、单片机的连接LCD显示屏与单片机的连接较为复杂,使用时,1、15、20管脚均接地;2、17、19管脚接电源电压,4、5、6管脚分别接RA1RA3,714管脚分别接RC0RC7;3管脚用来调节液晶屏亮度,需要在3端口接两个电阻分别接电源和地进行分压,在实际操作时先用电位计调节到合适阻值后用定值电阻代替,最后选取接电源和接地的电阻分别为6.8k和3.3k。具体连接图如下: 4.键盘模块 4.1 键盘行列键值的确定当无键按下时,各行线和各列线相互断开,各列线保持高电平,当有键按下时,则相应的行线和列线相连,识别是哪一个键被按下,通常用行扫描法,即依次对每一行进行扫描,先使被扫描的行为低电平,其它所有
26、的行均为高电平,接着检测各列线的状态(称为列码)。若各列均为高电平,则所按的键不在此行,继续扫描下一行,若列线不全为高电平,则被按的键在此行。根据行码和列码,就可知被按的键的坐标值(又称位置码),根据位置码通过查表就可得到它的键值。 4.2与单片机的连接图五调试过程 本实验是由小组成员分工合作完成的。无论是分块编写还是整合后的整体运行,都伴随着不断地调试。在调试的过程中,虽然遇到了许多的问题,但是也正是这些解决问题的过程,加深了我们对于单片机各模块以及汇编语言的连接。下面列举出一些在调试过程中所遇到的问题。1.LCD液晶显示屏的显示问题1.1 时延不一致导致的冲突 LCD显示屏上电复位需要时间,但是未等到显示屏复位完成单片机就将下一指令传输给LCD屏幕,那么LCD液晶屏就会显示乱码。 起初,面对此问题我们毫无头绪,多次单步调试都能正常显示,然而运行却会出现乱码。因为单步调试的过程中或有充足的时延,并不会引起冲突。我们在图书馆里借的书中有对于LCD液晶屏的介绍,了解到液晶屏上电复位的属性之后,就在程序中添加一个196ms时延,从而解决了冲突的问题,屏幕能够正常显示。1.2按键后显示屏显示乱码由于实验中涉及到键盘输入显示数字的部分,期间出现了很多问题。起初,由于是直接参考课外书中关于LCD液晶屏控制的代码,并没有搞懂代码的意义,尤其是对于使能端的控制,错误的“搬运”
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1