实验目的:利用8255接口芯片和ADC0809实现对模拟电压读取
实验电路:

详细代码:

#include<reg51.h>
#include<absacc.h>
#define PA_ADDR  XBYTE[0x300] //PA口,段码口
#define PB_ADDR  XBYTE[0x301] //PB口,位扫描口
#define PC_ADDR  XBYTE[0x302] //PC口,AD转换数据口
#define CMD_ADDR XBYTE[0x303] //8255命令口
sbit start= P1^0;  //ADC0809启动信号
sbit adda= P1^1;   //通道选择
sbit addb= P1^2;
sbit addc= P1^3;
sbit eoc= P1^4;  //转换结束信号
sbit baoj=P3^1;//waring light
sbit buzz=P3^2;//warning voice
sbit xuanzhe=P1^6;//按键选择通道unsigned char flag=0; //50ms到标志位
unsigned char code SEG[10]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d, 0x07,0x7f,
0x6f};
unsigned char code SEG1[10]={0xbf,0x86,0xdb,0xcf, 0xe6,0xed,0xfd, 0x87,0xff,
0xef};
unsigned char dispbuf[3]={1,1,0};  //显示缓冲区百十个位
void Timer0_Init()
{  TMOD=0x01;  //定时器0方式1TH0=(65536-5000)/256;    //定时5msTL0=(65536-5000)%256;ET0=1;    //开中断EA=1;TR0=1;    //开定时器0
}void Timer0_ISR()  interrupt 1 using 0
{  static unsigned char i=0,k=0;TH0=(65536-5000)/256; //重赋初值TL0=(65536-5000)%256;k++;if(k==10)  { k=0;flag=1; //50ms到则flag置1}PB_ADDR=0xff; //关闭所有数码管if(i!=2)  PA_ADDR= SEG[dispbuf[i]] ;              //送段码else  PA_ADDR= SEG1[dispbuf[i]]  ; //最高位显示小数点PB_ADDR=~(0x01<<i); //送扫描码i++;if(i==3)i=0;// }
}void display(unsigned int m)
{    dispbuf[2]= m/100 ;       //获取百位dispbuf[1]= m/10%10      ;   //获取十位dispbuf[0]= m%10       ; //获取个位
}void delay()
{  unsigned char i;for(i=0;i<120;i++);       //延时1ms
}
/*AD转换,里面就是根据时序图进行读取的,AD0809的驱动设计*/
unsigned char ad_converse()   //AD转换函数
{  unsigned char temp;if(xuanzhe==1){addc=0;addb=1; adda=1;} //选择通道6 else  {addc=1 ; addb=0 ; adda=1;}//选中通道5start=  1     ;   delay();start=    0   ;      //start信号下降沿锁存通道,启动ADif(!eoc)          ;   //等待eoc 变低if(eoc)          ; //等待eoc 变高即转换结束temp=PC_ADDR;                //从PC口读取转换结果到tempreturn temp;                 //返回AD转换结果
}void main()
{   unsigned int xianzhi_1;unsigned char adresult;unsigned int voltage;CMD_ADDR=0x89   ; //8255初始化,方式0,A口和B口输出,C口输入Timer0_Init(); buzz=0;xianzhi_1=250;while(1){   if(flag==1)    //判断是否50ms定时到{flag=0;adresult=ad_converse();  //启动一次AD转换,结果存到adresultvoltage=PC_ADDR*500.00/256;     //数字量转换为电压值if(voltage>xianzhi_1)// range of waring is yourself setting,this is 2.50V{baoj=~baoj;buzz=1;}else {baoj=0;buzz=0;}disp   ay(voltage);  //显示电压值}}
}

