谁可以告诉我一个关于51单片机的数字温度计C程序啊 求基于51单片机的数字温度计设计C语言程序

51\u5355\u7247\u673a \u6570\u5b57\u6e29\u5ea6\u8ba1\u5de5\u4f5c\u539f\u7406

\u6570\u5b57\u6e29\u5ea6\u8ba1\u539f\u7406\u662f\u901a\u8fc7\u6e29\u5ea6\u4f20\u611f\u5668\u5b9e\u73b0\u5b9e\u65f6\u6e29\u5ea6\u68c0\u6d4b\uff0c\u7136\u540e\u901a\u8fc7\u5355\u7247\u673a\u6765\u6839\u636e\u4f20\u611f\u5668\u7279\u6027\u8ba1\u7b97\u51fa\u6e29\u5ea6\uff0c\u5e76\u4e14\u663e\u793a\u51fa\u6765

\u5728STC\u5355\u7247\u673a\u7684\u5b98\u7f51\u670918B20\u7684\u793a\u4f8b\u7a0b\u5e8f\uff0c\u81ea\u5df1\u62ff\u6765\u6539\u6539\u5c31\u80fd\u7528\uff0c\u53ea\u80fd\u5e2e\u4f60\u5230\u8fd9\u513f\u4e86

不知这个合不合用(实验板带的):
#include<reg52.h>
code unsigned char seg7code[11]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90}; //显示段码

sbit TMDAT =P3^3; //DS18B20 的数据输入/输出脚DQ,根据情况设定

unsigned int sdata;//测量到的温度的整数部分
unsigned char xiaoshu1;//小数第一位
unsigned char xiaoshu2;//小数第二位
unsigned char xiaoshu;//两位小数

bit fg=1; //温度正负标志

//////////*显示延时程序*///////////////

void Delay(unsigned int tc)
{while( tc != 0 )
{unsigned int i;
for(i=0; i<80; i++);
tc--;}
}

////////////延时部分///////////////

void dmsec (unsigned int count)
{
unsigned char i;
while(count--)
{for(i=0;i<115;i++);}
}

/////////////发送复位///////////////

void tmreset (void)
{
unsigned char i;
TMDAT=0; for(i=0;i<103;i++);
TMDAT = 1; for(i=0;i<4;i++);
}

bit tmrbit (void) //读一位//
{
unsigned int i;
bit dat;
TMDAT = 0;
i++;
TMDAT = 1;
i++; i++; //微量延时 //
dat = TMDAT;
for(i=0;i<8;i++);
return (dat);
}
unsigned char tmrbyte (void) //读一个字节
{
unsigned char i,j,dat;
dat = 0;
for (i=1;i<=8;i++)
{ j = tmrbit(); dat = (j << 7) | (dat >> 1); }
return (dat);
}
void tmwbyte (unsigned char dat) //写一个字节
{
unsigned char j,i;
bit testb;
for (j=1;j<=8;j++)
{ testb = dat & 0x01;
dat = dat >> 1;
if (testb)
{ TMDAT = 0; //写0
i++; i++;
TMDAT = 1;
for(i=0;i<8;i++); }
else
{ TMDAT = 0; //写0
for(i=0;i<8;i++);
TMDAT = 1;
i++; i++;}
}
}
void tmstart (void) //发送ds1820 开始转换
{
tmreset(); //复位
dmsec(1); //延时
tmwbyte(0xcc); //跳过序列号命令
tmwbyte(0x44); //发转换命令 44H,
}
void tmrtemp (void) //读取温度
{
unsigned char a,b;
tmreset (); //复位
dmsec (1); //延时
tmwbyte (0xcc); //跳过序列号命令
tmwbyte (0xbe); //发送读取命令
a = tmrbyte (); //读取低位温度
b = tmrbyte (); //读取高位温度
if(b>0x7f) //最高位为1 时温度是负
{a=~a; b=~b+1; //补码转换,取反加一
fg=0; //读取温度为负时fg=0
}
sdata = a/16+b*16; //整数部分
xiaoshu1 = (a&0x0f)*10/16; //小数第一位
xiaoshu2 = (a&0x0f)*100/16%10;//小数
xiaoshu=xiaoshu1*10+xiaoshu2; //小数
}
void DS18B20PRO(void)
{
tmstart();
//dmsec(5); //如果是不断地读取的话可以不延
tmrtemp(); //读取温度,执行完毕温度将存于
}
void Led()
{
P0=0x7f;
P1=0xdf;
Delay(4);
P1=P1|0xf0;
if(fg==1) //温度为正时显示的数据
{
P1=P1&0xef;
P0=seg7code[sdata/10]; //输
Delay(8); P1=P1|0xf0; P1=P1&0xdf;
P0=seg7code[sdata%10]|0x80; //输出个
Delay(8); P1=P1|0xf0; P1=P1&0xbf;
P0=seg7code[xiaoshu1]; //输出小数点
Delay(8); P1=P1|0xf0; P1=P1&0x7f;
P0=seg7code[xiaoshu2]; //输出小
Delay(8); P1=P1|0xf0;
Delay(4);
//P1=P1|0x0f; //销隐
// Delay(8);
}

}

main()
{fg=1;
while(1)
{
DS18B20PRO();
Led();
}
}

hah
wo kay
zuo

没有硬件电路怎么设计程序?

  • 51鍗曠墖鏈鈥滀笂鐢/鎸夐敭澶嶄綅鐢佃矾鈥濈殑鍘熺悊鍙婂叾鐢靛C鐨勪綔鐢???
    绛旓細鎴戣涓鸿娉1姝g‘锛51鍗曠墖鏈鏄珮鐢靛钩澶嶄綅锛屾墍浠ュ厛鐪嬬粰鍗曠墖鏈哄姞5V鐢垫簮锛堜笂鐢碉級鍚姩鏃剁殑鎯呭喌锛氳繖鏃剁數瀹瑰厖鐢电浉褰撲簬鐭矾锛屼綘鍙互璁や负RST涓婄殑鐢靛帇灏辨槸VCC锛岃繖鏄崟鐗囨満灏辨槸澶嶄綅鐘舵併傞殢鐫鏃堕棿鎺ㄧЩ鐢靛涓ょ鐢靛帇鍗囬珮锛屽嵆閫犳垚RST涓婄殑鐢靛帇闄嶄綆锛屽綋浣庤嚦闃堝肩數鍘嬫椂锛屽嵆瀹屾垚澶嶄綅杩囩▼銆傚鏋滄寜涓婼W锛岀殑纭氨鏄寜閽妸C鐭矾浜...
  • 51鍗曠墖鏈寮鍙戞澘鐨勪娇鐢!
    绛旓細v4.88)鍋氱浉搴旇缃紝濡傞夋嫨瑕佷笅杞界殑hex鏂囦欢锛岃缃笅杞介熷害锛岄夋嫨鍗曠墖鏈鍨嬪彿绛夌瓑)锛屼繚璇佸墠3涓潯浠跺叿澶囷紝鐐瑰嚮涓嬭浇锛屽嚭鐜版彁绀哄悗缁欏紑鍙戞澘涓婄數锛岀瓑寰呯▼搴忎笅杞芥垚鍔熴傚浣嶅紑鍙戞澘杩愯绋嬪簭銆傛敞锛氫互涓婂洖绛斾粎閽堝涓鑸儏鍐碉紙濡傞噰鐢║SB涓嬭浇锛屼笉鍚岄泦鎴愬紑鍙戠幆澧冿紝闈濻TC51绯诲垪鍗曠墖鏈虹瓑杩欎簺鎯呭喌浼氱暐鏈夊樊寮傦紝鍙暀瑷鍜ㄨ锛...
  • 鍛婅瘔鎴鍦ㄨ繖涓椂浠h繕瀛51绯诲垪鍗曠墖鏈,鏈夌敤鍚?
    绛旓細褰撶劧鏈夌敤锛岃櫧鐒剁幇鍦ㄥ緢澶氶兘鏄湪鐢ㄥ井鏈猴紝浣嗘槸澶у瀷鏈猴紝宸ㄥ瀷涔熸病缁濈锛鍗曠墖鏈鏇翠笉浼氱粷绉 鍥犱负鎴愭湰闂锛屽緢澶氬満鍚堜笅锛屽崟鐗囨満姣斿井鍨嬫満鏇存湁鐢紝姘戠敤浜у搧涓兘鏈夊ぇ閲忓簲鐢ㄥ崟鐗囨満锛屽伐涓氳嚜鍔ㄥ寲鎺у埗鏂归潰涔熷緢澶氬簲鐢紝浠ュ墠鎴戞悶寰満涓婄殑杞欢寮鍙戯紝鐜板湪瑕佹悶鍗曠墖鏈虹▼搴忓紑鍙戯紝姝e湪瀛︿範涓 ...
  • 51鍗曠墖鏈鎬庝箞鍏ラ棬
    绛旓細鏄笉鏄负浜嗘湡鏈冭瘯鑰屽繖纰屽憿锛熻冨畬寰椾簡90鍒嗭紝鍝堝搱鍝堝ソ楂樺叴鍟婏紝杩涓涓鍋囨湡锛岀敋鑷宠繃涓涓懆鏈紝鐒跺悗蹇樼殑涓骞蹭簩鍑锛屾槸涓嶆槸锛熶綘瀛﹀埌浠涔堜簡锛熸垜璁や负杩欐牱鐨勭敓娲绘病鏈夋剰涔夈備絾鏄垜鍛婅瘔浣鍗曠墖鏈涓鏃﹀浼氾紝姘歌繙涓嶄細蹇樹簡銆傚彟澶栨垜鍐嶈璇村叧浜庣敤姹囩紪璇█杩樻槸C璇█缂栫▼鐨勯棶棰樸傚緢澶氬悓瀛﹀ぇ涓銆佷簩灏卞紑璁句簡C璇█鐨勮锛...
  • 51鍗曠墖鏈
    绛旓細闂棶棰樿缁欐竻妤氭潯浠讹紝瑕佺煡閬51鍗曠墖鏈涔熸湁寰堝涓巶瀹讹紝姣忎釜鍘傚鐨勪笅杞芥柟寮忓張涓嶅敖鐩稿悓锛屽悓涓涓鐘跺喌涔熷彲鑳藉洜涓轰笉鍚岄棶棰樻墍瀵艰嚧鐨勩備綘鑷冲皯搴旇鍛婅瘔鎴戜滑锛氫綘鎵嬩笂鐨勫崟鐗囨満鏄粈涔堝瀷鍙风殑锛屽摢涓巶瀹剁殑锛熺敤浠涔堟柟寮忎笅杞斤紵涓嬭浇鏃舵湁浠涔堢幇璞(鎸囩ず鐏垨涓嬭浇杞欢鐨勬樉绀)锛熶綘鑷繁瀵规鏈夋病鏈夊仛杩囦粈涔堝皾璇曪紝缁撴灉鎬庝箞鏍凤紵鍒濇...
  • 澶х,灏忓紵鍦ㄥ51鍗曠墖鏈鏄釜鏂版墜,鏈変釜闂鎯抽棶浣?
    绛旓細= 鍙橀噺鏉ヨ祴鍊硷紝杩欐牱浣跨敤寰堢伒娲汇傚叾瀹炰綘娌℃湁蹇呰鍘荤籂缁擄紝浣鍗曠墖鏈缂栫▼鐨勬椂鍊欐槸鐩存帴璋冪敤澶存枃浠剁殑锛宺eg52.h锛岄噷闈㈡槸鍒汉宸茬粡鎶婂瘎瀛樺櫒鍦板潃瀹氫箟濂戒簡鐨勶紝鎴戜滑鍙璋冪敤锛屽鏋滀綘涓嶆弧鎰忥紝浣鍙互鍙互鎶婂瘎瀛樺櫒闅忎究濞朵釜鍚嶅瓧锛屼絾鏄綘鑷繁瑕佺煡閬撲綘鍙栫殑鍚嶅瓧瀵逛簬鐨勬槸鍝釜瀵勫瓨鍣紝甯屾湜鎴戠殑鍥炵瓟瀵逛綘鏈夊府鍔╋紒
  • 51鍗曠墖鏈鐨勯棶棰
    绛旓細8051鍦ㄦ墽琛岀▼搴忔椂锛孭C姣忚緭鍑轰竴娆″湴鍧锛屽氨鎸囧悜绋嬪簭瀛樺偍鍣ㄧ殑涓涓鍗曞厓锛孋PU鑷姩鍙栧嚭涓涓瓧鑺傜殑鎸囦护浠g爜鑰屽悗鎵ц銆侾C涓唴瀹逛竴娆℃鑷姩鍔1锛屾寚浠ゅ氨涓鏉℃潯琚彇鍑哄苟鎵ц銆傚湪缂栫▼涓紝浣滀负缂栫▼浜哄憳锛屽彧鏈夋暎杞Щ鎸囦护锛圝MP @A+DPTR 鎴 JMP @A+PC锛夊彲浠ョ敤鍒癙C锛屽叾瀹冩寚浠ゆ槸涓嶈兘鐩存帴鐢≒C锛屽嵆浣胯繖閲岀敤PC锛屼篃鏈夌壒娈...
  • 鍗曠墖鏈虹殑鐢ㄥ鏄粈涔?鎴戝鐨勬槸8051绯诲垪銆鑳藉憡璇夋垜鍗曠墖鏈鐨勭敤澶勫悧...
    绛旓細鍗曠墖鏈灏辨槸涓涓寰瀷澶勭悊鍣紝瀹冧綋绉皬銆佸姛鑳界畝鍗曪紝鍦ㄥ伐涓氫笂鏈夊緢骞挎硾鐨勫簲鐢ㄣ傚挨鍏舵槸51绯诲垪鐨勫崟鐗囨満銆傚畠鏄渶鍩虹鐨勶紝濡傛灉瀛﹀ソ浜嗭紝瀵瑰涔犲叾浠栭珮绛夌骇鐨勫崟鐗囨満鎴朌SP绯诲垪鏈夊緢澶х殑甯姪
  • 鍓嶈緢,鏁欐垜鍐涓涓51鍗曠墖鏈棰樺惂銆備娇鐢ㄥ畾鏃跺櫒瀹炵幇0-255鐨勫姞1鏄剧ず銆
    绛旓細t++);}//涓荤▼搴弙oid main(){ P0=0xff; Count=0; Number=0; TMOD=0x01; //12MHZ鏅舵尟 C51鍗曠墖鏈瀵瑰叾12鍒嗛 //瀹為檯瀹氭椂鍣ㄢ滃姞1鈥濋鐜囦负1MHZ 涔熷氨鏄1us //鐢ㄥ畾鏃跺櫒涓柇鏃堕棿闂撮殧 鏄粠鈥滃紑鍚畾鏃跺櫒鍔1鈥濆埌鈥滄孩鍑衡濈殑鏃堕棿 //瀵逛簬宸ヤ綔鍦ㄦā寮1鐨勫畾鏃跺櫒0鏉ヨ 涔熷氨鏄粠鈥滃紑鍚畾鏃跺櫒鍔1鈥濆埌...
  • 璋佺煡閬51鍗曠墖鏈寮鍙戞澘璧勬枡鍏
    绛旓細璁板緱EA鑴氭帴5V楂樼數骞冲惁鍒欎笉宸ヤ綔锛屾垜寮濮嬬殑鏃跺欏氨鐘繃杩欓敊璇紒鍒版纭欢绠楁槸鏈変簡锛屼笉瑕鍛婅瘔鎴浣犱笉鐭ラ亾杩樿鍑嗗涓鏉′覆鍙g嚎銆傜幇鍦ㄨ璇磋杞欢锛屼笅杞涓涓uVision3鐢ㄦ潵缂栫▼鍜岀紪璇戯紝涓嬭浇涓涓淪TC_ISP_V3.5鈥濊蒋浠剁敤鏉ュ皢缂栬瘧濂界殑HEX鏂囦欢涓嬭浇鍒鍗曠墖鏈銆傝繖鏍峰疄闄呬笂浣犳湁浜嗚嚜宸辩殑绠鏄撳紑鍙戞澘锛屽彲浠ュ紑濮嬪仛瀹為獙浜嗐傜數...
  • 扩展阅读:六种征兆说明你抑郁了 ... 51talk外教全是菲律宾人 ... 51网站相册去哪里了 ... 以前的51网站去哪了 ... 有转账记录起诉居然败诉了 ... 以前的51网址现在叫什么 ... 黄金回收去哪里最划算 ... 老版51个人空间 ... 十年前的51相册去哪了 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网