小学期单片机实验_第1页
小学期单片机实验_第2页
小学期单片机实验_第3页
小学期单片机实验_第4页
小学期单片机实验_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2015年小学期单片机设计实验报告题目:基于压力传感器的可计算价格电子称班 级: 2013211123 班内序号: 21 学生姓名: 郑阳 指导教师: 葛顺明 实验摘要本次我们制作的基于压力传感器的可计算价格电子称除可以称出重物重量外还可以对其输入单价并计算其总价格。我们应用PIC16F877型号的单片机,软件方面应用汇编语言并在MPLAB上实现。将模拟电信号传给单片机并进行数模转换。可实现的功能有实现小数点运算,称重,显示总价,删除错误单价,清屏以及去皮称重功能。Abstract In this experiment, we made a electric scale based on th

2、e pressure sensor. It can automatically get the weight of the heavy on it, and calculate the whole price of the heavy according to the weight and the single price we designed for the heavy. We applicant the production of the PIC16F877 as the microcontroller.As the software, we use assembler language

3、 and realize it on MPLAB. We put the analog signal to the microcontroller and digital to analog conversion, We can achieve five appliances such as decimal point operation, weighing, display the price on the scene, delete wrong unit price, clear the scene and peeling weight function.关键字单片机microcontro

4、ller 芯片CMOS chip压力传感器pressure sensor 模数转换analog-digital conversion一. 实验论证与比较 1.系统总体模块本实验主要分为三大模块,分别为压力传感器模块、键盘模块、LCD显示屏模块。压力传感器模块输出一个电压,单片机对这个电压进行采样,量化成二进制进行处理。键盘模块可以通过单片机输入数值或相应的功能指令实现相应功能。LCD显示屏显示单片机处理的结果,让人能够直观地得到该得到的信息。大致连接如下:单片机PIC877 压力传感器 LCD显示屏 小键盘 2.压力传感器模块电子称利用压力传感器先将外物压力信号转化为模拟电信号,再借由单片机通

5、过模数转换将其转化为数字电信号并进行输出以达到显示重物重量的功能。在这里,我们采用的压力传感器的量程是5公斤,一公斤/一毫伏的比例情况。实验之前我们通过查找资料,决定用图一的实验电路图。图一:压力传感器模块内部电路但经过实验电路的搭建,我们发现这只是理想状态下的理想电路,因为我们的直流电源的输出都不稳定,其次,我们的压力传感器比较敏感,所以总会受到外界环境的干扰。最重要的一点就是这个电路内部会产生交流电,而我们需要输出的是模拟直流电信号。所以经过我们的综合考虑,我们决定完善这个电路。通过进一步仿真和电阻的匹配,我们最后决定搭建图二所示电路图二:压力传感器模块最终电路 压力传感器 输出一个毫伏级

6、的电压 差分放大电路 输出一个几百毫伏级的电压RC低通滤波器 滤除50HZ以下的交流 射极跟随器 输出给单片机a)电路图各个部分的作用1)首先,压力传感器把压力转换成为毫伏级的差模电压信号,它的输出电压与所加压力成正比例。其中,压力传感器的红黑管脚接稳压源,绿色管脚接输入的(+),白色管脚接输出的(-),我们VCC定为5V。2)其次,我们选择LM324N作为运放装置,它由4个独立的LM324工作。LM324N的内部原理图由图三所示。其中两个LM324作为差分放大装置将获得的mV为单位的电信号放大到以V为单位的模拟电信号,要用±5V的双电源直流电作为驱动。为了提高输入阻抗,所以采用同相

7、输入端加入差模电压。从1管脚,7管脚的输出电压分别接到9管脚,10管脚上。这里仍采用同相放大。这里的两个电位计,大电阻的电位计起到抬高电压的作用,同时对电源电压进行分压,起到调零作用,使电路能够更加稳定,小电阻的电位器用来调整放大倍数,电阻越小,显示电压越大。之后差分放大电路后面接一个射极跟随器,起到一个隔离的作用。图三:LM324N的内部原理图3)得到的模拟信号从LM324的8管脚出来,因为电路中有交流电产生,所以我们设计一个RC低通滤波器。它可以滤掉电路中所有的交流电,保证输出的是干净的直流信号。最后我们再接一个射极跟随器,起到单片机和放大电路的隔离作用。如果不隔离,单片机会对电路造成很大

