通用51编程器资料.doc_第1页
通用51编程器资料.doc_第2页
通用51编程器资料.doc_第3页
通用51编程器资料.doc_第4页
通用51编程器资料.doc_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机实验网的通用51编程器资料/products/LAB01/1.asp硬件资源的介绍一、硬件资源的介绍1、1602液晶接口2、标准的DS18B20接口,直接可以和18b20进行连接。3、配置有ISP51下载线接口,可以做一小型编程器用。4、有四个数码管,可以对每个数码管进行单独编程,四个可以使用扫描法进行统一编程。5、标准配置晶振11.0592MHz。6、有24C02存储器,可以自由存储数据。7、管脚引出,可以外接多种设备。8、有5对5V电源引出,方便连接多种设备。9、8个LED发光二极管。10、4个功能键。11、1个蜂鸣器。12、1个5V继电器

2、。13、1个调节1602液晶屏电位器。14、1个电源开关。二、硬件的合理设计1、零插拔力的缩紧插座放在实验板的一侧,可以方便的连接仿真器的仿真头或者插入写有程序的51芯片,避免了仿真头导线妨碍工作的情况。2、通过“ByteBlasterMV 下载线”连接,此实验板可以当作一小型编程器用。3、它拥有独立的电源系统,所以它还可以作为一个纯粹的试验板来使用。除了可以和仿真器配合使用之外,同时也是一个完整的试验系统,试验和仿真方面,它可以支持下面的这些常见芯片:ATMEL公司:AT89C51、AT89C52、AT89S51、AT89S52、AT89C4051、AT89LV52、AT89S53、AT89

3、LS53、AT89C55、AT89LV55Philips 公司:P80C54、P80C58、P87C54、P87C58、P87C524、P87C528Winbond 公司:W78C54、W78C58、W78E54、W78E54SST 公司:SST89C54、SST89C58Inter 公司:i87C54、i87C58、i87L54、i87L58、i87C51FB、i87C51FCTemic 公司:80C51、80C52、83C154、83C154D、89C51、87C52Siemens 公司:C501-1R、C501-1E、C513A-H、C503-1R、C504-2RISSI 公司:IS80

4、C52、IS89C51、IS89C52Dallas 公司:DS83C520、DS87C520三种使用方式第一种方式:用仿真器控制实验板第二种方式:用51ISP下载线做实验第三种方式:用51芯片做实验At24c02的使用一、实验目的:24c02读/写存储显示实验,4个按键操作4个数码管,其中第一个按键按下时对应数码管加1,同时对24C02进行一次写操作,其它3个数码管每按一下对应数码管加1直到10归0 二、实验设备:51通用实验板一个,12V电源一个,51仿真器一个,RS232串口线一条。三、实验电路原理图:四、实验内容: 五、参考程序:;24C02读取/存储显示实验;SDA EQU p3.7

5、;存储器读写程序SCL EQU p3.6 ;SLA EQU 40HNUMBYT EQU 41HSLAR EQU 0A1HSLAW EQU 0A0HMTD EQU 20HMRD EQU 30H;功能:24c02读/写存储显示实验,4个按键操作4个数码管,其中第一个按键按下时对应数码管加1,; 同时对24C02进行一次写操作,其它3个数码管每按一下对应数码管加1到10归0;使用资源: SDA=P3.7,SCL=P3.6 数码管显示数据口:P0口,控制口:P2.0,P2.1,P2.2,P2.3;ORG 0000HLJMP MAINORG 0030H;*MAIN: MOV SP,#07H LCALL

6、RDEEPROM;读地址为:50H的24C02数据(4个数据)LCALL INIT ;初始化数码管STAR: LCALL DISP ;数码管显示JNB p3.2,CHG1 ;检测按钮1JNB p3.3,CHG2 ;检测按钮2JNB p3.4,CHG3 ;检测按钮3JNB p3.5,CHG4 ;检测按钮4LJMP STAR ;CHG1: ;第一个按钮按下CALL delay ; 按p3.2的消除抖动JNB p3.2,$ ; p3.2放开否?CALL delay ;放开消除抖动MOV A,70H ;加1比较程序INC ACJNE A,#0AH,SD11MOV A,#0AJMP SD1SD11: J

