娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年04月29日(星期二)

正在發生

2021年04月29日 | C8051F005的簡介及DA/AD程序

發布者:以泉換泉 來源: eefocus關鍵字:C8051F005  AD程序 手機看文章 掃描二維碼
隨時隨地手機看文章

簡介:本文主要介紹了C8051F005的DA驅動程序(C語言)。


C8051F005的DA驅動程序(C語言)

//-----------------------------------------------------------------------------

// Includes

//-----------------------------------------------------------------------------

#include // SFR declarations

#include


//-----------------------------------------------------------------------------

// 16-bit SFR Definitions for 'F00x

//-----------------------------------------------------------------------------


sfr16 DP = 0x82; // data pointer

sfr16 TMR3RL = 0x92; // Timer3 reload value

sfr16 TMR3 = 0x94; // Timer3 counter

sfr16 ADC0 = 0xbe; // ADC0 data

sfr16 ADC0GT = 0xc4; // ADC0 greater than window

sfr16 ADC0LT = 0xc6; // ADC0 less than window

sfr16 RCAP2 = 0xca; // Timer2 capture/reload

sfr16 T2 = 0xcc; // Timer2

sfr16 DAC0 = 0xd2; // DAC0 data

sfr16 DAC1 = 0xd5; // DAC1 data

//-----------------------------------------------------------------------------

// Function PROTOTYPES

//-----------------------------------------------------------------------------

void SYSCLK_Init (void);

//-----------------------------------------------------------------------------

// MAIN Routine

//-----------------------------------------------------------------------------


void main (void){

WDTCN = 0xde; // disable watchdog timer

WDTCN = 0xad;

SYSCLK_Init (); // initialize oscillator

REF0CN = 0x03; // Reference Control Register

//----------------------------------------------------------------------------

// DAC Configuration

//----------------------------------------------------------------------------

DAC0CN = 0x80; // DAC0 Control Register

DAC1CN = 0x80; // DAC1 Control Register

while(1)

{

DAC0L = 0xAB; // DAC0 Low Byte Register

DAC0H = 0x0C; // DAC0 High Byte Register

DAC1L = 0xAB; // DAC1 Low Byte Register

DAC1H = 0x0C; // DAC1 High Byte Register

}

}

//-----------------------------------------------------------------------------

// Initialization Subroutines

//-----------------------------------------------------------------------------


//-----------------------------------------------------------------------------

// Oscillator Configuration

//-----------------------------------------------------------------------------

void SYSCLK_Init (void)

{

int i; // delay counter


OSCXCN = 0x67; // start external oscillator with

// 18.432MHz crystal


for (i=0; i < 256; i++) ; // XTLVLD blanking interval (>1ms)


while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle


OSCICN = 0x88; // select external oscillator as SYSCLK

// source and enable missing clock

// detector

}

C8051F005的AD驅動程序(C語言)

//-----------------------------------------------------------------------------

// Includes

//-----------------------------------------------------------------------------

#include

#include

#include

//-----------------------------------------------------------------------------

// Function PROTOTYPES

//-----------------------------------------------------------------------------

#define uchar unsigned char

#define uint unsigned int

void SYSCLK_Init (void);

void delaynus(unsigned int q) ; //N us延時函數

void PORT_Init (void);

void SPI0_Init (void);

void LCD_Init(void);

void SendSPIByte(unsigned char ch);

void delaynms (unsigned int j);

void writecom(unsigned char com);

void writedata(unsigned char d);

void writechar(unsigned char ua);

void lcd_Net(void);

void Write_COM(uchar ins);

void SendSPIByte(uchar disdata);

void lcden(datad);

void LCD_set_xy( unsigned char x, unsigned char y );

void lcd_xhl(void);

void LCD_write_string(unsigned char n);

void lcd_adc(void);

void UART0_Init (void);

void ADC (void);

sbit lcdcs=P3^0;

//-----------------------------------------------------------------------------

// Global CONSTANTS

//-----------------------------------------------------------------------------

#define BAUDRATE 115200 // Baud rate of UART in bps

#define SYSCLK 11059200 // SYSCLK frequency in Hz

#define SAMPLE_RATE 50000 // Sample frequency in Hz

#define INT_DEC 4096 // integrate and decimate ratio



sfr16 DP = 0x82; // data pointer

sfr16 TMR3RL = 0x92; // Timer3 reload value

sfr16 TMR3 = 0x94; // Timer3 counter

sfr16 ADC0 = 0xbe; // ADC0 data

sfr16 ADC0GT = 0xc4; // ADC0 greater than window

sfr16 ADC0LT = 0xc6; // ADC0 less than window

sfr16 RCAP2 = 0xca; // Timer2 capture/reload

sfr16 T2 = 0xcc; // Timer2

sfr16 DAC0 = 0xd2; // DAC0 data

sfr16 DAC1 = 0xd5; // DAC1 data


unsigned char xdata ADC1Data[4];

