ad转换及显示

合集下载

AD转换的数码管显示

AD转换的数码管显示

AD转换的数码管显示*本例程采用AD0804 芯片,硬件电路:cs 片选端接P2.3,WR 写数据端写P3.6,RD 读数据端接P3.7,锁存端接P2.6 脚,数码管位选端分别接P3.2,P3.3,P3.4,段选端接P1 口*/#includereg52.h//头文件#define uint unsigned int//宏文件#define uchar unsigned char//宏文件uchar num;//变量void delay3(uint z); //延时定义void dissy();//延时函数定义sbit ge=P3 ;//个位定义sbit shi=P3;//十位定义sbit bai=P3;//百位定义sbit ad_cs=P2;//片选端sbit ad_wr=P3;//写数据端sbit ad_rd=P3;//读数据端sbit pian=P2;//锁存器片选void add();//ad 转换子函数void delay(uint i);//延时子函数申明uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86, 0x8e};//数组/************主函数**********/void main(){while(1){add();//调用AD 转换子函数dissy();//数码管显示子函数} }/************AD 转换子函数**********/void add()//AD 转换子函数{uchar i;ad_cs=1;//将片选关闭ad_cs=0;//将片选打开ad_wr=1;//写数上升沿ad_wr=0;//写数下降沿ad_wr=1;//写数上升沿P1=0xff;//送数到P0 口ad_rd=1;//读数上升沿delay(25);//延时一会儿ad_rd=0;//读数下降沿//////**************因为AD 转换时间周期长,我现在的数码管没有采用锁存器,AD 转换时间大于显示时间,所以显示时会闪烁,解决此问题方法是,连续调用了显示子程序七次,这样显示时就和AD 转换时一至,显示出来的数就不闪了********************//////for(i=0;i7;i++)//调用7 次,相当于delay(255)void dissy();//////**********************************//////num=P1;//将数给计数器num}/************显示子函数**********/void dissy()//显示子函数{P0=table[num/100];//百位显示数据bai=0;//百位打开delay(14);//延时一会bai=1;//。

AD转换

AD转换

一、设置ADMUX(AD转换多路选择寄存器)1 参考电源的选择REFS1 REFS0 AREF引脚0 0 接外部参考电源(默认)0 1 内部接通AVCC,外部要求与GND之间并接电容(100nF)1 0 保留1 1 内部接通2.56V,外部要求与GND之间并接电容(100nF)2 对齐方式的选择ADLAR = 0: 右对齐(默认)转换结果如下:ADCH bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0内容 - - - - - - ADC9 ADC8ADCL bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0内容 ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0ADLAR = 1: 左对齐(一般用于不需要大于8位精度时,只读ADCH就可以了)转换结果如下:ADCH bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0内容 ADC9 ADC8 ADC7 ADC6 ADC5 ADC4 ADC3 ADC2ADCL bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0内容 ADC1 ADC0 - - - - - -3 通道号的选择对于MEGA8:MUX3 MUX2 MUX1 MUX0 输入端0 0 0 0 ADC00 0 0 1 ADC10 0 1 0 ADC20 0 1 1 ADC30 1 0 0 ADC40 1 0 1 ADC50 1 1 0 ADC60 1 1 1 ADC71 1 1 0 内部1.22V1 1 1 1 内部0V对于MEGA16:关于差分输入可以通过选择MUX4...0设置放大倍数,因没有做过试验,此处略。

MUX4 MUX3 MUX2 MUX1 MUX0 输入端0 0 0 0 0 ADC00 0 0 0 1 ADC10 0 0 1 0 ADC20 0 0 1 1 ADC30 0 1 0 0 ADC40 0 1 0 1 ADC50 0 1 1 0 ADC60 0 1 1 1 ADC71 1 1 1 0 内部1.22V1 1 1 1 1 内部0V二设置ADCSRA1 转换模式选择对于MEGA8ADFR=1:首次启动转换后,将自动连续转换ADFR=0: 启动一次,转换一次对于MEGA16ADATE=1:首次启动转换后,在触发脉冲上升沿时开始一次转换 ADATE=0:启动一次,转换一次当ADATE=1后,启动转换前先要在SFIOR中设置触发源(当ADATE=0时,设置SFIOR是无效的):ADTS2 ADTS1 ADTS0 触发源0 0 0 自动连续转换0 0 1 模拟比较器0 1 0 外部中断00 1 1 定时器/计数器0比较匹配1 0 0 定时器/计数器0溢出1 0 1 定时器/计数器比较匹配B1 1 0 定时器/计数器1溢出1 1 1 定时器/计数器1捕获事件2 中断/查询方式选择ADIE=1: 转换完成后激活AD中断(当SREG的I位=1时)ADIE=0: 通过查询ADIF标志判断是否完成了一次转换ADIF=1,表示完成了一次转换。