7、C SD1MOV A,#0SD1: MOV 70H,ALCALL WREEPROMJMP STAR;CHG2: ;第二个按钮按下CALL delay ; 按p3.3的消除抖动JNB p3.3,$ ; p3.3放开否?CALL delay ;放开消除抖动MOV A,71H ;加1比较程序INC ACJNE A,#0AH,SD21MOV A,#0AJMP SD2SD21: JC SD2MOV A,#0SD2: MOV 71H,AJMP STAR;CHG3: ;第三个按钮按下CALL delay ; 按p3.4的消除抖动JNB p3.4,$ ; p3.4放开否?CALL delay ;放开消除抖动M

8、OV A,72H ;加1比较程序INC ACJNE A,#0AH,SD31MOV A,#0AJMP SD3SD31: JC SD3MOV A,#0SD3: MOV 72H,AJMP STAR;CHG4: ;第四个按钮按下CALL delay ; 按p3.3的消除抖动JNB p3.5,$ ; p3.3放开否?CALL delay ;放开消除抖动MOV A,73H ;加1比较程序INC ACJNE A,#0AH,SD41MOV A,#0AJMP SD4SD41: JC SD4MOV A,#0SD4: MOV 73H,AJMP STAR; 将EEPROM的地址50H53H中4个数据读出并存入以MRD

9、(30H)为首地址的4个单元中RDEEPROM: MOV MTD,#50H ;#50H为指定存储器(EEPROM)读写的子地址 MOV SLA,#SLAWMOV NUMBYT,#1LCALL WRNBYTMOV SLA,#SLARMOV NUMBYT,#04 ;从EEPROM的50H53H中读出4个数额LCALL RDNBYT ;并存放在以MRD(30H)为首地址的4个单元中RET;WREEPROM: ACALL WMOV5 ;把70H,71H,72H,73H中的数据放到50H为首的地址中MOV SLA,#SLAW ;写指令MOV NUMBYT,#05H ;再将RAM 20H-23H中存放的数

10、据发送到EEPROM中去LCALL WRNBYTRET;WMOV5: MOV MTD,#50HMOV R0,#MTD ;发送区首地址MOV R1,#70H ;将70H,71H,72H,73H中的数据放到50H,51H,52H,53H中MOV R2,#4 ;准备发送到EEPROM中去INC R0WMOV: MOV A,R1MOV R0,AINC R0INC R1DJNZ R2,WMOVRET;DISP: MOV R0,#0FEHMOV R1,#70HDISP1: MOV A,R0MOV P2,A ;数码管的控制位发出MOV A,R1 ;输出要显示的数据MOV DPTR,#TABMOVC A,A+

11、DPTRMOV P0,ALCALL DLYSINC R1 ;显示数据加1MOV A,R0RL A ;控制位左移MOV R0,AJB ACC.4,DISP1 ;测试到第5位为0返回RET;INIT: ;初始化70H-73H中的数据MOV A,30HANL A,#0FHMOV 70H,AMOV A,31HANL A,#0FHMOV 71H,AMOV A,32HANL A,#0FHMOV 72H,AMOV A,33HANL A,#0FHMOV 73H,ARET;*STA: CLR SDANOPSETB SDA;启动I2C总线SETB SCLNOPNOPNOPNOPNOPCLR SDANOPNOPNO

12、PNOPCLR SCLRET;*STOP: CLR SCLCLR SDA;停止I2C总线数据传送SETB SCLNOPNOPNOPNOPNOPSETB SDANOPNOPNOPNOPNOPCLR SDANOPCLR SCLNOPRET;*CACK: SETB SDA ;置VSDA为输入方式SETB SCL ;使VSDA上数据有效CLR F0 ;预设F0=0MOV C,SDA ;输入VSDA引脚状态JNC CEND ;检查VSDA状态,正常应答转CEND,且F0=0SETB F0 ;无正常应答,F0=1CEND: CLR SCL ;子程序结束,使VSCL=0RET;*MACK: CLR SDAS