unsigned int xdata ad_arr[50];

unsigned char datad ,comd,kk,sdf,ppca;

unsigned char virt_port,v,b,m;

unsigned char lcd_data_count;

unsigned char *lcdpoint;

unsigned char qqq;

unsigned char data8;

unsigned int i;

unsigned int AD_MAXT;

unsigned int AD_MINT;

long AD_VAL,AD_VAL_TEST;

unsigned char YYY;

long result;

long fff;

long hhh;

int j,w,z; // temperature in hundredths of a

unsigned int fff_int, fff_frac;

unsigned char p=0,a=0,s,d,f,g=0;

//-----------------------------------------------------------------------------

// MAIN Routine

//-----------------------------------------------------------------------------

void main(void){


WDTCN = 0xde; // disable watchdog timer

WDTCN = 0xad;

SYSCLK_Init ();

PORT_Init ();

UART0_Init() ; // initialize crossbar and GPIO

SPI0_Init ();

LCD_Init() ;

delaynms(100);

Write_COM(0x00);

delaynms(100);

delaynms(100);

Write_COM(0x01);

delaynms(100);

delaynus (100);

LCD_set_xy(0X00,0);

delaynus (200);

lcd_adc();

delaynus (200);

LCD_write_string(5);

delaynms (100);

while (1)

{

delaynms (100);

ADC ();

}

}

//-----------------------------------------------------------------------------

// Initialization Subroutines

//-----------------------------------------------------------------------------



//-----------------------------------------------------------------------------

// ADC

//-----------------------------------------------------------------------------

void ADC (void)

{

AMX0CF = 0x60;// AMUX Configuration Register

AMX0SL = 0x00;// AMUX Channel Select Register

ADC0CN = 0x00;// ADC Control Register

REF0CN = 0x03;

ADC0CN |= 0x80;

AD_VAL=0;

AD_VAL_TEST = 0;

for( YYY = 0;YYY<50;YYY++)

{

ad_arr[YYY]=0;

}

YYY=0;

ADCINT = 0;

for(YYY= 0;YYY<50;YYY++) //AD_TIMES=50

{

ADBUSY = 1;

while (!ADCINT);

ADCINT = 0;

_nop_();

_nop_();

_nop_(); //*AD_POINTER = ADC0

ad_arr[YYY]=ADC0;

}

for(YYY=0;YYY<50;YYY++)// for(i = 0;i{

AD_VAL_TEST += ad_arr[YYY];

}

AD_VAL = (int)(AD_VAL_TEST/50);

_nop_();

_nop_();

_nop_();

_nop_();

hhh=AD_VAL*5;

hhh=hhh*5;

hhh=hhh*100;

hhh=hhh/4096;

ADC1Data[0]=hhh/1000; //將A/D轉化值存到顯示數組

ADC1Data[1]=(hhh-1000*ADC1Data[0])/100;

ADC1Data[2]=(hhh-1000*ADC1Data[0]-100*ADC1Data[1])/10;

ADC1Data[3]=hhh-1000*ADC1Data[0]-100*ADC1Data[1]-10*ADC1Data[2];

delaynus (100);

LCD_set_xy(0X05,0);

delaynus (200);

for(qqq=0;qqq<4;qqq++)

{

data8=ADC1Data[qqq];

if(data8>=0x0a) data8 += 0x37;

else data8 += 0x30;

delaynms (200);

writechar(data8);

}

AD_VAL=0;

}



//-----------------------------------------------------------------------------

// PORT_Init

//-----------------------------------------------------------------------------

void PORT_Init (void)

{


XBR0 = 0x27; // XBAR0: Initial Reset Value

XBR1 = 0x00; // XBAR1: Initial Reset Value

XBR2 = 0x5c; // XBAR2: Initial Reset Value

PRT0CF = 0x14; // Output configuration for P0

PRT1CF = 0x10; // Output configuration for P3

PRT3CF = 0x01; // Output configuration for P3


}

//-----------------------------------------------------------------------------

// SYSCLK_Init

//-----------------------------------------------------------------------------

void SYSCLK_Init (void)

{

// delaynms counter

OSCXCN = 0x67; // start external oscillator with

for (i=0; i < 256; i++) ; // XTLVLD blanking interval (>1ms)

while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle

OSCICN = 0x88; // select external oscillator as SYSCLK

}

//-----------------------------------------------------------------------------

// SPI0_Init

//-----------------------------------------------------------------------------

void SPI0_Init (void)

{

SPI0CFG = 0x07; // data sampled on 1st SCK rising edge

SPI0CFG|=0xC0; //CKPOL =1;

SPI0CN = 0x03; // Master mode; SPI enabled; flags

SPI0CKR = SYSCLK/2/2000000-1; // SPI clock <= 8MHz (limited by

// EEPROM spec.)

}

//-----------------------------------------------------------------------------

// UART0_Init

//-----------------------------------------------------------------------------

void UART0_Init (void)