8、影响,使放大电路失去作用,所以我们又加一个电压跟随器。最后放大到几百毫伏的模拟电压经过14管脚输出。我们把输出了解到PORTA的RA0管脚。PIC16F877的PORTA总共有6个位(RA0RA5),PORTA的接脚可作为数字输出输入端口,而系统重置后,PORTA自动成为模拟输入状态,可读取模拟输入讯号。这里我们电路把RA0设为模拟信号,其余PORTA端口均为数字信号。4)在电子称工作时,将压力传感器一端固定住,这一点非常重要。我们刚开始拿到压力传感器就不知道如何测压力一直以为是压力传感器有问题,后来无意之中实验了一下固定住一边压下另一边,万用表示数变化明显,我们才找到正确使用的方法,将重物放

9、在它的另一端,使压力传感器内部的电阻应变片发生形变,从而改变压力传感器的电阻大小,进而改变通过压力传感器的电流大小,获得随重物质量而改变的模拟电信号。3.键盘模块我们利用了小键盘的09以及A、B、C、D、E、F等所有16个按键。数字按键用来输入单价,A键用于输入小数点,B键用于称重(按下后屏幕显示重物的重量),C键是确认键(按下后屏幕显示重物的总价),D键是删除键(若输入单价时输入错误,按下此键即可删除上一次输入的数),E键是清屏键(按下后显示屏清除所有显示信息,光标回到初始位置,等待下一次称重),F键是去皮键(按下后显示屏会显示重物的净重)。键盘工作的原理是先将第一行置低电平,逐列检查列线的

10、状态,若有一列得到低电平,则代表此列与第一行的交点被按下,若无一列得到低电平,再将第二行置为低电平,重复上述操作直到有一列得到低电平。下图为4*4键盘电路图。4.液晶屏模块液晶屏最重要便是操作的时序图,换句话说,给液晶屏指令和让液晶屏显示数据是两种不同的操作,通过使能端的上升沿或者下降沿来实现。如下图此外,要在液晶屏上显示东西,先要清屏、设置液晶屏显示的格式(如从左至右显示)、设置显示地址等等,而这些指令从任何一个LCD1602的数据手册中都可以查到。如下图序号指令RSR/WD7D6D5D4D3D2D1D01清显示000000000102光标返回000000001*3置输入模式00000001

11、I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容知道了这个,液晶屏就比较简单了,如想要显示数字5,那么就把数字5在液晶屏自带的编码表中的地址传给液晶屏,输出就好。当然为了方便起见,我们可以按顺序把0-9的地址存到一个表中,利用查表函数(间接寻址),这样调用这个查表函数,是数字几就会返回数字几的地址,非常方便

12、。再加上一些必要的延时,这就是液晶屏的基本原理和实现方法。二.系统总体设计1.系统模块总体框图 开始 去皮一. 称重 净重 清屏 输入单价 确认 得出总价 2. 设计思路 开始 扫描键盘 十次采样取平均显示重量 按键实现功能 继续扫描按键因为发的键盘除了数字之外还有A B C D E F六个按键,我们考虑实现最有用的六个功能。第一想到的是小数点,结合菜市场的电子称,输入价格的时候必然要输入小数,而且小数点往往是和数字一起输入,因此我们把A键确定为小数点功能。考虑到我们不能一直让单片机进行采样,而且采样结束后不需要一直采样,因此我们把B键设为开始采样,按下去额的效果便是可以显示出称重的质量。因为

13、最后我们将要输入价格,得出总价,必然需要一个键为确定输入完价格,这便是我们的C键。输入价格的过程中可能有错误,因此D键是删除输的数或小数点的功能。一次称重过后进行下一次称重,或者当程序出现bug时要能恢复初始化,这便是我们E键的功能,也就是清屏。想到一般电子称都有去皮的功能,就是第一次称容器的质量,第二次称总的质量,最后自动减得实际需要的质量,我们把最后一个功能留给了去皮。到此,所有的功能都分配完了。在实际的编程过程中,最花费我们时间的事是用键盘输入数字在液晶屏显示的部分,这一部分是整个编程的基础,实现了它之后,我们就解决了键盘控制和液晶屏显示的问题,后面的功能就只是思维的问题了,由于当时对单