13、ETB SCLNOPNOPCLR SCLSETB SDARET;*;发送非应答位 MNACK子程序MNACK: SETB SDASETB SCLNOPNOPCLR SCLCLR SDARET;*写一个字节WRBYT: MOV R0,#08H ;8为数据长度送R0中WLP: RLC A ;发送数据左移,使发送位入CJC WR1 ;判断发送1还是0,发送1转WR1AJMP WR01 ;发送0转WR0WLP1: DJNZ R0,WLP ;8位是否发送完,未完转WLPRET ;8位发送完结束WR1: SETB SDA ;发送1程序段SETB SCL NOPNOPCLR SCLCLR SDAAJMP W

14、LP1WR01: CLR SDA ;发送0程序段SETB SCLNOPNOPCLR SCLAJMP WLP1;*读一个字节RDBYT: MOV R0,#08H ;8位数据长度如R0RLP: SETB SDA ;置VSDA为输入方式SETB SCL ;使VSDA上数据有效MOV C,SDA ;读入VSDA引脚状态MOV A,R2 ;读入0程序段,由C拼装入R2中RLC AMOV R2,ACLR SCL ;使VSCL=0可继续接收数据位DJNZ R0,RLP ;8位读完否?未读完转RLPRET ;*读N个字节:NUMBYT个数,SLA读地址RDNBYT:MOV R3,NUMBYTLCALL STA

15、 ;发送启动位MOV A,SLA ;发送寻址字节(读)LCALL WRBYTLCALL CACK ;检查应答位JB F0,RDNBYT ;非正常应答时重新开始RDN: MOV R1,#MRD ;接收数据缓冲区首址MDR入R1RDN1: LCALL RDBYT ;读入一个字节到接收数据缓冲中MOV R1,ADJNZ R3,ACK ;N节读完否?未完转ACKLCALL MNACK ;N个字节读完发送非应答位LCALL STOP ;发送停止信号RET ;子程序结束ACK: LCALL MACK ;发送应答位INC R1 ;指向下一个接收数据缓冲单元SJMP RDN1 ;*写N个字节:NUMBYT 个

16、数,STA地址,MTD首地址WRNBYT: MOV R3,NUMBYTLCALL STA ;启动I2C总线MOV A,SLA ;发送SLAW字节LCALL WRBYTLCALL CACK ;检查应答位JB F0,WRNBYT ;非应答位则重发MOV R1,#MTDWRDA: MOV A,R1LCALL WRBYTLCALL CACKJB F0,WRNBYTINC R1DJNZ R3,WRDALCALL STOPRET;delay: MOV R1,#40 ;延时程序d1: MOV R2,#248DJNZ R2,$DJNZ R1,d1RET;延时子程序DLYS: MOV R6,#5DLYS0:MO

17、V R7,#150DJNZ R7,$DJNZ R6,DLYS0RET;TAB: DB 0C0H,0F9H,0A4H,0B0H; 0,1,2,3DB 99H,92H,82H,0F8H;?,5,6,7DB 80H,90H,88H,83H;?,9,A,BDB 0C6H,0A1H,86H,8EH;C,D,E,FDB 8CH,89H,07fh,0bFH;P,H,.,-11001011ENDDS18b20的使用一、 实验目的1、 看懂电路原理图,明白18b20的编程方式。2、 看懂参考程序,学会使用扫描法来对4个数码管进行扫描显示。学会使用定时器。二、 实验设备51通用实验板一个,51仿真器一个,40针仿

18、真头一个,12V电源一个,18b20一个。三、 实验电路原理图:四、 实验内容:读出18b20的温度值,把它转化为十进制数,送到数码码显示。对定时零进行设定。安实物图的形式把实验设备连接在一起。五、 参考程序:;功能: DS18b20的显示实验;使用环境:板上18b20接口,上拉电阻存在,只需把18B20的三根线接到相应位置即可,晶振为11.0592MHz;使用资源:使用P2.7采集温度,4位数码管使用P0口,p2.0,p2.1,p2.2,p2.3控制显示,采用描绘显示方法; 测试18B20存在P1.7口L8灯亮,不存在P1.0口L1灯亮;声 明: 此程序仅共参考,不一定准确,就算给大家一个例