数显仪表的原理及应用知识

数显仪表的原理及应用知识

数显仪表的原理及应用知识1. 数显仪表的概述数显仪表是一种能够以数字形式显示各种参数的仪表。

它通过采集外部信号并经过AD转换后,将信号转换为数字形式并显示在数字显示屏上。

数显仪表广泛应用于工业控制、电子测量、自动化设备等领域。

2. 数显仪表的工作原理数显仪表的工作原理可简述为以下几个步骤: - 采集信号:数显仪表通过传感器等装置采集外部信号,如温度、压力、电压等。

- 信号调理:采集到的模拟信号需要进行调理处理,通常包括滤波、放大、补偿等。

调理后的信号能够更好地适应数显仪表的测量范围。

- AD转换:调理后的信号经过模数转换电路,将模拟信号转换为数字信号。

AD转换器通常利用门电路、比较器等进行信号的量化处理。

-数字显示:经过AD转换后的数字信号将通过数字显示驱动电路控制数字显示屏进行显示。

3. 数显仪表的应用领域数显仪表在各个行业的自动化系统中有着广泛的应用,主要包括以下几个方面:3.1 工业自动化控制在工业自动化控制系统中,数显仪表可用于显示和监控各种物理量,如温度、压力、流量等。

它能够实时显示参数数值,并通过数字通讯接口与PLC等设备进行通讯,实现远程监控和控制。

3.2 电力系统监测数显仪表广泛应用于电力系统监测领域,用于显示电网的电压、电流、功率因数等参数。

它可以帮助电力系统运维人员及时掌握电网运行状态,实现对电力系统的稳定运行和故障检测。

3.3 环境监测数显仪表在环境监测领域中扮演着重要角色,可以用于监测空气质量、湿度、光照强度等环境参数。

通过数显仪表的显示,人们可以直观地了解到环境的变化,并有针对性地采取措施。

3.4 实验室仪器在科学研究和实验室中,数显仪表被广泛用于显示实验数据和测量结果。

它能够以数字形式准确显示实验结果,并具备较高的精度和稳定性,为科学研究提供重要支持。

4. 数显仪表的特点数显仪表相比于传统的指针仪表具有以下几个特点:•数字显示:数显仪表通过数字显示屏直接以数字形式显示各种参数,减少了读取误差,提高了可读性。

单片机AD模数转换实验报告

单片机AD模数转换实验报告

单片机AD模数转换实验报告一、实验目的和要求1、掌握单片机与ADC0809的接口设计方法。

2、掌握Proteus软件与Keil软件的使用方法。

二、设计要求。

1、用Proteus软件画出电路原理图,在单片机的外部扩展片外三总线,并通过片外三总线与0809接口。

2、在0809的某一模拟量输入通道上接外部模拟量。

3、在单片机的外部扩展数码管显示器。

4、分别采用延时和查询的方法编写A/D 转换程序。

5、启动A/D转换,将输入模拟量的转换结果在显示器上显示。

三、电路原理图。

图1、电路仿真图四、实验程序流程框图和程序清单。

1、查询法:ORG 0000HSTART: LJMP MAINORG 0100HMAIN: MOV SP, #2FH NT: MOV DPTR, #0FF78H MOVX @DPTR, A LOOP: JB P3.3, LOOP MOVX A, @DPTR MOV B, #51 DIV AB MOV R0, A MOV A, B MOV B, #5 DIV AB MOV R1, A MOV R2, B LCALL DIR SJMP NT DIR: MOV R7, #0 SJMP LOOP1 BH: MOV A, R1 MOV R2, A LOOP1: MOV DPTR, #WK MOV A, R7 MOVC A, @A+DPTR MOV P2, A MOV DPTR, #DK MOV A, R2 MOVC A, @A+DPTR MOV P1, A LCALL DELAY INC R7 CJNE R7, #2, BH MOV DPTR, #WK MOV A, R7 MOVC A, @A+DPTR MOV P2, A MOV DPTR, #DK MOV A, R0 MOVC A, @A+DPTR ANL A, #7FH MOV P1, A LCALL DELAY RET DELAY: M OV R5, #01H DL1: MOV R4, #8EH DL0: MOV R3, #02H DJNZ R3, $ DJNZ R4, DL0 DJNZ R5, DL1 RET WK: DB 10H DB 20H DB 40H DK: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ENDdisplay 送百分位字符代码送位选信号延时1ms 送十分位字符代码送位选信号延时1ms 送个位及小数点字符代码送位选信号延时1ms 熄灭第四位数码管延时1ms 返回display 送百分位字符代码送位选信号延时1ms 送十分位字符代码送位选信号延时1ms 送个位及小数点字符代码送位选信号延时1ms 熄灭第四位数码管延时1ms 返回2、延时法:ORG 0000H START: LJMP MAIN ORG 0100H MAIN: MOV SP, #2FH LOOP: MOV DPTR, #0FF78H MOVX @DPTR, A LCALL DELAY MOVX A, @DPTR MOV B, #51 DIV AB MOV R0, A MOV A, B MOV B, #5 DIV AB MOV R1, A MOV R2, B LCALL DIR SJMP LOOP DIR: MOV R7, #0 SJMP LOOP1 BH: MOV A, R1 MOV R2, A LOOP1: MOV DPTR, #WK MOV A, R7 MOVC A, @A+DPTR MOV P2, A MOV DPTR, #DK MOV A, R2 MOVC A, @A+DPTR MOV P1, A LCALL DELAY INC R7 CJNE R7, #2, BH MOV DPTR, #WK MOV A, R7 MOVC A, @A+DPTR MOV P2, A MOV DPTR, #DK MOV A, R0 MOVC A, @A+DPTR ANL A, #7FH MOV P1, A LCALL DELAY RET DELAY: M OV R5, #01H DL1: MOV R4, #8EH DL0: MOV R3, #02H DJNZ R3, $ DJNZ R4, DL0 DJNZ R5, DL1 RET WK: DB 10H DB 20H DB 40H DK: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H开始启动AD 延时从AD中取数据数据处理结束调显示子函数END五、实验结果。

杭电微机原理AD转换DA转换实验实验报告

杭电微机原理AD转换DA转换实验实验报告

微型计算机原理与接口技术实验报告班级:学号:姓名:指导老师:朱亚萍实验名称: A/D转换实验D/A转换实验(一)D/A转换实验(二)实验一A/D转换实验一、实验目的了解模/数转换基本原理,掌握ADC0809的使用方法。

二、实验内容利用实验系统上电位器提供的可调电压作为0809模拟信号的输入,编制程序,将模拟量转换为数字量,通过数码管显示出来。

三、实验接线图图 1-1四、编程指南1. ADC0809的START端为A/D转换启动信号,ALE端为通道选择地址的锁存信号,实验电路中将其相连,以便同时锁存通道地址并开始A/D采样转换,其输入控制信号为CS和WR,故启动A/D转换只须如下两条指令:MOV DX, ADPORT OUT DX, AL ;ADC0809端口地址;发CS和WR信号并送通道地址2.用延时方式等待A/D转换结果,使用下述指令读取A/D转换结果:MOV DX, ADPORTIN AL, DX;ADC0809端口地址五、实验程序框图图 1-2六、实验步骤1.断电连接导线, 将0809 CS4插孔连到译码输出FF80H插孔,将通道0模拟量输入端IN0连电位器W1的中心插头AOUT1(0-5V)插孔,8MHZ→T;2. 在PC机和实验系统联机状态下,新建实验程序,编辑完成后进行保存(保存后缀为.asm文件);3. 编译下载;4. 全速运行,运行程序;5. 按RST键退出。

