亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hjmcu.c

?? 很實用的單片機例程
?? C
?? 第 1 頁 / 共 2 頁
字號:
/**************************************************************************************************
*** 慧凈電子1天入門、10天學會、1年精通單片機與C語言視頻教程配套程序源碼                         ***
*** 實驗目的:HJ-1G 開發板   AVR配套實驗程序                                                    ***
*** MCU: ATmega16          部分C源碼可以直接用于項目開發、歡迎復制共享、功德無量、沒有版權      ***
*** 作者:慧凈免費助學會員  
*** 部分源碼網上收集整理、如有傷害到你的利益、請來信,hjmcu@163.com 我們的免費助學會員會定期幫你刪除掉         ***
*** 編譯器:GCC                                                                                ***
*** 百度交流空間:http://hi.baidu.com/HJMCU      WWW.HJMCU.COM                                  ***
*** 論壇交流:http://bbs.hjmcu.com   歡迎來論壇一分錢不要下載配套的仿真電路                     ***
*** 配套的硬件學習板網址:http://shop37031453.taobao.com/                                       ***
*** 日期:2008.8.8                                                                              ***
*** 目標:用C語言寫程序就這么簡單、慧爭祝你1天入門、10天學會、1年精通單片機與C語言、找個好工作  ***
***************************************************************************************************/

//慧凈電子大學生課程設計專用實驗板《HJ-1G》、直接支持AT89S52 STC89C52單片機
//加轉接板后支持AVR ATmega16 32 系列單片機、是你學習單片機的得力助手 一板二用,學完51再學AVR

//HJ-1G 學習板加AVR轉接板后,裝上ATMETAM16 單片機實驗
//HJ-1G 學習板AVR單片機實驗,FM報警實驗
//注意要把JTAGEN 仿真熔絲位設置成1 才能完成本實驗,設置成1時不能用仿真口,只能用ISP下載接口下載程序
//第一排3、4個按鍵按下后,流水燈分別跳動。

#include <avr/io.h>        
#include <util/delay.h>
#include <avr/interrupt.h>   //中斷函數頭文件

//××××××××××××引腳宏定義×××××××××××××
//DS18B20定義
#define SET_DQ (PORTC) |= (1 << (PC2))      // DS18B20 高電平
#define CLR_DQ (PORTC) &=~(1 << (PC2))      // DS18B20 低電平
#define DQ_IN  (PINC) & (1<<(PC2))            // DS18B20信號輸入

#define SET_OUT (DDRC)|= (1<<(PC2))         //PA2定義成輸出
#define SET_IN  (DDRC)&=~(1<<(PC2))         //PA2定義成輸入



//常量聲明
#define BAUD 9600
//ROM操作指令碼
#define DS18B20_SKIP_ROM 0xCC      //跳過ROM指令碼
#define DS18B20_SEARCH_ROM 0xF0      //搜索ROM指令碼
#define DS18B20_READ_ROM 0x33      //讀ROM指令碼
#define DS18B20_MATCH_ROM 0x55      //匹配ROM指令碼
#define DS18B20_ALARM_ROM 0xEC      //報警搜索ROM指令碼
//RAM操作指令碼
#define DS18B20_CONVERT_RAM 0x44         //啟動溫度轉換指令碼
#define DS18B20_READ_RAM 0xBE            //讀RAM指令碼    
#define DS18B20_WRITE_RAM 0x4E          //寫RAM指令碼     
#define DS18B20_COPY_RAM 0x48           //把RAM的TH、TL、CFG中的內容復制到EEPROM指令碼
#define DS18B20_RECALL_EEPROM 0xB8      //把EEPROM的TH、TL、CFG中的內容恢復到RAM指令碼


//全局變量聲明
unsigned char Temp_H,Temp_L,OK_Flag,ThrH,ThrL,CFG;    
                               //溫度高位,低位,復位成功標志,報警上下限值,配置寄存器值
unsigned char ReadRAM_Buff[9],WriteRAM_Buff[3]; //讀RAM的9個字節,寫RAM的溫度上下
                                              //限報警值和配置寄存器


//函數聲明
void Delayus(unsigned int lus);         //us延時函數
void Delayms(unsigned int lms);        //ms延時函數
void Port_DS18B20(void);              //DSDS18B20端口配置
void Port_Init(void);   //端口初始化配置
void Usart_Init(void);  //USART寄存器設置
void Usart_PutChar(unsigned char cTXData);  //字節發送函數
void Usart_PutString(unsigned char *pcString); //字符串發送函數