19、程吧,如果大家有不同意见,希望多多指正!提供者: 单片机试验网;/数据定义/TH EQU 38 ;高温报警点TL EQU 10 ;低温报警点TEMPH EQU 40H ;读出寄存器5个单元的内容TEMPL EQU 41HREG2 EQU 42HREG3 EQU 43HREG4 EQU 44HCONFIG9 EQU 1FH ;9位精度的CONFIG数据COMFIG10 EQU 3FH ;10位精度的CONFIG数据CONFIG11 EQU 5FH ;11位精度的CONFIG数据CONFIG12 EQU 7FH ;12位精度的CONFIG数据CNT EQU 20H ;中断转换时间DAT EQU P

20、2.7;数据线FLAG1 BIT 00H ;测试DS18B20的存在;/程序开始/ORG 0000HLJMP MAINORG 000BHLJMP TIM0 ;定时器0中断ORG 0030HMAIN: MOV SP,#07H ;设定堆栈指针 LCALL RESET ;18b20复位LCALL INIT ;初始化数码管MOV TMOD,#21H ;定时器0设置MOV TH0,#00HMOV TL0,#00HSETB EASETB ET0SETB TR0STAR: LCALL DISP ;显示温度值LJMP STAR ;RESET:;18B20复位程序,11.0592Mz单周期1USSETB DAT

21、NOPCLR DAT;主机发出延时537微秒的复位低脉冲MOV R1,#3TSR1: MOV R0,#107DJNZ R0,$DJNZ R1,TSR1 MOV R0,#0FFHSETB DAT ;然后拉高数据线TSR2: JNB DAT,TSR3;等待DS18B20回应DJNZ R0,TSR2LJMP TSR4 ; 延时TSR3: SETB FLAG1 ; 置标志位,表示DS1820存在CLR P1.7 ;检查到DS18B20就点亮P1.7LEDLJMP TSR5TSR4: CLR FLAG1 ; 清标志位,表示DS1820不存在CLR P1.0LJMP TSR7TSR5: MOV R0,#1

22、17TSR6: DJNZ R0,TSR6 ; 时序要求延时一段时间TSR7: SETB DATRET;-写DS18B20的程序WRITE: ;18B20写入1个字节子程序MOV R2,#8CLR CWR1: CLR DATMOV R3,#6DJNZ R3,$RRC AMOV DAT,CMOV R3,#23DJNZ R3,$SETB DATNOPDJNZ R2,WR1SETB DATRET;-读DS18B20的程序,从DS18B20中读出两个字节的温度数据;读出温度值的子程序RDTEMPRDTEMP:MOV R4,#2 ; 将温度高位和低位从DS18B20中读出MOV R1,#TEMPL ; 低

23、位存入41H(TEMPL),高位存入40H(TEMPH)RE00: MOV R2,#8RE01: CLR CSETB DATNOPNOPCLR DATNOPNOPNOPSETB DATMOV R3,#7DJNZ R3,$MOV C,DATMOV R3,#23DJNZ R3,$RRC ADJNZ R2,RE01MOV R1,ADEC R1DJNZ R4,RE00RETDIVV:;数据处理子程序DIVVMOV A,41HMOV B,#16DIV ABMOV 74H,A ;将41H的高4位右移4位,存入74H中MOV A,BMOV B,#10MUL ABMOV B,#16DIV ABMOV 73H,

24、A;70 ;将41H的低4位X10/16得小数后1位数MOV A,40HMOV B,#16MUL ABADD A,74HMOV B,#10DIV ABMOV 72H,B;71 ;将个位数存入72H中MOV B,#10DIV ABMOV 71H,B;72 ;将十位数存入71H中MOV A,40HMOV 70H,#10H;73 ;如果为负则符号位为#10HJB ACC.7,SAMOV 70H,#00H ;如果为正则符号位为#00HSA: RET;-读出转换后的温度值GET_TEMPER:SETB DAT ; 定时入口BCD: LCALL RESETJB FLAG1,S22LJMP BCD ; 若D

