當前位置:首頁 > STC
  • 基于STC串口通信和VC6.0MFC編程的電子琴設計

    基于STC串口通信和VC6.0MFC編程的電子琴設計

    電子實訓課程實驗項目????????????????????? --電子琴【前言】?????? 為進一步激發學生對于硬件編程的興趣而開展的課程“電子實訓”課程到目前為止已經要告一段落了。將近四周的時間,從電路板印刷、貼片參觀,到自己親手將原件焊接到電路板上,再到一步一步熟悉STC編程當中的技巧,我們漸漸對硬件編程有了初步的認識,雖然并不一定能完成什么高級的設計,但是對目前所涉及到的數碼管、LED、撥碼開關、中斷、定時器、傳感器的應用已經有了初步認識,也可以寫出一些簡單的應用。為驗證十幾天的學習成果,每個人都會根據給出的53個例程當中選擇自己比較熟悉或者擅長的方面進行一個創新設計或者擴展設計,也或者融合多個方面。?? 我完成的項目是一個“電子琴”,基于工程“電子音樂”改編而來,不過也做出了很多的改變,也增加了一些東西,使得整個項目看起來還算不錯。【實驗目的與要求】1、???熟練掌握定時器的應用,以及如何通過定時器驅動蜂鳴器發出一定頻率的聲音,掌握簡譜與定時器重裝值之間的關系,能夠實現蜂鳴器譜樂;2、???熟悉下位機編程,usb轉串口原理應用,相關寄存器的使用,并且實現該功能,為上、下位機通信奠定基礎;3、???熟悉上位機編程方法,可以參考相關資料,設計并實現上位機;【設計概要】本案例的設計主要可以分為兩個部分,上位機部分的設計和下位機部分的設計上位機:?? 案例的上位機是用MFC以及MFC中的串口控件來完成的。上位機中共有8個按鍵,一個下拉框,三個復選框,七個按鍵完成對音符頻率的選擇,對應簡譜中的DO,RE,MI,FA,SO,LA,XI,每當一個按鍵被按下的時候,上位機會通過串口將一個字節發送到單片機,在發送的時候,上位機會檢測被選中的復選框,若選中的是“低八度”,則會發送低八度對應的音節;若選中的是“中八度”,則會發送中八度對應的音節,高八度也類似。下拉框控制的是串口號的選擇,列出了電腦主機所配置的串口號,串口號下面有一個“打開窗口”的按鈕,當點擊的時候,上位機會檢測下拉框中選擇的串口號,并將其對應的串口號打開。在點擊的同時,上位機會設置串口的相關屬性值,m_ctrlComm.SetSettings("9600,n,8,1");設置串口波特率為9600,無校驗位,8個數據位,1個停止位,并設置以二進制方式撿取數據,清空緩沖區。下位機:? 下位機設計的重要部分在于串口和蜂鳴器兩個部分。串口部分使用的是串口1中斷,串口1中斷使用TH1和TL1作為串口中斷的計時器,使用TL1=(65536-(Machine_Focs/4/BAUD1));TH1=(65536-(Machine_Focs/4/BAUD1))>>8作為重裝值,當串口發生中斷的時候,會觸發中斷處理程序。中斷處理程序中會將已經轉換成1的RI端口和TI端口轉換成0,返回源程序,開始下一次中斷的歷程,并且會觸發playmusic函數,將display中的音節在蜂鳴器中播放。測試方法:(1)打開“piano”工程文件,找到“hex”文件;(2)打開ISP下載器,選中該“hex文件”,選中對應的端口,點擊下載;(3)下載完成,打開上位機“test.exe”,選中對應的端口,點擊“打開串口”;(4)串口打開,選中對應的音階,低八度,中八度,或者高八度,然后點擊按鈕,蜂鳴器發出聲音;(5)測試完成;?【實驗原理】1、實驗原理圖(1)無源蜂鳴器電路原理圖?????????????????????????????(2)芯片相關引腳圖?(3)單片機下載電路?2、USB轉串口原理:單片機集成了USB轉串口模塊,對應使用RXD線接收數據,用TXD發送數據。每個串口由2個數據緩沖器(相互獨立1收1發)、一個移位寄存器(一字節數據一位一位發送出去)、一個串行控制器和一個波特率發生器(這個比較重要,結合相關的定時器)組成。對應發送、接收數據完成(RI、TI硬件置1)都會觸發串口中斷,但是無法確定是哪個觸發的,所以在串口中斷中我們要判斷是接收數據產生的中斷還是發送數據產生的中斷,對于發送數據產生的中斷,我們要軟件將TI清0,并將數據就緒標志清0,允許下一字節數據發送,發送數據函數中通過while循環,等待發送數據準備就緒,完了將就緒的數據復制給SBUF;對于接收數據產生的中斷,我們要軟件將RI清0,并從SBUF中讀取數據。3、蜂鳴器原理:本實驗板采用的是無源蜂鳴器,無源內部不帶震蕩源,所以如果用直流信號無法令其鳴叫。必須用2K~5K的方波去驅動它。相比與有源蜂鳴器,無源蜂鳴器的優點在于價格便宜,可以通過控制其振動頻率來改變發出的聲音,做出“多來米發索拉西”的效果。因此,無源蜂鳴器可以用于音樂的播放。而有源蜂鳴器的優點在于使用簡單,不需要編寫“樂譜”。本實驗板使用的無源蜂鳴器是電磁式蜂鳴器,電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動膜片及外殼等組成。接通電源后,接收到的音頻信號電流通過電磁線圈,使電磁線圈產生磁場。振動膜片在電磁線圈和磁鐵的相互作用下,周期性地振動發聲。蜂鳴器部分每個音符都有自己對應的頻率,每個頻率也多有自己對應的簡譜碼,每一個簡譜碼都對應了一個計時器重裝值,比如說低1DO頻率是262Hz,則振動周期T=1000ms/262Hz=3.817ms,要求定時器在3.817ms會產生一個周期振動,由于一個周期振動是兩次電平變化,而每一次定時器中斷只有一次電平變化,所以要將定時器設置成1.908ms震動一次,也就是1908us,因此可以得到定時器重裝值為65536-1908=63628。?【源碼展示與說明】下位機部分:/*文件名稱piano.c通過串口用上位機控制單片機上面的蜂鳴器發出不同頻率的聲音*/#include"STC15F2K60S2.H"http://宏定義#defineuchar unsigned char#defineuint unsigned int?#defineMachine_Focs 11059200L? ?????????? //晶振頻率 11.0592MHz#defineBAUD1 9600??????????????????????? //波特率,這里使用的是9600?sbitLED_SEL=P2^3;sbitbeep=P3^4;????????? ? ??????????????? //蜂鳴器引腳uchartimeh,timel;?????? ? ??????????????? //定時器的重裝值?/*收發數據相關*/uchardisplay;??????????????????????????? //單片機上SBUF緩沖的數據ucharflag;intcount=0;????????????????????????????? //計數器,用來分頻ucharduanxuan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};????????????????????????????????????????? //段選信號,選擇0-f/*蜂鳴器振動頻率相關*/ucharcode quzi[] ={ ? ??????????? ?????? //此數組作為各個音符在定時器中的重裝值//低八度0xf8,0x8c,0xf9,0x5b,0xfa,0x15,0xfa,0x67,0xfb,0x04,0xfb,0x90,0xfc,0x0c,//中八度0xfc,0x44,0xfc,0xac,0xfd,0x09,0xfd,0x34,0xfd,0x82,0xfd,0xc8,0xfe,0x06,//高八度0xfe,0x22,0xfe,0x56,0xfe,0x6e,0xfe,0x9a,0xfe,0xc1,0xfe,0xe4,0xff,0x03};/***************************************************************曲調****************************************************************/ucharquyin(uchar tem){??? uchar qudiao,jp,weizhi;???? ? //定義曲調,音符,位置??? qudiao=tem/16;????????????? ? //高四位為是曲調值??? jp=tem%16;?????????????? ? ???//低四位是音符??? if(qudiao==1)??????????? ? ???//當曲調值為1的時候,低八度,低八度在quzi數組中的基址為0??? qudiao=0;??? else if(qudiao==2)????????? ? //當曲調值為2的時候,中八度,中八度在quzi數組中的基址為14?????? qudiao=14;??? else if(qudiao==3)????????? ? //當曲調值為3的時候,高八度,高八度在quzi數組中的基址為28??????? qudiao=28;??? weizhi=qudiao+(jp-1)*2;???? ? //基址加上偏移量得到音符對應數組中的位置??? return weizhi;????????????? ? //返回位置值}/**********************函數名稱:void delay(unsigned int xms)功能描述:延時入口參數:xms:輸入需要延時的毫秒值出口參數:無***********************/voiddelay(uint xms){??? uint i;??? for(; xms>0; xms--)????????????????????????? for(i=114; i>0; i--)?????? {}}???/**********************函數名稱:Timer0功能描述:定時器0的中斷響應函數,用來控制蜂鳴器***********************/voidTimer0() interrupt 1?? ?{??? count++;??? if (count==4)??? {?????? count=0;??? }??? TH0=timeh;??? TL0=timel;??? if(flag==1&&count==3)????????????? //四分頻??? {??? ?beep=~beep;??? }}/**************************************************************函數名稱:Uart1_Init功能描述:初始化串口中斷***************************************************************/voidUart1_Init(void){??? AUXR=0X80;??????????????????????????????? //輔助寄存器,使T0x12=1,此時不分頻??? SCON|=0X50; ????????????????????????????? //SM0=0,SM1=1,串口以方式1工作,8位Uart,串行口1用定時器1作為其波特率發生器且定時器1工作于模式0;REN=1,開啟串口接收??? TL1=(65536-(Machine_Focs/4/BAUD1));??? TH1=(65536-(Machine_Focs/4/BAUD1))>>8;??? AUXR|=0X40;?????????????????????????????? //使T0x12=1,此時不分頻??? RI=0;????? ?????????????????????????????? //接收終端標志位??? TI=0;????? ?????????????????????????????? //發送中斷標志位??? TR1=1;???? ?????????????????????????????? //啟動的定時器1??? ES=1;????? ?????????????????????????????? //串口中斷允許位??? EA=1;????? ?????????????????????????????? //總中斷允許位}/**************************************************************函數名稱:Init功能描述:完成各部分功能模塊的初始化***************************************************************/voidInit()?????????????????????????????????? //初始化操作{??? P3M0=0x00;??????????????????????????????? //推挽模式??? P3M1=0x00;??? P2M0=0xff;? ? P2M1=0x00;? ? P0M0=0xff;? ? P0M1=0x00;??? TMOD=0x01;??????????????????????????????? //定時器0,方式1,要求每一次中斷之后手動重裝??? ET0=1;??????????????????????????????????? //開啟定時器0中斷??? EA=1;??????????????????????????????????? //開啟總中斷??? TH0=0x00;??? TL0=0x00;??? TR0=1;???? ??????????????????????????????? //啟動定時器0??? beep=0;?????????????????????????????????? //蜂鳴器初始化0??? flag=0;??? P0=0;??? Uart1_Init();???????????????????????????? //串口中斷??? display = 0x00;???????????????? ?????????? //初始化數據緩沖器??? LED_SEL=0;??????????????????????????????? //設置數碼管顯示狀態}/**********************函數名稱:void playmusic()功能描述:播放音樂***********************/voidplaymusic(uchar p)?????????????????????? //p為音節{??? uchar tem;?????????????????????????????? ?????? tem=quyin(p);???? ???????????????????????? //找到p音節在quzi數組中的位置??? timeh=quzi[tem];? ?????? ????????????????? //音節重裝值的高八位??? timel=quzi[tem+1];??????????????????????? //音節重裝值的低八位??? TR0=1;???????????? ???????????????????????//開啟定時器0中斷??? delay(0x10*180);??????????? ?????????? ???//延時一個節拍???? TR0=0;??????????????????????????????????? //關閉定時器0中斷}/*************************************************************串口1中斷相應程序**************************************************************/voidUart1_fun() interrupt 4{??? if(RI)??????? ?????????????????????????? //接受完數據以后,RI自動轉1??? {?????? flag=1;?????? RI=0;?????? display=SBUF;?????? //TR0=1;?????? playmusic(display);??? }??? //if(TI)????? ??? ??????????????????????? //接受完數據以后,RI自動轉1??? //{?????? //TI=0;?????? //Uart1_Sendbusy=0;??? //}}/**************************************************************主函數***************************************************************/voidmain()?????????????????????????????????????{??? Init();?????? while(1){}??????????????????????????????? //執行死循環}?上位機部分:int nIndex =m_chuankou_select.GetCurSel();CString strCBText;m_chuankou_select.GetLBText(nIndex,strCBText);用來控制從下拉框m_chuankou_select中獲得已經選擇的串口號,并且將其存儲在字符串strCBText中;if(strCBText=="")?????? AfxMessageBox("請選擇串口");??? else if(strCBText=="com1")?????? m_ctrlComm.SetCommPort(1);??? else if(strCBText=="com2")?????? m_ctrlComm.SetCommPort(2);。。。。。。用來打開strCBText對應的串口號m_ctrlComm.SetSettings("9600,n,8,1");//波特率9600,無校驗,8個數據位,1個停止位? ?m_ctrlComm.SetInputMode(1); //1:表示以二進制方式檢取數據?m_ctrlComm.SetRThreshold(1);//參數1表示每當串口接收緩沖區中有多于或等于1個字符時將引發一個接收數據的OnComm事件?m_ctrlComm.SetInputLen(0);//設置當前接收區數據長度為0?m_ctrlComm.GetInput();//先預讀緩沖區以清除殘留數據?設置串口屬性UpdateData(TRUE); //讀取編輯框內容??? if(flag==3)?????? m_ctrlComm.SetOutput(COleVariant((CString)0x31));//發送數據??? else if(flag==2)?????? m_ctrlComm.SetOutput(COleVariant((CString)0x21));//發送數據??? else if(flag==1)?????? m_ctrlComm.SetOutput(COleVariant((CString)0x11));//發送數據??? else?????? AfxMessageBox("請選擇一個音階");?控制發送高中低八度的DO,其他音節類似CStringstr[]={"com1","com2","com3","com4","com5","com6","com7","com8","com9"};??? ((CComboBox*)GetDlgItem(IDC_chuankou_select))->ResetContent();??? CString defaultstr=str[0];??? SetDlgItemText(IDC_chuankou_select,defaultstr);??? for(int i=1;i??? {?????? ((CComboBox*)GetDlgItem(IDC_chuankou_select))->AddString(str[i]);??? }填充下拉框【實驗總結】1、???接收中斷自動置1的問題:在串口傳輸的過程當中,使用RXD接收上位機傳過來的數據,使用TXD傳出數據,每當數據發送完成,TI會自動置位為1,請求接收中斷處理;每當數據接收完成,RI會自動置位為1,請求發送中斷處理,由于TI和RI以“或”邏輯關系向主機請求中斷,所以主機響應中斷時事先并不知道是TI還是RI請求的中斷,必須在中斷服務程序中查詢TI和RI進行判別,然后分別處理,因此,兩個中斷請求標志位均不能由硬件自動置位,必須通過軟件置零,否則將出現一次請求多次向英的錯誤。這里采用的是在中斷處理程序中進行軟件置位,也就是每一次中斷結束時檢測中斷的類型,進而對對應的中斷標志位進行置位。2、???音節的節拍的完成:即控制某一頻率的震動在某一指定時間內完成。這一功能是通過控制定時器0的開關實現的,即當單片機接收到串口數據時,會執行playmusic函數,在默認情況下,定時器0開關TR0=0是關閉狀態,執行playmusic的同時,打開定時器開關TR0=1,中間延時0x10*180ms一個節拍,延時結束后將定時器控制TR0置0,等待下一次輸入。由于在之前的“電子音樂”工程當中是用數組存儲音節和節拍的,每兩個字節決定一個音階和一個節拍,在串口中一次只能傳輸一個字節,所以如果要實現節拍功能就會給用戶帶來很多不便,所以在這里舍去了節拍的選擇,轉而采用固定的一個節拍。【實驗心得】1、???單片機使用c語言進行編程,這樣給嵌入式開發者帶來了很大的方便,畢竟我們最初接觸到的語言就是c語言,不過和之前的c語言編程相對比,現在編程語句結構相對分散或者說是獨立而不像之前的編程當中體現的非常強的邏輯,但是由于新加入的中斷定時器等會再各個結構之間產生影響,仍然需要非常注意,特別是對于中斷概念的理解,可以參考“深入理解計算機系統”這本書;2、???要多編程,了解各個引腳,寄存器的用法、功能。雖說我們做硬件編程的時候可以隨時查找數據手冊尋找需要的知識,但是如果能記住這些寄存器、引腳的分布、用法,無疑會給硬件編程帶來非常大的方便,這就要求我們多編程,才能比較好的掌握;3、???stc硬件編程入門很容易,也就是說很容易便可以掌握stc板的一些基本用法,像是數碼管、led、定時器等等,但是要編出比較強大好用的硬件程序,就必須多去了解各種中斷用法、編程技巧等,并且這些知識經驗只能靠自己在編程的過程中發現,不是任何老師可以教授的,所以,學習單片機,要親力親為。

    時間:2018-10-12 關鍵詞: stc 串口通信 電子琴 mfc

  • 基于STC89C52的多通道脈搏采集系統設計

    摘要:脈搏是臨床檢查和生理研究中常見的生理現象。脈搏波的波幅和形態包含了反映心臟和血管狀況的重要生理信息,是診斷疾病的重要依據。脈搏波采集儀就是利用仿生學原理結合人工智能對脈搏診斷過程進行模擬的儀器。針對現有的脈搏信號采集系統不能準確施加診脈壓力的不足,提出了一種具有脈壓檢測功能的脈搏信號采集系統設計方案,整個方案以單片機STC89C52為核心,結合放大、帶通濾波電路、A/D轉換和串行通信模塊,經過實驗,實現了自動加壓,并在浮、中、沉三種不同取脈壓力下,對人體橈動脈寸、關、尺三處的脈搏渡信號完成了采集。 關鍵詞:脈搏波;取脈壓力;單片機;A/D轉換 0 引言     脈診之所以重要是由于脈象能傳遞機體各部分的生理病理信息,是窺視體內功能變化的窗口,可以為診斷疾病提供重要依據。但是傳統脈診主要依賴于醫者的經驗和主觀判斷,再加上被診者的個體差異使得脈象的辨認、識別缺乏統一、精確的標準。因此,脈搏采集系統的研制有助于脈診的客觀化研究。脈搏采集系統設計難點在于如何模擬醫者手指,在最佳取脈壓力下獲取清晰的脈搏波譜,并根據不同的壓力變化,完成對寸、關、尺三個脈位復雜脈象的提取和識別。     自20世紀50年代以來,對于脈學的理論、脈診方法、臨床診斷和實驗研究等方面均開展了大量工作,取得了較大的進展。英國人Marey最早設計了以彈簧為動力的杠桿式脈搏傳感器,并記錄了橈動脈脈搏波。1860年首次出現杠桿和壓力鼓式描述脈搏圖,1890年開始采用換能的方式,出現了杠桿式光學脈搏描述器。20世紀50年代我國學者朱顏首次將杠桿式脈搏描記器引用到中醫脈診的研究中來。自70年代至今,研究人員已研制出種類繁多的換能器以模擬中醫切脈的手指,采集并記錄了脈搏信號。     國內外典型的脈象診斷儀如:由北京醫療器械總廠生產的BYS-14型脈象儀和北京斯脈福生產的28脈脈象儀能對脈搏波進行檢測重現,并能識別臨床中醫常見37種脈象圖。ZM-Ⅲ型智能脈象儀由上海中醫藥大學研制,是我國當前較先進的一種脈象儀,能自動采集脈象信號,并將中醫脈象的位、數、形、勢和脈圖的各項特征參數作自動分析處理。為了達到分層取脈的目的,日本Colin公司研制生產的CMB-3000/2000型橈動脈脈波檢測儀利用張力法測量原理進行無損傷連續血壓監測。     本文主要從脈搏傳感器的選擇,信號調理電路的設計,取脈壓力的自動控制以及信號的初步處理等方面介紹寸、關、尺三處脈位在浮、中、沉等不同狀態下的信號采集,為脈診客觀化的進一步研究奠定了基礎。 1 脈搏信號的特點     脈搏信號的特點如下:     (1)強干擾下的微弱信號。由于脈搏信號幅度很小,大約是微伏到毫伏的數量級范圍。因此,極容易引入干擾,這些干擾有來自50 Hz的工頻干擾,有來自肌體抖動、精神緊張帶來的假象信號等。     (2)頻率低但能量相對集中的信號。人體的脈搏頻率非常低,約為0.5~4 Hz,一般情況下為1 Hz左右,脈搏信號可看成一個準直流信號,也可看成是一個低頻交變信號。根據脈搏功率譜能量分析,健康人脈搏能量絕大多數分布于1~5 Hz,而病人脈搏在1 Hz以下和較高頻段(如5 Hz以上或10 Hz以上)仍有相當一部分的能量分布。     (3)復雜且易變的隨機信號。脈搏信號因人體生理、病理、心理的不同而不同,又受環境、時間、氣候的影響,表現出同一個人在不同的時間、地點有不同的脈象,有時也會有不同的疾病表現出相同的脈象。 2 采集系統的設計要求     (1)傳感器的選取。由于不同類型的傳感器原理不同,所獲取的原始波形也是不盡相同的。本系統中,選用的傳感器是BP300T壓力傳感器和PVDF壓電薄膜傳感器。     (2)隔離、放大、濾波整形電路等硬件電路的設計。 由于所提取的信號非常微弱,且富于變化,需要附加多重濾波電路。     (3)以STC89C52為核心的實時采集系統。經過調理的模擬信號通過A/D轉換,采集到單片機中,并立即通過串口與上位機進行通信,將數據進行傳輸。     (4)壓力自動控制。通過單片機對氣泵和電磁閥的控制,達到對腕帶壓力實時控制的目的。     (5)脈搏波形重現。通過上位機軟件對采集到的數據進行波形重現。 3 系統方案設計     系統以單片機STC89C52為核心,外設電路由傳感器,信號調理電路,A/D轉換器組成,系統的結構框圖如圖1所示。     系統的硬件實現方案總體設計如圖2所示。     系統部分功能如下:     壓電傳感器  作為測量電路的最前端,其作用是將脈搏的動態信息轉換為電壓信號,方便采集,是整個采集系統的關鍵。     BP300T壓力傳感器  用于對整個加壓過程的壓力監測,實現在不同的取脈壓力下對脈搏信號進行采集。     前置放大和二級放大電路  對微弱的脈搏生物信號進行合適的放大,使其滿足電壓的轉換條件。     帶通濾波電路  脈搏波信號微弱,頻率低,容易受到外界干擾,所以必須使用濾波器將信號頻帶外的干擾去除。 3.1 傳感器的選擇     脈搏傳感器的選擇對于整個采集系統的設計非常重要。脈搏傳感器的基本功能就是將切脈壓力和橈動脈搏動壓力這樣一些物理量(非電量)轉換成為便于測量的電信號。因此要求傳感器具有一定的檢測重復性和線性,可以重復使用,而且測得的數據具有一定的精度;其次,環境溫度對其影響較小,可以保證在較大范圍內數據具有一定的精度;同時,還需具有一定的靈敏度和穩定性。 3.1.1 SC0073傳感器     該傳感器采用壓電復合材料作為換能元件,信號通過特殊的匹配層傳遞到換能元件上變成電荷量,再經傳感器內部放大電路轉換成電壓信號輸出。該傳感器是一種高性能低成本的振動傳感器,具有靈敏度高、頻率響應范圍寬、抗過載及沖擊能力強、抗干擾性好、操作簡便等特點。通過測試該型號傳感器性能基本滿足條件,但是信號穩定性欠佳,尤其是柱狀的結構外形,導致其無法與腕帶方便的配合。 3.1.2 HK-2000B脈搏傳感器     HK-2000B脈搏傳感器采用高度集成化工藝將力敏組件、靈敏度溫度補償組件、感溫組件、信號調理電路集成在傳感器內。主要特點是靈敏度高、抗干擾性能強、過載能力大、性能穩定可靠、使用壽命長。實驗發現由HK-2000B提取信號繪制的脈搏波形清晰穩定,使用時無需搭建前置放大電路,但體積過大,無法對三個脈位進行同時測量。 3.1.3 PVDF壓電傳感器     PVDF壓電傳感器由PVDF壓電薄膜構成。與其他壓電材料相比,PVDF壓電薄膜具有壓電系數大、頻響寬、動態范圍大、力電轉換靈敏度高、機械性能強度高、聲阻抗易匹配等特點,且重量輕、柔軟不脆。對該傳感器的測試如下:分辨率、靈敏度等指標均符合要求,而且得到的脈搏波形與HK-2000B獲得質量相當。綜合以上對比,本設計方案中選取PVDF壓電傳感器作為脈搏測量傳感器。 3.1.4 BP300T壓力傳感器     本系統中使用BP300T壓力傳感器監測腕帶壓力。BP300系列壓力傳感器是專為電子血壓計開發的一款壓力傳感器,具有結構簡單、性能穩定、可靠性好、通用性強等優點。 3.2 信號調理電路     脈搏信號處理電路主要是對檢測到的微弱脈搏電信號進行信號處理,并濾去多余的噪聲信號。考慮到脈搏信號為超低頻信號,極易引入工頻干擾,而且采集到的脈搏電壓信號幅度通常在0~20 mV之間,并不符合A/D轉換器的輸入電壓的范圍(一般為-5~+5 V)。鑒于以上特點,PVDF脈搏傳感器和壓力檢測傳感器均使用以下調理電路。 3.2.1 前置放大電路設計分析     前置放大電路對于脈搏波信號采集來說至關重要,考慮到脈搏信號的特點,為了放大噪聲環境中傳感器輸出的弱信號,對于放大器要求具有:極高的共模和差模輸入阻抗;很低的輸出阻抗;精確和穩定的增益;極高的共模抑制比。基于以上分析,選用ANALOG DEVICES公司生產的低功耗、高精度儀表放大器AD620作為前置放大的核心器件。     圖3是AD620的簡化示意圖,AD620由三個放大器組成,其內部采用“三運算放大器”典型電路,僅需要一只外接電阻便可使增益在1~1 000之間任意調節,其調節是通過1腳和8腳間的阻抗Rg來實現的。AD620管腳圖如圖4所示。前置放大電路結構如圖5所示。 3.2.2 帶通濾波電路     帶通濾波器是一個允許特定頻段的波通過、同時屏蔽其他頻段的設備。可以由低通濾波器和高通濾波器串聯組合而成。     本系統的濾波電路采用雙運放LM358。LM358是雙運放集成電路,封裝形式有塑封8引線雙列直插式和貼片式,其管腳圖如圖6所示。它內部包括有兩個獨立的、高增益、內部頻率補償的雙運算放大器。其主要特性:短路保護輸出;真差動輸入級;單電源工作:3.0~32 V;低輸入偏置電流;具有內部補償;共模范圍擴展到負電源。帶通濾波電路結構如圖7所示。   3.2.3 二級放大電路     其目的是把信號放大到適合A/D轉換的要求,從而使前置放大器的放大倍數不至于太高而產生波形的失真。因為前置放大后信號的大小為50 mV,因此后級放大倍數為100。二級放大電路結構如圖8所示。 3.3 A/D轉換器和單片機     本系統中采用美國TI公司生產的多通道、低價格的模數轉換器TLC1543,這款芯片除了高速的A/D轉換器和通用的控制能力外,內部還有14個A/D轉換通道,其中11個通道可以作為外部輸入的模擬電壓,3個通道是芯片內部的自測電壓。其采樣一保持功能自動進行,管腳圖如圖9所示。     本系統選用STC89C52單片機,可重復燒寫10萬次。STC89C52完全兼容AT89C51,AT89C52等系列單片機。 3.4 壓力控制模塊     壓力控制模塊由充氣泵、充氣電磁閥、放氣電磁閥組成,控制核心是單片機,用三極管作為控制開關,如圖10所示,充氣泵和充氣電磁閥配合使用,對整個測量過程進行加壓,減壓時充氣泵、充氣電磁閥關閉,放氣電磁閥打開使腕帶壓力減小。 3.5 電源     系統中AD620和LM358都需要±5 V供電,充氣泵、電磁閥以及單片機需+5 V電源,為滿足條件提出以下方案。 3.5.1 基于ICL7660的電源設計     ICL7660是Maxim公司生產的小功率極性反轉電源轉換器。利用該轉換芯片可以方便的產生所需電壓。其設計原理如圖11所示。 3.5.2 LM2940電源模塊     為了避免引入50 Hz工頻信號對電路的干擾,因而選用干電池供電,干電池提供的電壓為7.5 V。為了達到較好的供電質量,在電路中選擇LM2940穩壓芯片,將7.5 V左右的電壓穩定到5 V。如圖12所示。     經過實驗和比較,方案二中的設計較第一種設計更為穩定、便攜,故使用該設計方案。 4 脈搏信號的再現和處理     脈搏信號在上位機上的顯示界面采用Visual Basic6.0創建,并利用其中的MSComm通信控件實現串行通信,所有的控制均通過人機交互界面直接操作,顯示界面如圖13所示。其中MSComm通信的函數說明如下:CommPort:設置或返回通信端口號;Settings:設置初始化參數,以字符串形式設定波特率、奇偶校驗、數據位、停止位;PortOpen:設置或返回通信端口的狀態,同時可打開和關閉端口;Input:用于從接收緩沖區返回并刪除字符;Output:用于向發送緩沖區寫數據或一個字符串。獲得的測量數據在Matlab中進行處理和分析,仿真結果如圖14所示。 5 結語     通過對傳感器、放大電路、濾波電路、電源模塊、A/D轉換器等幾個方面詳細的介紹,完成了多通道脈搏信號采集系統的設計過程。經實驗調試,采集到的信號清晰平穩,噪聲基本濾除,整個系統具有一定的穩定性。提取到的信號通過Matlab軟件最終可以實現復雜脈象的識別。

    時間:2011-08-24 關鍵詞: 89c 89 stc c52

  • 基于STC12C5A60S2與AD620的小信號采集系統

    摘要:在測控領域中,經常遇到監測對象輸出信號較小,難以直接采集,一般都需要將其放大后再做處理。介紹了一種小信號采集系統的實現方法,利用具有A/D轉換功能的單片機STC25A60S2和具有精確放大功能的易用放大器AD620實現了最小系統,并論述了系統設計與實現,詳細介紹了采集小信號的過程,并給出了實際應用的例子,以及小信號采集在相關領域的應用。 關鍵詞:STC12C5A60S2;信號采集;信號調理;A/D轉換     在許多電子設備中需要對微弱信號進行高精度處理,因此需要采用儀器放大器,常見的有傳統三運放儀器放大器和單片儀器放大器。由于單片儀器放大器的高精度、低噪聲及易于控制、設計簡單等特點,深受設計者喜愛。     AD620作為一款單片儀器放大器,具有低功耗,通過外部電阻可實現高增益的芯片,同時具有低輸入漂移和溫漂等特點。     STC12C5A60S2是一款具有A/D轉換功能的新一代8051單片機,指令代碼完全兼容傳統8051,但速度快8~12倍。具有8路高速10位輸入型A/D轉換(250 k/s),可做溫度檢測、電池電壓檢測、按鍵掃描、頻譜檢測等。用戶可將任何一路設置為A/D轉換,不需作為A/D使用的口可繼續作為I/O口使用。     文中介紹了如何利用STC12C5A60S2和AD620等芯片設計并完成小信號(電壓型)的采集系統。 1 系統硬件設計 1.1 系統原理框圖     一般信號在使用前,需要先濾波后放大,或者先放大后濾波,然后經過A/D等手段獲取(感知)信號。對于小信號而言,信號幅值只有幾毫伏,甚至更小,如果先濾波,可能會將有用信號濾除,因此,在這種情況下,需要先進行放大,然后濾波,再進行A/D轉換或其他處理。根據本系統特點,系統中存在的干擾可以忽略,因此不考慮信號濾波環節,因此,系統主要通過信號提取、信號放大、A/D采集3個重要環節實現。第3個環節產生的數據,可以指導人們的工作,或顯示相關的信息。整個系統原理框圖如圖1所示。 1.2 芯片供電電路設計     AD620作為一個放大器,可以使用單電源或者雙電源工作,但是使用雙電源工作時,其性能優于單電源。在集成電路設計中,單電源易于實現,但考慮到芯片的工作性能,本系統中采用雙電源供電。利用ICL7660S芯片,將外部單電源轉換為雙電源。ICL7660S是一個電壓轉換芯片,可以實現由正電壓轉換為負電壓的功能,其外圍電路也比較簡單,具體電路如圖2所示。     系統中其他芯片均采用5 V單電源供電,對接入的5 V電源不需做任何處理即可使用,此處不做說明。 1.3 信號調理電路     實際的微弱信號,一般為mV級,甚至更小,在處理前,需要進行放大,然后進行A/D采集。根據STC12C5A60S2具有的A/D功能,需對信號進行精確放大,使其達到V級,因此采用AD620放大器。AD620對2路輸入差分信號具有較好放大效果,在實際應用時,信號一般由電橋產生。為了實現信號放大,AD620需要外接電阻,由其與內部電阻共同確定放大倍數。設放大倍數為G,則有下式。          1)式中RG為AD620內部電阻,R1為外部電阻。由(1),(2)式可看出,(1)式中RG大小為49.4 kΩ。     調理后的信號經過AD620的6腳輸出,此時可直接接入A/D轉換芯片,實現數據采集,使用時縮小相應倍數即可。信號調理原理如圖3所示。 1.4 系統去耦電路     由于系統主要實現小信號的放大以及放大后的A/D轉換,而本系統完成A/D功能的芯片,即STC12C5A60S2,以自身工作電源作為參考電壓,為了保證轉換結果的一致性,需要確保電源電壓的穩定。濾除電源中的干擾,可通過多電容并聯濾除,電容并聯后容值增大,但是電容內部的等效電阻卻因并聯而減小,有利于降低損耗,因此很多時候將多個電容并聯起來使用,實現原理如圖4所示。 1.5 A/D轉換的實現     前面提到STC12C5A60S2是一款具有A/D轉換功能的單片機,具有使用方便、簡單、功能多等特點,其A/D轉換最快只需90個時鐘周期(和其工作頻率有關),本系統采用其實現A/D轉換。     STC12C5A60S2將P1口作為8路A/D轉換輸入接口,在使用時只需將其設置為模擬接口,通過設置相應寄存器,便可完成A/D轉換,不使用的管腳還仍可當普通管腳使用。本系統實現一路輸入信號的A/D轉換,因此只需設置一路即可,在本系統中使用P1.0口作為信號輸入口。本系統實現A/D轉換的原理如圖5所示。 1. 6 后續工作     在AD完成后,還需進行數據分析,一般可以通過通信口(一般采用串口)發送給上位機,通過上位機對數據進行處理。根據具體系統的不同特點,數據處理方法也不盡相同,在此不做詳細討論。     本系統對不同大小的信號進行A/D轉換后,獲取到了一系列實際數據和理論數據,如表1所示。通過Excel對A/D數據進行曲線繪制,發現系統A/D轉換器具有較好的線性度。如圖6所示。 2 實際應用     上文較詳細的討論了小信號的調理,A/D轉換,及其處理方法,下面通過實例介紹其具體應用。     電阻應變片作為一種傳感元件,常用來監測物體形變,一般將應變片貼在構件側點上,構件受力后由于測點發生應變,電阻發生變化,產生微弱的電壓變化,通過檢測微弱的電壓變化,可計算得到構件形變程度,從而達到監測構件狀況的目的,指導相關工程人員進行處理。     本系統可應用在電橋產生的電壓,一個電橋示意圖如圖7所示,圖中R4、R3、R1、R2,為電橋4臂,R4、R3為阻抗大小固定電阻,R1、R2中一個為受力后阻值發生變化的電阻,R4、R3阻值大小相同,R1、R2未受力時阻值大小也相同。在未受力情況下,電橋3、4兩點等電位,即電勢差為0,如果將其作為AD620輸入,則認為輸入信號為0,稱此時的電橋平衡。當R1或R2受力大小發生變化時,變化結果反映在其阻值上,通過歐姆定律可得,3、4兩點電位不一樣,即有電勢差產生,此時電橋失衡,但此時的信號很微弱,不能直接采集,因此通過文中提到的信號調理電路,進行信號放大,即將電橋中3、4兩點接入AD620的2、3腳,通過放大后,然后進行A/D采集。     本系統在仿真時,使用自己搭建的簡易電橋,如圖8所示。     通過調節圖中R2,產生不同的微弱信號,將簡易電橋1,2端接入信號調理電路,后經A/D轉換,即可實現微弱信號采集。簡易電橋中1,2端對應圖中3,4端。在此次模擬時,調節R2,使1,2兩端產生約5.35 mV,調節信號調理電路中的外接電阻至160.7Ω,計算可得放大倍數約為308.4倍,A/D參考電壓為4.256 V,通過測量AD620輸出可得,電壓大小為1.645 V,計算可得放大倍數G=1.647 V/5.35mV≈308,可知,放大效果良好(去除放大效果后,誤差只有nV級)。通過多次A/D轉換.返回結果均在0x018B左右,證明系統具有較高可信度(在實際系統中已有運用)。 3 結論     從芯片選型,電路設計等方便詳細說明了小信號的采集系統的設計與實現:8位單片機STC12C5A60S2作為控制器和A/D轉換器;以AD620作為信號調理電路主芯片;以ICL7660S芯片為負電壓產生芯片;電橋原理等。通過測試,很好地實現了功能,在實際系統中出色地完成了預期目標,具有一定實用價值。

    時間:2012-08-03 關鍵詞: 12c stc a60 60s

  • 對stc片內eeprom的測試

    #include<stc89.h> #include<intrins.h> #define uchar unsigned char #define uint unsgined int uchar code shuzi[]="0123456789-:"; uchar d0,d1,d2,d3,t0; sbit lcd_rs=P2^5;//數據/命令選擇端 H高 L低 sbit lcd_rw=P2^6;//讀/寫選擇端    H高 L低 sbit lcd_e=P2^7; //使能信號   上升沿所存數據 void init();               //液晶初始化操作 void write_com(uchar com); //液晶寫命令函數 void write_data(uchar dat);//液晶寫數據函數 void delay(uchar a0);    //延時函數 void main() {init();                  //調用液晶初始化函數對液晶初始化操作 ISP_CONTR=0x82; ISP_ADDRH=0x20;//高八位地址定義 ISP_ADDRL=0x00;//低八位地址定義 ISP_TRIG=0x00; ISP_CMD=0x01;//讀取內容 ISP_TRIG=0x46;//手冊中說要先寫入 ISP_TRIG=0xb9; d0=ISP_DATA; while(1) {  write_com(0x83);  d1=d0/100%10;  d2=d0/10%10;  d3=d0%10;  write_data(shuzi[d1]);  write_data(shuzi[d2]);  write_data(shuzi[d3]);  if(d0>=255)  {d0=0;}  ISP_DATA=d0;   ISP_CMD=0x03;//扇區擦除   ISP_TRIG=0x46; ISP_TRIG=0xb9;  ISP_CMD=0x02;;//編程  ISP_TRIG=0x46; ISP_TRIG=0xb9;  for(t0=10;t0>0;t0--)  {   delay(255);  } d0++; }}  void init()//液晶初始化操作 {lcd_rw=0; //讀寫選擇端 始終為寫   lcd_e=0; //使能端拉低 以便形成上升沿   delay(15);   write_com(0x38);//設置顯示模式為1602   write_com(0x0c);//光標設置和 顯示開不開設置   write_com(0x06);//光標和屏幕移動不移動 設置   write_com(0x01);//清屏操作   write_com(0x80);//設置數據指針 } void write_com(uchar com)//液晶寫命令函數 {    lcd_rs=0; //設置數據命令為 命令    P0=com;  //將命令送到P0口    delay(2); //延時一下    lcd_e=1;  //e使能端上升沿吧數據讀走    delay(2); //延時一下好讓液晶準備好    lcd_e=0;  //使能端拉低 以便下次形成上升沿 } void write_data(uchar dat)//液晶寫數據函數 {    lcd_rs=1; //設置數據命令為 數據    P0=dat;  //將命令送到P0口    delay(2); //延時一下    lcd_e=1;  //e使能端上升沿吧數據讀走    delay(2); //延時一下好讓液晶準備好    lcd_e=0;  //使能端拉低 以便下次形成上升沿 }  void delay(uchar a0) { uchar a1,a2;   for(a2=a0;a2>0;a2--)   for(a1=110;a1>0;a1--); }

    時間:2012-10-23 關鍵詞: 測試 stc eeprom

  • 基于STC12C5A60S2的多功能測量系統設計

    摘要:本文介紹了基于STC12C5A60S2單片機的多功能測量系統,系統實現對空氣溫濕度、CO2濃度以及室內光照強度的檢測,同時具有萬年歷時鐘顯示功能。闡述了系統硬件和軟件的整體設計方案、器件選型、單元電路設計及整體電路連接。通過理論分析及實驗證明能有效測出溫濕度、CO2含量及室內光照強度,測量準確,參數調節方便,使用效果良好。 關鍵詞:單片機;傳感器;信號采集;信號調理 0 引言     隨著電子技術的發展,居民普遍使用電子溫度計或萬年歷自帶的溫度計來測量室內溫度,但是,隨著環境污染的日趨嚴重及人們對生活質量要求的提高,人們對室內濕度、二氧化碳濃度及光照強度的檢測也逐漸關注。然而,目前為止適用于家居型檢測濕度、光照強度及CO2濃度還沒有一種合適且適用的儀器。小型倉庫中傳統的方法是采用濕度表、雙金屬式測量計和濕度試紙等測試器材,通過人工進行檢測,對不符合溫度和濕度要求的庫房進行通風、去濕和降溫等工作。這種人工測試方法費時費力、效率低,且測試的溫度及濕度誤差大、隨機性大。因此我們需要一種性價比較高的溫濕度測量儀。     本文設計研制一種新穎、方便、實用、結構簡單的多功能測量儀,適用于家庭、倉庫以及溫室等需要環境檢測的地方。設計通過LCD顯示所監測的結果,用戶可以根據監測結果有效調節相關設備,從而達到理想的環境狀態。 1 系統設計 1.1 設計任務     本文實現基于STC單片機的多功能測量系統,可以實現濕度檢測、溫度檢測、CO2濃度檢測、室內光照強度檢測、時間日期顯示的功能。其中濕度的測量范圍為20~90%RH;溫度的檢測范圍為-55~+125℃;CO2濃度測量范圍為350~10000ppmCO2;室內光照強度的測量范圍為0~2500lux;系統顯示當前時間和日期,并可以通過按鍵進行修改當前時間日期。 1.2 設計方案及工作原理     多功能檢測系統包括:電源模塊、控制器、溫度檢測模塊、濕度檢測模塊、照度檢測模塊,CO2濃度檢測模塊、時鐘模塊、鍵盤輸入模塊、LCD顯示模塊。如圖1所示。     本控制系統以STC12C5A60S2單片機為控制核心,該單片機具有高速、低功耗、超強抗干擾的特點,并且自帶8路10位精度AD轉換;溫濕度檢測由數字式的溫度檢測傳感器DS18B20和濕度檢測傳感器DTH11實現,由于數字式傳感器輸出為數字量,因此在數據處理方面比較簡單,且這兩款傳感器的性價比較高;時鐘模塊則是應用了比較常用的DS1302時鐘芯片,通過控制器與時鐘芯片的通訊實現得到比較準確的時間值,另外,通過按鍵操作實現對時鐘的校準;而對于照度和CO2濃度的檢測則比較復雜,由于硅光電池和CO2檢測傳感器輸出信號是微弱的模擬信號,因此需要對得到的小信號進行調理,調理后的信號信息送入單片機的AD口,從而得到單片機可以處理的數字量;所有檢測結果及日期時間的顯示都是由LCD實現;由于信號調理電路中放大器采用雙電源供電,因此電源模塊選用了交流220V轉±5V的電源模塊。 2 硬件電路設計 2.1 控制電路     系統的控制電路是以STC12C5A60S2單片機為控制核心構成的最小系統。另外,為方便程序下載,設計了基于CH340的程序下載接口電路,電路圖如圖2所示。 2.2 檢測電路     根據傳感器輸出信號的不同,可分為數字式傳感器和模擬式傳感器兩種。信號類型的不同導致了檢測電路的不同。 2.2.1 溫濕度檢測電路     由于溫度傳感器DS18B20和濕度傳感器DTH11均為數字量輸出,因此檢測電路十分簡單,為了防止不確定信號的出現,需在信號的輸出端接4.7k的上拉電阻,如圖3所示。 2.2.2 照度及CO2濃度檢測電路     由于光照檢測采用硅光電池,信號為小信號的模擬量輸出,因此需要對信號進行調理。CO2傳感器MG811的輸出同樣為模擬量電壓小信號。其參數如表1所示。     硅光電池測光強的原理是光生伏特效應,即它是一種直接把光能轉化成電能的半導體器件,由硅光電池的特性曲線可知,光伏電池輸出電流比輸出電壓的線性性要好,因此在此檢測其電流特性。由實驗測試可得室內的光照強度一般為0~2500lux,此時硅光電池的輸出電流在0~0.15mA左右,在硅光電池兩端并聯一個100 Ω電阻,可得此時的輸出電壓在0~15mV左右。     為了將小信號調理為可以適合單片機處理的信號,對小信號進行放大濾波處理。首先對小信號進行放大處理,這里采用高輸入阻抗的差分放大器。其次,放大器輸出的信號經過二階有源低通濾波器。最后信號進入單片機的AD口。信號調理電路如圖4所示。     (1)差放大電路     因為電路中R3=R4,R6=R8=R7=R9,故可導出兩級差模總增益為:         通常,第一級增益要盡量高,第二級增益一般為1~2倍,這里第一級選擇100倍,第二級為1倍。則取R6=R7=R8=R9=10KΩ,要求匹配性好,一般用金屬膜精密電阻,阻值可在10KΩ幾百KΩ間選擇。則         先定R5,通常在1~10kΩ內,這里取R5=1k Ω,則可由上式求得R3=99R1=49.5 kΩ。     取標稱值51kΩ。通常R1和R2不要超過R5/2,這里選R1=R2=510Ω,用于保護運放輸入級。     A1和A2應選用低溫飄、高KCMRR的運放,性能一致性要好。     (2)有源低通濾波電路     由于濾波電路的輸入輸出信號為直流信號,因此在計算時選取的截止頻率為3Hz。濾波電容C1=C2=1 μF。         由式(3)(4)可得R=53078 Ω,A0=2,所以在此取R10=R11=51k。     信號經過信號調理電路后實際放大倍數A=200。而對于CO2傳感器,根據輸入信號的不同,選擇合適R3、R4,其信號調理電路的增益為80。 2.2.3 時鐘模塊     本設計選用美國Dallas公司推出的一種高性能、低功耗的實時時鐘芯片DS1302,芯片采用SPI三線接口與CPU進行同步通信,并可采用突發方式一次傳送多個字節的時鐘信號和RAM數據。實時時鐘可提供秒、分、時、日、星期、月和年,一個月小與31天時可以自動調整,且具有閏年補償功能。     工作電壓寬達2.5~5.5V。采用雙電源供電(主電源和備用電源),可設置備用電源充電方式,提供了對后備電源進行涓細電流充電的能力。電路連接如圖5所示。 3 軟件設計 3.1 軟件系統設計     該系統軟件主要包括兩部分:數據采集和數據顯示。當系統上電之后,系統首先進行初始化;然后判斷標志位確定當前是否進行時鐘設置,如果是,則通過按鍵調節時鐘,如果否,則采集所有數據并進行相應處理;最后將采集來的數據通過LCD顯示出來。系統程序框圖如圖6所示。 3.2 部分檢測軟件設計     對于光照強度檢測和CO2濃度檢測,存在模擬量向數字量的轉化,因此需要考慮AD轉換器的精度,為了得到較準確的檢測值,在此使用STC12C5A60S2自帶的10位AD轉換接口,即其精度為1/(210-1)。     對于光照強度檢測,經信號調理電路后的輸出電壓為0~3V,相應的光照強度為0~2500lux,假設AD轉換后的值為A,則此時對應的光照強度為E,如式(5)。         化簡得:E=(12500×A)/3069。因此,通過程序編寫可以實現對光照強度的檢測。 4 結論     設計了基于STC12C5A60S2的多功能測量系統,通過理論分析與實際電路焊接以及相關程序的編寫,設計出了實物。通過測試實現了溫濕度檢測、CO2濃度檢測、室內照度檢測、時鐘顯示的功能。實驗結果良好,測量精度在實際計算誤差范圍內。

    時間:2013-01-24 關鍵詞: 12c stc a60 60s

  • 基于STC單片機的機場車輛超速報警系統設計

    隨著民航業的發展,航空器的數量不斷增多,地面保障車輛隨之增加,加之機場車輛行駛速度過快,導致刮碰飛機的不安全事件時有發生,直接影響了飛機的持續適航,嚴重危及航空公司的運行安全,同時也造成了一定的經濟損失。為了減少此類不安全事件的發生,本設計利用單片機實現車輛的超速報警來提醒司機減速行駛,并將超速情況實時記錄下來作為評價車輛駕駛員的依據之一,以便于對員工進行管理。 1系統的硬件設計 1.1系統功能 系統實現的主要功能如下: (1)按鍵調整時間以及實時顯示時間; (2)實時顯示車輛行駛的速度; (3)當車輛超過規定的速度值時,違規情況以數據形式保存在串行存儲器中,并發出聲音警報,同時警報燈閃爍; (4)管理人員使用IC卡讀取車輛的違規情況并取消報警。 1.2系統硬件的總體設計 系統的總體結構如圖1所示。它采用STC89C52單片機為主控芯片,主要有電源模塊、信號采集模塊、時鐘模塊、LED顯示模塊、按鍵模塊、報警模塊、AT24C64串行存儲器模塊和接觸式IC卡存儲模塊。其中STC89C52主要完成對外圍硬件的控制以及信息處理功能;電源模塊將12V車載電源降壓至5V單片機工作電源;信號采集模塊使用TLP521光電耦合器將采集到的高電平脈沖信號轉換為5V脈沖信號;時鐘模塊提供LED顯示的實時時間;LED顯示模塊使用74HC595驅動數碼管實現時間和速度的顯示;按鍵模塊主要用來調整時間;報警模塊實現超速后的聲音報警和閃燈警示;AT24C64串行存儲器對超速信息進行存儲;接觸式IC卡存儲器可讀取AT24C64中的數據,讀取完數據即可取消報警。 1.2.1主控模塊 主控模塊主要采用STC89C52單片機,該單片機有4個并行I/O端口,每個端口有8條端口線,其中P0端口在沒有外存儲器時可作為8位準雙向I/O端口使用,外接存儲器時可作為地址線/數據線使用;P1、P2和P3端口均可作為8位準雙向I/O端口使用,P3口和其他I/O端口有很大區別,除作為一般I/O口外,每個引腳還有專門的功能。所有的外部芯片都可以通過這些端口進行擴展。 1.2.2電源模塊 電源模塊使用LM2596開關電壓調節器,該調節器是降壓型電源管理單片集成電路,能夠輸出3A的驅動電流,同時具有很好的線性和負載調節特性。該系統中選擇固定輸出5V版本,即調節器型號為LM2595-5.0。該器件內部集成頻率補償和固定頻率發生器,開關頻率為150kHz,與低頻開關調節器相比較,可以使用更小規格的濾波元件。由于該器件只需4個外接元件,極大地簡化了開關電源電路的設計。原理圖如圖2所示。 1.2.3信號采集模塊 目前機場車輛轉速傳感器大多使用霍爾傳感器,其輸出信號為脈沖信號,脈沖信號的高電平值基本與車載電源電壓值相同,需要通過光電耦合器將其轉換為單片機可采集的5V脈沖信號。如圖3所示,Signal為轉速傳感器實際輸出的信號,轉換后的信號與單片機INT1/P3.3引腳連接,通過外部中斷功能記錄脈沖數并通過計算轉換為速度值。 1.2.4時鐘模塊 時鐘模塊使用DS1302浚流充電時鐘芯片,該芯片包含一個RTC/日歷和31B的靜態RAM。它通過簡單的串行接口與微處理器通信。RTC/日歷提供秒、分、小時、天、日期、月和年。如果當月天數小于31天將自動進行調整,包含閏年校正。時鐘可以工作在24小時制和12小時制,12小時制下用AM/PM來指示,該系統中選擇使用24小時制。 在DS1302和微處理器之間使用同步串行方式進行通信。只需要3條線就可以通信,分別為RST(reset)、I/O(數據線)和SCLK(串行時鐘),Vcc1連接至3V備用電源。

    時間:2012-11-05 關鍵詞: 單片機 stc 超速報警 機場車輛

  • 32*32點陣LED顯示漢字-STC單片機

    圖上擺放的是上面一排引腳是行,下面一排引腳是列。行是LED陽極。 行列各由四個74HC573控制,每個控制8個腳。同時注意單片機P0口上拉保持供電充足。 還有注意每行的掃描時間要合理設置。否則會有顯示殘缺。根據實際設置吧!!! 橫向顯示4個字:少占魚制作 其實可以把這個程序和我另外的一個單片機串口與電腦通信的程序結合起來,加上我用VC做的上位機界面。可以自由輸入顯示內容,還可以反向控制電腦的一些操作。不過我還是熱衷不用電腦輸入顯示內容,而用一只感應筆掃描一個32*32LED模板,實現自己點哪就讓哪個LED亮的效果。簡單有省事。等我做出實物來再發吧!!!其實就是加個光敏三極管,LED模板上各個LED點亮時間不同。通過測頻達到取某點坐標的目的。 //32*32點陣LED顯示,由8*8點陣組成。列高行低點亮 /*****我在修改的時候,總是字顯示不完整,一開始還以為是哪里有錯,后來改延時程序也不行,最后每行連續掃描幾次,可以了******/ #include #define uchar unsigned char #define uint unsigned int //少占魚制作 河北正定歡迎您 長沙航空職業技術學院 2010 年QQ:411656434 //郵箱:[email protected] sbit CS1=P1^0; sbit CS2=P1^1; sbit CS3=P1^6; sbit CS4=P1^7; sbit L1=P1^2; sbit L2=P1^3; sbit L3=P1^4; sbit L4=P1^5; uchar hang[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uchar code tab[]={ 0x01,0x00,0x01,0x00,0x01,0x00,0x09,0x20, 0x09,0x10,0x11,0x0C,0x11,0x04,0x21,0x10, 0x41,0x10,0x01,0x20,0x01,0x40,0x00,0x80, 0x01,0x00,0x02,0x00,0x0C,0x00,0x70,0x00, //少 0x02,0x00,0x02,0x00,0x02,0x08,0x03,0xFC, 0x02,0x00,0x02,0x00,0x02,0x10,0x3F,0xF8, 0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10, 0x20,0x10,0x20,0x10,0x3F,0xF0,0x20,0x10, //占 0x04,0x00,0x04,0x00,0x0F,0xE0,0x10,0x40, 0x20,0x88,0x7F,0xFC,0xA1,0x08,0x21,0x08, 0x3F,0xF8,0x21,0x08,0x21,0x08,0x3F,0xF8, 0x20,0x08,0x00,0x04,0xFF,0xFE,0x00,0x00, //魚 0x04,0x04,0x24,0x04,0x25,0x04,0x3F,0xA4, 0x24,0x24,0x44,0xA4,0xFF,0xE4,0x04,0x24, 0x3F,0xA4,0x24,0xA4,0x24,0xA4,0x24,0x84, 0x26,0x84,0x25,0x04,0x04,0x14,0x04,0x08 //制 }; void delay(uint); void delayus(); void xianshi(); void dis1(); void dis2(); void dis3(); void dis4(); /****************************************************************/ //主函數入口 main() { delayus(); delay(20); P0=0x00; P2=0xff; L1=0; L2=0; L3=0; L4=0; CS1=0; CS2=0; CS3=0; CS4=0; while(1) { xianshi(); } } void xianshi() { dis1(); dis1(); dis2(); dis2(); dis3(); dis3(); dis4(); dis4(); } /************第一個16*16點陣顯示***************/ // void dis1() { //第一個16*16點陣開始顯示 uchar i,j; /*****我在修改的時候,總是字顯示不完整,一開始還以為是哪里有錯,后來改延時程序也不行,最后每行連續掃描幾次,可以了******/ //少占魚 河北正定歡迎您 長沙航院 QQ:411656434 for(i=0;i<8;i++) { for(j=0;j<8;j++)//特別注意這里每組點陣的每行掃描8遍,人眼看起來才完整,否則會有殘缺不亮 { /*****我在修改的時候,總是字顯示不完整,一開始還以為是哪里有錯,后來改延時程序也不行,最后每行連續掃描幾次,可以了******/ P2=hang[i]; CS1=1; P0=tab[i*2]; L1=1; delay(1); P0=0x00; L1=0; P0=tab[i*2+1]; L2=1; delay(1); P0=0x00;//這句才是真正關閉陽極正電的 L2=0; //關閉列,這句是使以后的操作不再影響本列狀態 P2=0xff;//這句才是關閉陰極正電的語句 CS1=0; //關閉行低,使以后的操作部影響本行狀態 i++; } } /*****我在修改的時候,總是字顯示不完整,一開始還以為是哪里有錯,后來改延時程序也不行,最后每行連續掃描幾次,可以了******/ for(i=8;i<16;i++) { for(j=0;j<8;j++)//特別注意這里每組點陣的每行掃描8遍,人眼看起來才完整,否則會有殘缺不亮 { P2=hang[i%8]; CS2=1; P0=tab[i*2]; L1=1; delay(1); P0=0x00; L1=0; P0=tab[i*2+1]; L2=1; delay(1); P0=0x00;//這句才是真正關閉陽極正電的 L2=0; //關閉列,這句是使以后的操作不再影響本列狀態 P2=0xff;//這句才是關閉陰極正電的語句 CS2=0; //關閉行低,使以后的操作部影響本行狀態 i++; } } } /*************第2個16*16點陣顯示*********************/ // void dis2() { //第二個16*16點陣開始顯示 uchar i,j; for(i=16;i<24;i++) {/*****我在修改的時候,總是字顯示不完整,一開始還以為是哪里有錯,后來改延時程序也不行,最后每行連續掃描幾次,可以了******/ for(j=0;j<8;j++)//特別注意這里每組點陣的每行掃描8遍,人眼看起來才完整,否則會有殘缺不亮 { P2=hang[i%16]; CS1=1; P0=tab[i*2]; L3=1; delay(1); P0=0x00; L3=0; P0=tab[i*2+1]; L4=1; delay(1); P0=0x00;//這句才是真正關閉陽極正電的 L4=0; //關閉列,這句是使以后的操作不再影響本列狀態 P2=0xff;//這句才是關閉陰極正電的語句 CS1=0; //關閉行低,使以后的操作部影響本行狀態 i++; } } for(i=24;i<32;i++) { /*****我在修改的時候,總是字顯示不完整,一開始還以為是哪里有錯,后來改延時程序也不行,最后每行連續掃描幾次,可以了******/ for(j=0;j<8;j++)//特別注意這里每組點陣的每行掃描8遍,人眼看起來才完整,否則會有殘缺不亮 { P2=hang[i%24]; CS2=1; P0=tab[i*2]; L3=1; delay(1); P0=0x00; L3=0; P0=tab[i*2+1]; L4=1; delay(1); P0=0x00;//這句才是真正關閉陽極正電的 L4=0; //關閉列,這句是使以后的操作不再影響本列狀態 P2=0xff;//這句才是關閉陰極正電的語句 CS2=0; //關閉行低,使以后的操作部影響本行狀態 i++; } } //第二個16*16點陣顯示完畢 } /***********第3個16*16點陣顯示**************************/ // void dis3() { //第三個16*16點陣開始顯示 uchar i,j; for(i=32;i<40;i++) { /*****我在修改的時候,總是字顯示不完整,一開始還以為是哪里有錯,后來改延時程序也不行,最后每行連續掃描幾次,可以了******/ for(j=0;j<8;j++)//特別注意這里每組點陣的每行掃描8遍,人眼看起來才完整,否則會有殘缺不亮 { P2=hang[i%32]; CS3=1; P0=tab[i*2]; L1=1; delay(1); P0=0x00; L1=0; P0=tab[i*2+1]; L2=1; delay(1); P0=0x00;//這句才是真正關閉陽極正電的 L2=0; //關閉列,這句是使以后的操作不再影響本列狀態 P2=0xff;//這句才是關閉陰極正電的語句 CS3=0; //關閉行低,使以后的操作部影響本行狀態 i++; } } for(i=40;i<48;i++) { for(j=0;j<8;j++)//特別注意這里每組點陣的每行掃描8遍,人眼看起來才完整,否則會有殘缺不亮 { P2=hang[i%40]; CS4=1; P0=tab[i*2]; L1=1; delay(1); P0=0x00; L1=0; P0=tab[i*2+1]; L2=1; delay(1); P0=0x00;//這句才是真正關閉陽極正電的 L2=0; //關閉列,這句是使以后的操作不再影響本列狀態 P2=0xff;//這句才是關閉陰極正電的語句 CS4=0; //關閉行低,使以后的操作部影響本行狀態 i++; } } //第三個16*16點陣顯示完畢 } /********第4個16*16點陣顯示*********************/ // void dis4() { /************第4個16*16點陣顯示***********************/ //第四個16*16點陣開始顯示 uchar i,j; for(i=48;i<56;i++) { for(j=0;j<8;j++)//特別注意這里每組點陣的每行掃描8遍,人眼看起來才完整,否則會有殘缺不亮 { P2=hang[i%48]; CS3=1; P0=tab[i*2]; L3=1; delay(1); P0=0x00; L3=0; P0=tab[i*2+1]; L4=1; delay(1); P0=0x00;//這句才是真正關閉陽極正電的 L4=0; //關閉列,這句是使以后的操作不再影響本列狀態 P2=0xff;//這句才是關閉陰極正電的語句 CS3=0; //關閉行低,使以后的操作部影響本行狀態 i++; } } for(i=56;i<64;i++) { for(j=0;j<8;j++)//特別注意這里每組點陣的每行掃描8遍,人眼看起來才完整,否則會有殘缺不亮 { P2=hang[i%56]; CS4=1; P0=tab[i*2]; L3=1; delay(1); P0=0x00; L3=0; P0=tab[i*2+1]; L4=1; delay(1); P0=0x00;//這句才是真正關閉陽極正電的 L4=0; //關閉列,這句是使以后的操作不再影響本列狀態 P2=0xff;//這句才是關閉陰極正電的語句 CS4=0; //關閉行低,使以后的操作部影響本行狀態 i++; } } //第四個16*16點陣顯示完畢 } // void delayus() { uchar i=3; while(i--); } void delay(uint k) { uint data i,j; for(i=0;i { for(j=0;j<155;j++) {;} } }

    時間:2012-08-14 關鍵詞: 32 LED stc 點陣

  • 基于STC89C58數字溫度計的設計與實現

    引 言    隨著時代的發展,數字化控制無疑是人們追求的目標之一,它給人們帶來的方便也是不可否定的,其中數字溫度計就是一個典型的例子,它在信息、電子、物流等許多領域都有廣泛的應用。隨著人們對它的要求越來越高,為現代人工作、科研、生活提供更好、更方便的設施,就需要從單片機技術人手,朝著數字化、智能化控制方向發展。    這里介紹一種數字溫度計的設計制作方案。該設計控制器使用單片機STC89C58,測溫傳感器使用LM94022,用FM1602C液晶顯示實現溫度顯示,設計制作了寬量程高精度多功能數字溫度計能準確達到各種要求。本文設計研制的數字溫度計與傳統的溫度計相比,具有讀數方便,測溫范圍廣,測溫準確的特點,其輸出溫度和時間采用數字顯示,該數字溫度計不僅分辨率高,還可以設置報警溫度上下限,當溫度達到高、低限溫控制點發出聲光報警。該設備主要用于對測溫比較準確的場所或科研實驗室。1 系統設計方案的論證與比較1.1 運用LED數碼管顯示與運用LCD液晶顯示溫度及時間    運用LED顯示,提供的信息較少,界面不美觀,顯示時間和溫度極不方便,所占體積也大,且在要表達較多信息時(如兩路溫度值時和時間),需要大量的LED和占用較多的引腳,軟件設計也相對復雜。    LCD可以提供較強的頁面顯示功能,功率小,頁面相對于LED顯示更直觀,更明了;在顯示信息較多時,比LED所占的空間小,性價比更高。    很容易看出,在本設計中采用LCD作為顯示更好。2.2 靈敏度選擇端GS0及GS1    LM94022根據對GS0,GS1施加的不同電平有4種靈敏度供用戶選擇,如表2所示。用戶可根據測溫范圍及接口電路的工作電壓條件合理選擇。靈敏度由GS0及GS1的電平確定,高電平要求VDD>1.5 V;低電平要求VDD<0.5 V。2.3 LM94022的輸出特性    LM94022的輸出特性如圖2所示,這是測量溫度與輸出電壓在不同靈敏度時的特性。由于輸出電壓隨溫度升高而下降,其靈敏度為負值。在VDD=5 V時,不同靈敏度下幾個特定溫度值的輸出電壓如表2所示(典型值)。    數字溫度計電路設計的總體方案如圖3所示。采用STC89C58單片機作為主控器件;LCD采用FM1602,單片機中的P0作為其接口,并由P2.5~P2.7控制,用以驅動LCD的顯示;時鐘芯片采用DS1302,用腳P2.2~P2.4作為時鐘芯片控制引腳;LM94022作為溫度傳感芯片,并用TLC2543將其轉化成數字信號,用P3.2~P3.6作為ADC的控制引腳;P1口作為鍵盤的輸人口,用以接收由鍵盤輸出的信號;用P2.1和P2.0分別作為溫度過高和溫度過低的報警控制引腳,P3.7作為蜂鳴器的控制引腳。3.1 溫度采樣    LM94022采用“10”模式,在0~100℃范圍內,用轉化公式:    T=(1 568-V)×0.122 699 38    對輸出電壓采樣(用運放LM2015作電壓跟隨器)并用ADC轉化,由單片機提取,計算并轉化成溫度。3.2 時鐘電路    時鐘采用備用電池,在第一次設定時間后,所儲存的信息不會丟失,待下一次電路啟動的時候,無需再次設定時間,方便使用。 3.3 人機交換電路    系統由鍵盤作為人機交換器,4×4結構如圖4所示。其中,Time用于時間設定;L-tem和H-tem分別用于低溫和高溫設定;Return用于返回主界面。3.4 復位功能    當按下復位鍵時,對系統初始化,系統的低溫設置為0.0℃,高溫設置為90.0℃。3.5 顯示界面    第一行顯示時間,第二行顯示第一路和第二路的溫度,當出現緊急情況時,第二行顯示原因,第一行顯示第幾路出錯,并將有蜂鳴器鳴叫和LED燈提示。3.6 數據存儲    硬件存儲功能沒有實現,由于分工出現一些小的問題,導致軟硬件結合不當,設計脫節,最終沒能實現存儲功能。4 系統軟件設計    系統的軟件由三大模塊組成:主程序模塊、功能實現模塊和運算控制模塊。4.1 主程序流程    系統上電復位后,進行初始化:選擇T0中斷(工作方式1)并設置定時器初值,溫度測試電路初始化,顯示電路初始化。若有按鍵按下,禁止T0中斷,顯示處理相應事件的界面。處理完事件后,按下Return鍵,T0中斷重新開啟,回到正常的溫度顯示界面;沒有按鍵按下時,如果T0中斷,則更新溫度值,如圖5所示。4.2 顯示更新程序流程    圖6為顯示更新程序流程圖。如果T0中斷,讀取溫度值并更新溫度值,溫度更新時間為50 ms。對新讀取的溫度值進行處理,如果高于或低于設定溫度值,發出警報,相應二極管發光。最終讀取并顯示溫度信息及時間。5 測試與結果分析5.1 系統調試參數分析    測試儀器:萬用表,加熱儀器。    采用程序模擬,事先在電腦軟件上將其模擬好后再下載到單片機中,由于時間有限,有部分硬件程序并未實現。下面就測試結果做大概描述:    表3給出了用萬用表測量LM94022在“10”模式下的電壓輸出值和PDF上的溫度值。    由表3得出顯示溫度比LM94022輸出所代表的溫度小0.46℃,于是將線性公式加以修正:    Tem=Tem+0.46    原因分析:可能是與限流電阻的壓降作用有關,由于限流電阻的作用是必不可少的,而且LM94022輸出電壓波動不大,故用一修正值來彌補這一壓降,以達到較高精度。5.2 系統實現的功能    (1)能數字顯示被測溫度,測量溫度范圍為0~100℃;     (2)分辨率不低于0.5℃;    (3)提高溫度測量精度,使分辨率不低于0.1℃;    (4)帶有計時和時間顯示功能;    (5)至少有高、低兩路限溫控制輸出接口控制外部電路,實際制作時可用發光二極管模擬顯示其控制狀態輸出;    (6)高、低兩路限溫控制點可在0~100℃范圍內獨立設置;    (7)當溫度達到高、低限溫控制點發出聲光報警;    (8)自動順時測量溫度值;    (9)多路溫度巡檢(至少兩路)。    另外,溫度傳感器可通過導線連接而移動,方便測量不同地點的溫度,切實達到多路測量可移動的效果,改變測量地點時操作方便。6 結 語    該文報道的溫度計采用了高分辨率的溫度測控芯片LM94022,用FM1602C液晶顯示實現溫度顯示,以STC89C58單片機為控制中心,設計制作了寬量程、高精度、多功能數字溫度計能準確達到各種要求。與傳統的溫度計相比,該數字溫度計具有讀數方便,測溫范圍廣,測溫準確,其輸出溫度和時間采用數字顯示的特點,不僅分辨率高,還可以設置報警溫度上下限,當溫度達到高、低限溫控制點發出聲光報警,在實際溫度控制系統中有廣泛的應用。

    時間:2009-08-07 關鍵詞: 89c 89 stc c58

  • 基于STC89C52的程控恒流源的設計

    高精度的程控恒流電源在儀器儀表、傳感器技術和測試領域中有著廣泛的應用。以往程控恒流源電路大都采用PWM脈沖方式,雖便于控制和調節,但精度難以保證,并且PWM方式的波形占空比調節范圍有限,難以滿足連續可調大電流的要求。本文介紹一種采用STC89C52單片機控制壓控恒流源并通過擴流電路來實現恒流源程序控制的方案,其輸出電流值可達2A。程控恒流源的構成和工作原理程控恒流源電路由壓控電路、擴流電路和數控電路組成,結構如圖1所示。圖1 程控恒流源電路的組成框圖本恒流源電路采用STC89C52控制D/A轉換電路產生電壓控制信號,通過1個精密線性壓控電流源和擴流電路輸出所需的電流值;取樣電路采樣后經A/D轉換由數控電路讀出,然后送到顯示控制電路顯示;同時,取樣電路給壓控電流源提供電流負反饋以進一步穩定電流輸出。程控恒流源電路設計1 數控電路的設計數控電路采用由STC89C52構成的單片機最小系統來負責對D/A、A/D的控制,以及按鍵響應和LED的顯示。模塊內的數字電路和模擬電路各自采用獨立的穩壓電路供電,以減小數字電路高頻峰值電流對模擬電路的影響,可以很大程度上降低D/A輸出的紋波電壓。本設計中的D/A轉換電路采用MAX531,使用其內部自帶的2.048V基準源,D/A轉換的分辨率為0.5mV,加在1Ω的取樣電阻上就可以分辨出0.5mA的電流(步進0.5mA)。A/D轉換電路采用MAX1241,與MAX531使用同一基準源。A/D轉換的分辨率為0.5mV,取樣電阻為1Ω時,測量電流的分辨率為0.5mA(可根據步進和測量精度的實際要求,選擇D/A、A/D轉換器的位數和參考電壓)。由于要實現人機對話,至少要有10個數字按鍵和2個步進按鍵,考慮到還要實現其他的功能鍵,選用16按鍵的鍵盤來完成整個系統控制最合適。顯示部分采用8位LED數碼管,其價格便宜,易于實現。考慮到單片機的I/O端口有限,為了充分優化系統,采用外部擴展1片8155來實現鍵盤接口與顯示功能。2 壓控電流源的設計壓控電流源的負反饋放大部分有1個精密運放構成的同相放大器,引入深度的電流負反饋,從而穩定輸出到負載的電流,如圖2所示。運放正常工作于同相放大狀態時,由運放虛地的原理可知取樣電阻上的電壓:U2=Uin,因此I2=U2/R2=Uin/R2。因為采用高輸入阻抗的放大器,反相輸入端的電流近似為零,負載電流IL=I2=Uin/R2。只要擴流電路性能好,輸出電流的精度完全取決于取樣電阻的精度。圖2 壓控電流源電路原理圖3 擴流電路的設計擴流電路選用S類功率放大器,原理如圖3所示。其特點是用電壓控制放大器與電流驅動放大器構成電橋,使電壓放大器工作在無負載的狀態(輸出電流為零),而后級則工作于壓控跟隨器狀態,很容易實現很好的跟隨作用。而對于負載來說,前后級是并聯輸出的,而負反饋是從取樣電阻引出送回前級放大器上的。因此,S類功放的質量取決于前級。圖3 S類功放擴流電路原理圖S類功率放大電路的核心是1個帶負載能力很強的電流驅動放大器,與負載之間通過電橋耦合。假設放大器的開環增益接近無窮大,那么放大器兩輸入端的電壓將極度接近,用公式表示為:I1R1=I2R2,I3R3=I4R4。若放大器輸入阻抗無窮大,放大器兩輸入端的電流近似為零,則I2=I4,可得,I1=I2R2R3/R4R1;電橋平衡時,R2R3=R4R1,所以I1=I2,因此I1=0。根據以上推導,說明當S類功率放大電路穩定工作后,前級放大電路工作在空載或輕載狀態,負載所需要的電流完全由后級的電流驅動放大電路提供。這樣,電路對前級壓控電流源的負載要求不高。綜上所述,只要選擇高輸入性能和強負載能力的后級功放芯片,輸出的變化完全由前級決定。而前級工作在空載狀態,其性能基本與負載的變化無關。這樣在設計前級時,可以拋開負載能力的考慮而直接使用高精度、低失調的運算放大器;設計后級時,因為輸出取決于前級,不必擔心負載的加入會影響它的工作性能,選擇范圍變得更寬。基于S類功放電路的設計原則,為保證電路的可靠性和足夠的性能,采用高品質功放芯片LM3886,其各項電氣性能非常接近理想放大器,并且有足夠的輸出功率。測試結果表明,無論是大電流還是小電流,負載阻值的改變對系統的影響都比較小,說明系統達到恒流這一基本要求。結語該程控恒流源的主要特點是采用S類反饋控制放大電路,實現精密電流控制,具有操作方便、穩定可靠等優點,通過實際測試性能優越。

    時間:2009-12-04 關鍵詞: 89c 89 stc c52

  • 基于STC12C5A60S2的馬弗爐溫度控制器設計

    馬弗爐是高性能機電一體化的新一代智能產品,適用于煤炭、電力、化工、冶金等行業和部門進行工業分析。馬弗爐溫度控制器設計以單片機STC12C5A60S2作為控制中心,采用PID控制算法和自適應控制技術,自動調整預加熱溫度,并可以存儲記憶,確保試驗順利完成,自動化程度高。總體設計方案1.馬弗爐主要技術指標測溫范圍:0~1000℃測溫精度:±3℃控溫精度:±10℃(在250~1000℃范圍內)升溫時間:(室溫~920℃)≤30min電源:AC220V±[email protected]±1Hz功率:3.5kW具有快速灰化和緩慢灰化、揮發分、羅加指數、黏結指數等四個專用加熱程序;另外,溫度控制器有一個自選程序,通過按鍵可選擇所需設定的溫度和保溫時間。2.設計思路馬弗爐溫度控制器設計采用PID算法來控制PWM的占空比,由PWM信號控制IGBT的通斷,使用時鐘專用芯片DS1302進行定時控制,從而實現在不同時段對爐溫的控制。3.系統結構馬弗爐溫度控制器由單片機STC12C5A60S2,熱電偶放大器與數字轉換器MAX6675,時鐘芯片DS1302,I級精度K形熱電偶,鍵盤及顯示系統組成,系統結構如圖1所示。圖1  系統結構框圖PID簡介1.基本概念①基本偏差e(t):表示當前測量值與設定目標之間的偏差。設定目標是被減數,結果可以是正或負,正數表示還沒有達到,負數表示已經超過了設定值,這是面向比例項用的一個變動數據。②累計偏差∑e(t)=e(t)+e(t-1) +…+e(t-n):這是我們每一次測量得到偏差值的總和,是代數和,要考慮正負號運算的。這是面向積分項用的一個變動數據。③基本偏差的相對量e(t)-e(t-1):用本次的基本偏差減去上一次的基本偏差,用于考察當前控制對象的趨勢,作為快速反應的重要依據,這是面向微分項用的一個變動數據。④三個基本參數Kp、Ki、Kd:這是做好一個控制器的關鍵常數,分別稱為比例常數、積分常數和微分常數。不同的控制對象需要選取不同的值,經過現場調試才能獲得較好的效果。2.三個基本參數Kp、Ki、Kd實際控制中的作用①比例環節:即時成比例地反應控制系統的偏差信號e(t),偏差一旦產生,調節器立即產生控制作用以減小偏差。比例作用大,可以加快調節,減少誤差,但過大比例會使系統穩定性下降。②積分環節:主要用于消除靜差,提高系統的無差度。積分作用的強弱取決于積分時間常數Ti。Ti越大,積分作用越弱,反之則越強。③微分環節:能反應偏差信號的變化趨勢(變化速率),并能在偏差信號的值變得過大之前,在系統中引入一個有效的早期修正信號,從而加快系統的動作速度,減小調節時間。3.參數的設置與調整①加溫迅速達到目標值,但溫度過沖很大。比例系數太大,致使在未達到設定溫度前加熱比例過高;微分系數過小,對對象反應不敏感。②加溫經常達不到目標值,小于目標值時間多。比例系數過小,加溫比例不夠;積分系數過小,對靜差補償不足。③基本在控制溫度內,但上下偏差大,經常波動。微分系數小,對及時變化反應慢;積分系數過大,使微分反應被鈍化。④受環境影響較大微分系數小,對及時變化反應慢;設定的基本定時周期過長,不能得到及時修正。下面給出PID控制程序:#ifndef _PID_H__#define _PID_H__#include<intrins.h> #include<math.h> #include<string.h> struct PID { unsigned int SetPoint; // 設定目標 Desired Value unsigned int Proportion; // 比例常數 Proportional Const unsigned int Integral; // 積分常數 Integral Const unsigned int Derivative; // 微分常數 Derivative Const unsigned int LastError; // Error[-1] unsigned int PrevError; // Error[-2] unsigned int SumError; // Sums of Errors } struct PID spid; // PID Control Structure unsigned int rout; // PID Response (Output) unsigned int rin; // PID Feedback (Input) sbit output=P1^4; unsigned char high_time,low_time,count=0;//占空比調節參數 unsigned char set_temper=920; void PIDInit (struct PID *pp) { memset ( pp,0,sizeof(struct PID)); } unsigned int PIDCalc( struct PID *pp, unsigned int NextPoint ) { unsigned int dError,Error; Error = pp->SetPoint - NextPoint; // 偏差 pp->SumError += Error; // 積分 dError = pp->LastError - pp->PrevError; // 當前微分 pp->PrevError = pp->LastError; pp->LastError = Error; return (pp->Proportion * Error//比例 + pp->Integral * pp->SumError //積分項 + pp->Derivative * dError); // 微分項 } 4. 溫度采集電路熱電偶作為一種主要的測溫元件,具有結構簡單、制造容易、使用方便、測溫范圍寬、測溫精度高等特點。但是,熱電偶的應用卻存在著非線性、冷端補償、數字化輸出等幾方面的問題。設計中采用的MAX6675是一個集成了熱電偶放大器、冷端補償、A/D轉換器及SPI串口的熱電偶放大器與數字轉換器,其電路如圖2所示。圖2 溫度采集電路圖MAX6675從SPI串行接口輸出數據的過程如下:MCU使CS變低并提供時鐘信號給SCK,由SO讀取測量結果。CS變低將停止任何轉換過程;CS變高將啟動一個新的轉換過程。一個完整串行接口讀操作需16個時鐘周期,在時鐘的下降沿讀16個輸出位,第1位和第15位是一偽標志位且總為0;第14位到第3位為以MSB到LSB順序排列的轉換溫度值;第2位平時為低,當熱電偶輸入開放時為高;開放熱電偶檢測電路完全由MAX6675實現,為開放熱電偶檢測器操作,T-必須接地,并使接地點盡可能接近GND腳;第1位為低電平以提供MAX6675器件身份碼,第0位為三態。圖3   SO端輸出溫度數據的格式圖4   MAX6675的SPI接口時序下面給出相應的溫度值讀取程序及數據轉換程序:void max6675(){ uchar m; uint temp; temp=0; max_sck=0; max_cs=1;  delay(180ms);    max_cs=0 ; max_sck=1;   _nop_(); max_sck=0; _nop_(); if(max_so==1)     {temp |=0x0001;} for(m=0;m<15;m++) {  temp<<=1;  max_sck=1;  _nop_();  max_sck=0;  if(max_so==1)    {temp |=0x0001;}    }    temp=(temp&0x7fe0)>>5; t[0]=temp/1000+0x30; t[1]=temp%1000/100+0x30; t[2]=temp%100/10+0x30; t[3]=temp%10+0x30; print(1,0,t);  }圖5  定時電路圖圖6  單片機系統電路圖圖7  主程序流程圖5.定時電路使用時鐘專用芯片DS1302進行定時控制,通過外加很少的電路就可以實現高精度的時鐘信號。外圍電路簡單可靠,時間精度高,通過外接鋰電池后可以實現時間信息存儲。6.單片機系統采用STC12C5A60S2組成單片機最小系統,有2路PWM,選用一路作為IGBT的控制信號。另外,STC12C5A60S2內部還有1K的EEPROM,用于設置自選程序,通過按鍵選擇所需設定的溫度和保溫時間。顯示模塊采用128×64液晶顯示。7.軟件設計圖8  子程序流程圖程序流程圖如圖8所示。

    時間:2010-06-01 關鍵詞: 12c stc a60 60s

  • 基于STC12C5A60S2的可控電動扳手控制器中的設計

         據設備管理權威機構統計,有50%以上的設備運行故障是由螺栓問題引起的,因螺栓問題而造成重大事故的數量也非常驚人,因此新的設備安裝和檢修規范都對螺栓緊固力矩要求非常嚴格,尤其是承受載荷及強烈沖擊振動的重型機械設備,需要精確控制聯結螺栓的預緊力。但所需預緊力又很大,再加空間條件限制,不能采用大規格工具,就必須使用扭矩扳手。而作為扭矩扳手關鍵部件的控制器對其性能影響很大。本文提供了一種可以精確顯示擰緊扭矩值、轉角值,并能按預定設定的扭矩值、轉角值擰緊螺栓的電動扳手控制器的解決方案。   1 可控電動扳手控制器硬件設計   可控電動扳手控制器硬件電路框圖如圖1所示。     圖1 可控電動扳手控制器硬件電路框圖   1.1 數字電位器、按鈕及顯示控制電路   單片機選用STC12C5A60S2作為核心控制器。該機是單時鐘/機器周期的單片機,是高速、低功耗、超強抗干擾的新一代8051單片機,指令代碼完全兼容傳統8051,工作電壓范圍為5.5 V~3.3 V;工作頻率范圍為0~35 MHz,相當于普通8051的0~420 MHz;1 280 B片內RAM數據存儲器;四個16位定時器;可編程時鐘輸出功能;全雙工異步串行口(UART),兼容普通8051的串口;先進的指令集結構,兼容普通8051指令集。電平轉換芯片采用LM2575,輸出5 V直流電壓作為供電電源,電路圖如圖2所示。液晶顯示采用LCM 128645ZK模塊,使用五個按鍵分別用來控制步進電機正轉、反轉、扭矩設定、轉角設定及清零,數字電位器用來設定扭矩值和轉角值,電路如圖3所示。     圖2 電平轉換電路   圖3 鍵盤、顯示電路   1.2 步進電機控制電路   步進電機驅動器采用HP公司生產的UDK5214NW-M5相步進驅動器,驅動器控制采用ULN2003芯片,該芯片的三個輸出口分別用來控制步進電機換向控制繼電器、步進電機驅動器工作停止繼電器及報警工作,再通過繼電器控制步進電機驅動器,該驅動器步進脈沖由單片機P1.4口輸出,進而驅動步進電機。步進電機控制電路如圖4所示。   圖4 步進電機控制電路圖   1.3 扭矩檢測電路   扭矩傳感器選用BS914型扭矩扳手專用信號耦合器。該耦合器可直接輸出1 V~5 V電壓信號,該扭矩反饋信號經P1.5口輸入單片機,經單片機處理轉換成數字信號,再與扭矩設置值相比較,進而控制步進電機是否轉動,連接電路圖如圖5所示。     圖5 扭矩檢測電路   2 可控電動扳手控制器軟件設計   可控電動扳手控制器軟件由控制器初始化程序、鍵盤掃描及處理程序、步進電機控制程序、扭矩檢測程序等組成。控制器通過鍵盤掃描及處理程序檢測扭矩、轉角值輸入與否,并判斷電機轉動方向,如正轉,則通過步進電機正轉控制程序,控制電機正轉,并由扭矩檢測程序進行輸出扭矩的檢測,直到扭矩和轉角達到預定值為止;如反轉,則由步進電機反轉控制程序,控制電機反轉,直到轉角達到為止。扭矩檢測利用STC12C5A60S2單片機P1.5ADC口,使用時設置該端口為開漏輸入,作為ADC口使用。該程序主要完成ADC口的轉換開啟、數據讀取、軟件濾波及輸出顯示等功能。   本文設計的可控扳手控制器采用STC12C5A60S2單片機作為中央處理芯片,利用較少的外圍設備,使其結構簡單。對制作的樣機進行測試,測試結果顯示該樣機性能穩定、測量準確、使用方便、技術參數都達到了設計要求,具有一定的實用價值。    

    時間:2011-02-22 關鍵詞: 12c stc a60 60s

  • 基于STC12C5A60S2的U盤音頻播放器設計

    摘要 設計了一個基于STC12C5A60S2的U盤音頻播放器,介紹了播放器的設計思路和原理框圖,分別就播放器的3個模塊給出具體的實現電路,并提供了軟件程序流程圖。運行結果表明,播放器實現了預期功能,且具有較高的性價比和可拓性。 關鍵詞 U盤;MP3播放器;STC12C5A60S2;VS1003     U盤即閃存盤,是一種用閃存進行數據存儲的介質,通常使用USB插頭。U盤體積極小、重量輕、可熱插拔也可以重復寫入。自其面世后,迅速普及并取代傳統的軟盤,成為主要的便攜存儲模式。隨著U盤體積的不斷減小、存儲容量卻不斷加大,使得U盤的使用范圍也不斷拓展。然而U盤所儲存的數據,現今仍大多通過計算機提取并進行處理,這也局限了U盤的發展范圍。     筆者認為,針對某一特定功能,剝離相應數據對計算機的依賴性,一方面可充分利用U盤數據,另一方面也發揮出USB協議的通用性,使U盤實現所用即所得的便攜特性。基于此,設計了U盤MP3播放器電路,主要完成U盤存儲的音頻文件的數據提取及功能運行任務。該播放器等同于個人計算機的音頻處理模塊,不僅可識別、提取U盤所存儲的MP3、WMA或MIDI格式的文件,并可自行完成音頻解碼等數據處理工作,最后送入揚聲器或耳機進行播放。 1 播放器組成原理框圖     播放器組成原理如圖1所示,共由3個主要模塊組成:單片機處理模塊,由STC12C4A60S52單片機及其外圍電路組成;U盤讀寫模塊,由CH375及其外圍電路組成;為音頻解碼模塊,由VS1003芯片及其外圍電路組成。     播放器的工作過程是:MCU通過CH375讀取來自USB存儲設備的數據,并依據功能鍵的控制指令,將USB存儲設備的相關數據送入音頻解碼模塊,在VS1003解碼后,送入揚聲器或耳機。設置6個人機交互功能按鍵,分別實現播放、暫停、上一曲、下一曲、增大音量、減小音量等基本操作功能。 2 硬件電路設計     如圖1所示,主要完成U盤讀寫、單片機處理及音頻解碼3個模塊的電路設計。 2.1 U盤讀寫模塊     U盤讀寫模塊由CH375及其外圍電路組成,其構成如圖2所示。     CH375是USB總線通用接口芯片,支持USB主機及從設備方式。在本地端,CH375具有8位數據總線和讀、寫、片選控制線以及中斷輸出,可以方便地掛接到單片機/DSP/MCU/MPU等控制器的系統總線上。在USB主機方式下,CH375還提供了串行通訊方式,通過串行輸入、輸出和中斷輸出與單片機/DSP/MCU/MPU等相連接。     CH375的USB主機方式支持常用的USB全速設備,外部單片機可通過CH375按照相應的USB協議與USB設備通訊。CH375還內置了處理Mass-Storage海量存儲設備的專用通訊協議的固件,外部單片機可以直接以扇區為基本單位讀寫常用的USB存儲設備。     設計中,CH375采用主機方式,圖中J1為USB插座,可連接U盤等存儲設備,D1為指示LED,當檢測到USB設備連接時燈亮。當TXD引腳連接到地時,CH375工作在并口方式,此時圖中JP1接口D0~D7為雙向數據總線,連接單片機。     單片機連接圖中JP2接口,通過程序控制CH375,其功能及特性如表1所示。     單片機通過寫命令來和數據來控制CH375,并通過CH375獲得U盤數據。CH375內置相關的固件程序,自動處理了USB等協議。單片機可以通過CH375直接獲取U盤扇區的數據,因此只需處理FAT文件系統層就可以實現對U盤文件的操作。 2.2 MCU模塊     MCU模塊,由STC12C4A60S52單片機及其外圍電路組成。STC12C5A60S2是宏晶科技生產的單時鐘/機器周期的單片機,指令代碼完全兼容傳統8051,但速度快8~12倍,提供Flash程序存儲器60 kByte,1 kByte的EEPROM,片上集成1 280 Byte RAM。工作電壓5.5~3.5 V,內部集成MAx810專用復位電路,4個定時器,2個串口,2路PWM,8路高速10位A/D轉換,ISP/IAP,內置看門狗電路,外部掉電檢測電路等。     圖3為播放器MCU模塊的硬件電路原理圖,其中,JP4為電源輸入接口,D1為電源指示燈,排阻Rp1為P0口的上拉電阻。JP2和JP3接到U盤讀寫模塊對應的接口上。由于單片機在5 V電源下工作,而VS1003在3.3 V電源下,所以工作P1口應該接限流電阻到JP1再到音頻解碼模塊對應的接口上。電路設置5個功能按鍵,“UP”為增大音量,“DOWN”為減小音量,“LEFT”為選擇上一曲,“DOWN”為選擇下一曲,而“PLAY”為播放/暫停鍵。 2.3 音頻解碼模塊     音頻解碼模塊,由VS1003芯片及其外圍電路組成。VS1003是一個單片MP3/WMA/MIDI音頻解碼器和ADPCM編碼器。它包含一個高性能低功耗的DSP處理器核VS_DSP、工作數據存儲器、為用戶應用提供5 kB的指令RAM和0.5 kB的數據RAM、串行控制和數據接口、4個常規用途的I/O口、1個UART、1個高品質可變采樣率的ADC和立體聲DAC、1個耳機放大器和地線緩沖器。     VS1003通過一個串行接口接收輸入的bit流,可作為—個系統的從機。輸入的bit流被解碼,然后通過數字音量控制器到達1個18位過采樣多位ε-△DAC。VS1003通過串行總線控制解碼器,除了基本解碼功能,在用戶RAM中還可以做其他特殊應用,例如DSP音效處理。     圖4為播放器的VS1003外圍硬件電路原理圖,其中,AVDD為模擬正電源3.3 V,CVDD為數字正電源2.5 V,IOVDD為I/O正電源3.3 V,模擬地與數字地用0電阻隔離。J1、J2均為3.5音頻插座,J1為音頻輸出,J2為音頻輸入。     單片機通過對VS1003寄存器的寫入來設置VS1003芯片,對VS1003數據緩沖區寫入數據,使其解碼。 3 軟件程序流程圖     單片機程序主要解決讀取CH375數據,和寫入VS1003寄存器用于播放音樂兩個問題。其中,5種功能分別與圖3的5個功能按鍵一一對應。軟件程序流程圖如圖5所示。 4 結束語     如圖所示,旨在將音頻處理功能從計算機剝離,拓展U盤使用范圍,設計了針對U盤音頻文件數據處理的播放器電路,并用C語言編寫了相關程序。該電路主要由3個模塊構成,其中主控器選用增強型51單片機STC12C5A60S2,語音解碼芯片采用芬蘭VLSI公司的VS1003,而USB設備接口芯片選用南京沁恒公司的CH375,采用USB主機方式,外部單片機無需處理USB協議,就可直接以扇區為基本單位讀寫常用USB存儲設備。     實際運行結果證明,該播放器完全符合設計預期,U盤即插即用,不僅可播放U盤中指定目錄中的MP3文件、WMA文件、MIDI文件,還可以通過按鍵控制,實現各種功能。整個系統電路的性價比較高,具有較強的可拓性。

    時間:2011-12-23 關鍵詞: 12c stc a60 60s

  • 基于STC12C5A60S2的帆板控制系統設計

    摘要:以STC12C5A60S2單片機為控制核心,利用單片機控制風扇完成對帆板轉角的控制。該系統主要模塊有單片機控制模塊,人機交互模塊、角度檢測模塊、風扇控制調速模塊、電源模塊、聲光報警模塊。由角度傳感器測得帆板角度并反饋給單片機風扇轉速控制模塊構成風速閉環控制系統,利用單片機產生的PWM控制風扇電機驅動模塊,從而實現角度的精準控制。 關鍵詞:帆板控制系統;STC12C5A60S2;角度傳感器;PWM     單片機作為微控制器的一種,廣泛應用于日常生活。該課程由于其綜合性和實踐性較強,涉及知識較多,對培養和鍛煉學生運用單片機技術的硬件、軟件進行開發設計的能力,學生分析問題,解決問題的能力,高職學生職業技能,實踐創新能力有重要的作用,為從事自動控制及應用電子產品的檢測、設計奠定基礎。本文來源于2011年全國電子設計競賽F題,設計實現帆板控制系統。系統要求通過鍵盤預置角度,利用風扇風力大小控制帆板轉角,并實時顯示。本題涉及了角度檢測、電機驅動、PWM、閉環控制、AD轉換等單片機應用技術,是帆板自主航行系統中重要的組成部分。 1 系統方案描述     根據要求,本系統由單片機最小系統、人機交互模塊、風扇控制模塊、角度檢測模塊、聲光報警模塊、系統電源6大模塊構成,具體框圖如圖1所示。 1.1 微處理器模塊     采用STC公司的STC12C5A60S2單片機作為微處理器。     該單片機為增強型51單片機,具有高速、低功耗及超強抗干擾等特點,內部集成MAX810專用復位電路,2路PWM,8路高速10位A/D轉換器(速度達25萬次/秒),非常符合系統要求。 1.2 角度檢測模塊     采用MMA7361加速度角度傳感器測量角度。加速度角度傳感器是通過測量由于重力引起的加速度計算出器件相對于某一平面的傾斜角度。角度傳感器反應靈敏、輸出數據準確且價格適中。利用加速度傳感器進行角度測量分為3種:單軸傾角測量、雙軸傾角測量和三軸傾角測量。本次設計中,由于只要測量帆板與豎直方向夾角,故選用單軸傾角測量。單軸傾角測量的原理如圖2所示,單個軸(即x軸)通過重力旋轉。     由于本方法近僅使用單個軸且要求重力矢量,僅當器件具有特定方向且x軸始終具有處于中心面時,算出的傾角才能準確。根據基本三角原理,x軸上的重力矢量投影會產生等于加速度計x軸與水平線夾角正弦值的輸出加速度。水平線通常為與重力矢量垂直的平面。在重力為理想值1 g時,輸出加速度為:     AX.OUT[g]=lgxsin(φ)     在實際使用中,查閱所用傳感器MMA7361技術手冊及利用加速度傳感器測量角度的原理,可得輸出電壓與測量角度的關系為:         其中,VOUT表示加速度傳感器的輸出電壓,VOFFSET表示重力加速度為0 g加速度傳感器的偏移量,表示加速度傳感器的靈敏度,1 g表示地球上的重力加速度,θ表示偏轉角度。     所以,可以得到角度值為:     角度檢測電路圖如圖3所示。經角度檢測模塊輸出角度模擬量,經單片機AD轉換并經上式計算后就可以得到所測角度值。 1.3 風扇控制模塊     PWM(脈寬調制)是一種對模擬信號電平進行數字編碼的方法,利用微處理器的數字輸出對模擬電路進行控制的一非常有效的技術。相比電壓調速的方法,PWM調速具有精度高,易于控制等優點,同時選用的微控制器集成了PCA模塊,可直接輸出PWM,方便使用。     本系統利用直流電動機驅動風扇轉動,電機驅動芯片MC33886是單片集成的H橋元件,適用于驅動小功率直流電機。本電路選擇了MC33886的全橋工作方式,采用單片工作時,驅動電路的溫度會非常高,有時溫度會超過MC33886自我保護的最高溫度導致驅動停止工作。為了解決這一問題,將兩片完全相同的MC33886并聯,發現溫度得到了有效控制,電路的驅動能力也得到了進一步的提高。電路如圖4所示。     為了精確控制風扇轉速,達到控制帆板角度的目的,本系統由單片機通過角度檢測模塊得到帆板的實際轉角,與預置轉角比較,經PI控制器,輸出可調的PWM信號,再驅動直流電機旋轉,從而形成風速閉環控制系統,即負反饋控制。電機調速模塊框圖如圖5所示。 2 系統軟件設計     系統軟件主要由主程序及各子程序完成。在主程序模塊中,需要完成對各參量和接口的初始化、PCA模塊初始化、液晶屏初始化以及角度采集、鍵盤掃描、主循環等工作。主程序流程圖如圖6(a)所示。在風扇速度控制中,本系統采用增量式PI算法,具體流程圖如圖6(b)所示。 3 結論     文中設計的帆板控制系統能夠較好地完成帆板角度測量及控制任務。其中STC12C5A60S2單片機非常適合高職學生單片機入門學習,同時,該系統角度閉環PID控制系統能快速、準確的實現角度的調節,整個系統運行穩定,人機交互界面設計友好,且所用器件少,電路簡單,性價比高。

    時間:2012-06-05 關鍵詞: 12c stc a60 60s

  • 基于STC12C2052的人民幣識別控制系統的設計

    摘要:設計研究人民幣紙幣識別控制系統中的主要模塊,如圖像采集、控制模塊。在硬件部分,選用STC12C2052作為控制系統的芯片,選用MVC1000M作為圖像的采集器件;在軟件部分,在紅外和紫外光源的作用下通過高清攝像頭拾取圖影信息,通過與數據庫中的真版人民幣特征的數據比對來判斷真偽,選取預處理之后的紙幣圖像的尺寸特征用模糊邏輯推理方法識別圖像的面值,提取矩作為特征。通過實驗證明該控制系統的有效性和可行性。 關鍵詞:人民幣識別;控制系統;圖像采集;STC單片機     人民幣反假宣傳站的設計是為了普及反假幣的知識,通過播放人民幣詳解的視頻,演示人民幣的防偽特征,并通過人民幣識別系統切實讓人們對假幣的知識有了深刻的認識。將反假幣志愿者協會的工作人員從繁重的重復性的宣傳紙幣識別的工作中解放出來,提高反假幣宣傳的工作效率。這里開發研制的紙幣清分機具備兩種功能:檢偽和播放視頻宣傳片。檢偽通過模擬和數字電路以及加上一些簡單的控制來實現,播放視頻宣傳片這項功能包括各種紙幣的面值和紙幣防偽特征的詳解,以達到推廣人民幣識別的目的。 1 機器識別的原理     當前大量使用的是第5套人民幣,該套人民幣專門針對第4套人民幣防偽弱點,使用了10大防偽的高新技術,分別為:a.紙張;b.水印;c.對印防偽;d.熒光油墨;e.安全線防偽;f.凹版印刷;g.磁性油墨;h.彩虹印刷;i.隱形數字及橫豎雙號碼;j.光變油墨面額數字。     在10大防偽特征中可以用于機器識別的特征包括:水印的紅外透射率;紙張的熒光效應;磁性油墨的磁信號;紙幣的寬度;安全線磁編碼。在這個系統里用到的是水印的紅外透射率和紙張的熒光效應。 1.1 水印的紅外透射率識別     一束光強為I0的入射光,透過某介質后的光強為I,設α為介質吸收系數;η為介質反射率;d為介質厚度。則有:     I=I0(1-η)exp(-ad)       (1)     式(1)說明紙幣的透射光強可反映紙幣的紙張、票面顏色及厚度等特性。通過實驗發現真假紙幣在水印部分的光投射率有明顯不同。 1.2 紙張的熒光效應識別     熒光檢測的工作原理是針對人民幣的紙質進行檢測。人民幣采用專用紙張制造(含85%以上的優質棉花),假鈔通常采用經漂白處理后的普通紙進行制造,經漂白處理后的紙張在紫外線(波長為365 nm的藍光)的照射下會出現熒光反應(在紫外線的激發下衍射出波長為420~460 nm的藍光),人民幣則沒有熒光反應。所以,用紫外光源對運動鈔票進行照射并同時用硅光電池檢測鈔票的熒光反映,可判別鈔票真假。小結:該系統通過這兩種特點,在輔助光源的作用下通過高清攝像頭自動拾取被測貨幣影像,再通過相應的圖像處理獲取防偽特征,通過與數據庫中的真版人民幣的特征的比對,達到識別人民幣的目的。 2 硬件電路設計 2.1 基本功能     上位機通過串口使用MAX232芯片實現與下位機的通信,通過一個虛擬串口實現串轉并的16通道的輸出控制,再通過圖像采集模塊進行圖像采集,使用圖像采集卡通過USB將采集的圖影信息送到圖像處理單元。 2.2 控制系統框圖     控制系統框圖由控制模塊、圖像采集模塊、RS232串口通信模塊、TP168595模塊、EASYCAP模塊等組成。 2.3 系統控制模塊     控制模塊采用STC12C2052,這款3.5~5 V工作電壓、PDIP-20封裝的小型單片機功耗低、1個時鐘/機器周期處理數據速度快、穩定性強、強抗靜電、強抗干擾、價格低、自動加密且無法破解、且通過串口即可下載程序、方便升級等優點適合用于精準的控制指令系統。     單片機通過MAX232芯片與上位機進行通信,采集得到的17路數據,進行接收、解碼處理,再通過68595的級聯實現16路的串轉并的輸出控制。 2.4 四路圖像采集的邏輯電路模塊     三路通道通過控制繼電器搭建的邏輯電路實現對四路圖像切換采集的控制,可以節約一個端口,備作其它功能的擴展。采集器件使用的是Microview公司的MVC1000M,驅動是由VC編寫的,每個攝像頭都有一個對應的ID號,易于上位機的程序編寫。EASYCAP是一款帶USB接口的視頻采集卡,將采集到的信息通過USB傳送給圖像處理系統,通過圖像處理達到識別人民幣的目的。 2.5 TPI68595串轉并模塊     TPI68595通過級聯實現了16路輸出通道,非常節約資源,且為OC輸出,每段100mA,輸出速度快,有信號端、移位脈沖端、信號清除端、信號存儲端,適用于精準的控制系統。 2.6 輔助光源的設計     (1)頂燈;(2)側燈;(3)底燈。 3 軟件設計 3.1 其通信協議     (1)波特率:4800B/S;(2)碼頭:NJFU;(3)停止位:#;(4)通信有中斷和查詢兩種方式,這個系統里采用查詢的方式進行通信;(5)聯絡方式為上位機主動聯絡下位機;(6)數據楨格式:NJFU,D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 D16 D17#。 3.2 數據的解析     其中D13,D14,D15通過繼電器組成的邏輯關系控制4路攝像頭:     下位機內存單元的分配: 3.3 上位機和下位機的通信(見圖3)     上位機的通信程序采用C語言編寫,它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序,可移植性好。     下位機的通信程序采用匯編語言編寫,它的長處在于編寫高效且可以直接對硬件精準控制。下位機的輸出子程序采用按權相加的算法。 4 結束語     經實驗調試證明,該系統具有可靠的穩定性,且占用硬件接口少(只占用下位機一個串行口),在人民幣反假宣傳工作站的設計中得到了很好的應用。

    時間:2012-07-16 關鍵詞: 12c stc 2052 c2052

  • 基于STC15F104E的開窗機控制器的設計

    摘要 針對一般家庭對自動開窗機的實際需要,利用單片機STC15F104E設計了一種開窗機控制器。文中闡述了系統組成及各模塊的功能,并給出了具體的電路圖,討論了程序的設計方法。實際測試表明,電機開/關窗動作、堵轉檢測、行程檢測正常,運行可靠。 關鍵詞 開窗機;STC15F104E;TA849H;TOP225     自動化窗體作為樓宇自動化的一個重要組成部分,逐漸受到重視,越來越多的自動窗體被應用到各種建筑中。大型樓宇中若干個開窗器構成一個智能網絡,驅動百葉、窗戶、消防門等設備,承擔起遮陽、開窗、通風、排煙、消防隔離等任務。而對于一般家庭用戶來講,窗戶數量有限,通常也無組網的必要,所需的是一種具有一定智能化、工作可靠且成本低廉的開窗機。針對此需求,利用單片機STC15F104E設計了一種智能開窗機控制器。 1 硬件電路設計     設計的智能開窗機控制器結構框圖如圖1所示。系統由開關電源模塊、電機驅動(TA8429H)模塊、控制模塊(STC15F104E)及開關狀態檢測、堵轉檢測、位置檢測等構成。 1.1 開關電源模塊     該模塊輸出24 V/2 A和5 V/0.5 A兩組直流電源,如圖2所示。該電路是基于TOP225的開關電源的典型應用電路,電路中S1是電源開關及開/關窗控制開關,打到“3”處定義為開窗操作,打到“1”處定義為關窗操作,打到中間位置電源斷開,觸點“3”與開關狀態檢測電路相連,以實現開關S1狀態檢測。 1.2 開關狀態檢測     開關狀態檢測電路如圖3所示。只有開關S1打到“3”,光耦TLP521才不斷輸出近似于方波的脈沖信號給單片機STC15F104E的P34腳,利用程序實現開關S1狀態的檢測。 1.3 控制及電機驅動模塊     控制及電機驅動模塊主要由單片機STC15F104E及TA8429H構成,如圖4所示。圖中STC15F104E是宏晶公司生產的單片機,指令系統與MCS-51兼容,價格低廉、體積小,僅有8個引腳,其中有6個I/O腳,滿足系統控制要求。TA8429H是東芝公司推出的一款全橋驅動電路,適合直流有刷電機的控制,可以實現電機的正轉、反轉、制動和停止控制,其工作電壓為+27 V,平均工作電流可達3 A,完全可以滿足24 V/40 W直流電機的驅動要求。設計中電機控制信號經單片機(MCU)的P31、P32輸出,經光耦PC817隔離后送到TA8428H的輸入端,實現電機運行狀態的控制;TA8429H的“GND”與+24 V電源的“地”之間串接一個1 Ω/3 W的電阻實現電機電流檢測,在關窗到位后,電機將堵轉,電機電流增大,因而電阻兩端電壓因而升高。調節電位器R18,使得Q1導通,光耦U9輸出低電平,從而實現電機堵轉檢測。通過調節R18可以設定電機堵轉電流,從而實現開窗機負荷輕重的設定。當開窗到位時,行程開關S2閉合,MCU的P30引腳變為低電平,MCU將控制電機停轉。電路中LED0為電機堵轉指示,以方便堵轉電流設定,P2為單片機的在線編程接口。 2 軟件設計     系統軟件的主要任務是檢測開關S1的狀態、檢測堵轉及行程開關、控制電機的運行。MCU的P34引腳上脈沖情況反映了開關S1狀態,檢測方法是:定時50 ms,在50 ms內如果P34為高電平,變量就加1,最大加至200,50 ms后判斷該變量的值,如果大于某個值,就認為S1打到觸點“3”。實測證明這種檢測方法簡單、可靠。P30、P35兩腳上電平的情況分別反映了開窗到位及電機堵轉情況。系統軟件流程圖如圖5所示。 3 實驗測試     將控制器應用于采用SL-123F鏈輪式直流減速電機的開窗機中,實驗在測試架上進行,懸吊45 kg負載,電機電流為1.1 A,開窗速度約為10mm/s。實際測試表明,電機開/關窗動作、堵轉檢測、行程檢測正常、運行可靠。 4 結束語     智能開窗機作為樓宇自動化的配套設備將得到不斷的發展和完善,為人們提供安全、舒適、便利的生活環境。文中給出的基于單片機的智能開窗機控制器,成本低廉、工作可靠,滿足一般家庭的門窗控制需要。

    時間:2013-05-15 關鍵詞: 104 stc 104e f104

  • 詳說七大主流單片機的優缺點

    詳說七大主流單片機的優缺點

     單片機現在可謂是鋪天蓋地,種類繁多,讓開發者們應接不暇,發展也是相當的迅速,從上世紀80年代,由當時的4位8位發展到現在的各種高速單片機…… 各個廠商們也在速度、內存、功能上此起彼伏,參差不齊~~同時涌現出一大批擁有代表性單片機的廠商:Atmel、TI、ST、MicroChip、ARM…國內的宏晶STC單片機也是可圈可點… 下面為大家帶來51、MSP430、TMS、STM32、PIC、AVR、STC單片機之間的優缺點比較及功能體現…… 51單片機 應用最廣泛的8位單片機當然也是初學者們最容易上手學習的單片機,最早由Intel推出,由于其典型的結構和完善的總線專用寄存器的集中管理,眾多的邏輯位操作功能及面向控制的豐富的指令系統,堪稱為一代“經典”,為以后的其它單片機的發展奠定了基礎。 51單片機之所以成為經典,成為易上手的單片機主要有以下特點: 特性: 1. 從內部的硬件到軟件有一套完整的按位操作系統,稱作位處理器,處理對象不是字或字節而是位。不但能對片內某些特殊功能寄存器的某位進行處理,如傳送、置位、清零、測試等,還能進行位的邏輯運算,其功能十分完備,使用起來得心應手。 【本文轉載自網絡,版權歸原作者所有,如有侵權請聯系刪除】 2. 同時在片內RAM區間還特別開辟了一個雙重功能的地址區間,使用極為靈活,這一功能無疑給使用者提供了極大的方便, 3. 乘法和除法指令,這給編程也帶來了便利。很多的八位單片機都不具備乘法功能,作乘法時還得編上一段子程序調用,十分不便。 缺點:(雖然是經典但是缺點還是很明顯的) 1. AD、EEPROM等功能需要靠擴展,增加了硬件和軟件負擔 2. 雖然I/O腳使用簡單,但高電平時無輸出能力,這也是51系列單片機的最大軟肋 3. 運行速度過慢,特別是雙數據指針,如能改進能給編程帶來很大的便利 4. 51保護能力很差,很容易燒壞芯片 應用范圍: 目前在教學場合和對性能要求不高的場合大量被采用 使用最多的器件:8051、80C51 MSP430單片機 MSP430系列單片機是德州儀器1996年開始推向市場的一種16位超低功耗的混合信號處理器,給人們留下的最大的亮點是低功耗而且速度快,匯編語言用起來很靈活,尋址方式很多,指令很少,容易上手。主要是由于其針對實際應用需求,把許多模擬電路、數字電路和微處理器集成在一個芯片上,以提供“單片”解決方案。其迅速發展和應用范圍的不斷擴大,主要取決于以下的特點… 特性: 1. 強大的處理能力,采用了精簡指令集(RISC)結構,具有豐富的尋址方式( 7 種源操作數尋址、 4 種目的操作數尋址)、簡潔的 27 條內核指令以及大量的模擬指令;大量的寄存器以及片內數據存儲器都可參加多種運算;還有高效的查表處理指令;有較高的處理速度,在 8MHz 晶體驅動下指令周期為 125 ns 。這些特點保證了可編制出高效率的源程序 2. 在運算速度方面,能在 8MHz 晶體的驅動下,實現 125ns 的指令周期。 16 位的數據寬度、 125ns 的指令周期以及多功能的硬件乘法器(能實現乘加)相配合,能實現數字信號處理的某些算法(如 FFT 等) 3. 超低功耗方面,MSP430 單片機之所以有超低的功耗,是因為其在降低芯片的電源電壓及靈活而可控的運行時鐘方面都有其獨到之處。電源電壓采用的是 1.8~3.6V 電壓。因而可使其在 1MHz 的時鐘條件下運行時, 芯片的電流會在 200~400uA 左右,時鐘關斷模式的最低功耗只有 0.1uA 缺點: 1. 個人感覺不容易上手,不適合初學者入門,資料也比較少,只能跑官網去找 2. 占的指令空間較大,因為是16位單片機,程序以字為單位,有的指令竟然占6 個字節。雖然程序表面上簡潔, 但與pic單片機比較空間占用很大 應用范圍: 在低功耗及超低功耗的工業場合應用的比較多 使用最多的器件:MSP430F系列、MSP430G2系列、MSP430L09系列 TMS單片機 這里也提一下TMS系列單片機,雖不算主流。由TI推出的8位CMOS單片機,具有多種存儲模式、多種外圍接口模式,適用于復雜的實時控制場合。雖然沒STM32那么優秀,也沒MSP430那么張揚,但是TMS370C系列單片機提供了通過整合先進的外圍功能模塊及各種芯片的內存配置,具有高性價比的實時系統控制。同時采用高性能硅柵CMOS EPROM和EEPROM技術實現。低工作功耗CMOS技術,寬工作溫度范圍,噪聲抑制,再加上高性能和豐富的片上外設功能,使TMS370C系列單片機在汽車電子,工業電機控制,電腦,通信和消費類具有一定的應用。 STM32單片機 由ST廠商推出的STM32系列單片機,行業的朋友都知道,這是一款性價比超高的系列單片機,應該沒有之一,功能及其強大。其基于專為要求高性能、低成本、低功耗的嵌入式應用專門設計的ARM Cortex-M內核,同時具有一流的外設:1μs的雙12位ADC,4兆位/秒的UART,18兆位/秒的SPI等等,在功耗和集成度方面也有不俗的表現,當然和MSP430的功耗比起來是稍微遜色的一些,但這并不影響工程師們對它的熱捧程度,由于其簡單的結構和易用的工具再配合其強大的功能在行業中赫赫有名…其強大的功能主要表現在: 特性: 1.內核:ARM32位Cortex-M3CPU,最高工作頻率72MHz,1.25DMIPS/MHz,單周期乘法和硬件除法 2.存儲器:片上集成32-512KB的Flash存儲器。6-64KB的SRAM存儲器 3.時鐘、復位和電源管理:2.0-3.6V的電源供電和I/O接口的驅動電壓。POR、PDR和可編程的電壓探測器(PVD)。4-16MHz的晶振。內嵌出廠前調校的8MHz RC振蕩電路。內部40 kHz的RC振蕩電路。用于CPU時鐘的PLL。帶校準用于RTC的32kHz的晶振 4、調試模式:串行調試(SWD)和JTAG接口。最多高達112個的快速I/O端口、最多多達11個定時器、最多多達13個通信接口 使用最多的器件:STM32F103系列、STM32 L1系列、STM32W系列。 PIC單片機 PIC單片機系列是美國微芯公司(Microship)的產品,共分三個級別,即基本級、中級、高級,是當前市場份額增長最快的單片機之一,CPU采用RISC結構,分別有33、35、58條指令,屬精簡指令集,同時采用Harvard雙總線結構,運行速度快,它能使程序存儲器的訪問和數據存儲器的訪問并行處理,這種指令流水線結構,在一個周期內完成兩部分工作,一是執行指令,二是從程序存儲器取出下一條指令,這樣總的看來每條指令只需一個周期,這也是高效率運行的原因之一,此外PIC單片機之所以成為一時非常熱的單片機不外乎以下特點: 特點: 1. 具有低工作電壓、低功耗、驅動能力強等特點。PIC系列單片機的I/O口是雙向的,其輸出電路為CMOS互補推挽輸出電路。I/O腳增加了用于設置輸入或輸出狀態的方向寄存器,從而解決了51系列I/O腳為高電平時同為輸入和輸出的狀態。 2. 當置位1時為輸入狀態,且不管該腳呈高電平或低電平,對外均呈高阻狀態;置位0時為輸出狀態,不管該腳為何種電平,均呈低阻狀態,有相當的驅動能力,低電平吸入電流達25mA,高電平輸出電流可達20mA。相對于51系列而言,這是一個很大的優點 3. 它可以直接驅動數碼管顯示且外電路簡單。它的A/D為10位,能滿足精度要求。具有在線調試及編程(ISP)功能。 不足之處: 其專用寄存器(SFR)并不像51系列那樣都集中在一個固定的地址區間內(80~FFH),而是分散在四個地址區間內。只有5個專用寄存器PCL、STATUS、FSR、PCLATH、INTCON在4個存儲體內同時出現,但是在編程過程中,少不了要與專用寄存器打交道,得反復地選擇對應的存儲體,也即對狀態寄存器STATUS的第6位(RP1)和第5位(RP0)置位或清零。數據的傳送和邏輯運算基本上都得通過工作寄存器W(相當于51系列的累加器A)來進行,而51系列的還可以通過寄存器相互之間直接傳送,因而PIC單片機的瓶頸現象比51系列還要嚴重,這在編程中的朋友應該深有體會 使用最多的器件:PIC16F873、PIC16F877 AVR單片機 AVR單片機是Atmel公司推出的較為新穎的單片機,其顯著的特點為高性能、高速度、低功耗。它取消機器周期,以時鐘周期為指令周期,實行流水作業。AVR單片機指令以字為單位,且大部分指令都為單周期指令。而單周期既可執行本指令功能,同時完成下一條指令的讀取。通常時鐘頻率用4~8MHz,故最短指令執行時間為250~125ns。AVR單片機能成為最近仍是比較火熱的單片機,主要的特點: 特點: 1. AVR系列沒有類似累加器A的結構,它主要是通過R16~R31寄存器來實現A的功能。在AVR中,沒有像51系列的數據指針DPTR,而是由X(由R26、R27組成)、Y(由R28、R29組成)、Z(由R30、R31組成)三個16位的寄存器來完成數據指針的功能(相當于有三組DPTR),而且還能作后增量或先減量等的運行,而在51系列中,所有的邏輯運算都必須在A中進行;而AVR卻可以在任兩個寄存器之間進行,省去了在A中的來回折騰,這些都比51系列出色些 2. AVR的專用寄存器集中在00~3F地址區間,無需像PIC那樣得先進行選存儲體的過程,使用起來比PIC方便。AVR的片內RAM的地址區間為0~00DF(AT90S2313) 和0060~025F(AT90S8515、AT90S8535),它們占用的是數據空間的地址,這些片內RAM僅僅是用來存儲數據的,通常不具備通用寄存器的功能。當程序復雜時,通用寄存器R0~R31就顯得不夠用;而51系列的通用寄存器多達128個(為AVR的4倍),編程時就不會有這種感覺。 3. AVR的I/O腳類似PIC,它也有用來控制輸入或輸出的方向寄存器,在輸出狀態下,高電平輸出的電流在10mA左右,低電平吸入電流20mA。這點雖不如PIC,但比51系列還是要優秀的… 缺點: 1. 是沒有位操作,都是以字節形式來控制和判斷相關寄存器位的 2. C語言與51的C語言在寫法上存在很大的差異,這讓從開始學習51單片機的朋友很不習慣 3. 通用寄存器一共32個(R0~R31),前16個寄存器(R0~R15)都不能直接與立即數打交道,因而通用性有所下降。而在51系列中,它所有的通用寄存器(地址00~7FH)均可以直接與立即數打交道,顯然要優于前者。 使用最多的器件:ATUC64L3U、ATxmega64A1U、AT90S8515 STC單片機 說到STC單片機有人會說到,STC也能算主流,估計要被噴了~~我們基于它是國內還算是比較不錯的單片機來說。STC單片機是宏晶生產的單時鐘/機器周期的單片機,說白了STC單片機是51與AVR的結合體,有人說AVR是51的替代單片機,但是AVR單片機在位控制和C語言寫法上存在很大的差異。而STC單片機洽洽結合了51和AVR的優點,雖然功能不及AVR那么強大,但是在AVR能找到的功能,在STC上基本都有,同時STC單片機是51內核,這給以51單片機為基礎的工程師們提供了極大的方便,省去了學習AVR的時間,同時也不失AVR的各種功能… STC單片機是高速、低功耗、超強抗干擾的新一代8051單片機51單片機,指令代碼完全兼容傳統8051,但速度快8~12倍,內部集成MAX810專用復位電路。4路PWM 8路高速10位A、D轉換,針對電機電機 的供應商控制,強干擾場合,成為繼51單片機后一個全新系列單片機… 特性: 1. 下載燒錄程序用串口方便好用,容易上手,擁有大量的學習資料及視頻,最著名的要屬于杜老師的那個視頻了,好多對單片機有興趣的朋友都是通過這個視頻入門的,同時具有寬電壓:5.5~3.8V,2.4~3.8V, 低功耗設計:空閑模式,掉電模式(可由外部中斷喚醒) 2. STC單片機具有在應用編程,調試起來比較方便;帶有10位AD、內部EEPROM、 可在1T/機器周期下工作,速度是傳統51單片機的8~12倍,價格也較便宜 3. 4 通道捕獲/比較單元,STC12C2052AD系列為2通道,也可用來再實現4個定時器或4個外部中斷,2個硬件16位定時器,兼容普通8051的定時器。4路PCA還可再實現4個定時器,具有硬件看門狗、高速SPI通信端口、全雙工異步串行口,兼容普通8051的串口,同時還具有先進的指令集結構,兼容普通8051指令集 PS:STC單片機功能雖不及AVR、STM32強大,價格也不及51和ST32便宜,但是這些并并不重要,重要的是這屬于國產單片機比較出色的單片機,但愿國產單片機能一路長虹… 使用最多的器件:STC12C2052AD Freescale單片機 主要針對S08,S12這類單片機,當然Freescale單片機遠非于此。Freescale系列單片機采用哈佛結構和流水線指令結構,在許多領域內都表現出低成本,高性能的的特點,它的體系結構為產品的開發節省了大量時間。此外Freescale提供了多種集成模塊和總線接口,可以在不同的系統中更靈活的發揮作用!Freescale單片機的特有的特點如下: 1.全系列:從低端到高端,從8位到32位全系列應有盡有,其推出的8位/32位管腳兼容的QE128,可以從8位直接移植到32位,彌補單片機業界8/32 位兼容架構中缺失的一環 2.多種系統時鐘模塊:三種模塊,七種工作模式。多種時鐘源輸入選項,不同的mcu具有不同的時鐘產生機制,可以是RC振蕩器,外部時鐘或晶振,也可以是內部時鐘,多數CPU同時具有上述三種模塊!可以運行在FEI,FEE,FBI,FBILP,FBE,FBELP,STOP這七種工作模式 3.多種通訊模塊接口:Freescale單片機幾乎在內部集成各種通信接口模塊:包括串行通信接口模塊SCI,多主I2C總線模塊,串行外圍接口模塊 SPI,MSCAN08控制器模塊,通用串行總線模塊(USB/PS2) 4.具有更多的可選模塊:具有LCD驅動模塊,帶有溫度傳感器,具有超高頻發送模塊,含有同步處理器模塊,含有同步處理器的MCU還具有屏幕顯示模塊OSD,還有少數的MCU具有響鈴檢測模塊RING和雙音多頻/音調發生器DMG模塊 5.可靠性高,抗干擾性強,多種引腳數和封裝選擇 6.低功耗、也許Freescale系列的單片機的功耗沒有MSP430的低,但是他具有全靜態的“等待”和“停止”兩種模式,從總體上降低您的功耗!新近推出的幾款超低功耗已經與MSP430的不相上下! 使用最多的器件:MC9S12G系列 如果真要在這些單片機中分個一二三等,那么如果你想跟隨大眾,無可厚非51單片機還是首選;如果你追求超高性價比,STM32將是你理想選擇;如果你渴望超低功耗,MSP430肯定不會讓你失望;如果你想支持國產,STC會讓你興奮

    時間:2017-01-27 關鍵詞: 51 pic tms 單片機 STM32 MSP430 AVR stc

  • 基于STC單片機的太陽能熱水器智能節水控制系統設計

    基于STC單片機的太陽能熱水器智能節水控制系統設計

    0引言太陽能熱水器在北方家庭中應用非常普遍,但是普通的家庭太陽能熱水器在節約電能的同時也存在一些缺點。因為一般的太陽能熱水器基本放置在樓房的屋頂,從樓頂到出水龍頭這一段距離較長,管道中存了大量水,北方的冬季空氣比較寒冷,管道中的水溫普遍較低。當人們用熱水時,通常要將管道中的水排掉,出水龍頭距離樓房頂部距離越遠,需要排掉的冷水就越多,這部分水在普通家庭中通常會浪費掉。針對這一問題,我們設計出了冬季太陽能節水、蓄水控制系統,具有參數可以人工調節、到達合適溫度自動聲光報警、水充分利用等特點。安全可靠、成本低廉、節水效果顯著。非常適合普通家庭的太陽能熱水器,改造成本很低,具有很高的推廣價值。1系統整體組成本系統主要有單片機控制模塊、溫度測量模塊、電磁閥控制模塊、按鍵模塊、儲水箱、抽水泵等組成。當人們需要熱水時,按下啟動按鍵,單片機監測管道中水的溫度,當水溫不超過設定溫度時,打開冷水電磁閥,冷水先通過電磁閥流到一水箱中存儲起來。當溫度超過設定溫度時,關閉冷水電磁閥,并同時發出聲光報警,提醒人們現在可以利用熱水進行洗漱。存儲在水箱中的冷水可以利用水泵重新送到太陽能熱水器中,也可以用來進行沖洗廁所等用途。系統組成框圖如圖1所示。圖1 系統組成框圖2系統主要電路組成本系統以STC15F2K60S2芯片為控制核心,由溫濕度傳感器SHT10、電磁閥、水溫傳感器DS18B20和語音提示電路、數碼管顯示電路、按鍵電路等部分組成。系統電路組成框圖如圖2所示。圖2 系統電路組成框圖2.1主控制器采用STC15F2K60S2單片機作為主控制芯片,這是一種低功耗、高性能的CMOS 8位微控制器,片內大容量2048字節SRAM,內部集成高可復位電路并可徹底省掉外部昂貴的復位電路,具有8K在系統可編程FLASH存儲器,32個可設置四種模式的外部雙向I/O口,運行速度快、價格便宜、性價比高。主控制器電路原理圖如圖3所示。圖3 主控制器原理圖2.2水溫檢測電路水溫檢測采用常用的DS18B20數字溫度傳感器,外面帶有防水不銹鋼護套。DS18B20是一種單總線傳感器,其輸出為數字量,可以直接利用單片機將代表溫度的數字量讀到單片機中進行處理,不需要額外增加AD轉換器。其封裝形式為TO-92,體積比較小。為方便測量水溫,將DS18B20放入防水不銹鋼套中,并用膠加以密封,便于我們測量水溫。DS1B 20可以設置為12位的轉換精度,測量溫度的分辨率可以達到0.0625℃,測量精度為±0.5℃,滿足家庭測量水溫需要。DS18B20應用原理圖如圖4所示。圖4 DS18B20應用原理圖2.3數碼管顯示電路數碼管顯示采用0.5英寸共陽極數碼管,顯示直觀,方便家庭中老年人查看。數碼管驅動采用了串入并出74HC595芯片驅動,動態掃描,節省了寶貴的I/O資源。74LS595的驅動能力大,可以直接驅動數碼管的顯示。數碼管顯示電路原理圖如圖5所示。圖5 數碼管顯示電路原理圖2.4電磁閥及抽水泵控制電路當單片機電磁閥(或抽水泵)控制引腳輸出低電平時,三極管導通,繼電器動作,電磁閥(或抽水泵)打開;反之,三極管截止,繼電器不動作,電磁閥(或抽水泵)關閉。電磁閥(或抽水泵)控制電路原理圖如圖6所示。圖6 電磁閥或抽水泵控制電路2.5語音提示電路系統利用語音芯片ISD1820實現語音提示功能。美國ISD公司推出一種單片8~20s單段語音錄放電路ISD1820,它采用CMOS技術,內含振蕩器、話筒前置放大、自動增益控制、防混淆濾波器、揚聲器驅動及FLASH陣列。其可以進行10s左右的語音錄放高質量自然的語音還原、外圍元件少、電路連接簡單、控制方便、成本低,可以通過單片機控制操作。當系統檢測到管道中水溫超過設定溫度時,在單片機的控制下,語音提示電路發出聲音提醒。語音提示電路原理圖如圖7所示。圖7 語音提示電路原理圖2.6按鍵電路按鍵采用了獨立式按鍵,主要有水溫/環境溫度切換按鍵、啟動/停止鍵、溫度上升鍵、溫度下降鍵、水泵抽水鍵。按鍵功能直接,配合數碼管顯示,操作方便、直觀。對家庭中老年人來講,十分方便。按鍵電路原理圖如圖8所示。圖8 按鍵電路原理圖3控制系統軟件設計在軟件設計中充分利用了IAP15F2K60S2單片機的優勢,根據DS18B20、SHT10傳感器的特點,以及按鍵掃描、數碼管動態顯示的要求,利用時間觸發機制進行軟件設計。利用STC的單片機定時計數器0產生系統滴答時鐘,然后產生不同的時間片,系統在不同的時間片執行不同的任務。系統分時調度程序框架如圖9所示。圖9 系統分時調度程序框架4結束語在調查家庭太陽能熱水器用戶應用需求和現在存在浪費水這個問題的基礎上,設計了一種基于單片機控制的節水控制系統。本系統能夠實現冷水流向控制、管道溫度的實時顯示、環境溫濕度檢測、語音提示等功能,具有良好的人機界面。通過本系統在家庭中的試運行,表明其較好地解決了家庭太陽能熱水器冬季水浪費的困擾,經濟實用,足以滿足用戶的節水需求,給人們的日常生活提供了極大便利。

    時間:2018-06-20 關鍵詞: cmos 單片機 stc 嵌入式處理器 節水控制

  • 業界七大主流單片機最細剖析

    單片機現在可謂是鋪天蓋地,種類繁多,讓開發者們應接不暇,發展也是相當的迅速,從上世紀80年代,由當時的4位8位發展到現在的各種高速單片機……各個廠商們也在速度、內存、功能上此起彼伏,參差不齊~~同時涌現出一大批擁有代表性單片機的廠商:Atmel、TI、ST、MicroChip、ARM…國內的宏晶STC單片機也是可圈可點…下面為大家帶來51、MSP430、TMS、STM32、PIC、AVR、STC單片機之間的優缺點比較及功能體現……51單片機應用最廣泛的8位單片機當然也是初學者們最容易上手學習的單片機,最早由Intel推出,由于其典型的結構和完善的總線專用寄存器的集中管理,眾多的邏輯位操作功能及面向控制的豐富的指令系統,堪稱為一代“經典”,為以后的其它單片機的發展奠定了基礎。51單片機之所以成為經典,成為易上手的單片機主要有以下特點:特性:1. 從內部的硬件到軟件有一套完整的按位操作系統,稱作位處理器,處理對象不是字或字節而是位。不但能對片內某些特殊功能寄存器的某位進行處理,如傳送、置位、清零、測試等,還能進行位的邏輯運算,其功能十分完備,使用起來得心應手。2. 同時在片內RAM區間還特別開辟了一個雙重功能的地址區間,使用極為靈活,這一功能無疑給使用者提供了極大的方便,3. 乘法和除法指令,這給編程也帶來了便利。很多的八位單片機都不具備乘法功能,作乘法時還得編上一段子程序調用,十分不便。缺點:(雖然是經典但是缺點還是很明顯的)1. AD、EEPROM等功能需要靠擴展,增加了硬件和軟件負擔2. 雖然I/O腳使用簡單,但高電平時無輸出能力,這也是51系列單片機的最大軟肋3. 運行速度過慢,特別是雙數據指針,如能改進能給編程帶來很大的便利4. 51保護能力很差,很容易燒壞芯片應用范圍:目前在教學場合和對性能要求不高的場合大量被采用使用最多的器件:8051、80C51了解8051微控制器全系列產品:全面剖析久經驗證的8051架構微控制器MSP430單片機MSP430系列單片機是德州儀器1996年開始推向市場的一種16位超低功耗的混合信號處理器,給人們留下的最大的亮點是低功耗而且速度快,匯編語言用起來很靈活,尋址方式很多,指令很少,容易上手。主要是由于其針對實際應用需求,把許多模擬電路、數字電路和微處理器集成在一個芯片上,以提供“單片”解決方案。其迅速發展和應用范圍的不斷擴大,主要取決于以下的特點…特性:1. 強大的處理能力,采用了精簡指令集(RISC)結構,具有豐富的尋址方式( 7 種源操作數尋址、 4 種目的操作數尋址)、簡潔的 27 條內核指令以及大量的模擬指令;大量的寄存器以及片內數據存儲器都可參加多種運算;還有高效的查表處理指令;有較高的處理速度,在 8MHz 晶體驅動下指令周期為 125 ns 。這些特點保證了可編制出高效率的源程序2. 在運算速度方面,能在 8MHz 晶體的驅動下,實現 125ns 的指令周期。 16 位的數據寬度、 125ns 的指令周期以及多功能的硬件乘法器(能實現乘加)相配合,能實現數字信號處理的某些算法(如 FFT 等)3. 超低功耗方面,MSP430 單片機之所以有超低的功耗,是因為其在降低芯片的電源電壓及靈活而可控的運行時鐘方面都有其獨到之處。電源電壓采用的是 1.8~3.6V 電壓。因而可使其在 1MHz 的時鐘條件下運行時, 芯片的電流會在 200~400uA 左右,時鐘關斷模式的最低功耗只有 0.1uA缺點:1. 個人感覺不容易上手,不適合初學者入門,資料也比較少,只能跑官網去找2. 占的指令空間較大,因為是16位單片機,程序以字為單位,有的指令竟然占6個字節。雖然程序表面上簡潔, 但與pic單片機比較空間占用很大應用范圍:在低功耗及超低功耗的工業場合應用的比較多使用最多的器件:MSP430F系列(中文資料)、MSP430G2系列、MSP430L09系列了解MSP430全系類產品:全面直擊MSP430微控制器全家族成員TMS單片機這里也提一下TMS系列單片機,雖不算主流。由TI推出的8位CMOS單片機,具有多種存儲模式、多種外圍接口模式,適用于復雜的實時控制場合。雖然沒STM32那么優秀,也沒MSP430那么張揚,但是TMS370C系列單片機提供了通過整合先進的外圍功能模塊及各種芯片的內存配置,具有高性價比的實時系統控制。同時采用高性能硅柵CMOS EPROM和EEPROM技術實現。低工作功耗CMOS技術,寬工作溫度范圍,噪聲抑制,再加上高性能和豐富的片上外設功能,使TMS370C系列單片機在汽車電子,工業電機控制,電腦,通信和消費類具有一定的應用應用最多的器件:TMS370C256ASTM32單片機由ST廠商推出的STM32系列單片機,行業的朋友都知道,這是一款性價比超高的系列單片機,應該沒有之一,功能及其強大。其基于專為要求高性能、低成本、低功耗的嵌入式應用專門設計的ARM Cortex-M內核,同時具有一流的外設:1μs的雙12位ADC,4兆位/秒的UART,18兆位/秒的SPI等等,在功耗和集成度方面也有不俗的表現,當然和MSP430的功耗比起來是稍微遜色的一些,但這并不影響工程師們對它的熱捧程度,由于其簡單的結構和易用的工具再配合其強大的功能在行業中赫赫有名…其強大的功能主要表現在:特性:1.內核:ARM32位Cortex-M3CPU,最高工作頻率72MHz,1.25DMIPS/MHz,單周期乘法和硬件除法2.存儲器:片上集成32-512KB的Flash存儲器。6-64KB的SRAM存儲器3.時鐘、復位和電源管理:2.0-3.6V的電源供電和I/O接口的驅動電壓。POR、PDR和可編程的電壓探測器(PVD)。4-16MHz的晶振。內嵌出廠前調校的8MHz RC振蕩電路。內部40 kHz的RC振蕩電路。用于CPU時鐘的PLL。帶校準用于RTC的32kHz的晶振4、調試模式:串行調試(SWD)和JTAG接口。最多高達112個的快速I/O端口、最多多達11個定時器、最多多達13個通信接口使用最多的器件:STM32F103系列、STM32 L1系列、STM32W系列了解STM32全系類產品:沙場點兵STM32微處理器全系列成員PIC單片機PIC單片機系列是美國微芯公司(Microship)的產品,共分三個級別,即基本級、中級、高級,是當前市場份額增長最快的單片機之一,CPU采用RISC結構,分別有33、35、58條指令,屬精簡指令集,同時采用Harvard雙總線結構,運行速度快,它能使程序存儲器的訪問和數據存儲器的訪問并行處理,這種指令流水線結構,在一個周期內完成兩部分工作,一是執行指令,二是從程序存儲器取出下一條指令,這樣總的看來每條指令只需一個周期,這也是高效率運行的原因之一,此外PIC單片機之所以成為一時非常熱的單片機不外乎以下特點:特點:1. 具有低工作電壓、低功耗、驅動能力強等特點。PIC系列單片機的I/O口是雙向的,其輸出電路為CMOS互補推挽輸出電路。I/O腳增加了用于設置輸入或輸出狀態的方向寄存器,從而解決了51系列I/O腳為高電平時同為輸入和輸出的狀態。2. 當置位1時為輸入狀態,且不管該腳呈高電平或低電平,對外均呈高阻狀態;置位0時為輸出狀態,不管該腳為何種電平,均呈低阻狀態,有相當的驅動能力,低電平吸入電流達25mA,高電平輸出電流可達20mA。相對于51系列而言,這是一個很大的優點3. 它可以直接驅動數碼管顯示且外電路簡單。它的A/D為10位,能滿足精度要求。具有在線調試及編程(ISP)功能。不足之處:其專用寄存器(SFR)并不像51系列那樣都集中在一個固定的地址區間內(80~FFH),而是分散在四個地址區間內。只有5個專用寄存器PCL、STATUS、FSR、PCLATH、INTCON在4個存儲體內同時出現,但是在編程過程中,少不了要與專用寄存器打交道,得反復地選擇對應的存儲體,也即對狀態寄存器STATUS的第6位(RP1)和第5位(RP0)置位或清零。數據的傳送和邏輯運算基本上都得通過工作寄存器W(相當于51系列的累加器A)來進行,而51系列的還可以通過寄存器相互之間直接傳送,因而PIC單片機的瓶頸現象比51系列還要嚴重,這在編程中的朋友應該深有體會使用最多的器件:PIC16F873、PIC16F877AVR單片機AVR單片機是Atmel公司推出的較為新穎的單片機,其顯著的特點為高性能、高速度、低功耗。它取消機器周期,以時鐘周期為指令周期,實行流水作業。AVR單片機指令以字為單位,且大部分指令都為單周期指令。而單周期既可執行本指令功能,同時完成下一條指令的讀取。通常時鐘頻率用4~8MHz,故最短指令執行時間為250~125ns。AVR單片機能成為最近仍是比較火熱的單片機,主要的特點:特點:1. AVR系列沒有類似累加器A的結構,它主要是通過R16~R31寄存器來實現A的功能。在AVR中,沒有像51系列的數據指針DPTR,而是由X(由R26、R27組成)、Y(由R28、R29組成)、Z(由R30、R31組成)三個16位的寄存器來完成數據指針的功能(相當于有三組DPTR),而且還能作后增量或先減量等的運行,而在51系列中,所有的邏輯運算都必須在A中進行;而AVR卻可以在任兩個寄存器之間進行,省去了在A中的來回折騰,這些都比51系列出色些2. AVR的專用寄存器集中在00~3F地址區間,無需像PIC那樣得先進行選存儲體的過程,使用起來比PIC方便。AVR的片內RAM的地址區間為0~00DF(AT90S2313) 和0060~025F(AT90S8515、AT90S8535),它們占用的是數據空間的地址,這些片內RAM僅僅是用來存儲數據的,通常不具備通用寄存器的功能。當程序復雜時,通用寄存器R0~R31就顯得不夠用;而51系列的通用寄存器多達128個(為AVR的4倍),編程時就不會有這種感覺。3. AVR的I/O腳類似PIC,它也有用來控制輸入或輸出的方向寄存器,在輸出狀態下,高電平輸出的電流在10mA左右,低電平吸入電流20mA。這點雖不如PIC,但比51系列還是要優秀的…缺點:1. 是沒有位操作,都是以字節形式來控制和判斷相關寄存器位的2. C語言與51的C語言在寫法上存在很大的差異,這讓從開始學習51單片機的朋友很不習慣3. 通用寄存器一共32個(R0~R31),前16個寄存器(R0~R15)都不能直接與立即數打交道,因而通用性有所下降。而在51系列中,它所有的通用寄存器(地址00~7FH)均可以直接與立即數打交道,顯然要優于前者。使用最多的器件:ATUC64L3U、ATxmega64A1U、AT90S8515STC單片機說到STC單片機有人會說到,STC也能算主流,估計要被噴了~~我們基于它是國內還算是比較不錯的單片機來說。STC單片機是宏晶生產的單時鐘/機器周期的單片機,說白了STC單片機是51與AVR的結合體,有人說AVR是51的替代單片機,但是AVR單片機在位控制和C語言寫法上存在很大的差異。而STC單片機洽洽結合了51和AVR的優點,雖然功能不及AVR那么強大,但是在AVR能找到的功能,在STC上基本都有,同時STC單片機是51內核,這給以51單片機為基礎的工程師們提供了極大的方便,省去了學習AVR的時間,同時也不失AVR的各種功能…STC單片機是高速、低功耗、超強抗干擾的新一代8051單片機51單片機,指令代碼完全兼容傳統8051,但速度快8~12倍,內部集成MAX810專用復位電路。4路PWM 8路高速10位A、D轉換,針對電機電機 的供應商控制,強干擾場合,成為繼51單片機后一個全新系列單片機…特性:1. 下載燒錄程序用串口方便好用,容易上手,擁有大量的學習資料及視頻,最著名的要屬于杜老師的那個視頻了,好多對單片機有興趣的朋友都是通過這個視頻入門的,同時具有寬電壓:5.5~3.8V,2.4~3.8V, 低功耗設計:空閑模式,掉電模式(可由外部中斷喚醒)2. STC單片機具有在應用編程,調試起來比較方便;帶有10位AD、內部EEPROM、可在1T/機器周期下工作,速度是傳統51單片機的8~12倍,價格也較便宜 3. 4 通道捕獲/比較單元,STC12C2052AD系列為2通道,也可用來再實現4個定時器或4個外部中斷,2個硬件16位定時器,兼容普通8051的定時器。4路PCA還可再實現4個定時器,具有硬件看門狗、高速SPI通信端口、全雙工異步串行口,兼容普通8051的串口,同時還具有先進的指令集結構,兼容普通8051指令集PS:STC單片機功能雖不及AVR、STM32強大,價格也不及51和ST32便宜,但是這些并并不重要,重要的是這屬于國產單片機比較出色的單片機,但愿國產單片機能一路長虹…使用最多的器件:STC12C2052AD(中文資料)Freescale單片機主要針對S08,S12這類單片機,當然Freescale單片機遠非于此。Freescale系列單片機采用哈佛結構和流水線指令結構,在許多領域內都表現出低成本,高性能的的特點,它的體系結構為產品的開發節省了大量時間。此外Freescale提供了多種集成模塊和總線接口,可以在不同的系統中更靈活的發揮作用!Freescale單片機的特有的特點如下:1.全系列:從低端到高端,從8位到32位全系列應有盡有,其推出的8位/32位管腳兼容的QE128,可以從8位直接移植到32位,彌補單片機業界8/32 位兼容架構中缺失的一環2.多種系統時鐘模塊:三種模塊,七種工作模式。多種時鐘源輸入選項,不同的mcu具有不同的時鐘產生機制,可以是RC振蕩器,外部時鐘或晶振,也可以是內部時鐘,多數CPU同時具有上述三種模塊!可以運行在FEI,FEE,FBI,FBILP,FBE,FBELP,STOP這七種工作模式3.多種通訊模塊接口:Freescale單片機幾乎在內部集成各種通信接口模塊:包括串行通信接口模塊SCI,多主I2C總線模塊,串行外圍接口模塊 SPI,MSCAN08控制器模塊,通用串行總線模塊(USB/PS2)4.具有更多的可選模塊:具有LCD驅動模塊,帶有溫度傳感器,具有超高頻發送模塊,含有同步處理器模塊,含有同步處理器的MCU還具有屏幕顯示模塊OSD,還有少數的MCU具有響鈴檢測模塊RING和雙音多頻/音調發生器DMG模塊5.可靠性高,抗干擾性強,多種引腳數和封裝選擇6.低功耗、也許Freescale系列的單片機的功耗沒有MSP430的低,但是他具有全靜態的“等待”和“停止”兩種模式,從總體上降低您的功耗!新近推出的幾款超低功耗已經與MSP430的不相上下!使用最多的器件:MC9S12G系列如果真要在這些單片機中分個一二三等,那么如果你想跟隨大眾,無可厚非51單片機還是首選;如果你追求超高性價比,STM32將是你理想選擇;如果你渴望超低功耗,MSP430肯定不會讓你失望;如果你想支持國產,STC會讓你興奮…這七大主流單片機到底哪家強?相信現在的你應該知道了吧~~也有朋友會說瑞薩單片機是銷量最大的,且在車載電子行業應用較多,穩定性好,但是我個人不怎么喜歡小日本的產品,所以也沒用過瑞薩的東西。這個因人而異,但是不可否認它銷售量大肯定有可取之處,這點還望同仁們了解~~PS:由于水平有限,可能有些地方寫錯了或者不全面的,希望各位同仁批評指出,感激涕零~在此感謝Datasheet5提供專業數據手冊的支持~~更多關于單片機的技術資訊,歡迎訪問 與非網單片機技術專區

    時間:2018-06-20 關鍵詞: freescale pic 單片機 AVR stc 嵌入式處理器

  • 基于STC單片機的LED智能照明系統

    基于STC單片機的LED智能照明系統

     1 引言  LED被稱為第四代照明光源或綠色光源,LED的發光器件是冷光源,具有節能、環保、壽命長、體積小等特點。白熾燈,鹵鎢燈的光效為12~24lm/W,熒光燈50~70lm/W,鈉燈90~140lm/W,而且大部分的耗電變成了熱耗。LED可達到50~200lm/W,而且單光的單色性好,光譜窄,無需過濾,可直接發出有色可見光。在相同照明效果的情況下,耗電量約為白熾燈的十分之一,熒光燈的二分之一。同樣效果的一支日光燈40多瓦,而采用LED每支的功率只有8瓦。LED的平均壽命達10萬小時,安全可靠性強,不含汞,鈉元素等可能危害健康的物質,有利于環保,被稱為“綠色照明光源”。  2 智能照明控制方案設計  利用光敏電阻檢測室內光線的強弱,被動熱釋紅外探測器可探測人體的特征,傳感器將檢測數據傳送給控制核心———單片機,根據處理結果去控制照明設備的開啟、關閉和照度。圖1為智能照明控制方案原理框圖。  該系統主要由三部分組成:傳感器部分,控制器部分和LED驅動電路和照明系統,見圖1。  3 系統硬件設計  3.1 傳感器部分  3.1.1 被動式熱釋電紅外探測器  該探測器有三個關鍵元件:菲涅爾濾光晶片,它通過截止波長8~12μm的濾光晶片,起帶通濾波器的作用,使環境的干擾受到明顯的控制;菲涅爾透鏡,聚焦作用,即將熱釋的紅外信號折射(反射)在熱釋電紅外傳感器上,第二個作用是將警戒區內分為若干個明區和暗區,使進入警戒區的移動物體能以溫度變化的形式在熱釋電紅外傳感器上產生變化熱釋紅外信號,這樣熱釋電紅外傳感器就能產生變化的電信號;熱釋電紅外傳感器將透過濾光晶片的紅外輻射能量的變化轉換成電信號,即熱電轉換。  人體都有恒定的體溫,一般在37度,所以會發出特定波長10μm左右的紅外線,被動式紅外探頭就是靠探測人體發射的10μm左右的紅外線而進行工作的。人體發射的10μm左右的紅外線通過菲涅爾濾波片增強后聚集到紅外感應源上。紅外感應源通過采用熱釋電元件,這種元件在接收到人體紅外輻射穩定發生變化時就會失去電荷平衡,向外釋放電荷,經檢測處理后就能產生電平的變化。  根據此原理應用性能穩定的紅外模塊,當有人走動時模塊輸出3.3V電壓,沒人時為低電平。模塊有可調的延時,最多可達到18秒。  3.1.2 環境亮度傳感模塊  此傳感模塊的核心器件是光敏電阻。光敏電阻利用半導體的光電效應制成的一種電阻值隨入射光的強弱而改變的電阻器;入射光強,電阻小,入射光弱,電阻增大。光敏電阻器一般用于光的測量、光的控制和光電轉換(將光的變化轉換為電的變化),見圖2。  3.2 控制部分  STC12C5628AD系列單片機是宏晶科技生產的單時鐘/機器周期(IT)的單片機,是高速/低功耗/超強抗干擾的新一代8051單片機,指令代碼完全兼容傳統8051,但速度快8~12倍,內部集成MAx810專用復位電路。4路PWM,8路高速10位A/D轉換,針對電機控制,強干擾場合。  選擇這個型號的單片機主要考慮到具有PWM和AD轉換的作用,使得外圍電路得到了大大的簡化,同時產生的PWM信號可直接與驅動芯片相連,使得這個系統的成本降低了很多。  由于采用的是PWM調光的方式,為了減少不必要的外圍的電路,選擇的驅動芯片可直接由DIM管腳輸入PWM方波。  LM3407是一款集成了N溝道功率MOS場效應管的脈沖寬度調制的浮動式降壓轉換器,其設計是為提供精準的恒定電流輸出,以驅動高功率發光二極管(LED)。LM3407的顯著特色是脈沖電平調制(PLM)控制方案,這一方案在使用一個外部1%精度的電流設定厚膜電阻時,能確保在整個輸入電壓和工作溫度范圍內恒定電流輸出精度好于10%。轉換器的另一個特點是具有一個可接收標準邏輯脈沖,控制LED陣列亮度的DIM引腳,使得LM3407成為精密功率LED驅動器或者恒流源的理想器件。  4 軟件設計  本程序采用模塊化設計思想,以主程序為核心設置了2個功能模塊子程序,使一些功能在子程序中實現,簡化了設計結構。運行過程中通過主程序調用個功能模塊子程序。  該系統有2個功能模塊:1是AD轉換模塊;2是PWM產生模塊。在主函數中直接調用就可以了,大大簡化了設計結構。其系統的流程圖見圖6。  5 結論  經過實驗驗證,此系統達到了很好的節能和改善照明環境的效果。既消除了居民樓道聲控燈的擾民問題,又解決了能及時關燈大大節省能源的問題,選取的LED燈更是被稱為“21世紀的綠色光源”。  該系統結構簡單,實用性強。可適用于公寓,圖6系統的總體流程圖辦公樓的樓道燈,衛生間的照明燈等,可以達到很好的照明,節能,環保的效果。

    時間:2019-01-18 關鍵詞: 系統 智能 單片機 stc 嵌入式處理器

  • 基于STC單片機的溫控熱計費采暖閥門的設計

    目前市場上供熱系統按熱量消耗單獨計費及根據室內溫度調控熱量供給的產品,大多都是通過溫度測量反饋調整室內暖氣入水口閥門開啟程度來調控室溫,而用熱的計費則是根據閥門開啟大小估算熱水流量并結合供熱時間來計費。室內熱量的消耗即為流過室內各組暖氣的熱水放出的熱量,它與熱水的流量、進出戶的水溫差以及時間成正比,而熱量的計費應當是綜合上述諸多因素,僅僅以流量或使用時間進行計費有失準確。當然這種熱量消耗與供熱的取暖效果也不完全一致,它還取決于房間的布局以及散熱等多重因素[2]。     針對市場上大部分產品的缺陷,本文提出了一種基于STC單片機的溫控采暖閥門的設計,其室溫調控仍采用通過對室溫的測量調節入水流量的方案,而供熱計費則充分考慮了入水流量及進出戶水溫度差,供熱計費引入的供熱系數,則由當地燃料價格、燃料燃燒值、供熱效率等綜合因素確定。閥門電路的核心器件為STC系列單片機,具有功耗低、抗干擾性強的特點,比較適用于供熱環境。 1 閥門總體設計 1.1 基本功能     溫控采暖閥門具備如下兩個基本功能,室溫調控和供熱計費。     供熱系統的入室閥門設在住戶室外的管道井中,因此需有無線連接的遙控器配合調節室內溫度,遙控器內置的溫度傳感器測量室內溫度,根據用戶設定的需求溫度來調節室外管井中閥門的熱水流量,從而達到室溫調節的目的。     供熱計費系統由流量計、入水口/出水口溫度傳感器組成,微控制器按一定周期采集實時的流量和溫度差,用以計算產生的費用,計算如公式(1)。其中M為t1到t2時間段內產生的用熱費用,K為供熱系數,由地方供熱部門根據各地實際情況確定,Tin,Tout為入水/出水口溫度,I為當時測量的流速。 1.2 附加功能     考慮到該閥門應用于家庭用戶,但管理者為當地供暖部門,因此針對使用和管理雙方利益,增加如下功能。 1.2.1 IC卡預付費功能     通過IC卡實現購買供熱熱量并對閥門進行充值操作,閥門根據實時計費情況進行費用扣除,供暖季結束后,用戶可通過IC卡將閥門剩余金額回寫到IC卡內,用于退費。 1.2.2 防凍功能     當閥門存儲器內存儲的費用不足時,閥門在提示金額不足后關閉,為了避免室內溫度過低凍壞管道,增加了防凍功能,即在出水口溫度低于8 ℃時,閥門開啟一定角度,若溫度仍有下降,閥門逐漸開大,以確保用戶長時間離家無法充值或用戶自行關閉閥門設備后室內管道上凍損壞。 1.2.3 除水垢功能     如果閥門長期處于固定角度開啟,則容易在閥門內積生水垢,不但增大了閥門開/閉的阻力,也容易造成驅動閥門的電機過熱燒毀。因此微控制器定期將閥門旋轉數周,避免閥門內水垢過多聚積。 1.2.4 供熱系數便捷修正功能     由于供熱系數為供熱部門或政府機構根據當年燃料因素、供熱效率甚至小區布局及樓層等方面確定,因此會造成逐年修正,為了避免修正系數帶來的程序升級的麻煩,本系統將供熱系數相關數據存放于IC卡內,用戶在購熱時,便由供暖部門將當年的系數寫入卡內,用戶充值時,閥門系統即可讀出,用于熱量費用計算。 2 硬件電路設計     溫控閥門系統框圖如圖1所示,由閥門系統和遙控器構成。閥門系統包括球閥、控制模塊、無線模塊、溫度采集模塊和流量采集模塊;遙控器主要包括溫度采集模塊、IC卡讀卡模塊、顯示模塊和無線模塊。     2.1 閥門系統 2.1.1 球閥與控制模塊     控制模塊采用STC系列單片機STC89LE52,這款3.3 V工作、PQFP封裝的小型單片機功耗低(工作電壓4 mA~7 mA),抗干擾能力強(1.9 V~4 V可工作,抗2 000 V快速脈沖干擾),自動加密,且通過串口即可下載程序,方便升級。     單片機通過電機驅動芯片CR7010控制與球閥軸相連的減速電機正向/逆向旋轉[3]來調整閥門開啟程度,與球閥同軸相連的一片鋸齒圓盤依靠光電開關來限位,如圖2所示。 2.1.2 采集模塊     溫控閥門系統需要采集的數據為當前的入水口溫度、出水口溫度和流量。     溫度傳感器采用LM75,這是一款價格低廉的I2C協議溫度傳感器[4],精度為0.5 ℃,滿足水溫及室內溫度測量。而根據使用習慣,本系統顯示的溫度值精度為1 ℃。流量傳感器采用韋根傳感器WG112,直接將閥門內渦輪旋轉產生的磁信號轉換成脈沖信號,由單片機計數器采集轉換,即可得到閥門流量。 2.1.3 無線模塊     遙控器與閥門的通信采用2.4 GHz射頻通信模式,射頻芯片采用nRF2401[5],這款芯片功耗低(在-5 dBm的發射功率下工作電流僅為10.5 mA),體積小(僅為5 mm×5 mm)。單片機與nRF2401間的通信為串行通信,射頻的頻道、校驗地址碼和發射功率均由單片機串行配置。為了避免相鄰用戶間相互干擾,每個用戶的校驗地址碼均在第一次購買熱量時由管理中心按照用戶信息寫在用戶的IC卡內(同時作為用戶ID號),首次使用前用戶通過數據線將遙控器和閥門連接進行地址注冊,即可為其配置好唯一的校驗地址,避免了因每套設備單獨燒制校驗地址帶來的麻煩。 2.2 遙控器 2.2.1 控制模塊和射頻模塊     遙控器的單片機和射頻芯片同樣采用STC89LE52和nRF2401,IC卡使用西門子的SLE4442[6],其內部256 B的EEPROM足以滿足用戶ID號、金額、相關系數等信息的存儲。另外,同樣使用一片LM75作為室內溫度的采集。     按鍵K1~K4實現控制操作,定義如下:     長按K1:開/關機;     短按K1:查詢余額、流量;     長按K4:查詢并調整檔位;     短按K4:查詢并設定溫度;     K2:升高溫度(設定溫度時)、充值(IC卡插入時);     K3:降低溫度(設定溫度時)、回寫(IC卡插入時)。 2.2.2 顯示模塊     顯示模塊需顯示室內溫度、用戶設定溫度、IC卡內金額、閥門存儲器內余額、當前流量等數據信息(當讀取閥門檔位時顯示檔位信息),并要顯示插卡錯誤、溫度設定過高、余額不足、電量不足、充值或回寫成功等提示信息。單片機通過IO口控制LCD驅動芯片HT1621來實現對液晶屏的控制[7],設計中液晶屏為26段段碼屏,通過4-com線與22-seg線實現上述信息的顯示,HT1621的控制為串行通信,節約了單片機的IO口。 3 單片機程序設計 3.1 數據格式     IC卡作為存儲用戶ID號、費用等信息的載體,系統對其數據格式的定義如表1所示。 [!--empirenews.page--]     金額采用浮點型數據,為管理中心購熱后充入的費用。當取暖季結束后,用戶如做金額回寫操作,即可將溫控閥門剩余費用回寫至卡內,用于退費等需求。     用戶ID號為5字節數據,為用戶在管理中心數據庫內相關信息的登記號,并在第一次購熱操作時由管理中心設定,在第一次對閥門充值時將ID號寫入遙控器和閥門的存儲器內。此時,用戶ID號亦作為IC卡、遙控器、閥門的唯一識別碼,避免了IC卡的混用和無線通信的干擾。     供熱系數3字節,包括熱力系數、壓力系數和效率系數(也可作其它定義),由管理中心根據實際情況確定后在用戶購熱時設定。     工程碼是維護人員所持工程卡專用,可將閥門存儲器內數據進行初始化操作。     校驗碼為金額數據的校驗和,在寫卡時避免數據錯誤。     讀卡后,單片機將數據信息存入存儲器,數據格式如表2。     標志位用作閥門是否第一次使用的標識,用來判斷是否對閥門系統的ID號進行更新。     由于nRF2401集成的shockburstTM發射/接收模式僅需要用戶配置好寄存器內發射頻道、數據寬度、地址寬度、發射功率等信息后即可直接將數據寫入寄存器發射,本系統選用5字節地址,12字節數據,地址即用戶ID號。通信數據格式如表3。     其中命令字:     0:充值,1:回寫,2:讀取金額和流量,3:讀取檔位,4:更新溫度,5:調整閥門檔位,6:更新系數,7:余額不足,8:電量不足。 3.2 程序流程 3.2.1 遙控器程序設計     遙控器實現如下功能:用戶設定溫度、根據室溫調控閥門流量、讀寫IC卡、讀出當前閥門流量等,費用值、系數值等都存儲在閥門的存儲器上,遙控器只是在用戶需要時通過無線讀出閥門系統的信息。 3.2.2 控制系統程序設計     圖3和圖4為系統遙控器部分和閥門部分的主要程序流程圖,遙控器通過4個按鍵實現了的溫度設定、充值、回寫以及閥門手動調節等功能,接收到閥門發出的欠費、電量不足等報警信息時能夠予以警示,在定時器啟動后則通過對比設定溫度與室溫的溫差控制閥門調整流量。當用戶插上IC卡,系統識別供熱系數是否改變,如有改變則向閥門發送更新系數命令,而后等待用戶的充值或回寫操作。閥門部分實現了流量及供暖入戶水溫和出戶水溫的測量并定時計費,在定時器啟動時根據遙控器發出的指令調整閥門流量。閥門同時響應遙控器所發出的查詢余額、流量、調整閥門、更新系數等指令并做相應操作。     通過入戶與出戶水溫的溫度差與當時流量積分所計算的用戶所消耗熱量更接近于實際值。引入了供暖系數通過用戶所持IC卡隨供暖中心購熱時即可更新,省去了系統后期的固件升級。由于使用唯一序列號作為用戶ID,實現了IC卡、閥門、無線通信地址碼的唯一性,避免了IC卡的混用以及無線通信的干擾。實驗樣機通過測試,閥門調節、溫度控制等穩定可靠,無線通信距離超過100 m。 參考文獻 [1] 國務院法制辦建設部.民用建筑節能條例釋義[M].北京:知識產權出版社,2008. [2] 孫繼紅.分戶熱計量的應用和推廣中遇到的問題[J].科技情報開發與經濟,2008,18(34):227-228. [3] 周建國,曹炬,姚全斌.單片機與PC機實現的電動閥門控制系統設計[J].計算機自動測量與控制,2001,9(2):33-34. [4] 劉永亮,趙磊,甄鵬,等.分布式多點溫度測量系統的設計與實現[J].微計算機信息,2008,24(9-1):145-147. [5] 劉立新,李國輝,郝云芳.基于nRF2401的無線自動抄表系統[J].微計算機信息,2006,22(9-1):158-160. [6] 陳建良,李玉謙.基于SLE4442的IC卡系統設計與實現[J].微計算機信息,2008,24(9-2):247-248,254. [7] 唐日泉,袁景淇,邱憲波.液晶驅動芯片HT1621及其在便攜式血糖儀中的應用[J].微型電腦應用,2003,19(5):22-24.

    時間:2011-08-08 關鍵詞: stc 設計教程 費采暖 溫控熱

首頁  上一頁  1 2 3 4 5 6 7 8 下一頁 尾頁
發布文章

技術子站

更多

項目外包

更多

推薦博客

新时时彩
三级片女星陈静下体被摸 江苏十一选五最新开 江苏十一选五走势一 股票涨跌停板怎么计算 三级片观看网址动画片 手机版山东258麻将 日韩a片mp4下载 福建快三 今天3d试机号查询 02年世界杯比分 单机麻将游戏下载 pk10微信大群 凯尔特人球衣 中短期理财投资排行榜 青海11选五5开走势图 qq竞彩比分直播