51单片机AD转换

51单片机AD转换51 单片机 AD 转换电路设计实现关于 AD 转换的原理 大家在 数字电子技术 中已经学过 这里做过多的介绍 本文介绍一款经典的 8 位 AD 转换芯片 ADC0804 基于 51 单片机设计 AD 转换电路 并完成测量值的转换 1 芯片引脚介绍 CS 片选信号 低电平有效 即 CS 0 时候芯片才能正常工作 单独一个 ADC0804 芯片时候直接置零 当有多个芯片时候可以通过片选信号实现分时复用 WR 低电平有效 当 WR 信号由高到低时候实现一次 ADC 转换 RD 低电平有效 RD 0 时候可以读取数据 Vin 模拟电压输入端

#include 
  
    #include 
   
     sbit CS=P3^5; sbit adrd=P3^7; sbit adwr=P3^6; unsigned char code display[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; unsigned char com[]={0x01,0x02,0x04,0x08}; unsigned char num,num2=0,time[4]={0,0,0,0},val; float val2; unsigned int val3; void main() { TMOD=0x01; TH0=(65536-917)/256; TL0=(65536-917)%256;; EA=1; ET0=1; TR0=1; CS=0; while(1){ adwr = 1;// _nop_(); adwr = 0;// _nop_(); adwr = 1;// P1 = 0xff;// adrd = 1;// _nop_(); adrd = 0;// _nop_(); val = P1;// adrd = 1;// val2=((val*1.0/255)*5.0); val3=val2*1000; time[0]=val3/1000; time[1]=val3%1000/100; time[2]=val3%100/10; time[3]=val3%10; } } void Timer0() interrupt 1 { TH0 = (65536-917)/256; TL0 = (65536-917)%256;; num++; if(num==10){ num=0; P0=~com[num2]; P2=0xff; if(num2==0) {P2=display[time[num2]]|0x80;} else {P2=display[time[num2]];} num2++; if(num2>=4) num2=0; } } 
    
  

在这里插入图片描述
源代码:

#include 
  
    #include 
   
     sbit CS=P3^5; sbit adrd=P3^7; sbit adwr=P3^6; unsigned char code display[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; unsigned char com[]={0x01,0x02,0x04,0x08}; unsigned char num,num2=0,time[4]={0,0,0,0},val; float val2; unsigned int val3; void Delay50ms() //@11.0592MHz { unsigned char i, j, k; _nop_(); _nop_(); i = 3; j = 26; k = 223; do { do { while (--k); } while (--j); } while (--i); } void main() { TMOD=0x01; TH0=(65536-917)/256; TL0=(65536-917)%256;; EA=1; ET0=1; TR0=1; EX0=1; IT0 = 0; CS=0; while(1){ adwr = 1;// _nop_(); adwr = 0;// _nop_(); adwr = 1;// Delay50ms(); } } void Timer0() interrupt 1 { TH0 = (65536-917)/256; TL0 = (65536-917)%256;; num++; if(num==10){ num=0; P0=~com[num2]; P2=0xff; if(num2==0) {P2=display[time[num2]]|0x80;} else {P2=display[time[num2]];} num2++; if(num2>=4) num2=0; } } void Init0() interrupt 0 { adrd = 1;// _nop_(); adrd = 0;// _nop_(); val = P1;// adrd = 1;// val2=((val*1.0/255)*5.0); val3=val2*1000; time[0]=val3/1000; time[1]=val3%1000/100; time[2]=val3%100/10; time[3]=val3%10; } 
    
  
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213794.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午5:38
下一篇 2026年3月18日 下午5:38


相关推荐

  • java封装继承多态

    java封装继承多态java 封装继承多态面向对象面向对象的三个特征 封装 Encapsulatio 继承 Inheritance 多态 Polymorphism 我的总结 面向过程 强调的是具体的功能实现 执行者 面向对象 强调的是具备功能的对象 管理者 2 类类 class 是 Java 语言的最小编程单位 也是设计和实现 Java 程序的基础 本部分将深入介绍类的相关知识 类的概

    2026年3月16日
    2
  • java wifi开发教程_WiFi技术「建议收藏」

    java wifi开发教程_WiFi技术「建议收藏」WiFi技术啥MU-MIMO:多用户-多输入多输出2x2MIMO:2个输入in,2个输出out。?一根天线既做接收也做发送,2×2即两根天线,同理4×4即为4根天线?RedmiAX6共6根天线,4根作为5G天线,2根作为2.4G天线RedmiAX6支持2x2160MHz及4x480MHz两种MU-MIMO工作模式802.11对照表协议频宽(MHz)单天线速率(Mbps…

    2022年7月21日
    16
  • idea全局搜索文件名_linux 搜索文件名

    idea全局搜索文件名_linux 搜索文件名Ctrl+shift+F进行全局文本搜索,注意是搜索的文本shift+shift 全局搜索类

    2022年8月8日
    9
  • qq邮箱正则表达式语法_php邮箱正则表达式

    qq邮箱正则表达式语法_php邮箱正则表达式/qq邮箱的正则表达式/Stringregex6=“[1-9]\d{7,10}@qq\.com”;Strings7=“514668465@qq.com”;System.out.println(“s7”+s7.matches(regex6));Stringregex7="[\\w&&^[0-9]…

    2025年11月28日
    8
  • IDEA常用插件Top16

    IDEA常用插件Top16前言 精心推荐给大家的一些日常开发中最常用的效率插件 真心祝愿各位程序猿们开发效率提高 永不加班 一 AlibabaJavaC 代码规范检查工具 AlibabaJavaC 阿里开发的一款强大的代码规范检查工具 可以让自己写出易读性更高的代码 可以让团队代码风格尽量统一易于维护 前面博客已经介绍过了 不赘述了 Al

    2026年3月19日
    2
  • 【2022最新Java面试宝典】—— Java基础知识面试题(91道含答案)

    【2022最新Java面试宝典】—— Java基础知识面试题(91道含答案)目录一、Java概述1.何为编程2.什么是Java3.jdk1.5之后的三大版本4.Jdk和Jre和JVM的区别5.什么是跨平台性?原理是什么6.Java语言有哪些特点7.什么是字节码?采用字节码的最大好处是什么8.什么是Java程序的主类?应用程序和小程序的主类有何不同?9.Java应用程序与小程序之间有那些差别?10.Java和C++的区别11.OracleJDK和OpenJDK的对比二、基础语法数据类型12.Java有哪些数据类型13.switch是否能作用在by

    2026年2月1日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号