8255接口芯片与ADC0809的的使用相关推荐

  1. 【微机原理 实验】可编程外围接口芯片8255(4)(硬件-含汇编代码)

    实验十  可编程外围接口芯片8255(4) 更多微机实验: Github: https://github.com/Amoiensis/Assembly-language CSDN: https://b ...

  2. 微机接口芯片(1)—— 可编程并行接口芯片8255

    总结微机原理课学习的若干芯片 教材--<微机原理与接口技术> 文章目录 一.简介 二.8255的内部结构及引脚信号 (1)8255内部主要部件 (2)8255引脚信号 三.8255的工作方 ...

  3. 单片机_CT107D训练平台电路原理图\蓝桥杯训练板\ 存储/IO 扩展模块\ 8255 扩展芯片\EEPROM 芯片 AT24C02\

    存储/IO 扩展 8255 扩展芯片原理图: 8255芯片是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口.具有3个通道3种工作方式的可编程并行接口芯片(40引脚). 其各口功能 ...

  4. 第八章 可编程接口芯片及应用【微机原理】

    第八章 可编程接口芯片及应用[微机原理] 前言 第8章可编程接口芯片及应用 8.1 可编程定时器/计数器芯片 8253/8254 8.1.1 8253的结构与功能 8.1.2 8253的编程 8.1. ...

  5. 内存接口芯片,服务器平台,PCIe 芯片

    内存接口芯片,服务器平台,PCIe 芯片 澜起科技成立于2004年,是国际领先的数据处理及互连芯片设计公司,致力于为云计算和人工智能领域提供高性能,低功耗的芯片解决方案,目前公司拥有互连类芯片和津逮® ...

  6. 请问如何正确使用计算机的接口芯片,[计算机软件及应用]第05章接口芯片1.ppt

    [计算机软件及应用]第05章接口芯片1 第5章 可编程接口芯片 5.2 可编程定时器/计数器8254 计算机系统中经常要用到定时信号,如定时检测.定时扫描和时钟定时等,定时方法通常有以下三种: (1) ...

  7. 国产替代:T630 USB3.0接口芯片替换Cypress CYUSB3014

    产品介绍 T630简介 T630 作为专用接口芯片,配合 FPGA,在大部分应用中,可替代赛普拉斯CYUSB301X系列芯片. T630 是由方寸微电子自主研发的 USB3.0 超高速接口芯片,具有功 ...

  8. 方寸微电子T630 USB3.0超高速接口芯片 可替换赛普拉斯USB接口芯片 CYUSB3014 (应用:工业相机,视频会议, 3D打印, 高清B超,USB3.0视频采集卡, 高拍器、仪器仪表设备等)

    T630接口芯片简介 T630 作为专用接口芯片,配合 FPGA,在大部分应用中,可替代赛普拉斯CYUSB301X系列芯片(工业相机和扫描仪领域已有多家头部客户使用) T630 是由方寸微电子自主研发 ...

  9. 服务器芯片市场容量,未来内存接口芯片市场规模 使用内存接口芯片的服务器内存模组主要有寄存内存模组(RDIMM)和减载内存模组(LRDIMM)两种。RDIMM需要一颗寄... - 雪球...

    来源:雪球App,作者: 炒股基本靠蒙,(https://xueqiu.com/9446807039/129589023) 使用内存接口芯片的服务器内存模组主要有寄存内存模组(RDIMM)和减载内存模 ...

最新文章

  1. 投票系统之防止重复投票
  2. 如何在Node JS中卸载NPM模块?
  3. 关于网络编程中MTU、TCP、UDP、IP
  4. DC guide ---8
  5. python gif压缩_实用性视频转gif,压缩等常用文件工具处理及转换(含自写python工具)...
  6. 什么是npm package
  7. python find函数 和index的区别_python list的index()和find()的实现
  8. 设计模式之单例模式的多重实现
  9. tensorflow学习之tf.assign
  10. e1载波把32个信道按_什么是Wi-Fi 6?这12个问题为你讲清楚
  11. Node.js:express设置全局变量
  12. 软件工程课程设计-电梯控制系统
  13. 日本語トレーニング(二十二)
  14. 【毕业设计】深度学习YOLO安检管制物品识别与检测 - python opencv
  15. 鹅厂、狗厂、猫厂、熊厂、鸟厂、粮厂
  16. PS 2019 | Photoshop CC 2019 的安装激活
  17. java jvm sdk_JDK、SDK、JRE、JVM概念详解
  18. 水 hdu5208 2015-04-20 21:03 36人阅读 评论(0) 收藏
  19. Unity 自定义Image形状
  20. python polygon_python Polygon模块安装

热门文章

  1. 湖北省人社厅参观「仲裁智慧树」在成都高新区和贵阳的成功案例
  2. 2020 华数杯——脱贫帮扶绩效评价(Python代码实现)
  3. 使用PCLPY进行点云图像融合
  4. 随笔——网易云的神评论(持续更新)
  5. 花开再会,BIGBANG十周年回顾大展北京站于12月7日开幕
  6. 兰州大学计算机专业张教授,兰州大学信息科学与工程学院
  7. Android 四大护法-> Service
  8. 如何构建Pebble应用程序
  9. 【美图 - 计算机视觉岗】2018 年在线笔试考点:选择 + 编程(顺时针旋转数组90°)
  10. chatgpt使用什么语言写的