串口通讯 ADC0804 数码管

#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 数码管

时间: 2024-11-05 06:08:40

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

多机串口通讯

★使用器件 使用了3块80c51的单片机,其中U1为主机控制其他两个从机U2,U3.每个单片机上都有一个数码管用来显示数据.主机上有两个按键KEY_1,KEY_2,分别用来控制不同的从机. ★实现目标 主要实现的目标就是通过写多机通讯来了解他们其中的协议,以及简单协议的写法!本程序主要达到了一下效果,主机可以通过发送命令来控制从机:发送数据给从机.接收从机的数据.然后将从机或者主机显示的数据显示在数码管上. ★协议要求 1.地址:主机的地址设置为0x01,从机1(U3)的地址为0x03,从机2(

Android通过JNI实现与C语言的串口通讯操作蓝牙硬件模块

一直想写一份技术文档,但因为自感能力有限而无从下笔,近期做了个关于Android平台下实现与C语言的通讯来操作蓝牙模块的项目,中间碰到了很多问题,也在网上查了很多资料,在完毕主要功能后.也有一些人在网上问我一些问题.这里写下这篇文档算是一个阶段性的总结. 假设反响好.兴许将会发上Android Stub与新版Android HAL的学习文档. 因为蓝牙模块是串口通讯机制.使用C语言来訪问,而Android的应用层採用Java.无法直接操作硬件.故使用JNI的技术实现主要功能.Android的JN

pcommlite串口通讯库使用

MFC下串口编程使用最多的两种方法是读取注册表和使用mscomm组件,都有着或多或少的缺陷,调用系统SDK比较麻烦,而MSCOMm组件最多支持16个串口,串口号大于16的时候无法打开,遇到这种情况,可以使用一个名为pcommlite的串口通讯库,下载安装之后,解压出来的文件包括 根据编译的平台选择相应的lib文件加入工程,并加入pcomm.h文件 寻找系统串口,sio_open()打开串口 sio_close()关闭串口 BYTE i = 0; CString str; // TODO: 在此添

串口通讯方式1编程

在上位机上用串口调试助手发送一个字符X,单片机收到字符后返回给上位机"I get X",串口波特率设为9600bps. #include<reg52.h> #define uchar unsigned char unsigned char flag,a,i; uchar code table[]="I get"; void init() { TMOD=0x20;  //设定T1定时器的工作模式2 TH1=0xfd; //T1定时器装初值 TL1=0xfd

(c#2.0)serialPort串口通讯

原文:(c#2.0)serialPort串口通讯 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Configuration; usi

Python 串口通讯

摘要: pyserial module: https://github.com/tbusf/pyserial Python使用pyserial进行串口通信:http://blog.csdn.net/log1100/article/details/54380325 串口通讯的python模块--pySerial :http://blog.csdn.net/dainiao01/article/details/5885122 Parameters for the Serial class ser =

Winform 串口通讯之地磅

继上次的读卡之后,要做一个地磅的读取. 下面是我在读卡Demo上改的读取地磅的. 地磅是一直向串口发送数据的,所以需要截取数据来一直判断数据是否合法,然后计算出结果. 其中遇到了一个小问题,文末有介绍. 本人初学菜鸟,大牛们有意见欢迎评论. 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6

串口通讯中垃圾数据的处理

在双机串口通讯中,开关机(串口开闭)期间发送方有时候会发一些无效的垃圾数据,同时因为有的协议解析只有接收到一定数量才能解析.这就会出现一个现象:如果开头的数据是错误的,又没有及时丢弃,后面正确的数据接着位置存储,最终造成解析失败.现象就是有时候数据交互正确,有时候错误(冷启动第一次出现错误的几率较大).所以串口通讯中对垃圾数据的防护及解析的顺序方法就显的很重要. if(USART_GetITStatus(UART4,USART_IT_RXNE))    {        USART_ITConf

HALCON串口通讯程序

串口通讯程序 * Note: This example is meant to demonstrate the use of the serial interface * of HALCON.  On Unix machines, the output and input is from /dev/tty, i.e., the * window from which you have started HDevelop.  On Windows NT machines, * this progra