14、片机和汇编语言不熟悉,这一部分也花了我们很久,突破了这一部分,后面我们就势如破竹了。AD采样是我们完成了所有的功能后最后做的工作,因为知道这是单片机自带的功能,比较简单,最后为了提高精确度,我们做了两个改进。一是从原来只利用AD采样的高八位(ADRE)舍去低两位,而改为了提高4倍的分辨率,我们没有舍去最后两位,把采样的十位都利用了。二是采样之间由于电路不是很稳定而有一定差异,于是我们连续采样十次,并取平均值,提高了准确度。3. 扫描键盘模块 开始扫描(K=0) 第K行置零 K=K+1 K<5 依次扫描4列 没有一列为零 有一列为零相应赋值与显示键盘的功能是要输入数字和实现功能键,人按下数

15、字键与功能键想让单片机读懂自己按下后想实现的功能,而键盘按键按下的本质是该按键所在的行与列导通,通过代码依次将行置为低电平,由于按下的按键所在的行与列导通,肯定有一列得到低电平,因此可以确定是哪行哪列导通。然后通过键盘位置码赋予单片机相应的键值或调用相应的功能函数。4. 键盘控制液晶屏实现 扫描键盘 依次置行为低电平,扫描列的状态 确定按下的键 调用按下的键的函数调用查表函数返回地址通过write3函数显示在显示屏上连接这一部分最难的就是不知道键盘按下的到底是什么,怎么把这个不确定的东西在编码表中的地址传给液晶屏显示输出。不过当我们采用了逐次扫描的方法扫描键盘时,这个问题就迎刃而解了。如果按下

16、的数字是1,我们就直接调用1的函数,1的函数就可以直接调用查表函数返回地址,通过write3函数显示输出。5. 按下B键(称重)B键的功能是开始称重,主要的函数构成是adstart函数,hebing 函数,leijia函数,pingjun函数,toc转换函数,show函数。下面分别介绍一下每个函数的大致意义和实现方法。Adstart函数此函数的功能便是开始ad采样,在主函数最开始的时候已经做好了ad采样准备,包括设置模拟输入口,选择模拟通道,系统时钟等。再采样结束后,将adresh的值送入resulth,将adresl的值送入resultl,并且通过jian函数减去由于直流偏置带来的起始电压,

17、再通过zhilin函数判断当采样的值小于起始值时,强制令采样值为0,以免发生错误。之后调用hebing函数和leijia函数。设置一个循环,令adcaiyang值为10,直到adcaiyang为0时,停止采样。Hebing函数 采样 十位二进制高两位转化BCD码并乘256低八位转化为BCD码 相加得到一个完整的BCD码此函数是为了将采样的10位二进制全部利用,又分为三个函数,一是bcd,二是hebing1,三是hebing2.因为十位的采样值不可能用一个八位二进制表示,所以我们用十进制来表示,分配4个空间,分别是qian,bai,shi,ge.第一步先将低八位(二进制)转换为十进制,如转化为1

18、23,则将1赋给bai,2赋给shi,3赋给ge.这便是bcd函数的功能。第二步将高两位乘以256,结果存到bai1,shi1,ge1中,此为hebing1的功能。第三部是将第一部和第二部的结果想加存到qian,bai,shi,ge中。这样,我们就可以把采样的十位二进制数完全利用。Leijia函数采样后转化的BCD码 k初始化为10 k=k-1 调用加法函数 否 K=0? 是 累加结束此函数的意义是为了实现10次采样值想加。虽然二进制想加简单,可以直接想加,但是八位二进制存不下,还是得转化成十进制分开存。再开辟一个qian6,bai6,shi6,ge6,将每次采样的值经过hebing函数后的值

