新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AVR單片機的全功能工業控制器設計

        AVR單片機的全功能工業控制器設計

        作者: 時間:2013-11-12 來源:網絡 收藏

        c為PWM更改值

        ***************************/

        void pwm(unsigned char b,unsigned int c){

          switch(b){

            case 1://改變PWM1值

              if(c=0x03FF)OCR1A=c;

              break;

            case 2://開PWM1端口

              if(c=0x03FF)OCR1A=c;

              PWM1_OUT()

              break;

            case 3://關PWM1端口

              OCR1A=0x0000;

              PWM1_IN()

              break;

          }

        }

        3 實時時鐘和歷史數據存儲模塊

          很多工業控制器需要將關機前的有關數據記錄下來,以便下次開機時繼續使用原先設置好的參數;有些工作數據也要進行實時保存,以保證不因掉電等意外發生而受影響。采用EEPROM存儲,讀寫速度慢而且受使用次數的限制;采用鐵電存儲器可以實現,但一般容量小,價格較高。

          工業控制操作往往是與當前實時時鐘相關聯的,實時時鐘在工業控制器中是很重要的一個部件。

          美國Dallas公司的,將實時時鐘和歷史數據存儲器合二為一,價格也較為適中。電路的連接方式如圖3所示。

          包含1個2K×8的非易揮發性的SRAM和1個實時時鐘/日歷,以及內嵌晶振和鋰電池。 的時鐘寄存器和記憶寄存器的存取方式同普通RAM的存取方式,而計時寄存器采取了雙緩沖的方式,以保證在存儲器存取過程中不間斷計時。當電能監控電路監測到掉電時,DS1642即接通內部電源以確保時間保持和內存數據不受破壞,精度可達1 min/月。詳情請見有關數據手冊。

        4 彩色液晶顯示模塊

          彩色液晶顯示功能的實現直接采用深圳市中天越華自動控制科技有限公司的ZTCOLOR3彩色液晶驅動模塊,電路接口如圖3所示。

          模塊的使用很簡單,模塊本身具有數據刷新等功能。當顯示的畫面沒有變化時,單片機不需要對模塊進行操作;要更改顯示界面時,用寫寄存器的方式寫入數據即可。(詳見生產商的使用說明書)

        AVR單片機的全功能工業控制器設計

        圖3 時鐘和數據存儲與液晶顯示模塊連接電路、

        5 觸摸屏控制模塊

          觸摸屏采用四線電阻式觸摸屏,利用的A/D口對通電后的觸摸屏各觸摸點電壓值進行采樣,以確定用戶的觸摸位置而進行相應的操作。電路如圖4所示。

        AVR單片機的全功能工業控制器設計

        圖4 觸模屏控制模塊電路

          具體實現程序如下:

        #define TX1_0(){PORTE.3=1;DDRE.3=1;}

        #define TY1_1(){PORTE.5=0;DDRE.5=1;}

        #define TY1_0(){PORTE.5=1;DDRE.5=1;}

        #define TX0_1(){PORTE.4=1;DDRE.4=1;}

        #define TX0_0(){PORTE.4=0;DDRE.4=1;}

        #define TY0_1(){PORTE.6=1;DDRE.6=1;}

        #define TY0_0(){PORTE.6=0;DDRE.6=1;}

        #define TINT_IN() {DDRE.7=0;}//觸摸屏中斷口為輸入方式

        #define TINT_INPUT PINE.7

        #define TADX_IN(){DDRF|=1;PORTF=0xFE;delay_us(50);DDRF=0xFE;}//觸摸屏ADC端口為輸入方式#define TADY_IN(){DDRF|=2;PORTF=0xFD;delay_us(50);DDRF=0xFD;}

        /******************************

        觸摸屏初始化: 初始化觸摸屏四線端口、初始化觸摸屏中斷口、初始化ADC端口

        ******************************/

        void touch_init(void){

          unsigned char i;

          TX1_0()    //初始化四線端口

          TX0_0()

          TY1_1()

          TY0_0()

          TINT_IN()   //觸摸屏中斷端口為輸入方式

          EICRB|=0xC0; //設置INT7為上升沿觸發,清除中斷

                 //標志,開中斷

          EIFR|=0x80;

          EIMSK|=0x80;

          TADX_IN()//把觸摸屏ADC端口設置為輸入

          TADY_IN()

        }



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 祥云县| 东海县| 阜康市| 新乐市| 甘洛县| 绥中县| 资兴市| 阆中市| 邯郸市| 华池县| 孟连| 涞源县| 黄大仙区| 突泉县| 香河县| 阿鲁科尔沁旗| 儋州市| 南溪县| 松江区| 峨边| 禹州市| 呼伦贝尔市| 巴马| 临颍县| 拉孜县| 嫩江县| 丽江市| 阜城县| 金溪县| 宁远县| 东乌| 大同市| 穆棱市| 嘉禾县| 宾阳县| 高台县| 都匀市| 酒泉市| 湄潭县| 双牌县| 佛冈县|