欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: AD轉換程序 [打印本頁]

作者: 082576    時間: 2018-3-12 17:19
標題: AD轉換程序
本帖最后由 082576 于 2018-3-12 17:21 編輯

#include <reg52.h>
#include "intrins.h"

//#define  12000000L
//#define BAUD 9600
#define uchar unsigned char
#define uint  unsigned int

sfr ADC_CONTR=0xBC;   //ADC控制寄存器
sfr ADC_RES=0xBD;     //ADC高8位結果存儲
sfr ADC_RESL=0xBE;    //ADC低2位
sfr P1ASF=0x9D;       //P1口功能控制寄存器P1ASF

#define ADC_POWER   0x80   //ADC電源控制位,0:關閉,1:打開
#define ADC_FLAG    0x10   //ADC結束標志位
#define ADC_START   0x08   //ADC啟動控制位
#define ADC_SPEEDLL 0x00   //ADC轉換速度

#define CLEAR_SCREEN 0x01   //清屏指令:清屏且AC值為00H
#define AC_INIT   0x02   //將AC設置為00H。且游標移到原點位置  
#define CURSE_ADD  0x06   //設定游標移到方向及圖像整體移動方向(默認游標右移,圖像整體不動)  
#define FUN_MODE  0x30   //工作模式:8位基本指令集  
#define DISPLAY_ON  0x0c   //顯示開,顯示游標,且游標位置反白
#define DISPLAY_OFF  0x08   //顯示關  
#define CURSE_DIR  0x14   //游標向右移動:AC=AC+1
#define SET_CG_AC  0x40   //設置AC,范圍為:00H~3FH
#define SET_DD_AC  0x80
#define LCD_DATA  P0

sbit gain=P2^0;   /
sbit SW=P2^1; /
sbit rs = P2^7;
sbit rw = P2^6;
sbit LCD_EN  = P2^5;
sbit PSB = P2^4;

/***************漢字地址表***************************
uchar code addr_tab[]={     //便于根據漢字坐標求出地址
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,//第一行漢字位置
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,//第二行漢字位置
0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,//第三行漢字位置
0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,};//第四行漢字位置*/




void InitADC();                                                                                                        //ADC初始化
uint GetADCResult(uchar ch);                                                                                                                                                                        
void delay(uint ms);
void write_12864com(uchar com);        //12864寫指令
void write_12864dat(uchar dat);        //12864寫數據
void delay_ms(uint z);

/***************12864寫指令*************/
void write_12864com(uchar com)
{
rs = 0;
rw = 0;
LCD_EN = 0;
P0 = com;
delay_ms(5);
LCD_EN = 1;
delay_ms(5);
LCD_EN = 0;
}

/***************12864寫數據*************/
void write_12864dat(uchar dat)
{
rs = 1;
rw = 0;
LCD_EN=0;
P0 = dat;
delay_ms(5);
LCD_EN = 1;
delay_ms(5);
LCD_EN = 0;

}

void display()
{
  uchar code table1[]="歡迎使用";
  uchar code table2[]="當前阻";        




}

/***************初始化LCD*************/
void Lcd_Init()
{
  PSB=1;  
  write_12864com(0x30);//選擇基本指令集
  write_12864com(0x0e);        
  write_12864com(0x01);
  write_12864com(0x80);
}


/****************ADC取值*********************/
uint GetADCResult(uchar ch)
{
          ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
          _nop_();                                        //Must wait before inquiry
          _nop_();
          _nop_();
          _nop_();
          while (!(ADC_CONTR & ADC_FLAG));                //Wait complete flag
          ADC_CONTR &= ADC_FLAG;                          //Close ADC

          return (ADC_RES*4 + ADC_RESL);                  //Return ADC result
}


/****************初始化ADC特殊功能寄存器*********************/
void InitADC( )
{
          P1ASF = P1 | 0x3f;                //Set  P1.0 - P1.5 as analog input port
          ADC_RES  = 0;                  //Clear previous result
                  ADC_RESL = 0;
          ADC_CONTR = ADC_POWER | ADC_SPEEDLL ;
          delay(20);                      //ADC power-on delay and Start A/D conversion
}




void delay_ms(uint ms)
{
        uint i,j;
        for(i=ms;i>0;i--)
                for(j=110;j>0;j--);
}

void main()
{
   Lcd_Init();
   while(1)
   {
   //hanzi_Disp(0,0,"顯示");
   }
}























歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1