STC单片机内部ADC转换程序文档格式.docx
《STC单片机内部ADC转换程序文档格式.docx》由会员分享,可在线阅读,更多相关《STC单片机内部ADC转换程序文档格式.docx(38页珍藏版)》请在冰豆网上搜索。
#include<
adc.h>
//#include<
cbit.h>
/*----------------------------
初始化ADC寄存器中断方式
----------------------------
voidInitADC()
{
unsignedunsignedcharchan=0;
P1ASF=0xff;
//设置P1口全部为ADC通道
ADC_RES=0;
//清除高8位缓冲数据
ADC_RESL=0;
//清除低2位缓冲数据
ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ADC_START|chan;
_nop_();
//打开ADC
}
*/
//----------------------------
//ADC中断处理
/*voidadc_isr()interrupt5using1
unsignedunsignedintAD_Result_Temp
ADC_CONTR&
=!
ADC_FLAG;
//清除ADC中断标志位
return(((AD_Result_Temp|ADC_RES)<
<
2)+ADC_RESL);
//返回10位ADC转换结果
if(++ch>
7)ch=0;
//却换到下一个通道
unsignedintGetADCResult(unsignedcharchan)
AD_Result_Temp=0;
ADC_RES=0;
ADC_RESL=0;
ADC_CONTR=ADC_POWER|ADC_SPEEDHH|chan|ADC_START;
//Mustwaitbeforeinquiry
while(!
(ADC_CONTR&
ADC_FLAG));
//等待完成
=~ADC_FLAG;
//关闭ADC转换
AD_Result_Temp=(((AD_Result_Temp|ADC_RES)<
returnAD_Result_Temp;
//74HC595
//发送完一个8位数据,就锁存一次
//8个数码管,可以这样做
//for(i=0;
i<
8;
i++)
//{
//Send_HC595(....//要发送的8为数据);
//Show_595();
//}
/********************************************************/
/**/
/*将显示数据送入74HC595内部移位寄存器*/
voidSend_HC595(INT16ULED_DATA)
INT8Ui;
for(i=0;
{
HC595_DS=LED_DATA&
0x80;
HC595_SHCP=1;
//上升沿发生移位
HC595_SHCP=0;
LED_DATA=LED_DATA<
1;
}
/*将移位寄存器内的数据锁存到输出寄存器并显示*/
voidShow_595(void)
HC595_STCP=0;
HC595_STCP=1;
//上升沿将数据送到输出锁存器
//74HC164
#ifndef__74LS164_H__
#define__74LS164_H__
externvoidWrite_Bit8(unsignedcharbit_8)
unsignedchari;
for(i=8;
i>
0;
i--)//数码管段8位数据
{
Data=bit_8&
//传送一位数据
CLK=0;
CLK=1;
bit_8=bit_8<
20位串口A/D转换器CS5513
20位串口A/D转换器CS5513接口程序2010-03-2214:
56//cs5513接口的C51官方程序
//cs5513返回长整型数据
//CS=0时表示片选有效,当然可以直接接地,这样可以节省一个I/O口
sbitADCS=P2^0;
sbitADCLK=P2^1;
sbitADDO=P2^2;
unsignedlongintADConv(void)
uchari;
unsignedlongintResult=0;
ADCLK=0;
ADCS=0;
_nop_();
ADCLK=0;
while(ADDO);
ADCLK=1;
for(i=0;
3;
i++){
for(i=0;
20;
i++){
Result=Result<
if(ADDO)
Result=Result+1;
ADCLK=1;
ADCS=1;
returnResult;
//LCDSMC12864-05
#ifndef_CRYFUCNS_H_
#define_CRYFUCNS_H_
voidSend(unsignedchartype,unsignedchartransdata);
voidInit_LCD(void);
voidClear_GDRAM(void);
voidDisp_HZ(unsignedcharaddr,constunsignedchar*pt,unsignedcharnum);
voidDraw_PM(constunsignedchar*ptr);
voidDraw_TX(unsignedcharYaddr,unsignedcharXaddr,constunsignedchar*dp);
voidDisp_SZ(unsignedcharaddr,unsignedcharshuzi);
cryfucns.h>
STC12C5A.H>
#include<
intrins.h>
types.h>
externconstINT8Ushuzi_table[];
voidSend(INT8Utype,INT8Utransdata);
/**********液晶控制IO的宏定义*************/
sbitRS_CS=P0^0;
sbitRW_SDI=P0^1;
sbitE_CLK=P0^2;
/*******************************************
函数名称:
delay_Nus
功能:
延时N个us的时间
参数:
n--延时长度
返回值:
无
********************************************/
voiddelay_Nus(INT16Un)
for(i=n;
i>
0;
i--)
}
delay_1ms
延时约1ms的时间
voiddelay_1ms(void)
for(i=150;
i--)_nop_();
delay_Nms
延时N个ms的时间
********************************************/
voiddelay_Nms(INT16Un)
INT16Ui=0;
delay_1ms();
Ini_Lcd
初始化液晶模块
voidInit_LCD(void)
{
delay_Nms(100);
//延时等待液晶完成复位
Send(0,0x30);
/*功能设置:
一次送8位数据,基本指令集*/
delay_Nus(72);
Send(0,0x02);
/*DDRAM地址归位*/
Send(0,0x0c);
/*显示设定:
开显示,不显示光标,不做当前显示位反白闪动*/
Send(0,0x01);
/*清屏,将DDRAM的位址计数器调整为“00H”*/
Send(