3.Proteus仿真图
4.程序编辑 (1)汇编程序
LCD_RS EQU P3.0 LCD_RW EQU P3.1 LCD_EN EQU P3.2 LCD_DATA EQU P1 DAT BIT P2.4 CLK BIT P2.5 CS BIT P2.3
LCDDBuf EQU 40H ;显示数据缓冲 SetTemp EQU 50H ;设定温度缓冲 CurTemp EQU 51H ;测得温度缓冲 ORG 0 LJMP START ORG 0030H START: LCALL SET_LCD
START1: LCALL TLC549_ADC LCALL CONV MOV A,#80H
LCALL WCOM ;写入命令 mov a,LCDDBUF+1 ORL A,#30H LCALL WDATA MOV A,#81H
LCALL WCOM ;写入命令 mov a,LCDDBUF ORL A,#30H LCALL WDATA LJMP START1
CONV: MOV B,#67 ; ADHEX*67/256 MUL AB MOV A,B MOV CurTemp,A
mov b, #10 ; 拆开显示 div ab
mov LCDDBUF+1,A mov a, b mov LCDDBUF,A RET
WCOM: ;以8位控制方式将命令写至LCD
MOV LCD_DATA,A ;写入命令
CLR LCD_RS ;RS=L,RW=L,D0-D7=指令码,E=高脉冲 CLR LCD_RW SETB LCD_EN LCALL DE CLR LCD_EN RET
WDATA: ;以8位控制方式将数据写至LCD MOV LCD_DATA,A ;写入数据 SETB LCD_RS CLR LCD_RW SETB LCD_EN LCALL DE CLR LCD_EN LCALL DE RET
SET_LCD: ;8 MOV A,#38H ; LCALL WCOM Lcall delay1 MOV A,#38H LCALL WCOM Lcall delay1 MOV A,#38H LCALL WCOM Lcall delay1
MOV A,#0CH ; LCALL WCOM Lcall delay1
MOV A,#01H ; LCALL WCOM Lcall delay1 RET
DELAY1: ; MOV R6,#25 DL2: MOV R7,#100 DJNZ R7,$ DJNZ R6,DL2 RET
DE: MOV R7,#250 DJNZ R7,$ RET
位I/O控制 LCD 接口初始化 双列显示,字形5*7点阵 开显示,显示光标,光标不闪烁 清除 LCD 显示屏 延时5MS
TLC549_ADC: CLR A CLR CLK CLR CS MOV R6,#8 ADLOOP:
SETB CLK NOP NOP
MOV C,DAT RLC A CLR CLK NOP
DJNZ R6,ADLOOP SETB CS SETB CLK RET END
(2)C程序
#include
#define uchar unsigned char #define uint unsigned int
sbit rs=P3^0; //命令/数据选择 sbit rw=P3^1; //读写口 sbit e=P3^2; //锁存控制 sbit CLK = P2^5; sbit DO = P2^4; sbit CS = P2^3;
unsigned int Volt; unsigned char LCD[7];
uchar data kaishi[16]={
uchar data dis1[16]={显示两行 uchar data dis2[16]={
delay(uint time) //int型数据为16位,所以最大值为65535 {
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库自动化专业微机接口课程设计1(2)在线全文阅读。
相关推荐: