freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于can總線和avr單片機(jī)的網(wǎng)絡(luò)型溫度傳感-資料下載頁

2025-06-20 13:08本頁面
  

【正文】 a16內(nèi)部T/C0作為自動轉(zhuǎn)換的觸發(fā)源。ATmega16 中有兩個 8 位的定時計(jì)數(shù)器:T/C0、T/C2,它們都是通用的多功能定時計(jì)數(shù)器,其主要特點(diǎn)是: (1) 單通道計(jì)數(shù)器; (2) 比較匹配時清零計(jì)數(shù)器(自動重裝特性,Auto Reload); (3) 可產(chǎn)生無輸出抖動(glitchfree)的,相位可調(diào)的脈寬調(diào)制(PWM)信號輸出;(4) 頻率發(fā)生器;(5) 外部事件計(jì)數(shù)器(僅 T/C0); (6) 帶 10 位的時鐘預(yù)分頻器; (7) 溢出和比較匹配中斷源(TOV0、OCF0 和TOVOCF2); (8) 允許使用外部引腳的 32kHz 手表晶振作為獨(dú)立的計(jì)數(shù)時鐘源(僅 T/C2)。AVR 的 ADC 功能單元由獨(dú)立的專用模擬電源引腳 AVcc 供電。AVcc 和 Vcc 的電壓差別不能大于177。ADC 轉(zhuǎn)換的參考電源可采用芯片內(nèi)部的 參考電源,或采用 AVcc,也可使用外部參考電源。使用外部參考電源時,外部參考電源由引腳 ARFE 接入。使用內(nèi)部電壓參考源時,可以通過在 AREF 引腳外部并接一個電容來提高 ADC 的抗噪性能。程序中采用 T/C0 比較匹配中斷,每 2ms 中斷一次。該定時中斷作為 ADC自動觸發(fā)轉(zhuǎn)換的觸發(fā)源信號。在 ADC 的初始化代碼中,設(shè)置 ADC 時鐘的分頻系數(shù)為 32。系統(tǒng)4M 時鐘經(jīng)過64 ,滿足了逐次比較轉(zhuǎn)換電路達(dá)到最大精度時,需要的 50kHz~200kHz 之間的采樣時鐘的要求。ADC 單端輸入轉(zhuǎn)換時間為 13 個 ADC 時鐘周期,則一次 ADC 轉(zhuǎn)換的時間為 1364/ = 。因此,2ms 的固定轉(zhuǎn)換間隔時間遠(yuǎn)超出完成一次 ADC 的轉(zhuǎn)換時間 ,不會影響 ADC 的轉(zhuǎn)換過程,同時每秒內(nèi)完成的 ADC 轉(zhuǎn)換達(dá) 500 次。在 ADC 轉(zhuǎn)換完成中斷服務(wù)中,把 ADC 轉(zhuǎn)換結(jié)果換算成電壓值,換算采用了整型數(shù)計(jì)算。為了保證計(jì)算產(chǎn)生不溢出,先將 adc_data 強(qiáng)行轉(zhuǎn)換成長型,然后再乘 5000(這里假定AVcc參考電壓為 5v) ,最后再除 1024。ADC和T/C0的初始化函數(shù)的C語言實(shí)現(xiàn)如下所示,源代碼有相應(yīng)的注釋:/******************************************************************** *函數(shù)原型: port_init(void) *參數(shù)說明: 無 *返回值: 無 *說明: AVR單片機(jī)端口初始化 ********************************************************************/void port_init(void) { DDRA = 0x00。 //初始化PA口為AD輸入端口 PORTA = 0x00。}/******************************************************************** *函數(shù)原型: adc_init(void) *參數(shù)說明: 無 *返回值: 無 *說明: AVR單片機(jī)對內(nèi)部ADC的初始化 ********************************************************************/void adc_init(void)//dac初始化{ ADCSRA = 0x00。 //disable adc ADMUX = 0x60。 //select adc avcc 外部電源參考,數(shù)據(jù)左對齊,ADC0為輸入; ACSR = 0x80。 SFIORamp。=0x1F。 SFIOR|=0x60。 //選擇T/C0比較匹配中斷為AD0 觸發(fā)源 ADCSRA = 0xAD。}/******************************************************************** *函數(shù)原型: adc_isr(void) *參數(shù)說明: TXD_data1:存放轉(zhuǎn)換結(jié)果的參數(shù) *返回值: 無 *說明: ADC中斷處理函數(shù),用于提取中斷完成后的數(shù)據(jù) ********************************************************************/pragma interrupt_handler adc_isr:iv_ADC //ADC轉(zhuǎn)換完成中斷處理函數(shù)void adc_isr(void)//ADC轉(zhuǎn)換{ TXD_data1=ADCH。 //轉(zhuǎn)換結(jié)果值}/******************************************************************** *函數(shù)原型: timer0_p_isr(void) *參數(shù)說明: time_2ms_ok:數(shù)據(jù)更新標(biāo)志 *返回值: 無 *說明: 定時器處理函數(shù),用于設(shè)置數(shù)據(jù)更新標(biāo)志 ********************************************************************/pragma interrupt_handler timer0_p_isr:20 void timer0_p_isr(void){ time_2ms_ok=1。 //數(shù)據(jù)更新標(biāo)志 nop()。}/******************************************************************** *函數(shù)原型: init_devices(void) *參數(shù)說明: time_2ms_ok:數(shù)據(jù)更新標(biāo)志 *返回值: 無 *說明: 設(shè)備初始化函數(shù),用于初始化ADC、定時器T/C0和外部中斷 ********************************************************************/void init_devices(void) //系統(tǒng)的初始化{ //stop errant interrupts until set up CLI()。 //關(guān)中斷 port_init()。 adc_init()。 MCUCR = 0x00。 //GICR = 0x40。 GICR = 0x00。 TCCR0=0x0B。 //內(nèi)部時鐘,64分頻(),CTC模式 TCNT0=0x00。 OCR0=0xE6。 TIMSK = 0x02。 //使能T/C0比較中斷 SEI()。 //開中斷 //all peripherals are now initialized} LCM模塊軟件的設(shè)計(jì)LCM模塊的軟件設(shè)計(jì)主要包括三大部分:LCD12864的初始化函數(shù)、LCD12864寫數(shù)據(jù)和寫命令函數(shù)、LCD12864顯示字符函數(shù)。各部分函數(shù)的代碼和注釋如下圖所示:/******************************************************************** *函數(shù)原型: void Write_Cmd(uchar cmd) *參數(shù)說明: cmd: 寫入的命令參數(shù); Lcdtemp:判忙標(biāo)志 *返回值: 無 *說明: 該函數(shù)用于向LCM寫命令 ********************************************************************/void Write_Cmd(uchar cmd){ uchar lcdtemp = 0。 LCD_RS_Status。 LCD_RW_Read。 LCD_DataIn。 do //判忙 { LCD_ENABLE。 NOP()。 lcdtemp = LCD2MCU_Data。 LCD_DISABLE。 } while(lcdtemp amp。 0x80)。 LCD_DataOut。 LCD_RW_Write。 MCU2LCD_Data = cmd。 LCD_ENABLE。 NOP()。 LCD_DISABLE。}/******************************************************************** *函數(shù)原型: void Write_Data(uchar dat) *參數(shù)說明: dat: 寫入的數(shù)據(jù); Lcdtemp:判忙標(biāo)志 *返回值: 無 *說明: 該函數(shù)用于向LCM寫數(shù)據(jù) ********************************************************************/void Write_Data(uchar dat){ uchar lcdtemp = 0。 LCD_RS_Command。 LCD_RW_Read。 LCD_DataIn。 do //判忙 { LCD_ENABLE。 NOP()。 lcdtemp = LCD2MCU_Data。 LCD_DISABLE。 } while(lcdtemp amp。 0x80)。 LCD_DataOut。 LCD_RS_Data。 LCD_RW_Write。 MCU2LCD_Data = dat。 LCD_ENABLE。 NOP()。 LCD_DISABLE。}/******************************************************************** *函數(shù)原型: void LCD12864_Init(void) *參數(shù)說明: 無 *返回值: 無 *說明: 該函數(shù)用于LCD12864的初始化 ********************************************************************/void LCD12864_Init(void){ LCDRST_OFF。 Delay_ms(10)。 LCDRST_OK。 Delay_ms(10)。 LCDRST_OFF。 Delay_ms(1)。 LCD_CMDOut。 //液晶控制端口設(shè)置為輸出 //LCD_PSB_H。 //并行模式 Delay_ms(500)。 Write_Cmd(0x30)。 //8位并口,基本指令集 Delay_ms(1)。 Write_Cmd(0x02)。 // AC地址歸位,游標(biāo)到原點(diǎn) Delay_ms(1)。 Write_Cmd(0x0c)。 //整體顯示打開,游標(biāo)關(guān)閉,閃爍關(guān)閉 Delay_ms(1)。 Write_Cmd(0x01)。 //清除顯示 Delay_ms(1)。 Write_Cmd(0x06)。 //游標(biāo)右移 Delay_ms(1)。
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1