【51单片机】A/D(1)

用单片机控制ADC0804进行模数转换,当拧动实验板上A/D旁边的电位器Re2时,在数码管的前三位以十进制方式动态显示出A/D转换后的数字量(8位uA/D转换后数值在0~255变化)。

<span style="font-family:Microsoft YaHei;font-size:18px;">#include<reg52.h>
#include<intrins.h>

sbit dula=P2^6;    //申明U1锁存器的锁存端
sbit wela=P2^7;    //申明U2存锁器的锁存端
sbit adwr=P3^6;     //定义A/D的WR端口
sbit adrd=P3^7;     //定义A/D的RD端口

unsigned char	code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void delayms(unsigned int xms)
{
	unsigned int i,j;
	for(i=xms;i>0;i--)   //i=xms即延时约xms毫秒
		for(j=110;j>0;j--);
}

void display(unsigned char bai,unsigned char shi,unsigned char ge)
{
	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);
	}

	void main()//主程序
	{
		unsigned char a, A1,A2,A3,adval;
		wela=1;
		P0=0x7f; //置CSAD为0,选通ADCS以后不必再管ADCS
		wela=0;
		while(1)
		{
			adwr=1;
			_nop_();
			adwr=0;	   //启动A/D转换
			_nop_();
			adwr=1;
			for(a=0;a>0;a--) //TX-IC实验板A/D工作频率较低,所以启动转换后要多留点时间转换
			{
				display(A1,A2,A3);	//把显示部分放在这里的原因也是为了延长转换时间
			}
			P1=0xff;   //读取P1口之前先给其写全1
			adrd=1;	  //写通ADCS
			_nop_();
			adrd=0;	   //A/D使能
			_nop_();
			adval=P1; //A/D数据读取赋给P1口
			adrd=1;
			A1=adval/100;	 分//分出百,十,个位
			A2=adval%100/10;
			A3=adval%10;
			}
		}

	</span>
时间: 2024-10-10 14:05:33

【51单片机】A/D(1)的相关文章

51单片机之串口通信(三)

51单片机之串口通信(三) 已有 47 次阅读2015-12-29 00:21 |个人分类:51单片机| 单片机, 通信 用串口实现发送和接收同时可操作: 电脑显示结果如图: 源程序: /*项目名称:串口发送接收实验项目内容:串口发送接收同时进行,计算机发送数据给单片机控制P0口,从而控制LED灯的亮灭,单片机发送数据到计算机,计算机显示出来时间:2015年12月23日项目负责人:YUAN*/#include <reg52.h>typedef unsigned char uChar8;type

51单片机中断机制(定时器/计数器)

单片机中断简介 52单片机一共有6个中断源,它们的符号,名称以及各产生的条件分别如下: INT0 - 外部中断0,由P3.2端口线引入,低电平或下降沿引起 INT1 - 外部中断1,由P3.3端口线引入,低电平或下降沿引起 T0    - 定时器/计数器0中断, 由T0计数器计满回零引起 T1    - 定时器/计数器1中断, 由T1计数器计满回零引起 T2    - 定时器/计数器2中断, 由T2计数器计满回零引起 TI/RI - 串行口中断,串行端口完成一帧字符发送/接收后引起 其中T2是5

51单片机课程设计:基于DS18B20的温度报警器

