如何用汇编语言设置数字温度计精确到小数点后两位并且将温度显示在液晶显示屏中
参考
使用8051单片机和LCD1602液晶显示屏:
; 定义端口和寄存器地址
LCD_DATA equ P1
LCD_CTRL equ P2
TEMP_SENSOR equ P3
; 定义常量
LCD_LINE1 equ 0x80 ; 第一行
LCD_LINE2 equ 0xC0 ; 第二行
DELAY_TIME equ 10 ; 延时时间
ORG 0x0000 ; 程序起始地址
; 初始化函数
INIT:
MOV A, #0x38 ; 8位数据总线,2行显示,5x7点阵字符
ACALL LCD_CMD ; 发送命令到液晶显示屏
MOV A, #0x0C ; 打开显示,关闭光标
ACALL LCD_CMD ; 发送命令到液晶显示屏
MOV A, #0x06 ; 设置光标移动方向为右移
ACALL LCD_CMD ; 发送命令到液晶显示屏
MOV A, #0x01 ; 清屏
ACALL LCD_CMD ; 发送命令到液晶显示屏
ACALL DELAY ; 延时
; 主程序
MAIN:
MOV A, TEMP_SENSOR ; 读取温度传感器的数据
ACALL CONVERT ; 将温度数据转换为合适的格式
ACALL LCD_DISPLAY ; 将温度显示在液晶显示屏上
ACALL DELAY ; 延时
SJMP MAIN ; 循环执行
; 命令发送函数
LCD_CMD:
MOV LCD_DATA, A ; 将命令写入数据端口
CLR LCD_CTRL.0 ; 将RS引脚置低,选择命令模式
SETB LCD_CTRL.1 ; 将EN引脚置高,使能液晶显示屏
ACALL DELAY ; 延时
CLR LCD_CTRL.1 ; 将EN引脚置低,禁用液晶显示屏
RET
; 数据发送函数
LCD_DATA:
MOV LCD_DATA, A ; 将数据写入数据端口
SETB LCD_CTRL.0 ; 将RS引脚置高,选择数据模式
SETB LCD_CTRL.1 ; 将EN引脚置高,使能液晶显示屏
ACALL DELAY ; 延时
CLR LCD_CTRL.1 ; 将EN引脚置低,禁用液晶显示屏
RET
; 延时函数
DELAY:
MOV R0, #DELAY_TIME
DELAY_LOOP:
DJNZ R0, DELAY_LOOP
RET
; 温度转换函数
CONVERT:
; 将温度传感器的数据转换为温度值
; 这里假设温度传感器的数据是8位无符号整数
; 温度值 = 数据 * 0.488
MOV B, #0x0F8 ; 乘以0.488的小数部分
MUL AB ; 执行乘法
MOV A, B ; 结果存放在寄存器B中
MOV B, #100 ; 除以100,得到整数部分
DIV AB ; 执行除法
RET
; 温度显示函数
LCD_DISPLAY:
; 将温度显示在液晶显示屏上
MOV A, #LCD_LINE1 ; 显示在第一行
ACALL LCD_CMD ; 发送命令到液晶显示屏
MOV A, B ; 显示整数部分
ACALL LCD_DATA ; 发送数据到液晶显示屏
MOV A, #0x2E ; 显示小数点
ACALL LCD_DATA ; 发送数据到液晶显示屏
MOV A, B ; 显示小数部分
ANL A, #0x0F ; 只取小数点后两位
ACALL LCD_DATA ; 发送数据到液晶显示屏
MOV A, #LCD_LINE2 ; 显示在第二行
ACALL LCD_CMD ; 发送命令到液晶显示屏
RET
END ; 程序结束
由1(b)是同相比例运算电路。从反馈类型来看,反馈电路自输出端引出接到反相输人端,面后经电阻RL接“地”。由输人端电路可得出,差值电压,即削弱了净输入电压(差值电压),故为负反馈。**反馈电压取自输出电压 ,并与之成正比,故为电压反馈。反馈信号与输入信号在输入端以电压的形式作比较.两者串联,故为串联反馈。**因此,同相比例运算电路是引入串联电压负反馈的电路。
反馈系数F由定义式 得 电压负反馈的作用是稳定输出电压,串联反馈电路则有很高的输入电阻。