unsigned char DS18B20_Init(void);   //DSDS18B20初始化
unsigned char Read_DS18B20(void);        //讀DS18B20
void Write_DS18B20(unsigned char dat);   //寫DS18B20

void DS18B20_StartConvert(void);   //啟動溫度轉換
void DS18B20_GetConvert(void);   //獲得溫度轉換結果
void DS18B20_ReadRAM(void);        // 讀取RAM內容
void DS18B20_WriteRAM(void);       //寫溫度上下限和配置寄存器到RAM
void DS18B20_CopyEEPROM(void);     //復制RAM中的溫度上下線和配置寄存器到EEPROM
void DS18B20_RecallRAM(void);       //把EEPROM中的溫度上下線和配置寄存器恢復到RAM

int main(void)            
{
	unsigned char i;
	unsigned int tempint,tempint1,tempint2,tempint3,tempint4;
	                   //分別存儲溫度整數值,整數值的千,百,十,個位
	unsigned int temppoint,temppoint1,temppoint2,temppoint3,temppoint4;  
	                    //分別存儲溫度小數值,小數值的千,百,十,個位
	
	Port_Init();    //端口初始化
	Usart_Init();   //串口初始化
	Port_DS18B20();   //DSDS18B20端口初始化
	
	tempint = 0;   //變量初始化
	temppoint=0;
	Temp_H = 0;
	Temp_L = 0;
	OK_Flag = 0;
	
	Usart_PutString("DS18B20 溫度測量實驗");
	Usart_PutChar(0x0D);
	Usart_PutChar(0x0A);  //結尾發送回車換行
	
	/*
	//這段被屏蔽的程序演示了1、讀出RAM內容,讀出的內容發送到計算機2、寫溫度上下限報警值和
	//配置寄存器的值到RAM 3、將這3個值保存到EEPROM中,4、將EEPROM中的值恢復到RAM,5、再
	//從RAM中讀取全部9個字節,并發送到計算機。可以通過串口觀察兩次讀到的值,由于發送的是
	//16進制,所以在串口助手上要選擇“HEX”顯示(即16進制顯示),才能進行觀察
	DS18B20_ReadRAM();        // 讀取RAM內容
	for(i = 0;i < 9;i++)  
	{			
		Usart_PutChar(ReadRAM_Buff[i]);		
	}
	
	ThrH = 0x50;
	ThrL = 0x10;
	CFG = 0x7f;
	
	DS18B20_WriteRAM();       //寫溫度上下限和配置寄存器到RAM
	
	DS18B20_CopyEEPROM();     //復制RAM中的溫度上下線和配置寄存器到EEPROM
	
	DS18B20_RecallRAM();       //把EEPROM中的溫度上下線和配置寄存器恢復到RAM

	DS18B20_ReadRAM();        // 讀取RAM內容
	for(i = 0;i < 9;i++)  
	{			
		Usart_PutChar(ReadRAM_Buff[i]);		
	}
	
	for(i=0;i<200;i++)      //延時4S,再進行溫度轉換
	{
		Delayms(200);
	}
	*/
	sei();          //使能全局中斷  
	
	while(1)
	{			
		DS18B20_StartConvert();   //啟動溫度轉換
		DS18B20_GetConvert();   //獲得溫度轉換結果
			
		if(Temp_H & 0x08)   //判斷溫度的正負
		{			
			Temp_H = ~Temp_H;  //負溫度。取反加1
			Temp_L = ~Temp_L;  //
		
			SREG |= ~(1 << SREG_C);  //清零進位位標志
			Temp_L++;                  //溫度低字節加1
			if(SREG & (1 << SREG_C))  //有進位嗎?
			{
				Temp_H++;           //有進位,則溫度高字節加1
			}
		
		}	
			
		tempint = ((Temp_H << 4) & 0x70) | (Temp_L >> 4);	    //獲得溫度的整數位	
		
		tempint1 = tempint / 1000;           //千位 
		tempint2 = tempint % 1000 / 100;     //百位
		tempint3 = tempint % 100 / 10;        //十位
		tempint4 = tempint % 10;              //個位
		
		temppoint = Temp_L & 0x0f;    //取出溫度的小數位
		temppoint = (temppoint * 625);  //小數位乘以0.625得出溫度的小數位值,在此擴大1000
		                                  //倍,得出溫度的4位小數位,顯示的時候加小數點
			
		temppoint1 = temppoint / 1000;           //千位 
		temppoint2 = temppoint % 1000 / 100;     //百位
		temppoint3 = temppoint % 100 / 10;        //十位
		temppoint4 = temppoint % 10;              //個位
		
		Usart_PutString("當前環境溫度為:");   //發送溫度值到上位機
		
		if(!(tempint1))            //高位為零,則不顯示
		{
			Usart_PutChar(' ');
			if(!(tempint2))
			{
				Usart_PutChar(' ');
			}
			else
			{
				Usart_PutChar(tempint2 + 0x30);
			}
			if(!(tempint3))
			{
				Usart_PutChar(' ');				
			}
			else 
			{
				Usart_PutChar(tempint3 + 0x30);
			}			
		}
		else
		{
			Usart_PutChar(tempint1 + 0x30);
			Usart_PutChar(tempint2 + 0x30);
			Usart_PutChar(tempint3 + 0x30);
		}
		Usart_PutChar(tempint4 + 0x30);
		Usart_PutChar('.');                 //顯示小數點
		
		Usart_PutChar(temppoint1 + 0x30);    //顯示小數位
		Usart_PutChar(temppoint2 + 0x30);
		Usart_PutChar(temppoint3 + 0x30);
		Usart_PutChar(temppoint4 + 0x30);
	
		Usart_PutChar(' ');           //不顯示,空一格
		Usart_PutChar('o');           //顯示溫度的符號。由于實在找不到溫度那個再上面的小o,
		Usart_PutChar('C');          //只好用普通的小寫o來代替了。
		Usart_PutChar(0x0D);
		Usart_PutChar(0x0A);  //結尾發送回車換行	
        
		for(i=0;i<200;i++)      //延時4S,再進行溫度轉換
		{
			Delayms(20);
		}
	}
}