19、递给qian6,bai6,shi6,ge6,让其相加并存回给qian6,bai6,shi6,ge6。(出现wan的可能性很小,几乎满量程,为了方便就不考虑)Pingjun函数累加后的BCD码 移位0移到千位,千位移到百位,百位移到十位,十位移到个位,个位舍此函数的意义是将leijia函数得到的值除以10,即取平均。考虑到个位除以10后影响很小可以忽略,我们直接将每一位往后移一位,舍去个位,相当于除了10,再将qian位置0。Toc函数此函数的意义是根据采样得出的电压值和实际的称重质量的对应关系,乘以一个特定的数得出质量。本质是一个乘法程序。实现乘法在汇编中一般是实现二进制的乘法,仿造十进制的乘

20、法,利用相加和移位可以实现,但我们这里是十进制的乘法,因此,换一个思路,直接想加多少次,进位就好。如果含小数点的乘法,不考虑小数点如12.3,则相加123次,再把小数点再输出的时候找到它的位置就好。乘法程序是本实验中非常重要的一个程序,下面的计算总价也是在此基础之上进行的改变。Show函数最后便是显示称重的结果,有了前面液晶屏的基础,直接调用write函数就可以很容易写出来。6. 输入单价开辟三个三个地址百、十、个并都初始化为0AH 键盘输入的数依次存入百、十、个 右移位 个位为0AH? 是 单价已存入 否输入单价的目的是为了用单价乘以质量得出总价,质量在按下B键之后自动得出并转换成了BCD码

21、分别存到qian2,shi2,bai2,ge2中,需要把输入的数字存到bai4,shi4,ge4中,再和质量相乘。这一部分的实现输入单价有一个难点,做输入时,如何让单片机明白输入的123就是bai4为1,shi4为2,ge4位3,这就涉及到也可能不输三位数,如输两位数12,这就要变成bai4为0,shi4为1,ge4为2.并且可能需要输入小数。解决这个问题的办法是我们在每一个键盘按下数字之后调用的相应的子函数中加了一个count变量,并且写了一个移位函数。开辟三个地址,bai4,shi4,ge4,事先将这三个地址存的值赋为0aah,通过count变量将第一第二第三次输入的数依次存到这三个地址中

22、(dizhi函数),结束后判断ge4地址是不是0aah,如果是,则向右移位(yiwei函数),直到ge4不是0aah为止。这样就可以让十位正好存到shi4里,百位正好存到bai4里,个位正好存到ge4里,为以后的计算中间创造了条件。至于小数点的输入,我们采取的办法是,判断是否有小数点输入,有的话,令isdian 变量为1,小数点不存到地址中,只影响最后计算总价时小数点的位置。此外,为了简便,我们人为的规定最多只输入1位小数,或者不输。到此,输入部分结束。7. 删除(D键)删除在液晶屏上的体现只是去掉前面的输入即可,可以直接通过设置向左输入一个空格即可,难点在于可能删除的是小数点,也有可能删除的

23、是数字,这两种情况的处理方法是不一样的。因此,首先要判断到底要删除什么。这个地方我们当时考虑的不够完整,只考虑了只删除一次的情况。如果只删除一次的话,只需知道最后一次输入的是什么就好,我们在按下数字的每一个函数中将check变量置0,在按下小数点的函数中将check变量置1,只需判断最后check是什么,就可以知道最后输入的是什么,便可以进行不同的删除操作。如果删除的是小数点,则只需将isdian变量置0即可,如果删除的是数字,则需要要判断此时的count变量是1(输入第一个数),2(输入第二个数),3(输入第三个数),对应将bai4,shi4,ge4变为初始值0aah就好。8. 计算总价(按

24、下C键、queren函数) 百位为0?已存入的单价 十位为0? 否百位减1 是 否 十位减1 调用乘法程序 乘数为个位 调用乘法程序 乘数为10 调用乘法程序 乘数为100 停止调用乘 法程序 调用加法程序计算总价也就是乘法程序,前面说过乘法程序是本次是实验的基础,不过这个乘法程序和之前简单的乘法有一些区别,区别在于前面的乘法乘数是一个地址中存的二进制的数,单片机能够自动识别这个二进制代表的数字是多少,而这里的乘法,乘数是输入的数,存在bai4,shi4,ge4中。如果把bai4,shi4,ge4先合并成一个数再调用前面的乘法程序比较简单,但是还是那个问题,一个地址装不下这么大的数。所以,我们

