汇编51单片机、ADC0832测电阻、LCD1602显示

这篇博客介绍了如何使用51单片机通过汇编语言编程,结合ADC0832进行电阻测量,并利用LCD1602显示器显示结果。作者强调理解接收数据时序和电压电阻转换原理的重要性,同时提供了程序代码和仿真图,便于读者理解和实践。
摘要由CSDN通过智能技术生成

上单片机课程的老师要求用汇编写程序,看到网上用C的比较多,希望对想用汇编做东西的人有些帮助。

先了解汇编程序、51单片机、ADC0832接收数据时序、LCD1602显示原理再理解程序比较好。这些模块的资料CSDN上已经有很多人发过了。想要理解的百度一下或者在本站搜索就可以。

仿真图:

 

程序:

   AD_CLK EQU P2.2
   AD_DAT EQU P2.4
   AD_CS  EQU P2.3

   AD_TEMP   EQU   2FH    ;AD采样值存放单元

   RS BIT P2.7
   RW BIT P2.6
   EN BIT P2.5

ORG 0300H
AJMP MAIN

MAIN: mov a,#00h
      mov b,#00h

AD_CONV:
            SETB AD_CS          ;一个转换周期开始
            CLR  AD_CLK
            CLR  AD_CS          ;CS置0,片选有效
            SETB AD_DAT         ;DI置1,起始位
            SETB AD_CLK         ;第一个脉冲
            CLR  AD_DAT         ;在负跳变之前加一个DI反转操作
            CLR  AD_CLK
            SETB AD_DAT         ;DI置1,设为单通道
            SETB AD_CLK         ;第二个脉冲
            CLR  AD_DAT
            CLR  AD_CLK
下面是一个简单的汇编程序,可以实现51单片机LCD1602电压表的功能: ``` ; 51单片机LCD1602电压表汇编程序 ; 使用ADC0804模块进行模拟电压转换,使用P1口连接LCD1602模块 ORG 0 ; 程序从地址0开始 MOV P1, #00000000H ; 初始化P1口为输出模式,清零所有位 MAIN: ACALL ADC_READ ; 调用ADC转换程序,将结果存入R1 ACALL LCD_DISP ; 调用LCD显示程序,显示R1的值 SJMP MAIN ; 进入死循环 ADC_READ: MOV A, #00000001B ; 设置ADC0804模块的控制字节,选择通道0,开始转换 MOV P1.0, #1 ; 启动转换 WAIT: JB P1.1, WAIT ; 等待转换完成 MOV A, P1.2 ; 读取ADC的输出数据 MOV R1, A ; 将结果存入R1 RET ; 返回主程序 LCD_DISP: MOV A, R1 ; 将R1中的值存入A寄存器 MOV P1, #00000000H; 清空P1口 MOV P2, #00000000H; 清空P2口 MOV P1.7, #1 ; 将RS置为1,选择数据传输模式 ACALL LCD_DELAY ; 延时2毫秒 MOV P2, A ; 将A寄存器的值传输到LCD1602的数据口 MOV P1.6, #1 ; 将EN置为1,开始传输数据 ACALL LCD_DELAY ; 延时2毫秒 MOV P1.6, #0 ; 将EN置为0,结束传输数据 ACALL LCD_DELAY ; 延时2毫秒 RET ; 返回主程序 LCD_DELAY: ; 延时程序,根据实际情况调整延时时间 MOV R2, #255 D1: DJNZ R2, D1 MOV R2, #255 D2: DJNZ R2, D2 RET ; 返回LCD_DISP程序 ``` 需要注意的是,以上程序仅供参考,具体实现需要根据实际硬件和需求进行调整和优化。同时,还需要进行一些硬件上的调整和优化,比如使用精准的电阻分压器、电容滤波等等,以保证精度和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值