25、S18B20不存在则返回S22: LCALL DELAY1MOV A,#0CCH ; 跳过ROM匹配-0CCLCALL WRITEMOV A,#44H ; 发出温度转换命令LCALL WRITENOPLCALL DELAYLCALL DELAYCBA: CALL RESETJB FLAG1,ABCLJMP CBAABC: LCALL DELAY1MOV A,#0CCH ; 跳过ROM匹配LCALL WRITEMOV A,#0BEH ; 发出读温度命令LCALL WRITELCALL RDTEMP ;READ_1820RET;-延时子程序DELAY: MOV R7,#00HMIN: DJNZ R

26、7,YS500RETYS500: LCALL YS500USLJMP MINYS500US:MOV R6,#00HDJNZ R6,$RETDELAY1: MOV R7,#20HDJNZ R7,$RETDISP: ;数码管显示程序,此程序要注意的是P2.7口的DS18B20数据采集,不能影响此口MOV R1,#70HDISP1: CLR P2.0;第一个数码管亮SETB P2.1SETB P2.2SETB P2.3MOV A,R1MOV DPTR,#TABMOVC A,A+DPTRMOV P0,ALCALL DLYSINC R1;SETB P2.0;第二个数码管亮CLR P2.1SETB P2.

27、2SETB P2.3MOV A,R1MOV DPTR,#TABMOVC A,A+DPTRMOV P0,ALCALL DLYSINC R1;SETB P2.0;第三个数码管亮SETB P2.1CLR P2.2SETB P2.3MOV A,R1MOV DPTR,#TABMOVC A,A+DPTRADD A,#80H;点亮小数点MOV P0,ALCALL DLYSINC R1;SETB P2.0;第四个数码管亮SETB P2.1SETB P2.2CLR P2.3MOV A,R1MOV DPTR,#TABMOVC A,A+DPTRMOV P0,ALCALL DLYSRET;-重新写DS18B20暂存存

28、储器设定值RE_CONFIG:JB FLAG1,RE_CONFIG1 ; 若DS18B20存在,转RE_CONFIG1RETRE_CONFIG1:MOV A,#0CCH ; 发SKIP ROM命令LCALL WRITEMOV A,#4EH ; 发写暂存存储器命令LCALL WRITEMOV A,#00H ; TH(报警上限)中写入00HLCALL WRITEMOV A,#00H ; TL(报警下限)中写入00HLCALL WRITEMOV A,#7FH ; 选择12位温度分辨率LCALL WRITERET;TIM0: ;中断处理程序CLR TR0CLR EAMOV A,CNTINC AMOV

29、CNT,ACJNE A,#10,TZ ;刷新时间到一定的时间,就采集温度,注意采集时间不能太快,太快就能时实显示MOV CNT,#00HLCALL GET_TEMPERLCALL DIVVTZ: MOV TH0,#00H ;设定定时器0的参数MOV TL0,#00HSETB EASETB TR0RETIINIT: ;初始化70H-73H中的数据,使用R0,R1,R3MOV 70H,#00H ;初始化数码管的显示内容MOV 71H,#00HMOV 72H,#00HMOV 73H,#00HMOV CNT,#00H ;刷新时间初始化LCALL RE_CONFIG ;配置DS18B20程序LCALL

30、GET_TEMPER ;获得温度值LCALL DIVV ;温度值进行转换RETDLYS: MOV R6,#1 ;延时处理程序DLYS0:MOV R5,#60DJNZ R5,$DJNZ R6,DLYS0RETTAB: DB 0C0H,0F9H,0A4H,0B0H; 0,1,2,3DB 99H,92H,82H,0F8H;?,5,6,7DB 80H,90H,88H,83H;?,9,A,BDB 0C6H,0A1H,86H,8EH;C,D,E,FDB 8CH,89H,07fh,0bFH;P,H,.,-11001011ENDDS18b20液晶显示一、 实验目的1、 看懂电路原理图,明白1602的编程方式。

31、2、 看懂参考程序,学会1602显示温度。二、 实验设备51通用实验板一个,1602液晶屏一个,12V电源一个,18b20一个。三、 实验电路原理图:四、 实验内容:读出18b20的温度值,把它转化为十进制数,送到液晶屏显示。安实物图的形式把实验设备连接在一起。五、 参考程序:(感谢网友姜老师的大力支持) ;基于DS18B20液晶和数码管同步显示程序 ; 可测量0-99度TEMPER_L EQU 36H ;从DS18B20中读回高位,低位暂存区TEMPER_H EQU 35H ;TEMPER_NUM EQU 60H;温度值存储TEMPER_GE EQU 61HTEMPER_SHI EQU 62

