基于51单片机的ADC0809C程序代码

发布者:快乐旅途最新更新时间:2021-03-03 来源: eefocus关键字:51单片机  指令系统 手机看文章 扫描二维码
随时随地手机看文章

51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。


A/D转换器是模拟信号源与计算机或其它数字系统之间联系的桥梁,它的任务是将连续变化的模拟信号转换为数字信号,以便计算机等数字系统进行处理、存储、控制和显示。在工业控制和数据采集及许多其它领域中,A/D转换器是不可缺少的重要组成部分,它的应用已经相当普遍。目前用软件的方法虽然可以实现高精度的A/D转换,但占用CPU时间长,限制了应用。8位A/D转换器ADC0809作为典型的A/D转换芯片,具有转换速度快、价格低廉及与微型计算机接口简便等一系列优点,目前在8位单片机系统中得到了广泛的应用。


基于51单片机的ADC0809C程序代码

#include 《at89c51.h》


#define uchar unsigned char


#define uint unsigned int


sbit st=P3^2; //ST 为转换启动信号。当 ST 上跳沿时,所有内部寄存器清零;


//下跳沿时,开始进行 A/D 转换;在转换期间,ST 应保持低电平


sbit oe=P3^1; // OE 为输出允许信号,用于控制三条输出锁存器向//单片机输出转换得到的数据,OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态


sbit eoc=P3^0; //EOC 为转换结束信号。当 EOC 为高电平时,表明转 //换结束;否则,表明正在进行 A/D 转换


uchar code tab[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};// 数码管显示段码


uchar code td[]={0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70};// 通道先择数组


uint ad_0809,ad_data1,ad_data2,ad_data3,ad_data0; uchar m,number;


uchar x[8];//八通道数据待存数组


void delaynms(uint x);//nms 延时程序


void display();//显示程序


void ad0809();//芯片启动程序


void key();//键扫描程序


void main()


{


number=1;


P1=0x00;


while(1)


{


ad0809();//调 AD0809 启动子程序


key();//调按键子程序


ad_0809=x[number];//把相关通道数据给 ad_0809


display();//调显示


}


}


//nms 延时程序


void delaynms(uint x) { uchar i; while(x--》0)


{


for(i=0;i《125;i++)


{;}


}


}


void display()


{


uchar a;


ad_data1=(ad_0809*49/25)/100; // 读得的数据乘以 2 再乘以 98%除以 100 得百位


ad_data2=((ad_0809*49/25)%100)/10; // 读得的数据乘以2 再乘以98%再分出十位


ad_data3=(((ad_0809*49/25)%100)%10); // 读得的数据乘以2 再乘以98%再分出个位


for(a=0;a《10;a++)


{


P0=tab[ad_data3]; //送小数点后第二位显示


P2=0x07; //选通第一个数码管


delaynms(3);


P0=tab[ad_data2]; //送小数点后第一位显示


P2=0x0b; //选通第二个数码管


delaynms(3);


P0=tab[ad_data1]; //送整数显示


P0_7=0; //点亮第三个数码管小数点


P2=0x0d; // 选通第三个数码管


delaynms(3);


P0=tab[number]; //送通道号显示


P2=0x0e;


delaynms(3);


}}


void ad0809()


{


uchar i,m=1;


for(i=0;i《8;i++)


{


P0=td[i]; //选通通道


oe=0; //以下三条指令为起动 AD0809


st=0;


st=1;


st=0;


delaynms(1);


while(!eoc); //等待转换结束


oe=1; //取出读得的数据


x[m]=P2; //送相关通道数组


oe=0; m++;


}}


void key()


{


if(!P3_5) //P3.5 是否按下


{


delaynms(20); //延时判误


if(!P3_5) //再一次判断 P3。5 是否按下


{


while(!P3_5); //等待 P3。5 为高电平


number++; //通道号显示加一


if(number》8)number=1; //八通道


}


}


}


关键字:51单片机  指令系统 引用地址:基于51单片机的ADC0809C程序代码

上一篇:基于C51单片机实现汽车座椅自动控制系统的软硬件设计
下一篇:基于C8051F500的数控恒流源设计

推荐阅读最新更新时间:2024-11-07 13:03

