標題: 求個仿真程序不會做啊 [打印本頁]
作者: a602888197 時間: 2016-12-23 18:58
標題: 求個仿真程序不會做啊
這是老師的要求
題目6 數字溫度計設計1
設計任務:利用數字溫度傳感器DS18B20與單片機結合來測量溫度
設計要求:利用數字溫度傳感器DS18B20測量溫度信號,計算后在LED數碼管上顯示相應的溫度值。其溫度測量范圍為-55—125℃,精確到0.5℃。
本溫度計屬于多功能溫度計,可以設置上下報警溫度,當溫度不在設置范圍內時,可以報警。
數字溫度計所測量的溫度采用數字顯示,控制器使用單片機89C51,測溫傳感器使用DS18B20,用3位共陽極LED數碼管以串口傳送數據,實現溫度顯示。
從溫度傳感器DS18B20可以很容易直接讀取被測溫度值,進行轉換即滿足設計要求。
DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳感器,與傳統的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據實際要求通過簡單的編程實現9—12位的數字讀數方式。
DS18B20的性能如下:
獨特的單線接口僅需要一個端口引腳進行通信
過個DS18B20可以并聯在串行傳輸的數據線上,實現多點組網功能。
無須外部器件
可通過數據線供電,電壓范圍3.0—5.5V
零待機功能
溫度以9或12位的數字讀數方式
用戶可定義報警設置
報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件
負電壓特性,電源極性接反時,溫度計不會因發熱而燒毀,但不能正常工作。
DS18B20采用3引腳PR-35封裝或8引腳SOIC封裝。
-
-
新建 Microsoft Word 文檔.docx
2016-12-23 18:58 上傳
點擊文件名下載附件
11.85 KB, 下載次數: 7
要求
作者: a602888197 時間: 2016-12-23 19:00
來個大神看下謝謝
作者: angmall 時間: 2016-12-24 13:02
- #include "reg51.h"
- char disp[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
- char disp_dot[11]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xc0};
- sbit DQ = P1^3; //定義通信端口
- //晶振12MHz
- void delay_18B20(unsigned int i)
- {
- while(i--);
- }
- //初始化函數
- Init_DS18B20(void)
- {
- unsigned char x=0;
- DQ = 1; //DQ復位
- delay_18B20(8); //稍做延時
- DQ = 0; //單片機將DQ拉低
- delay_18B20(80); //精確延時 大于 480us
- DQ = 1; //拉高總線
- delay_18B20(14);
- x=DQ; //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗
- delay_18B20(20);
- }
- //讀一個字節
- ReadOneChar(void)
- {
- unsigned char i=0;
- unsigned char dat = 0;
- for (i=8;i>0;i--)
- {
- DQ = 0; // 給脈沖信號
- dat>>=1;
- DQ = 1; // 給脈沖信號
- if(DQ)
- dat|=0x80;
- delay_18B20(4);
- }
- return(dat);
- }
- //寫一個字節
- WriteOneChar(unsigned char dat)
- {
- unsigned char i=0;
- for (i=8; i>0; i--)
- {
- DQ = 0;
- DQ = dat&0x01;
- delay_18B20(5);
- DQ = 1;
- dat>>=1;
- }
- }
- //讀取溫度
- ReadTemperature(void)
- {
- unsigned char a=0;
- unsigned char b=0;
- unsigned int t=0;
-
- Init_DS18B20();
- WriteOneChar(0xCC); // 跳過讀序號列號的操作
- WriteOneChar(0x44); // 啟動溫度轉換
- delay_18B20(100);
- Init_DS18B20();
- WriteOneChar(0xCC); //跳過讀序號列號的操作
- WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度
- a=ReadOneChar();
- b=ReadOneChar();
-
- //傳感器返回值除16得實際溫度值
- //為了得到2位小數位,先乘100,再除16,考慮整型數據長度,
- //技巧處理后先乘25,再除4,除4用右移實現
- t = (b*256+a)*25;
- return( t >> 2 );
- }
- main()
- {
- unsigned int tmp;
- unsigned char counter;
- while(1)
- {
- //溫度測量頻率沒有必要太高,太高反而影響數碼顯示
- //所以用計數器加以控制
- if(counter-- == 0)
- {
- tmp = ReadTemperature();
- counter = 20;
- }
- P2 = 0xff;
- P0 = disp[tmp%10];
- P2 = 0xfb;
- delay_18B20(1000);
- P2 = 0xff;
- P0 = disp[tmp/10%10];
- P2 = 0xf7;
- delay_18B20(1000);
- P2 = 0xff;
- P0 = disp_dot[tmp/100%10];
- P2 = 0xef;
- delay_18B20(1000);
- P2 = 0xff;
- P0 = disp[tmp/1000%10];
- P2 = 0xdf;
- delay_18B20(1000);
- }
- }
復制代碼
作者: a602888197 時間: 2016-12-27 17:27
感謝大神!!!!!
作者: 1905766846 時間: 2016-12-27 18:03
樓上的大神
作者: zl2168 時間: 2016-12-27 20:59
本帖最后由 zl2168 于 2016-12-27 21:00 編輯
一線式DS18B20測溫
⒈ DS18B20簡介
⑴ 內部組織結構 …
⑵ 操作步驟和操作指令 …
⒉ 電路設計 …
⒊ 程序設計 …
⒋ Keil調試 …
⒌ Proteus仿真 …
先Proteus仿真一下,確認有效。
DS18B20 測溫.jpg (141.32 KB, 下載次數: 88)
下載附件
2016-12-27 21:00 上傳
以上摘自張志良編著《80C51單片機仿真設計實例教程——基于Keil C和Proteus》清華大學出版社ISBN 978-7-302-41682-1,內有常用的單片機應用100案例,用于仿真實驗操作,電路與程序真實可靠可信可行。
作者: 夢回冉末 時間: 2016-12-27 21:14
這個不是很難啊,主要是要明白DS18B20的操作順序
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
久久高清精品
|
九色视频网站
|
欧美一区二区
|
三级黄色片在线播放
|
伊人网站视频
|
免费观看羞羞视频网站
|
欧美一级在线
|
精品电影|
精品一区二区在线观看
|
国内精品久久久久久久
|
亚洲免费人成在线视频观看
|
亚洲欧美综合
|
www.天天操|
色视频网站
|
国产成人a亚洲精品
|
视频二区
|
亚洲一区二区三区在线观看免费
|
免费久久久久久
|
男人av在线播放
|
国产精品久久久久久久久免费软件
|
男女羞羞免费网站
|
亚洲精品国产综合区久久久久久久
|
国产在线二区
|
亚洲一区二区精品视频
|
亚洲 欧美 另类 日韩
|
欧美黄色片|
亚洲精品视频在线播放
|
av黄色免费
|
日韩久久精品
|
中文字幕在线视频免费视频
|
视频在线一区二区
|
天天爽天天操
|
在线日韩欧美
|
久久久久一区
|
日本电影一区二区
|
亚洲日本欧美日韩高观看
|
www亚洲精品
|
国产乱码精品一区二区三区忘忧草
|
2022精品国偷自产免费观看
|
中文字幕av第一页
|
国产成人免费网站
|