25、采用了分开成的方法,写两个乘数确定的乘法,分别是100(baicheng函数),10(shicheng函数),用bai4,shi4的值来控制进行几次乘法,最后再写一个直接和个位相乘(ge4)的乘法,最后把这三个所得的数加起来,便是总价。这是没有考虑小数点的总价,前面说过,我们人为的规定了小数点之后最多只有一位小数,因此没有输入小数点和输入小数点只会产生两种小数点的位置,再输出给液晶屏的时候只需要判断一下是否有小数点,并写出特定的位置就好了。9. 清屏(按下E键、chushihua函数)清屏非常重要,当要进行下一次称重或者程序出现问题时,可以立即恢复初始化,chushihua函数就在最前面,主函

26、数在调用键盘扫描函数之前也调用了它,它会清除所有数据,恢复初始值,并且重设液晶屏显示。10. 去皮(按下F键)去皮功能的效果是,按一下去皮之后,它会自动在液晶屏显示当次测量的值,再按一次称重(B键)后,会自动在下一行显示此时的质量,然后自动用这一次的质量减去上一次的质量,减去的值显示在第一行。然后便可以继续输入单价,算得去皮之后的总价。11. 乘数为256以内的基本乘法程序被乘数二进制结果K与被乘数相加之后值赋给结果K K=0 乘数减1 否 乘数为0? 是 输出结果乘法程序是本实验非常重要的一个程序,在计算总价和采样十位二进制转化为BCD码时等多处都有调用。乘法的大体思路是将二进制乘法转化为二

27、进制加法,如25*12,把12作为乘数,12个25相加即为结果。利用这个基本乘法程序可以实现乘数为256以上的乘法,从而实现普适性。12.程序流程图 开始 初始化 AD采样准备 称重 扫描键盘 输入小数点ADSTRART采样 按下A 称重 HEBING函数 按下BTOC1函数乘法QUEREN函数 将高两位与低八位合并 按下C LEIJIA函数 显示总价 删除 按下D 将十次所采样的数相加 PINGJUN函数初始化函数清屏 按下E 将十次相加的数取平均 TOC函数转化调用去皮函数 按下F 将二进制转化为BCD码SHOW函数显示三硬件连接1. 压力传感器模块连接压力传感器最后输出的是电压信号,当时

28、考虑到要提高精度,自己设置ad采样的参考电压为2.5V可以提高一倍的参考电压,所以我们是按照要外接参考电压来设计的,外接参考电压必须是PortA的RA3,(最后因为实验室电源不够,所以最终验收时没有使用外接参考电压)。按照AD采样中的设置,模拟输入口为RA0。因此,压力传感器经放大的输出正接RA0。2. 键盘连接键盘与单片机的连接:刚开始实验时我们将键盘与单片机的RB口连接,但在老师的指点下了解到RB口有两个接口涉及到程序下载时数据的交换,可能会导致键盘扫描时高低电平的混乱,于是我们将RB口换成了RC口。键盘的第一列(1、5、9、C)与RC7连接,其它三列依此类推,第一行(1、2、3、4)与R

29、C3相连,其它三行依次类推。3. 液晶屏连接液晶屏连接最初在没有加ad采样时,使能端一直用的是A口,加了ad采样后,由于当时想外接参考电压,又想把液晶屏的使能端放在一起,最后根据ad采样的设置,将液晶屏的使能端RS RW E分别接到了portE的RA0,RA1,RA2.4. 总体连接单片机PIC16f877 压力传感器 PORTA RA0 LCD显示屏 PORTD(数据端) 小键盘 PORTE RA0、1、2 (使能端) PORTC四.电路的调试电路搭建好以后,我们开始着手调试电路,刚开始用示波器代替压力传感器输出毫伏信号,虽然一个是直流电一个是交流电,但是我们希望通过这个可以调试两个电位计和

30、电阻的平衡,使电路放大到一个我们需要的倍数上,所以交直流电在这部分并没有影响。当电阻匹配好以后,我们用万用表测试输出电压,确定放大比例合适,换上压力传感器。之后再调试电阻使得输出的电压正确,我们开始放上100g的砝码,测量变化多少毫伏电压,做记录;在加上手机,因为手机重在100个左右,我们就大致确定了放大比例。经过硬件调试好以后,连接好单片机,从LCD显示屏上读取输出。做记录。测量完毕。a)电路调试过程中遇到的问题和解决方法(1)最开始就是电路的放大比例问题,我们用了2天时间记录了大量数据,调试电阻的匹配,最终确立了能够使得变化1mv的时候放大130倍,变化5mv的时候变化600左右。大致成一

31、个线性的关系。(2)电路中有交流电也是一个重要的问题,最开始我们并没有注意到我们原始的电路中会产生交流电,以为输入的是直流最后出来的也是直流电,但是电路内部有噪声经过放大,也产生几百毫伏的交流电,对电路有很大影响,所以最后决定再加RC滤波,之后和单片机连接后电路失去放大功能,我们考虑到是放大电路和单片机之间有影响,所以我们又加了一个射极跟随器起到隔离作用。(3)输出放大时,我们一直都用万用表进行观察,可是有时候出现结果有很大偏差,我们并不是很理解,后来老师指点我们去拿示波器观察,出来的波形比较稳定,我们才确定电路是正确的。(4)完成实验后,我们开始焊接点路。因为电路都围绕这运放进行,所以很多地

32、方不容易焊接,所以焊接的不是很美观,但后来熟练之后有了很大改观。五.参考文献:PIC单片机实用教程基础篇 李学海北京航空航天大学出版社使用说明:通过这本书,我学习了PIC16F877A的基本工作原理和指令,帮助我从本质上学会了PIC16F877A的使用。里面的一些例子令我受益匪浅。PIC单片机实用教程提高篇李学海北京航空航天大学出版社使用说明:主要在这本书中学习了怎么数模转换和小键盘怎么使用,但是还是需要自己理解了其工作原理并把书上的代码改变后才使这两个模块正常工作。六.实验心得体会这次小学期,我们选择了一个比较喜欢的项目。我主要负责硬件方面的部分,感觉自己又更加深刻了解到自己知识的不足以及对

33、知识运用能力的不灵活。在硬件的电路设计中大部分都是模电和通电的知识,可是一到用的时候就感觉自己想不起来当初学过的知识,只有通过翻书在重新来过。但是通过这一次的电子工艺实习,感觉自己对知识的应用能力也有了提升,能够学以致用。除此以外,我也能够更加敢于肯定自己,比如在最后要加一个滤波电路,我门三人的想法有些不一致,但我仍坚持肯定自己的想法,并加以实现,完成了滤波电路的搭建。而且,经过我们小组的齐心协力,我们最终完成了一个成品,并且保证误差在8%左右,较高水平的完成了这一次的项目。我们感到很高兴。因为在外界干扰很大的情况下,我们也尽自己的能力去完善精度问题,我感觉很有成就感。同时,也非常感谢葛老师对

34、我们的耐心教导,我们小组经常在课余时间去老师那里询问我们的一些疑惑,葛老师都一一帮我们解答了,也在知识的讲解过程中讲述了他对我们的期望,让我们受益匪浅。我们也会更加努力,把老师教导给我们的东西用在未来,解决以后会遇到的更多的问题。附:电子称代码实现 PCL EQU 2H ;定义程序存储器低字节地址 STATUS EQU 3H ;定义状态寄存器地址 PORTA EQU 5H ;定义RE口数据寄存器地址 PORTb EQU 6H ;定义RE口数据寄存器地址 PORTc EQU 7H ;定义RE口数据寄存器地址 PORTD EQU 8H ;定义RD口数据寄存器地址 porte equ 9h TRIS