51单片机课程设计:基于DS18B20的温度报警器 本程序用于读取DS18B20温度,同时具备报警功能,工程分为3个文件,main.c.temp.c.temp.h,经本人修改部分代码,适用于吉林农业大学51开发板,其他朋友亦可移植到其他型号开发板.工程文件在文章最下方. 1.main.c文件 /*********************************说明****************************************** 本程序用于读取温度检测模块DS18B20数值,并

51单片机课程设计:基于MQ-3的酒精浓度报警器

51单片机课程设计:基于MQ-3的酒精浓度报警器 本程序用于将MQ-3上读取到的模拟信号转换为对应的数字信号,经51单片机处理后,在数码管显示,同时具有报警功能,当检测值高于预警值,蜂鸣器报警.除了可以检测MQ-3酒精浓度模块的AD值,也适用于MQ系列的其他模块,原理基本都相同,都是将读取到的AD值转换为数字信号,程序修改后,如果接线方法正确,可以在吉林农业大学51开发板上完美运行,相关工程文件见最下方附件. /*************************************说明***

51单片机特别功用存放器和位界说

接下来的几节,我们会带着人人编写第一个单片机程序.在此之前,我们先来理解一些 51 单片机特有的程序语法以及 Keil 软件的根本操作步调,请人人必定要有耐烦.我们次要是用 C 言语来对单片机编程,而有的单片机有那么几条很特别的独有的编程语句,51 单片机就有,先引见 2 条.第一条语句是:sfr  P0 = 0x80;sfr 这个症结字,是 51 单片机特有的,他的感化是界说一个单片机特别功用存放器(special function register).51 单片机外部有许多个小模块,每一个模

51单片机的一些知识点

1.单片机芯片型号:STC 89C51RC 40C—PDIP 0707 STC——STC公司,其他前缀还有AT.Winbond等 8——基于8051内核芯片 9——表示内部含有Flash E2PROM存储器 C——表示该器件为CMOS产品 5——固定不变 1——代表芯片内部存储空间,1为4KB,2为8KB,3为12KB RC——STC单片机内部RAM(随机读写存储器)为512B,还有RD+表示内部RAM为1280B 40——表示外部晶振最高可接入40MHz,对于AT单片机数值一般在24MHz C

工业自控 西门子S7-200PLC教程 51单片机视频教程 Proteus视频教程 Protel DXP 教程

热门推荐电脑办公计算机基础知识教程 Excel2010基础教程 Word2010基础教程 PPT2010基础教程 五笔打字视频教程 Excel函数应用教程 Excel VBA基础教程 WPS2013表格教程 更多>平面设计PhotoshopCS5教程 CorelDRAW X5视频教程 Photoshop商业修图教程 Illustrator CS6视频教程 更多>室内设计3Dsmax2012教程 效果图实例提高教程 室内设计实战教程 欧式效果图制作实例教程 AutoCAD2014室内设计 Aut

Windows 通用应用尝试开发 “51单片机汇编”总结

一.前言 终于完成windows通用应用“51单片机汇编”,半年前开始玩WindowsPhone开发的第一个真正意义上的App(还很多缺点=_=).开发从1月中旬考完试到今天,期间实习了半个月,玩了几天,算起来基本弄了3个多星期吧.不多说,总结总结. 二.开发数据准备 应用中主要的数据是单片机的汇编指令,我主要用XML文件来储存数据,没有使用SQLLite数据库,数据格式如下图: xml文件的数据是我手输入的,所以这是比较烦的.(可能有更简洁的办法获取数据). 而xml文件每个每个节点对应实例,

[51单片机] SPI nRF24L01无线 [可以放在2个单片机里实现通信]

main.c 1 #include<reg51.h> 2 #include"2401.h" 3 4 #define uint unsigned int 5 #define uchar unsigned char 6 7 sbit KEY8=P3^7; //发送按键 8 sbit beep=P2^3;//喇叭 9 sbit LED6=P1^6; ////接收到数据后的功能实现灯 10 11 void delay_ms(uint z) //延时函数 12 { 13 uint x

51单片机GPIO口模拟串口通信

51单片机GPIO口模拟串口通信 标签: bytetimer终端存储 2011-08-03 11:06 6387人阅读 评论(2) 收藏 举报 本文章已收录于: 分类: 深入C语言(20) 作者同类文章X 1 #include "reg52.h" 2 #include "intrins.h" 3 #include "math.h" 4 #include "stdio.h" 5 sbit BT_SND =P1^5; 6 sbit