//端口狀態初始化設置函數
void Port_Init()
{
	PORTD = 0X00;          //USART的發送接收端口分別為PD0和PD1
	DDRD |= (1 << PD1);   //PD0為接收端口,置為輸入口;PD1為發送端口,置為輸出口

	PORTB = 0x00;
	DDRB = 0xff;	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美综合视频在线观看| 久久成人18免费观看| 国产精品乱码久久久久久| 成人免费av在线| 亚洲女同一区二区| 久久日韩粉嫩一区二区三区| 麻豆精品久久精品色综合| 国产精品狼人久久影院观看方式| 日本国产一区二区| 国产激情一区二区三区四区| 亚洲成av人片在线观看| 欧美激情一区在线| 色丁香久综合在线久综合在线观看| 亚洲一区二区三区中文字幕在线| 中文字幕中文乱码欧美一区二区| 欧美国产欧美综合| 欧美mv日韩mv国产| 91视频在线观看| 国产91丝袜在线18| 爽好久久久欧美精品| 久久久一区二区三区捆绑**| 欧美日韩www| 欧美中文字幕亚洲一区二区va在线 | 成人一区二区视频| 青娱乐精品在线视频| 午夜不卡在线视频| 婷婷久久综合九色综合绿巨人| 中文字幕综合网| 国产精品国产成人国产三级| 欧美人妖巨大在线| 欧美日韩视频在线第一区| 99精品视频在线观看| 91亚洲资源网| 欧美亚洲免费在线一区| 日本韩国精品一区二区在线观看| 91在线观看免费视频| 91福利国产精品| 欧美日韩一区二区在线视频| 欧美乱熟臀69xxxxxx| 欧美一级国产精品| 久久精品男人的天堂| 亚洲区小说区图片区qvod| 亚洲欧美色一区| 亚洲第一综合色| 精品一区二区精品| 9i看片成人免费高清| 在线观看不卡一区| 精品日韩欧美在线| 亚洲精品国产一区二区精华液 | 麻豆免费精品视频| 成人丝袜高跟foot| 欧洲精品视频在线观看| 91成人看片片| 久久久综合视频| 亚洲免费观看高清完整版在线观看熊 | 久久午夜老司机| 亚洲国产视频网站| thepron国产精品| 日韩一级黄色片| 亚洲码国产岛国毛片在线| 国产一区二区三区| 欧美人伦禁忌dvd放荡欲情| 国产精品久久久久久妇女6080| 亚洲国产欧美另类丝袜| 国产一区二区三区在线看麻豆| 无吗不卡中文字幕| 在线一区二区三区做爰视频网站| 精品欧美一区二区久久| 一区在线观看视频| 国产成人午夜视频| 亚洲视频在线一区二区| 日韩精品亚洲专区| 日本vs亚洲vs韩国一区三区二区| 亚洲国产一区二区三区青草影视| 亚洲精品菠萝久久久久久久| 亚洲成人在线免费| 99精品视频中文字幕| 日韩一级视频免费观看在线| 99精品视频在线观看| 风流少妇一区二区| 国产很黄免费观看久久| 国产精品 欧美精品| 伊人开心综合网| 欧美一区二区性放荡片| 国产精品免费久久久久| 成人欧美一区二区三区黑人麻豆 | 亚洲三级在线播放| 亚洲激情在线播放| 欧美色综合天天久久综合精品| 国产清纯在线一区二区www| 狠狠色丁香久久婷婷综| 欧美xxxx老人做受| 国产精品影视天天线| 国产日韩精品一区二区浪潮av| 国产精品一区不卡| 久久精品人人做人人爽人人| 成人午夜精品在线| 亚洲国产日韩综合久久精品| 制服丝袜亚洲精品中文字幕| 国产乱码精品一区二区三| 亚洲视频1区2区| 欧美一区二区三区在线| av中文字幕在线不卡| 日韩中文字幕av电影| 亚洲黄色在线视频| 国产精品美女久久久久aⅴ| 一本久久综合亚洲鲁鲁五月天| 日韩中文字幕一区二区三区| 亚洲色欲色欲www| 国产网红主播福利一区二区| 91蜜桃在线免费视频| 国产成人在线网站| 黄色日韩三级电影| 人妖欧美一区二区| 一区二区三区精品视频在线| 国产精品色在线观看| 国产精品日产欧美久久久久| 亚洲欧美激情视频在线观看一区二区三区| 国产精品大尺度| 久久久一区二区三区捆绑**| 欧美日本一道本| 在线观看亚洲精品视频| 色嗨嗨av一区二区三区| av福利精品导航| 91蜜桃视频在线| 欧美性一二三区| 欧美日韩激情一区二区三区| 欧美日韩国产高清一区| 欧美一区二区在线看| 欧美一级爆毛片| 久久久另类综合| 最新国产成人在线观看| 亚洲免费观看高清完整版在线 | 最新国产の精品合集bt伙计| 日韩一区有码在线| 亚洲一区二区在线视频| 日韩电影在线观看一区| 韩国av一区二区| 日本高清免费不卡视频| 欧美丰满一区二区免费视频| xnxx国产精品| 亚洲线精品一区二区三区八戒| 日韩电影免费在线观看网站| 国内外精品视频| 色婷婷精品大视频在线蜜桃视频| 欧美日韩国产小视频在线观看| 制服丝袜亚洲色图| 1024国产精品| 久久精品国产一区二区三| 91在线观看免费视频| 日韩视频在线永久播放| 亚洲精品国产精品乱码不99| 极品美女销魂一区二区三区免费| 国产精品1区2区3区| 欧美亚洲日本国产| 亚洲视频一二三| 国产伦精品一区二区三区免费迷| 在线观看91视频| 亚洲三级视频在线观看| 国产一二精品视频| 精品黑人一区二区三区久久| 亚洲一区视频在线观看视频| 成人一级黄色片| 久久亚洲一级片| 国产九色sp调教91| 精品国产制服丝袜高跟| 日韩va欧美va亚洲va久久| 在线观看一区二区视频| 亚洲人成人一区二区在线观看 | 国产精品色一区二区三区| 韩国一区二区视频| 精品999在线播放| 激情综合网最新| 欧美精品一区二区三区一线天视频 | 久久久久99精品一区| 精品一区二区三区在线观看国产| 制服丝袜亚洲精品中文字幕| 日韩精品一级二级| 777亚洲妇女| 国产精品69毛片高清亚洲| 欧美一区二区三区成人| 久久精品国产成人一区二区三区| 欧美日韩久久一区| 精品在线一区二区| 国产亚洲精品7777| 91网上在线视频| 水蜜桃久久夜色精品一区的特点| 日韩精品一区二区在线观看| 精品一区二区三区视频| 国产精品美女一区二区| 色综合天天综合在线视频| 亚洲成人你懂的| 久久丝袜美腿综合| 欧美在线小视频| 美女爽到高潮91| 亚洲黄色小说网站| 久久综合九色综合97婷婷女人| av电影一区二区| 麻豆国产欧美一区二区三区| 国产精品久久久久久久久久久免费看 |