32、HTEMPER_SAVE EQU 63HFLAG1 BIT 00HFLAG2 BIT 01HRS BIT p2.0;液晶控制接口RW BIT p2.1E BIT p2.2DQ BIT P2.7;单总线口ORG 0000HAJMP MAINORG 0030HMAIN: MOV SP,#70H LCALL GET_TEMPER LCALL TEMPER_COV LCALL DISPLAYLJMP MAINNOP ;读出转换后的温度值 GET_TEMPER: SETB DQ ; 定时入口 BCD: LCALL INIT_1820 JB FLAG1,S22 LJMP BCD ; 若DS18B20不存在

33、则返回 S22: LCALL DELAY1 MOV A,#0CCH ; 跳过ROM匹配-0CC命令LCALL WRITE_1820 MOV A,#44H ; 发出温度转换命令 LCALL WRITE_1820 NOP LCALL DELAY CBA:LCALL INIT_1820 JB FLAG1,ABC LJMP CBA ABC:LCALL DELAY1 MOV A,#0CCH ; 跳过ROM匹配 LCALL WRITE_1820 MOV A,#0BEH ; 发出读温度命令 LCALL WRITE_1820 LCALL READ_18200 ;READ_1820 RET ;*;读DS18B2

34、0的程序,从DS18B20中读出一个字节的数据 ;*READ_1820: MOV R2,#8 RE1: CLR C SETB DQ NOP NOP CLR DQ NOP NOP NOP SETB DQ MOV R3,#7 DJNZ R3,$ MOV C,DQ MOV R3,#23 DJNZ R3,$ RRC A DJNZ R2,RE1 RET ;*;写DS18B20的程序 ;*WRITE_1820: MOV R2,#8 CLR C WR1: CLR DQ MOV R3,#6 DJNZ R3,$ RRC A MOV DQ,C MOV R3,#23 DJNZ R3,$ SETB DQ NOP DJ

35、NZ R2,WR1 SETB DQ RET;* ;读DS18B20的程序,从DS18B20中读出两个字节的温度数据 ;*READ_18200: MOV R4,#2 ; 将温度高位和低位从DS18B20中读出 MOV R1,#36H ; 低位存入36H(TEMPER_L),高位存入35H(TEMPER_H) RE00: MOV R2,#8 RE01: CLR C SETB DQ NOP NOP CLR DQ NOP NOP NOP SETB DQ MOV R3,#7 DJNZ R3,$ MOV C,DQ MOV R3,#23 DJNZ R3,$ RRC A DJNZ R2,RE01 MOV R1

36、,A DEC R1 DJNZ R4,RE00 RET ;* ;将从DS18B20中读出的温度数据进行转换;* TEMPER_COV: MOV A,#0F0H ANL A,TEMPER_L ; 舍去温度低位中小数点后的四位温度数值 SWAP A MOV TEMPER_NUM,A ;得到低四位MOV A,TEMPER_L JNB ACC.3,TEMPER_COV1 ; 四舍五入去温度值 INC TEMPER_NUM TEMPER_COV1: MOV A,TEMPER_H ANL A,#07H SWAP A ORL A,TEMPER_NUM ;得到高四位,再与低四位相或得到值MOV TEMPER_N

37、UM,A ; 保存变换后的温度数据 LCALL BIN_BCD RET;* ;将16进制的温度数据转换成压缩BCD码 ;*BIN_BCD: MOV A,TEMPER_NUMMOV B,#10DIV ABMOV TEMPER_SHI,AMOV TEMPER_GE,BMOV A,TEMPER_SAVECJNE A,TEMPER_GE,ZWFHRET:MOV TEMPER_SAVE,TEMPER_GERETZW:CALL LCDDISPAJMP FHRET;*;DS18B20初始化程序 ;*INIT_1820: SETB DQ NOP CLR DQ MOV R0,#250TSR1: DJNZ R0,

