WriteCOMDATA(0x38,0); Delay(10);
WriteCOMDATA(0x06,0); Delay(10);
WriteCOMDATA(0x0c,0); Delay(10); }
/************************************************
** 函数名称 :void WriteChar(uchar Row,uchar Col,uchar Num,uchar *pBuffer) ** 函数功能 :在任意位置写指定个字符
** 输 入 :Row : 要写的字符所在的行,只能为1或2; Col : 要写的字符所在的列,只能为0---15 Num : 要写字符的个数
pbuffer : 要写字符的首地址 ** 输 出 :无 ** 说 明 :
************************************************/
void WriteChar(uchar Row,uchar Col,uchar Num,uchar *pBuffer) {
uchar i;
if(Row==1)Row=0x80+Col; else Row=0xC0+Col; WriteCOMDATA(Row,0); for(i=Num;i!=0;i--) { WriteCOMDATA(*pBuffer,1); pBuffer++; } }
#endif#include\ //添加延时函数头文件 #include
/****************************************************************************
函数功能:AD转换子程序 入口参数:CH 出口参数:dat
32
****************************************************************************/
unsigned char adc0832(unsigned char CH) {
unsigned char dat = 0x00; //AD值 unsigned char i,test,adval; adval = 0x00; test = 0x00;
Clk = 0; //初始化 DATI = 1; _nop_(); CS = 0; _nop_(); Clk = 1; _nop_();
if ( CH == 0x00 ) //通道选择 {
Clk = 0;
DATI = 1; //通道0的第一位 _nop_(); Clk = 1; _nop_(); Clk = 0;
DATI = 0; //通道0的第二位 _nop_(); Clk = 1; _nop_(); } else {
Clk = 0;
DATI = 1; //通道1的第一位 _nop_(); Clk = 1; _nop_(); Clk = 0;
DATI = 1; //通道1的第二位 _nop_(); Clk = 1; _nop_();
33
}
Clk = 0; DATI = 1;
for( i = 0;i < 8;i++ ) //读取前8位的值 {
_nop_();
adval <<= 1; Clk = 1; _nop_(); Clk = 0; if (DATO) adval |= 0x01; else
adval |= 0x00; }
for (i = 0; i < 8; i++) //读取后8位的值 {
test >>= 1; if (DATO)
test |= 0x80; else
test |= 0x00; _nop_(); Clk = 1; _nop_(); Clk = 0; }
if (adval == test) //比较前8位与后8位的值,如果不相同舍去。若一直出现显示为零,请将该行去掉 dat = test; _nop_();
CS = 1; //释放ADC0832 DATO = 1; Clk = 1; return dat; }
#include\ sbit v_led = P3^2;
34
uint count_100us;
/************************************************ ** 函数名称 : Init_Timer0(void)
** 函数功能 : 定时器0初始化子程序 ** 输 入 : 无 ** 输 出 : 无
** 说 明 : 对定时器0进行初始化 模式1 16位定时器 0~65536 ************************************************/ void Init_Timer0(void) //定时器初始化子程序 {
TMOD |= 0x01; //使用模式1,16位定时器,使用\符号可以在使用多个定时器时不受影响
TH0=0xFF; //定时器赋初值 TL0=0xA4;
ET0=1; //使能定时器中断 TR0=1; //打开定时器 EA=1; //打开总中断 }
/************************************************ ** 函数名称 : Timer0_isr(void) interrupt 1 using 1 ** 函数功能 : 定时器中断程序 ** 输 入 : 无 ** 输 出 : 无
** 说 明 : 定时器计数到65536溢出执行中断函数 定时器重新赋值及状态指示灯取反 ************************************************/ //void Timer0_isr(void) interrupt 1 using 1 //{
// TH0=0xFF; //重新赋值 // TL0=0xA4; // count_100us++;
// if(count_100us<30)TEST=0; // else if(count_100us<90)TEST=1; // else count_100us=0;
// //TEST=~TEST; //状态指示灯取反 //}
/************************************************ * 文件功能: 延时函数头文件 * 使用说明: 在需要使用延时函数时添加此头文件“delay.h” ************************************************/
35
#ifndef __DELAY_H__ #define __DELAY_H__ #include
#define uchar unsigned char #define uint unsigned int
/************************************************ ** 函数名称 : Delay(uint T) ** 函数功能 : 延时函数
** 输 入 : T--延时倍数 大小--0~65535 ** 输 出 : 无 ** 说 明 :
************************************************/ void Delay(uint T) {
uchar i;
for(T;T>0;T--)
for(i=200;i>0;i--); }
#endif
36
相关推荐: