日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

十六、C语言中的头文件与模块化设计

發(fā)布時(shí)間:2023/12/31 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 十六、C语言中的头文件与模块化设计 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、txy_smg_ca.c(注意添加ADD)

#include "absacc.h"void SMG_Bit(unsigned pos, unsigned char dat)//數(shù)碼管位置、數(shù)據(jù) {XBYTE[0xe000] = 0xff;//為了效果好先熄滅,一定的消影作用XBYTE[0xc000] = 0x01 << pos;//MM模式XBYTE[0xe000] = dat; }void SMG_All(unsigned char dat)//操作所有數(shù)碼管 {XBYTE[0xc000] = 0xff;//數(shù)碼管所有位置XBYTE[0xe000] = dat; }void DelaySMG(unsigned int t) {while(t--); }

2、txy_smg_ca.h

#ifndef TXY_SMG_CA_H #define TXY_SMG_CA_Hunsigned char code SMG_duanma[18] = {// 0 1 2 3 4 5 6 70xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,// 8 9 A10 B11 C12 D13 E14 F150x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,// -16 .170xbf,0x7f}; //共陽數(shù)碼管unsigned char code SMG_duanmaDot[10] = {// 0. 1. 2. 3. 4. 5. 6. 7.0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,// 8. 9.0x00,0x10}; //數(shù)碼管(小數(shù)點(diǎn))void SMG_Bit(unsigned pos, unsigned char dat);//數(shù)碼管位置、數(shù)據(jù) void SMG_All(unsigned char dat);//操作所有數(shù)碼管 void DelaySMG(unsigned int t);#endif

3、DS18B20.c

#include "reg52.h" #include "absacc.h" #include "onewire.h" #include "txy_smg_ca.h"unsigned int temp = 0;//溫度void ShowSMG()//顯示溫度 { //567 //百位:567 / 100 = 5.67 = 5 //十位:567 % 100 = 5.67 = 67 67 / 10 = 6.7 = 6 //個(gè)位:567 % 10 = 56.7 = 7/*顯示1位小數(shù)SMG_Bit(7, SMG_duanma[temp%10]);DelaySMG(100);SMG_Bit(6, SMG_duanmaDot[(temp%100)/10]);DelaySMG(100);SMG_Bit(5, SMG_duanma[temp/100]);DelaySMG(100);*/SMG_Bit(7, SMG_duanma[temp%10]);//顯示整數(shù)DelaySMG(100);SMG_Bit(6, SMG_duanma[temp/10]);DelaySMG(100);SMG_Bit(5, 0xff);DelaySMG(100);SMG_Bit(4, 0xff);//不顯示值,一定的消影作用DelaySMG(100);SMG_Bit(3, 0xff); DelaySMG(100);SMG_Bit(2, 0xff); DelaySMG(100);SMG_Bit(1, 0xff); DelaySMG(100);SMG_Bit(0, 0xff); DelaySMG(100);//最后一個(gè)數(shù)碼管特別亮?SMG_All(0xff);//關(guān)掉所有數(shù)碼管 }void Delay(unsigned int t) {while(t--)//數(shù)碼管動(dòng)態(tài)顯示本質(zhì):不斷輪流點(diǎn)亮每一個(gè)數(shù)碼管,不可以間斷{ShowSMG();//一旦動(dòng)態(tài)掃描間斷,由多個(gè)數(shù)碼管變成只顯示一個(gè)數(shù)碼管} //因此在等待時(shí)間消化的過程中,仍然要保持?jǐn)?shù)碼管動(dòng)態(tài)掃描,輪流顯示沒有間斷 }void Read_DS18B20_temp()//讀溫度 {unsigned char LSB, MSB;//定義8字節(jié)變量接收數(shù)據(jù)init_ds18b20();//復(fù)位Write_DS18B20(0xcc);//寫入0xcc 跳過ROM指令Write_DS18B20(0x44);//寫入0x44 開始溫度轉(zhuǎn)化Delay(1000);//延時(shí),等待溫度轉(zhuǎn)化完成(注意延時(shí)的時(shí)候數(shù)碼管不可以間斷:延時(shí)里要?jiǎng)討B(tài)掃描數(shù)碼管)init_ds18b20();//復(fù)位,開始新一輪操作Write_DS18B20(0xcc);//寫入0xcc 跳過ROM指令Write_DS18B20(0xbe);//寫入0xbe 讀取16位數(shù)據(jù) LSB = Read_DS18B20();//讀低8位數(shù)據(jù)MSB = Read_DS18B20();//讀高8位數(shù)據(jù)init_ds18b20();//復(fù)位,停止數(shù)據(jù)讀取temp = MSB;//高8位放到temp里temp <<= 8;//左移8位temp = temp | LSB;//或(加)上低8位=>將LSB、MSB整合成為一個(gè)16位數(shù)據(jù)temp >>= 4;//右移4位,移走小數(shù)(整數(shù)不需要換算)//顯示整數(shù)/*顯示1位小數(shù)if ((temp & 0xf800) == 0x0000)//正數(shù)(16位 高5位為符號位){temp >>= 4;//右移四位,移走小數(shù)temp = temp * 10;//放大10倍temp = temp + (LSB & 0x0f) * 0.625;//溫度(*0.625是換算)}*/ }void main() {XBYTE[0x8000] = 0xff;//關(guān)閉LEDXBYTE[0xa000] = 0x00;//關(guān)閉蜂鳴器與繼電器while(1){Read_DS18B20_temp();ShowSMG();} }

?

?

總結(jié)

以上是生活随笔為你收集整理的十六、C语言中的头文件与模块化设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。