商務網站制作語言基礎seo平臺怎么樣
51單片機PCF8591數字電壓表LCD1602液晶設計
( proteus仿真+程序+設計報告+講解視頻)
仿真圖proteus7.8及以上
程序編譯器:keil 4/keil 5
編程語言:C語言
設計編號:S0060
51單片機PCF8591數字電壓表LCD1602液晶設計
- 1.主要功能:
- 講解視頻:
- 2.仿真
- 3. 程序代碼
- 4. 設計報告
- 5. 設計資料內容清單&&下載鏈接
- 資料下載鏈接(可點擊):
1.主要功能:
基于51單片機AT89C51/52(與AT89S51/52、AT89C51/52、STC89C51/52等51內核單片機通用)
基于51單片機的數字電壓表設計
1.采用PCF8591實現(xiàn)AD采樣功能;
2.采樣電壓范圍0-5V;
3.用數碼管顯示轉換后的實際電壓值
4.顯示保留小數點后兩位。
需注意仿真中51單片機芯片是兼容的,AT89C51,AT89C52是51單片機的具體型號,內核是一樣的。相同的原理圖里,無論stc還是at都一樣,引腳功能都是一樣的,程序是兼容的,芯片可以替換為STC89C52/STC89C51/AT89C52/AT89C51等51單片機芯片。
講解視頻:
仿真講解+代碼講解
51單片機PCF8591數字電壓表LCD1602液晶 ( proteus仿真+程序+報告+講解)
2.仿真
開始仿真
打開仿真工程,雙擊proteus中的單片機,選擇hex文件路徑,然后開始仿真。
3. 程序代碼
使用keil4或者keil5編譯,代碼有注釋,可以結合報告理解代碼含義。
IIC通信部分函數
/*******************************************************************起動總線函數
函數原型: void Start_I2c();
功能: 啟動I2C總線,即發(fā)送I2C起始條件.
********************************************************************/
void Start_I2c()
{sda=1; /*發(fā)送起始條件的數據信號*/_nop_();scl=1;_nop_(); /*起始條件建立時間大于4.7us,延時*/_nop_();_nop_();_nop_();_nop_(); sda=0; /*發(fā)送起始信號*/_nop_(); /* 起始條件鎖定時間大于4μs*/_nop_();_nop_();_nop_();_nop_(); scl=0; /*鉗住I2C總線,準備發(fā)送或接收數據 */_nop_();_nop_();
}/*******************************************************************結束總線函數
函數原型: void Stop_I2c();
功能: 結束I2C總線,即發(fā)送I2C結束條件.
********************************************************************/
void Stop_I2c()
{sda=0; /*發(fā)送結束條件的數據信號*/_nop_(); /*發(fā)送結束條件的時鐘信號*/scl=1; /*結束條件建立時間大于4μs*/_nop_();_nop_();_nop_();_nop_();_nop_();sda=1; /*發(fā)送I2C總線結束信號*/_nop_();_nop_();_nop_();_nop_();
}/*******************************************************************字節(jié)數據發(fā)送函數
函數原型: void I2C_SendByte(UCHAR c);
功能: 將數據c發(fā)送出去,可以是地址,也可以是數據,發(fā)完后等待應答,并對此狀態(tài)位進行操作.(不應答或非應答都使ack=0) 發(fā)送數據正常,ack=1; ack=0表示被控器無應答或損壞。
********************************************************************/
void I2C_SendByte(unsigned char c)
{unsigned char i;for(i=0;i<8;i++) /*要傳送的數據長度為8位*/{if((c<<i)&0x80)sda=1; /*判斷發(fā)送位*/else sda=0; _nop_();scl=1; /*置時鐘線為高,通知被控器開始接收數據位*/_nop_(); _nop_(); /*保證時鐘高電平周期大于4μs*/_nop_();_nop_();_nop_(); scl=0; }_nop_();_nop_();sda=1; /*8位發(fā)送完后釋放數據線,準備接收應答位*/_nop_();_nop_(); scl=1;_nop_();_nop_();_nop_();if(sda==1)ack=0; else ack=1; /*判斷是否接收到應答信號*/scl=0;_nop_();_nop_();
}/*******************************************************************字節(jié)數據接收函數
函數原型: UCHAR I2C_RcvByte();
功能: 用來接收從器件傳來的數據,并判斷總線錯誤(不發(fā)應答信號),發(fā)完后請用應答函數應答從機。
********************************************************************/
unsigned char I2C_RcvByte()
{unsigned char retc=0,i; sda=1; /*置數據線為輸入方式*/for(i=0;i<8;i++){_nop_(); scl=0; /*置時鐘線為低,準備接收數據位*/_nop_();_nop_(); /*時鐘低電平周期大于4.7μs*/_nop_();_nop_();_nop_();scl=1; /*置時鐘線為高使數據線上數據有效*/_nop_();_nop_();retc=retc<<1;if(sda==1)retc=retc+1; /*讀數據位,接收的數據位放入retc中 */_nop_();_nop_(); }scl=0; _nop_();_nop_();return(retc);
}
PCF8591部分通信函數
/************************************************************
* 函數名 : Pcf8591_SendByte
* 函數功能 : 寫入一個控制命令
* 輸入 : addr(器件地址),channel(轉換通道)
* 輸出 : 無
************************************************************/
bit PCF8591_SendByte(unsigned char addr,unsigned char channel)
{Start_I2c(); //啟動總線I2C_SendByte(addr); //發(fā)送器件地址if(ack==0)return(0);I2C_SendByte(0x40|channel); //發(fā)送控制字節(jié)if(ack==0)return(0);Stop_I2c(); //結束總線return(1);
}/************************************************************
* 函數名 : PCF8591_RcvByte
* 函數功能 : 讀取一個轉換值
* 輸入 :
* 輸出 : dat
************************************************************/
unsigned char PCF8591_RcvByte(unsigned char addr)
{ unsigned char dat;Start_I2c(); //啟動總線I2C_SendByte(addr+1); //發(fā)送器件地址if(ack==0)return(0);dat=I2C_RcvByte(); //讀取數據0Ack_I2c(1); //發(fā)送非應答信號Stop_I2c(); //結束總線return(dat);
}
主函數
main()
{ init_1602();while(1){/********以下AD-DA處理*************/ PCF8591_SendByte(AddWr,0); //啟動轉換D[0]=PCF8591_RcvByte(AddWr); //讀轉換完的數字信號,ADC0 模數轉換 范圍是256-0;vol_value = PCF8591_RcvByte(AddWr); //0-256vol_value = vol_value*5.0*100/256;//得到范圍是500-0,方便顯示dis[8] = (vol_value%1000)/100+0x30; //百dis[10] = (vol_value%100)/10+0x30; //十dis[11] = vol_value%10+0x30; write_string(1,0,dis);
// write_string(1,5,"ab cd ef;");}
}
4. 設計報告
5246字設計報告,內容包括硬件設計、軟件設計、軟硬件框圖、調試、結論等
5. 設計資料內容清單&&下載鏈接
資料設計資料包括仿真,程序代碼、講解視頻、功能要求、設計報告、軟硬件設計框圖等。
0、常見使用問題及解決方法–必讀!!!!
1、仿真圖
2、程序源碼
3、功能要求
4、開題報告
5、設計報告
6、軟硬件流程框圖
7、講解視頻
Altium Designer 軟件資料
KEIL軟件資料
Proteus軟件資料
單片機學習資料
答辯技巧
設計報告常用描述
鼠標雙擊打開查找更多51 STM32單片機課程畢業(yè)設計.url
資料下載鏈接(可點擊):
https://docs.qq.com/doc/DS05VbHNQT2h4REhk