51单片机制作电子琴
#include reg52.h unsigned char tone; unsigned char op; sbit led=P1^1; sbit spk=P1^0; sbit key1=P3^2; //两只老虎演奏按键 sbit key2=P3^3; //1~i演奏按键 unsigned char code shuma ={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //用于使定时器初值变化以产生相应频率的定时 unsigned char code yinfu_H = {0xfb
[单片机]
51单片机快热式热水器程序
/*-------------------------------------- 快热式热水器程序 MCU AT89C51 XAL 12MHz --------------------------------------*/ //#pragma SRC #include reg51.h #include intrins.h #include math.h void delay(unsigned int); //延时函数 void display(void); //显示函数 unsigned char keysCAN(void); //按键扫描处理函数 void heatCTRl(void); /
[单片机]
基于AVR和51单片机的机器鱼语音控制系统设计与实现
近年来,海洋资源开发日趋焦点,机器鱼作为一项现代化的新成果,具有广泛的现实意义,它可以更逼真的模拟鱼的游动原理,在水下的运动更符合流体力学原理,具有更好的加速和转向能力,利用它可以探测海洋资源,寻找和检测海域中受污染的地方,也可以用来勘探地形等等。随着科技的发展,人类对智能化产品的研究步伐在不断加快。但是,作为一项比较新的产品,机器鱼的智能化程度还远远不够,伴随着研究的加深,机器鱼的功能也会更趋完善。语音识别作为一门交叉学科,它的出现实现了长期以来人们渴望与机器交流的梦想。语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的高技术。近年来,语音识别技术发展迅速,取得显著进步,并且已经开始被应用于通信、家庭服
[单片机]
基于AVR和<font color='red'>51单片机</font>的机器鱼语音控制系统设计与实现
用Proteus学习51单片机之键盘
与单片机交互,键盘可能是最直接的工具了。所以我对于键盘检测也是十分期待的。 键盘说开了,其实就是很多的按钮。如果键盘数比较小的话,直接使用IO口连接按钮就可以了,比如我要实现一个功能,按键使数字加1或减1,这样的话,只需要两个按键就可以了。单个键盘的检测并不困难,先把IO口电平置为高电平,然后直接IO连按钮,再把按钮接地,当按下按钮时,检测到IO口电平为低即表示按下了按钮。当然这是理论情况下,实际的情况是,按下按钮后,电平还会上下的跳变几次,所以如果只是单纯的检测电平的变化,是不准确的。所以比较简单的方法是,检测到电平变化后,延时一段时间(比如10ms),再去检测电平,如果电平和先前检测到的一致,说明确实是按下去了。 下面是单独按
[单片机]
用Proteus学习<font color='red'>51单片机</font>之键盘
AT89C51单片机智能语音拨号报警系统
随着人们生活水平的提高和安防意识的增强, 急需开发面向大众、价格低廉、运行可靠的自动报警系统。鉴于住宅电话和移动通信设备的普及, 以及电话语音报警的快捷、有效及价格低廉等优点, 公共通信网成了报警系统的最佳传输媒介。本文介绍的报警系统就是在此基础上发展起来的一种智能语音拨号报警系统, 该系统可广泛用于各种对安防要求较高的场合, 如智能楼宇、商场、银行和工厂等。 电话自动报警的主要功能为: 用户根据需要把自己的手机号码、办公室电话或报警监控中心的电话预存入报警主机。报警主机不断地对所监控的设备( 门禁、烟雾探测器、窗磁、摄像头等) 状况进行巡检, 当有不安全情况( 如火灾、非法入室、视频丢失等) 发生时, 报警主机拨通预先存
[单片机]
AT89C<font color='red'>51单片机</font>智能语音拨号报警系统
51单片机学习笔记0 -- 仿真软件安装(Protues8.0)
对于学习51单片机的小伙伴或者新手来说,在手头没有51开发板的情况下,光有一套代码无法去做功能验证,这时候电路仿真软件就派上很大的作用了;不过有个问题就是需要新学习一个新的软件(仿真软件),这里说的仿真软件不是数电模电的仿真软件,而是protues,这一篇来说说protues的安装破解流程,博主用的是protues 8.0,现在最新的版本应该去到8.好多去了 1.解压protues8.0安装包 该教程适用于protues 8.0破解版,在官网下载的还需要买序列号那些好像 解压安装包后可以看到有个setup.exe的执行文件和一个Crack文件夹 2.安装 右键setup.exe以管理员身份运行 开始protues 8安
[单片机]
<font color='red'>51单片机</font>学习笔记0 -- 仿真软件安装(Protues8.0)
51单片机实现的简易秒表
设计思路: (1)在main函数中不停的控制数码管显示时、分、秒 (2)用定时器0控制时间的递增 (3)用外部中断0(KEY3)实现秒表的暂停/开始 (4)用外部中断1(KEY4)实现秒表的停止 开发板:普中科技开发板 代码如下: 1 #include reg52.h 2 #define led P0 3 typedef unsigned char u8; 4 typedef unsigned int u16; 5 6 sbit LSA = P2^2; 7 sbit LSB = P2^3; 8 sbit LSC = P2^4; 9 sbit k3 = P3^2; 10 sbit k4
[单片机]
51单片机串口通信中字符发送的总结
菜鸟我今天在练习51单片机串口通信时,对字符的发送方式总结了一下,有以下三种方式,若有大侠看到请勿见笑。 /*字符发送方式一*/ #include reg52.h #define uchar unsigned char #define uint unsigned int uchar flag,a,i; uchar code table ="I get "; void init() { TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; SM0=0; SM1=1; REN=1; //TI=1; EA=1; ES=1; } void main() {
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved