开始 数据传入锁存器 从锁存器传入62256 结束 从62256传回至单片机 在数码管上显示数据 片外扩展流程图
5、实验遇到的问题:在这个实验中我们遇到了一个很头疼的问题,用作片外地址低八位的P0口与数码管的段选共用,在程序运行时,数码管显示不出数字,我们检查了所有的软硬件(包括仿真器),最后把P0口的数码管移到P1口后,数字正确无误地显示出来。不知道这是为何,现在有两种说法:1、P0口在使用时没接上拉电阻;2、P0口接两种数据线有相互干扰。(由于时间有限,以上均未经证实)
6、小结:这个实验让我们懂得了当单片机存储器不够用时可以向外部扩展,这为我们设计大程序带来了很大的方便。
七、LCD1602
1、功能:向LCD输入数据,使得LCD能显示出想要的数据。
2、设计原理:(1)LCD是自带芯片的液晶显示器,只要输入想要显示的数字的ASC码值即可;(2)LCD管脚上有RS和RW,EN,D0-D8管脚。EN是使能端口,RS是寄存器选择,RW是读写端口,D0-D8是数据输入输出端口(3)每次调用命令,要设置RS和RW的状态;EN先置高电平,再置低电平;读忙。(4)读忙时RS置零,RW置高电平,在确定D7不为高电平时系统不忙时,命令才能输入,D7为高电平时,系统忙则需要等待。
MOV D0_D7, #0FFH ; ; P0口送入高电平,为写入数据做好准备 SETB RW
CLR RS ;设置RS和RW为忙读出状态 SETB EN CLR EN
LOOP3: MOV A, D0_D7
13
ANL A, #10000000B 检查D7是否为一,结果送入A JZ LOOP3 CLR RW
(5)在调用显示之前要给LCD清屏,并设置显示方式。 CLR RS CLR RW ;设置RS和RW为指令写入 SETB EN ;使能端置高电平 ACALL DELAY_5MS ;延时使系统稳定
MOV DATE, #38H ;设置为8位数据口,双行显示 ACALL WT_CMD ;调用读忙 ACALL WT_CMD
MOV DATE, #0FH ;显示光标向右移 ACALL WT_CMD
MOV DATE, #06H ;增量方式,整体显示不移动 ACALL WT_CMD
MOV DATE, #01H ;清屏 (6)调整LCD的对比度是液晶亮度最佳。LCD的三个端口GND, V0, VDD接在滑动变阻器的三个端口。V0接滑动变阻器的可调端,VDD,GND接另两端,VDD接5V,GND接地。通过调整滑动变阻器的阻值改变V0的电压,从而改变LCD的亮度。 3、实验原理图:
RV2GND123P0.74P0.5561kP0.4P1.07P1.18P1.29P1.310P1.411P1.512P1.613P1.714VSSVDDVEERSRWELCD1D0D1D2D3D4D5D6LM016LD7管 LCD显示39P0.0 4、实验流程图: 14 开始 对屏幕进行调整设置,如重新初始化 设置字符在液晶中显示的位置 对液晶显示器进行初始化 通过查表法找到第一行要显示的字符 设置字符在液晶中显示的位置 通过查表法找到第一行要显示的字符 LCD1602实验流程图
5、实验遇到的问题:在这个实验里我们遇到了一个奇怪的问题:所有的程序都是对的(原程序见附录2),可是在显示的时候,在每行的结尾会出现一个乱码“g”,我们实在弄不懂它是怎么回事,在老师检查的时候我们用空格掩饰过去了,但这个问题仍旧困扰着我们小组,我们很想弄清楚这是为什么,所以将这个问题写进报告里了。
6、小结:通过LCD1602我们弄清楚了液晶的工作原理,由此我们可以扩展到液晶电视,液晶显示器等其它用到液晶的地方,可谓一通百事通。
八、A/D转换电压表
1、功能:将模拟电压信号输入ADC0809芯片,ADC0809将模拟量转化为数字量输入AT89C51,AT89C51将输入的数字量处理,再送到数码管显示。
2、设计原理:
将滑动变阻器的上下两端,一端接地,一端接5V的电压,可调端接ADC0809的IN0。这样就可以产生连续可变化的模拟电压。
ADC0809不带时钟,需要利用89C51产生时钟供0809正常工作。在89C51中可用定时器中断二次产生500KHZ的振荡,从P3.0输出。数据从ADC0809的D0-D7送入89C51的P1口。在数码管上显示的是十进制的数,所以要将模数转化的二进制结果转化为十进制结果。将P0口输出的结果乘以#0C4H(196),高八位送给R6,低八位送给R7。
HB3: MOV A,R7 ;从高端移出待转换数的一位到CY中 RLC A
15
MOV R7,A MOV A,R6 RLC A MOV R6,A
MOV A,R5 ;BCD码带进位自身相加,相当于乘2 ADDC A,R5
DA A ;十进制调整 MOV R5,A MOV A,R4 ADDC A,R4 DA A
MOV R4,A MOV A,R3 ADDC A,R3
MOV R3,A ;双字节十六进制数的万位数不超过6,不用调整 DJNZ R2,HB3
R5中高四位为小数点后三位,R4中低四位为小数点后两位,R4中高四位为小数点后一位,R3为个位。在显示各位时,P0.7清零,显示出小数点。
3、实验原理图:
+5VU526272812345252423221216IN0IN1IN2IN3IN4IN5IN6IN7ADD AADC0808ADD BADD CALEVREF(+)VREF(-)CLOCKSTARTEOCOUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT81067212019188151417ALEP1.3P1.4P3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0RV11k+88.8VoltsAD转换4、实验流程图:
OE9P1.0 16