{

SCON = 0x50; // SCON: mode 1, 8-bit UART, enable RX

TMOD = 0x20; // TMOD: timer 1, mode 2, 8-bit reload

TH1 = -(SYSCLK/BAUDRATE/16); // set Timer1 reload value for baudrate

TR1 = 1; // start Timer1

CKCON |= 0x10; // Timer1 uses SYSCLK as time base

PCON |= 0x80; // SMOD = 1

TI = 1; // Indicate TX ready

}

//-----------------------------------------------------------------------------

// LCD_Init

//-----------------------------------------------------------------------------

void LCD_Init(void) //向LCD送命令


{


// unsigned int xdata x;

delaynms(100);

datad=0x00;

SendSPIByte(datad);

delaynms(10);

Write_COM(0x30);

delaynms(10);

Write_COM(0x30);

delaynms(10);

Write_COM(0x30);

delaynms(10) ;

Write_COM(0x28);

delaynms(100);

virt_port=0;

SendSPIByte(virt_port);

lcden(virt_port);

Write_COM(0x01);

delaynms(100);

Write_COM(0x06);

delaynms(10) ;

Write_COM(0x0C);

delaynms(500) ;




}

//-----------------------------------------------------------------------------

// SendSPIByte

//-----------------------------------------------------------------------------

void SendSPIByte(unsigned char ch)

{ lcdcs=1;

delaynus(100);

SPIF = 0;

SPI0DAT = ch;

while (SPIF == 0);

delaynus(100);

lcdcs=0;

delaynus(100);

_nop_(); // 等待寫結束

}

//-----------------------------------------------------------------------------

// lcden

//-----------------------------------------------------------------------------

void lcden(datad)

{

datad|=0x08;

SendSPIByte(datad);

datad&=0xf7;

SendSPIByte(datad);

}

//-----------------------------------------------------------------------------

// delaynms

//-----------------------------------------------------------------------------

void delaynms (unsigned int uu)

{

unsigned int oo,ll;

for (oo=0;oo{

for(ll=0;ll<1140;ll++);


}

}

//-----------------------------------------------------------------------------

// writechar

//-----------------------------------------------------------------------------

void writechar(unsigned char ua)

[1] [2]
關鍵字:C8051F005  AD程序 引用地址:C8051F005的簡介及DA/AD程序

上一篇:一種嵌入式時鐘管理器的設計與實現
下一篇:51單片機頻率計數器課程設計

推薦閱讀

????Apollo 2.0 主要有四大方面的更新:系統完整開放、安全能力的提升、感知能力的增強以及模擬器方面的優化。這也意味著百度整體的自動駕駛系統被開放出來,其中包括了云服務平臺、軟件平臺、參考硬件平臺以及參考車輛平臺。搭載了百度 Apollo 2.0 系統的自動駕駛汽車將擁有簡單城市道路的自動駕駛能力。  按照如今的擴張速度,百度“阿波羅計...
服務北京世園會的無人掃地車“蝸小白”近日,中關村昌平科技園的智行者聯合創始人李曉飛告訴記者,在2019年北京世園會上,該公司自主研發的一臺無人掃地車“蝸小白”會上崗服務。據李曉飛介紹,“蝸小白”是智行者推出的“蝸”系列低速自動駕駛智能車產品之一,集激光雷達、攝像頭、超聲波雷達等傳感器于一身,具備鬧鐘式任務設計、自動加載地圖、自動避讓...
4月27日,由國網重慶信通公司負責建設的國網重慶電力新一代電費結算應用系統正式啟動建設,進一步推進電力市場化改革,形成覆蓋全部交易結算品種的電費結算應用模式。 為適應電力市場建設要求,指導、規范、明確電力市場結算相關工作開展,維護電力交易各方的合法權益和社會公眾利益,確保電力市場安全、經濟、綠色,國網重慶電力啟動新一代電費結算應...
目前,在嵌入式產品的研發中,低檔微處理器軟件多采用裸機開發模式實現。在這種開發模式中,常有如下需求:(1)在經歷特定的時間段后,執行特定操作;(2)根據給定周期執行特定操作。傳統的作法是利用前后臺方式:設定硬件定時器,使其在后臺以特定周期對各相關操作的標志變量作計數操作;前臺則不斷對各標志變量巡回查詢,若發現標志變量達到預定值,則執行...

史海拾趣

小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 正安县| 松溪县| 青冈县| 丰台区| 拜泉县| 藁城市| 开江县| 张家港市| 延安市| 宜春市| 六枝特区| 宜君县| 津南区| 广河县| 汕头市| 凯里市| 墨玉县| 澄迈县| 大丰市| 灵川县| 清徐县| 疏附县| 万宁市| 麦盖提县| 兰西县| 平江县| 大渡口区| 莲花县| 呈贡县| 大埔县| 利津县| 广西| 大英县| 宣城市| 南雄市| 洛浦县| 武乡县| 屯留县| 济阳县| 古交市| 张掖市|