35、A EQU 85H ;定义RE口方向控制寄存器地址 TRISb EQU 86H ;定义RE口方向控制寄存器地址 TRISc EQU 87H ;定义RE口方向控制寄存器地址 trise equ 89h indf equ 00h TRISD EQU 88H ;定义RD口方向控制寄存器地址 adcon0 equ 1fh ADCON1 EQU 9FH ;定义ADC模块控制寄存器1的地址 test equ 80h go equ 2h adresh equ 1eh adresl equ 9eh shiwan3 equ 4ch WAN3 EQU 4DH QIAN3 EQU 4EH BAI3 EQU 4FH

36、SHI3 EQU 50H GE3 EQU 51H TEMP EQU 52H TEMP1 EQU 53H MULTI2 EQU 29H qian5 equ 54h bai5 equ 55h shi5 equ 56h ge5 equ 57h BAI4 EQU 71H SHI4 EQU 72H GE4 EQU 73H zan1 equ 74h zan2 equ 75h ZAN3 EQU 76H ZAN4 EQU 77H zan5 equ 78h zan6 equ 79h isdian equ 5fh check equ 5eh qian1 equ 61h bai1 equ 62h shi1 equ

37、63h ge1 equ 64h qian6 equ 66h bai6 equ 67h shi6 equ 68h ge6 equ 69h adcaiyang equ 6ah multi21 equ 65h QIAN EQU 2AH BAI EQU 2BH SHI EQU 2CH GE EQU 2DH RESULT EQU 28H RESULT1 EQU 27H resulth equ 59h resultl equ 5ah resultl1 equ 36h resulth1 equ 37h ISQUPI EQU 30H resultfang equ 58h shiwan2 equ 3ah WAN

38、2 EQU 39H QIAN2 EQU 34H ;存放量化后BCD BAI2 EQU 33H SHI2 EQU 32H GE2 EQU 31H shuru equ 35h OPTION_REG EQU 81H rbup equ 7h rp1 equ 6h rp0 equ 5h VALUE EQU 22H OPTION_REG EQU 81H FSR EQU 04H N1 EQU 20H N2 EQU 21H N3 EQU 23H;* Z EQU 2 ;定义0状态位的位地址 RP0 EQU 5 ;定义页选位RP0的位地址;* RS EQU 0 ;LCD寄存器选择信号脚定义在RE.2脚 RW EQ

39、U 1 ;LCD读/写信号脚定义在RE.1脚 E EQU 2 ;LCD片选信号脚定义在RE.0脚 COUNT EQU 24H ;定义bai shi ge weihzi变量 TMP1 EQU 25H ;定义临时寄存器地址 COUNT1 EQU 26H;* ORG 000H NOP ;放置一条ICD必需的空操作指令 GOTO MAIN ORG 0008HTD ADDWF PCL,1 RETLW 30H ;"0" RETLW 31H ;"1" RETLW 32H ;"2" RETLW 33H ;"3" RETLW 34H

40、 ;"4" RETLW 35H ;"5" RETLW 36H ;"6" RETLW 37H ;"7" RETLW 38H ;"8" RETLW 39H ;"9" RETLW 41H RETLW 42H RETLW 43H RETLW 44H retlw 45h retlw 46hTD1 ADDWF PCL,1 retlw 57h ;'w' 16 retlw 50h ;'p' 17 retlw 5ah retlw 4fh retlw 4eh re

41、tlw 47h retlw 2eh ;22 . retlw 20h ;23 kongge retlw 3ah ;24 : retlw 4bh ;k retlw 47h ;g;*main bcf status,2 BSF STATUS,RP0 MOVLW 00H MOVWF TRISD movwf trise movlw b'00000001' movwf trisa BCF STATUS,RP0 CALL DELAY ;调用廷时,刚上电LCD复位不一定有PIC快chushihua movlw 0h movwf isdian movlw 0ah movwf bai4 movwf shi4 movwf ge4 MOVLW 01H MOVWF PORTD ;清屏 CALL ENABLE MOVLW 38H MOVWF PORTD ;8位2行5x7点阵 CALL ENABLE MOVLW 0FH ;显示器开、光标开、闪烁开 MOVWF PORTD CALL ENABLE MOVLW 06H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论