AD转换及单片机通信
生活随笔
收集整理的這篇文章主要介紹了
AD转换及单片机通信
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
要求
用兩片單片機進行通信,其中甲機外接0809芯片進行AD轉換,將AD轉換結果送至P0端口用4位數碼管顯示,并將數據發送至乙機;乙機接收甲機發送的數據,和甲機同步顯示AD轉換結果。
ADC0809芯片
由于芯片介紹篇幅過大這里就,不做詳細描述。詳情請見ADC0809芯片簡介
硬件及連線
甲機(發射機)代碼:
乙機(接收機)代碼:
#include <reg52.h> #define uchar unsigned char #define uint unsigned int int display[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; int show[4]={0}; uint num=0;void delay(int x) {int i;while(x--){for(i=0;i<120;i++);} } void xianshi() //顯示函數 {int i,p_2;num=num*100/51; //AD轉換值換算為相應電壓值show[0]=0;//5V用不到這一位show[1]=num/100; show[2]=num%100/10;show[3]=num%10; p_2=0x01; for(i=0; i<4; i++){P0=0x00; //清屏,避免重影if(i==1)P0=display[show[i]]+0x80; elseP0=display[show[i]]; P2=~p_2; p_2=p_2<<1;delay(10);} }void receive() interrupt 4//接收 {if(RI)//接收完畢{ num=SBUF;//取出數據RI=0;//清零}//xianshi(); } void UART_init() {TMOD=0x20;//T1工作方式2SCON=0x50;//串行口方式1允許接收PCON=0x00;//波特率不加倍TH1=0XFD; //計數器初始值設置,注意波特率是9600的TL1=0XFD;TR1=1;EA=1;ES=1; } void main() {UART_init();while(1){xianshi();//將P3口狀態顯示} }仿真結果
最大電壓位5V:
總結
以上是生活随笔為你收集整理的AD转换及单片机通信的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html页面自适应是什么意思,什么是自适
- 下一篇: C语言-作用域