七、实验程序DATA SEGMENTBUF DB 6 DUP(0)DATA1: DB0c0h,0f9h,0a4h,0b0h,99h,DB 92h,82h,0f8h,80h,90h,DB88h,83h,0c6h,0a1h,86h,DB8eh,0ffh,0ch,89h,0deh,DB0c7h,8ch,0f3h,0bfh,8fhDATA ENDSCODE SEGMENTASSUME CS: CODE,DS: DATAADC EQU 0FF80H; ADC0809端口地址PA EQU 0FF20HPB EQU 0FF21HPC EQU 0FF22H MAIN PROC FAR START: MOV AX, DATA MOV DS, AXMOV ES, AX ADC_S:MOV AX, 00HMOV DX, ADCOUT DX, ALMOV CX, 0500H DELAY:LOOP DELAYMOV DX, ADPORT IN AL, DXCALL CONVERS CALL DISPJMP ADC_S MAIN ENDPCONVERS PROC NEARMOV AH, AL3.循环不断采样A/D转换的结果,边采样边显示A/D转换后的数字量。

单片机实验数据采集_AD转换

单片机实验数据采集_AD转换

单片机实验报告姓名: XX班级: XXXXX学号: XXXXXXX专业:电气工程与自动化实验1 名称:数据采集_A/D转换一、实验目的⑴掌握A/D转换与单片机接口的方法;⑵了解A/D芯片0809 转换性能及编程方法;⑶通过实验了解单片机如何进行数据采集。

二、实验设备装有proteus和keil软件的电脑一台三、实验说明及实验原理:A/D 转换器大致分有三类:一是双积分A/D 转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近式A/D转换器,精度、速度、价格适中;三是并联比较型A/D转换器,速度快,价格也昂贵。

实验用ADC0809属第二类,是8位A/D转换器。

每采集一次一般需100μs。

由于ADC0809A/D 转换器转换结束后会自动产生EOC 信号(高电平有效),取反后将其与8031 的INT0 相连,可以用中断方式读取A/D转换结果。

ADC0809 是带有8 位A/D转换器、8 路多路开关以及微处理机兼容的控制逻辑的CMOS组件。

它是逐次逼近式A/D转换器,可以和单片机直接接口。

(1) ADC0809 的内部逻辑结构由图1.1 可知,ADC0809 由一个8 路模拟开关、一个地址锁存与译码器、一个A/D 转换器和一个三态输出锁存器组成。

多路开关可选通8 个模拟通道,允许8 路模拟量分时输入,共用A/D 转换器进行转换。

三态输出锁器用于锁A/D 转换完的数字量,当OE 端为高电平时,才可以从三态输出锁存器取走转换完的数据。

(2) ADC0809 引脚结构ADC0809各脚功能如下:D7 ~ D0:8 位数字量输出引脚。

IN0 ~ IN7:8位模拟量输入引脚。

VCC:+5V工作电压。

GND:地。

REF(+):参考电压正端。

REF(-):参考电压负端。

START:A/D转换启动信号输入端。

ALE:地址锁存允许信号输入端。

(以上两种信号用于启动A/D转换).EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。

第7章 AD转换

第7章 AD转换

第7章AD转换7.1 概述7.1.1 AD转换器AD转换器即ADC(Analog to Digital Converter),是能将模拟量转换为数字量的器件。

单片机能直接处理和控制的是数字量,对于模拟量,则可通过AD转换器件将其先转换为数字量,然后再交付单片机去做进一步处理。

在AD转换器件将模拟量转换为数字量的过程中,有许多参数值得我们关注,其中最重要的两个参数是转换时间和转换分辨率。

目前,常见AD转换器与微处理器间的数据接口有并行和串行之分,AD转换器的转换精度有8位、10位、12位等多种类型。

此处选取并行8位AD转换器ADC0809,并行12位AD转换器AD574,串行8位AD转换器ADC0832,串行12位AD转换器TLC2543,共四种AD转换器件,分别说明其特点和使用方法。

7.1.2 AD转换分辨率AD转换中,用转换分辨率来表示AD转换器对输入模拟信号的分辨能力,常用转换结果的二进制数的位数来表示,8位精度代表转换结果用8位二进制数表示,12位精度代表转换结果用12位二进制数表示。