38、TSR1 ; 延时520us SETB DQ MOV R0,#25H ;96US-25H TSR2: DJNZ R0,TSR2 JNB DQ,TSR3;如D0为低则复位成功,DS18B20存在 LJMP TSR4 ; 延时 TSR3: SETB FLAG1 ; 置标志位,表示DS1820存在 LJMP TSR5 TSR4: CLR FLAG1 ; 清标志位,表示DS1820不存在 LJMP TSR7 TSR5: MOV R0,#06BH ;200US TSR6: DJNZ R0,TSR6 ; 延时 TSR7: SETB DQ ;拉高总线RET ;*;数码显示程序;*Display:MOV DP

39、TR,#disptabMOV A,TEMPER_GEMOVC A,A+DPTRMOV P0,ACLR P2.0CALL DELAYCALL DELAYSETB P2.0MOV DPTR,#disptabMOV A,TEMPER_SHIMOVC A,A+DPTRMOV P0,ACLR P2.1CALL DELAYCALL DELAYSETB P2.1RET;*;液晶显示程序;*LCDDISP:mov P0,#01h;清屏call enrwmov P0,#38h;设为8位,57字型两行call enrwmov P0,#0Chcall enrwmov P0,#06hcall enrwmov P0,#

40、80hcall enrwmov dptr,#yjtabcall rwrammov P0,#0C0hcall enrwmov dptr,#yjtab1call rwramW_TEM:mov P0,#0CChcall enrwMOV DPTR,#ASCIIMOV A,TEMPER_SHIMOVC A,A+DPTRMOV P0,Asetb rsclr rwclr ecall delaysetb eMOV DPTR,#ASCIIMOV A,TEMPER_GEMOVC A,A+DPTRMOV P0,Asetb rsclr rwclr ecall delaysetb e RETenrw:clr rsclr

41、 rwclr ecall delaysetb eretrwram:mov r1,#00ha1: mov a,r1movc a,a+dptrcall rwram2inc r1cjne a,#00h,a1retrwram2:mov P0,asetb rsclr rwclr ecall delaysetb eret;*;延时子程序;*DELAY:MOV R6,#250;延时500usDJNZ R6,$ RET DELAY1:MOV R7,#20H DJNZ R7,$ RET disptab:db 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;字形代码表;0

42、 1 2 3 4 5 6 7 8 9yjtab: db Hi Welcome You,00hyjtab1:db Temperature:*C,00hASCII: DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39Hend1602液晶的使用一、实验目的通过液晶显示器接口电路的设计与编程,掌握液晶显示器的原理,学会使用液晶显示器,并把它嵌入到便携式电子信息产品中。 二、实验设备51通用实验板一个,1602液晶一个,51仿真器一个,12V电源一个。三、实验电路原理图:四、实验内容:五、参考程序:;功能: LCD 1602液晶显示实验;资源使用:p0口用于数据口,P2.

43、0为RS P2.1为R/W P2.2为E; RS为寄存器选择位,RS=1选择数据寄存器,RS=0选择指令寄存器; E为使能信号,下降沿触发。; R/W为读写信号,1为读,0为写ORG 0000HAJMP MAINORG 0030H;MAIN: LCALL LCDINTMOV DPTR, #WORD1;显示第一行数据MOV R2,#80H ;1000 0000 DDRAM地址设置为00hLCALL WRCMOV R4,#16LCALL WRNMOV DPTR,#WORD2 ;显示第二行数据MOV R2,#0C0H ;1100 0000 DDRAM地址设置为40hLCALL WRCMOV R4,#

44、16LCALL WRNSJMP $;液晶初始化;LCDINT: MOV R2,#38H ;0011 1000功能设置:采用8位数据总线,采用双行显示,采用5X7点阵LCALL WRC ;写入指令ACALL DELAY ;延时程序MOV R2,#0CH ;0000 1100光标/显示移位:1为显示移位,0为光标移位ACALL WRCACALL DELAYMOV R2,#06H ;0000 0110输入模式:1为AC增量模式,0为AC自减模式,显示整体不移动ACALL WRCACALL DELAYMOV R2,#01H ;清屏LCALL WRCACALL DELAYRET;写入控制指令,数据放在R2中;WRC: A

温馨提示

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

评论

0/150

提交评论