#include<reg52.h>

#include<stdio.h>

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int

sbit dula=P2^6;

sbit wela=P2^7;

sbit adwr=P3^6;

sbit adrd=P3^7;

uchar flag,a;

uchar flag_uart,flag_time,flag_on,a,i,t0_num,ad_val;

float ad_vo;

uchar code table[]=

{

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71

};

void delayms(uint xms)

{

uint i,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}

void init()

{

TMOD=0x21;

// SCON=0x50;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TH1=0xfd;

TL1=0xfd;

TR1=1;

ET0=1;

SM0=0;

SM1=1;

REN=1;

EA=1;

ES=1;

}





void display(uchar value)

{

uchar bai,shi,ge;

bai=value/100;

shi=value%100/10;

ge=value%10;

dula=1;

P0=table[bai];

dula=0;

P0=0xff;

wela=1;

P0=0x7e;

wela=0;

delayms(5);

dula=1;

P0=table[shi];

dula=0;

P0=0xff;

wela=1;

P0=0x7d;

wela=0;

delayms(5);

dula=1;

P0=table[ge];

dula=0;

P0=0xff;

wela=1;

P0=0x7b;

wela=0;

delayms(5);

}





uchar get_ad()

{

uchar adval;

adwr=1;

_nop_();

adwr=0;

_nop_();

adwr=1;

_nop_();

adrd=1;

_nop_();

adrd=0;

_nop_();

adval=P1;

adrd=1;

return adval;

}





void main()

{

init();

wela=1;

P0=0x7f;

wela=0;

while(1)

{

if(flag_uart==1)

{

flag_uart=0;

ES=0;

TI=1;

switch(flag_on)

{

case 0:puts("Turn on ad!\n");

TR0=1;

break;

case 1:printf("Turn off ad!\n");

TR0=0;

break;

case 2:puts("Error!\n");

break;

}

while(!TI)

TI=0;

ES=1;

}

if(flag_time==1)

{

flag_time=0;

ad_val=get_ad();

ad_vo=(float)ad_val*5.0/256.0;

ES=0;

TI=1;

printf("The voltage is %fV\n",ad_vo);

while(!TI);

TI=0;

ES=1;

}

display(ad_val);

}

}





void timer0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

t0_num++;

if(t0_num==20)

{

t0_num=0;

flag_time=1;

}

}





void ser() interrupt 4

{

RI=0;       //接受中断标志位

a=SBUF;

flag_uart=1;

if(a==1)

flag_on=0;

else if(a==2)

flag_on=1;

else 

flag_on=2;

}

串口通讯 ADC0804 数码管的更多相关文章

  1. C#串口通讯实例

    本文参考<C#网络通信程序设计>(张晓明  编著) 程序界面如下图: 参数设置界面代码如下: using System; using System.Collections.Generic; ...

  2. delphi之动态库调用和串口通讯

    串口通讯: Spcomm 控件属性: CommName  :表示COM1,COM2等串口的名字: BaudRate:设定波特率9600,4800等 StartComm StopComm 函数Write ...

  3. 用SPCOMM 在 Delphi中实现串口通讯 转

      用Delphi 实现串口通讯,常用的几种方法为:使用控件如MSCOMM和SPCOMM,使用API函数或者在Delphi 中调用其它串口通讯程序.利用API编写串口通信程序较为复杂,需要掌握大量通信 ...

  4. 西门子plc串口通讯方式

    西门子plc串口通讯的三种方式 时间:2015-10-25 14:31:55编辑:电工栏目:西门子plc 导读:西门子plc串口通讯的三种方式,分为RS485 串口通信.PPI 通信.MPI 通信,自 ...

  5. 教程-Delphi MSComm 实时串口通讯

    Delphi  MSComm 实时串口通讯 MSComm控件具有丰富的与串口通信密切相关的属性,提供了对串口进行的多种操作,进而使串行通信变得十分简便.MSComm的控件属性较多,常用的属性如下:1) ...

  6. 浅析PC机串口通讯流控制

    转自浅析PC机串口通讯流控制 我们在串行通讯处理中,常常看到RTS/CTS和XON/XOFF这两个选项,这就是两个流控制的选项,目前流控制主要应用于调制解调器的数据通讯中,但对普通RS232编程,了解 ...

  7. STM32F10x 学习笔记6(USART实现串口通讯 2)

    这次讲讲利用串口收发中断来进行串口通讯.STM32 上为每个串口分配了一个中断.也就是说无论是发送完成还是收到数据或是数据溢出都产生同一个中断.程序需在中断处理函数中读取状态寄存器(USART_SR) ...

  8. STM32F10x 学习笔记5(USART实现串口通讯 1)

    STM32F10x 系列单片机中都包含了USART 模块,所谓USART,就是通用同步异步收发器.通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间 ...

  9. Java利用Rxtx进行串口通讯

    最近在做传感器数据采集的工作,底层是基于Zigbee的无线传感网络,所有数据采集到Zigbee协调器上然后通知上位机数据采集完成,上位机通过USB转串口去读取数据就可以了.那么问题来了,如何进行串口通 ...

随机推荐

  1. 922. 按奇偶排序数组 II

    给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数. 对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数:当 A[i] 为偶数时, i 也是偶数. 你可以返回任何满足上述条件的数组 ...

  2. DataTable和List相互转换的类

    DataTable与List相互转换 .NET后台数据处理,从数据库中的捞出的数据格式一般是List和DataTable的格式.现在将两种格式相互转换的心得记录下来以便以后查找(直接上代码). pub ...

  3. 微软抛弃微软.Net了吗?Net技术的未来在哪里-浅谈微软技术路线

    winform:优点是简单易学,缺点是界面做不好看,界面适应能力很差. wpf:微软结合了显卡渲染技术推出的界面设计方式,模仿html推出了自己的xaml,winform能实现的wpf都能实现,因为w ...

  4. css3实现3D切割轮播图案例

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  5. Python FLask 腾讯云服务器部署

    CentOs 7.0云服务器部署Python Flask 使用: Python 2.7 Flask nginx gunicorn easy_install python-dev yum install ...

  6. java是值传递,还是引用传递?

    原文地址:http://blog.csdn.net/zxmzfbdc/article/details/5401960  java到底是值传递,还是引用传递?以前国内的java开发者有过很多争论,由于& ...

  7. SQL Server-聚焦强制索引查询条件和Columnstore Index

    前言 本节我们再来穿插讲讲索引知识,后续再讲数据类型中的日期类型,简短的内容,深入的理解,Always to review the basics. 强制索引查询条件 前面我们也讲了一点强制索引查询的知 ...

  8. 通过nvm 切换 npm 版本

    通过 nvm-windows 更新 npm 1.先安装 nvm-windows .成功后可在命令窗口 输入nvm 查看到 nvm的版本号. 2..在命令窗口输入 nvm list,查看当前使用的 no ...

  9. [NOI2005]瑰丽华尔兹_动态规划_单调队列

    Code: #include<cstdio> #include<cstring> #include<deque> #include<algorithm> ...

  10. Matrix(坑)

    https://github.com/florent37/Android-3D-Layout