单片机常用芯片头文件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//STC 单片机内部ADC转换程序
//可选择查询和中断方式
//H文件
#ifndef __ADC_H__
#define __ADC_H__
#define ADC_POWER 0x80 //ADC 电源控制位
#define ADC_FLAG 0x10 //ADC 完成标志
#define ADC_START 0x08 //ADC 启动控制位
//ADC转换速度选择
#define ADC_SPEEDLL 0x00 //420 clocks
#define ADC_SPEEDL 0x20 //280 clocks
#define ADC_SPEEDH 0x40 //140 clocks
#define ADC_SPEEDHH 0x60 //70 clocks
unsigned int AD_Result_Temp;
unsigned int GetADCResult (unsigned char chan); //ADC 转换处理,查询方式#endif
//C文件
#ifndef __ADC_C__
#define __ADC_C__
#include
//#include
/*----------------------------
初始化ADC 寄存器中断方式
----------------------------
void InitADC()
{
unsigned unsigned char chan=0;
P1ASF = 0xff; //设置P1口全部为ADC通道ADC_RES = 0; //清除高8位缓冲数据
ADC_RESL = 0; //清除低2位缓冲数据
ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | chan;
_nop_();
_nop_(); //打开ADC
}
*/
//----------------------------
//ADC 中断处理
//----------------------------
/*void adc_isr() interrupt 5 using 1
{
unsigned unsigned int AD_Result_Temp
ADC_CONTR &= !ADC_FLAG; //清除ADC 中断标志位return (((AD_Result_Temp|ADC_RES)<<2)+ADC_RESL); //返回10位ADC转换结果if (++ch > 7) ch = 0; //却换到下一个通道
ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | chan;
}
*/
unsigned int GetADCResult(unsigned char chan)
{
AD_Result_Temp=0;
ADC_RES=0;
ADC_RESL=0;
ADC_CONTR = ADC_POWER | ADC_SPEEDHH | chan | ADC_START;
_nop_(); //Must wait before inquiry
_nop_();
_nop_();
_nop_();
while (!(ADC_CONTR & ADC_FLAG));//等待完成
ADC_CONTR &= ~ADC_FLAG; //关闭ADC转换
AD_Result_Temp=(((AD_Result_Temp|ADC_RES)<<2)+ADC_RESL);
return AD_Result_Temp;
}
#endif
//74HC595
//发送完一个8位数据,就锁存一次
// 8个数码管,可以这样做
// for(i=0;i<8;i++)
// {
// Send_HC595(....//要发送的8为数据);
// Show_595();
// }
/********************************************************/
/* */
/*将显示数据送入74HC595内部移位寄存器*/
/* */
/********************************************************/
void Send_HC595(INT16U LED_DATA)
{
INT8U i;
for(i=0;i<8;i++)
{
HC595_DS=LED_DATA&0x80;
HC595_SHCP=1; //上升沿发生移位
_nop_();
_nop_();
HC595_SHCP=0;
LED_DATA=LED_DATA<<1;
}
}
/********************************************************/
/* */
/*将移位寄存器内的数据锁存到输出寄存器并显示*/
/* */
/********************************************************/
void Show_595(void)
{
HC595_STCP=0;
_nop_();
_nop_();
HC595_STCP=1; //上升沿将数据送到输出锁存器
_nop_();
_nop_();
HC595_STCP=0;
}
//74HC164
#ifndef __74LS164_H__
#define __74LS164_H__
extern void Write_Bit8(unsigned char bit_8)
{
unsigned char i;
for(i=8;i>0;i--) //数码管段8位数据
{
Data=bit_8&0x80; //传送一位数据
CLK=0;
CLK=1;
bit_8=bit_8<<1;
}
}
#endif
20位串口A/D转换器CS5513 20位串口A/D转换器CS5513 接口程序2010-03-22 14:56//cs5513接口的C51官方程序