以下通过两个例子具体解释其内在含义。

例1:假设被转换的模拟量是电压信号,被测电压值在0V~5V的固定区间内连续可调,AD转换器分辨率假设是8位。

我们已经熟知,8位无符号二进制数的数值范围是十进制的0~255,共256个数。

如果AD转换器分辨率是8位,则从理论上说,被测电压范围5V(5V-0V=5V)被平均等分为256等份,每一份是5V/256=0.01953125V≈0.02V=20mV,这每一份的含义是:电压每增大20mV,AD转换结果的数值就增加1;0V电压对应的转换结果应该是最小值0,而5V电压对应的转换结果应该是最大值255,2.5V电压对应的转换结果应该是0~255的中间值128,其它电压依次成比例对应某一数值。

例2:假设被转换的模拟量是电压信号,被测电压值在0V~5V的固定区间内连续可调,AD转换器分辨率假设是12位。

STC12C5A60S2中的AD转换串口显示(C语言)

STC12C5A60S2中的AD转换串口显示(C语言)

#include<reg52.h>#include<intrins.h>#define FOSC 18432000L#define BAUD 9600typedef unsigned char BYTE;typedef unsigned int WORD;sbit led=P1^0;sbit key1=P3^4;sbit key2=P3^5;BYTE code table[]={3,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40}; sfr ADC_CONTR=0xbc; //ADC控制寄存器sfr ADC_RES=0xbd; //ADC转换结果寄存器sfr ADC_LOW2=0xbe; //ADC转换结果寄存器sfr P1ASF=0x9d; //模拟功能控制寄存器#define ADC_POWER 0x80//电源控制位#define ADC_FLAG 0x10; //模数转换标志位#define ADC_START 0x08; //模数转换器转换器启动控制位#define ADC_SPEEDLL 0x00; //AD转换所用的时间90个时钟周期转换#define ADC_SPEEDL 0x20; //180个时钟周期转换#define ADC_SPEEDH 0x40; //360个#define ADC_SPEEDHH 0x60; //540个void InitUart();void InitADC();void SendData(BYTE dat);BYTE GetADCResult(BYTE ch);void Delay(WORD n);void keyscan();void showresult(BYTE ch);BYTE t1=0,t2=0,cl=1,i,c,a;WORD aa,num,t0,flgh;void delay(WORD z){WORD i,j;for(i=z;i>0;i--)for(j=110;j>0;j--);}void main(){InitUart();InitADC();while(1){keyscan();if(flgh==1){flgh=0;ES=0;TI=1;SBUF=GetADCResult();while(!TI);TI=0;ES=1;}}}BYTE GetADCResult(BYTE ch){ADC_CONTR=0xC0;_nop_();_nop_();_nop_();_nop_();P1ASF=0x00;//选择P1.0作为A/D转换通道ADC_CONTR|=0x08;//启动A/D转换while((ADC_CONTR&0x10)==0);//等待A/D转换结束ADC_CONTR&=0xE7;return(ADC_RES);}void InitUart(){SCON=0x5a;TMOD=0x21;TH0=(65536-45872)%256;TL0=(65536-45872)/256;TH1=TL1=-(FOSC/12/32/BAUD);TR1=1;ET0=1;REN=1;TR0=1;SM0=0;SM1=1;EA=1;ES=1;}void InitADC(){P1ASF=0xff;ADC_RES=0;ADC_CONTR=0x80;Delay(2);}void keyscan(){if(key1==0){delay(10);if(key1==0){cl++;num=table[cl];while(!key1);}}if(key2==0){delay(10);if(key2==0){cl--;num=table[cl];while(!key2);}}}void ser()interrupt 4{RI=0;a=SBUF;c=1;}void timer_1() interrupt 3{TL1 = 0x3c; //200usTH1 = 0xff;t1++;t2++;if(t1 <= cl)led = 0; //这三行通过t1与cl比较,控制led亮灭,也就是PWM调光。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
break;
}
}
}
uchar AD()
{
ulong i;
uchar star;
ADC_CONTR|=0x80;
for(i=0;i<10000;i++);
P1ASF=0x01;
ADC_CONTR|=0XE1;
for(i=0;i<10000;i++);
while(1)
{
ADC_CONTR|=0x08;
void L1602_char(uchar hang,uchar lie,char sign)
{
uchar a;
if(hang == 1)
{
a = 0x80;
}
if(hang == 2)
{
a = 0xc0;
}
a = a + lie - 1;
Busy();
wcmd(a);
Busy();
wdata(sign);
//Delay(1);
while(1)
{
busy_flag = (bit)(P0 & 0x80);
if(busy_flag == 0)
{
break;
}
}
E = 0;
}
/********************************************************************
void L1602_string(uchar hang,uchar lie,uchar *p);
void L1602_char(uchar hang,uchar lie,char sign);
uchar AD();
uchar AD1();
void DelayUs2x(unsigned char t)
wcmd(0x38);
Delay(5);
wcmd(0x38);
wcmd(0x38);
Busy();
wcmd(0x08);
Busy();
wcmd(0x01);
Busy();
wcmd(0x06);
Busy();
wcmd(0x0c);
}
/*********************************************************************
{
while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数unsigned char t,无返值unsigned char是定义无符号字符变量,其值的范围是0~255这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
功能: 1602初始化,请参考1602的资料*
输入:无*
输出:无
***********************************************************************/
void L1602_init(void)
{
Delay(15);
wcmd(0x38);
Delay(5);
}
/********************************************************************
*
名称: L1602_string(uchar hang,uchar lie,uchar *p)*
功能:改变液晶中某位的值,如果要让第一行,第五个字符开始显示"ab cd ef",调用该
RW = 0;
delay();
E = 0;
delay();
P0 = del;
delay();
E = 1;
delay();
E = 0;
}
/*********************************************************************
名称: L1602_init()*
{
uchar a;
if(hang == 1)
{
a = 0x80;
}
if(hang == 2)
{
a = 0xc0;
}
a = a + lie - 1;
while(1)
{
Busy();
wcmd(a);
Busy();
wdata(*p);
a++;
p++;
if((*p == '\0')||(a==0x90)||(a==0xd0))
名称: L1602_char(uchar hang,uchar lie,char sign)*
功能:改变液晶中某位的值,如果要让第一行,第五个字符显示"b",调用该函数如下
L1602_char(1,5,'b')
输入:行,列,需要输入1602的数据*
输出:无
***********************************************************************/
*名称: wcmd(uchar del) *
功能: 1602命令函数*
输入:输入的命令值*
输出:无
***********************************************************************/
void wcmd(uchar del)
{
RS = 0;
delay();功能: 162写数据函数*输入:需要写入1602的数据*
输出:无
***********************************************************************/
void wdata(uchar del)
{
delay();
RS = 1;
delay();
void DelayMs(unsigned char t)
{
while(t--);
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
void delay()
{
_nop_();
_nop_();
}
void Delay(uint del)
{
uint i,j;
for(i=0;i<del;i++)
for(j=0;j<=148;j++)
{
}
}
/********************************************************************
*名称: bit Busy(void) *
功能:这个是一个读状态函数,读出函数是否处在忙状态*
输入:输入的命令值*
输出:无
star=0;
while(star==0)
***********************************************************************/
void Busy(void)
{
bit busy_flag = 1;
P0 = 0xff;
RS = 0;
delay();
RW = 1;
delay();
E = 1;
RW = 0;
delay();
E = 0;
delay();
P0 = del;
delay();
E = 1;
delay();
E = 0;
}
/********************************************************************
名称: wdata(uchar del) *
函数如下L1602_string(1,5,"ab cd ef;")
输入:行,列,需要输入1602的数据*
输出:无
***********************************************************************/
void L1602_string(uchar hang,uchar lie,uchar *p)
uchar data adc1 _at_ 0x31;
sbit E=P2^7;
//1602
使能引脚
sbit RW=P2^6;
//1602
读写引脚
sbit RS=P2^5;
//1602
数据
/
命令选择引脚
void SendByte(unsigned char dat);
void SendStr(unsigned char *s);
#include <STC12C5A.H>
#include<intrins.h>
#include "stdio.h"
#define ulong unsigned long
#define uint unsigned int
#define uchar unsigned char
uchar data adc _at_ 0x30;
相关文档
最新文档