新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > HT66F50的應用

        HT66F50的應用

        作者: 時間:2016-11-25 來源:網絡 收藏
        今年有些意外,還得研究研究HT66F50。PDF里面已經講解了它強大的功能,這里我就不講了。(個人覺得我這種條件下使用,芯片上沒有集成串口通信,有點遺憾。)

        下面我簡單介紹一下我在使用的過程中遇到的一些和46F49E/46RU232之間的區別:

        本文引用地址:http://www.104case.com/article/201611/321151.htm

        一、使用過程的區別:

        1.從新開發環境IDE-3000中集成的頭文件來看,66F50只給出了相應寄存器的入口地址申明,而并沒有像其他兩款芯片的頭文件一樣給出每一個I/O的申明,這使得在使用過程中很是不方便(個人覺得)。因此不得不在使用之前,自己將對應的I/O在頭文件申明一遍。

        2.66F50引腳的重置功能更加強大。--這也導致在使用過程中對相應寄存器的設置變得更加復雜,不過習慣和熟悉了就好。

        3.從個人學習和使用條件上而言,這款芯片上沒有集成串口功能,有點遺憾。不過這也符合盛群公司在芯片命名上的特點。比如HT46F49E和HT46RU232兩款芯片中,前者就是不帶串口功能,而后者則帶有串口功能。

        二.下面就舉一個簡單的例子吧。

        利用HT66F50在12864上顯示一個1、***本程序是在其他程序中截取的一部分,看起來有些凌亂和多余。

        #include "HT66F50.h"
        #define en _pb3 //PB3 --12864使能端口定義
        #define rs _pb4 //PB4
        #define rw _pa0 //PB5
        #define CY _c //進位


        void delay(unsigned int t)
        {
        unsigned int x;
        for(;t>0;t--)
        for(x=110;x>0;x--);
        }

        void com(unsigned char com)
        {
        unsigned char i;
        delay(2);
        rs=1; //拉高控制,準備寫數據
        for(i=5;i>0;i--) //先寫5個1
        {
        rw=1;
        en=1;
        en=0;
        }
        for(i=3;i>0;i--) //寫3個0 寫指令控制
        {
        rw=0;
        en=1;
        en=0;
        }
        for(i=4;i>0;i--) //寫高4位
        {
        com=com<<1;
        rw=CY;
        en=1;
        en=0;
        }
        for(i=4;i>0;i--) //再寫4個0
        {
        rw=0;
        en=1;
        en=0;
        }
        for(i=4;i>0;i--) //寫低4位
        {
        com=com<<1;
        rw=CY;
        en=1;
        en=0;
        }
        for(i=4;i>0;i--) //寫4個0
        {
        rw=0;
        en=1;
        en=0;
        }
        rs=0;
        }


        void dat(unsigned char dat)
        {
        unsigned char i;
        delay(2);
        rs = 1;
        for(i=5;i>0;i--) //先寫4個1
        {
        rw=1;
        en=1;
        en=0;
        }
        for(i=3;i>0;i--) //RW 寫數據控制
        {
        rw=!rw;
        en=1;
        en=0;
        }
        for(i=4;i>0;i--) //寫高4位數據
        {
        dat=dat<<1;
        rw=CY;
        en=1;
        en=0;
        }
        for(i=4;i>0;i--) //寫4個0
        {
        rw=0;
        en=1;
        en=0;
        }
        for(i=4;i>0;i--) //寫低4位數據
        {
        dat=dat<<1;
        rw=CY;
        en=1;
        en=0;
        }
        for(i=4;i>0;i--) //再寫4個0
        {
        rw=0;
        en=1;
        en=0;
        }
        rs=0; //拉低,數據寫完
        }

        void LCD_string(unsigned char *p)
        {
        while(*p)
        {
        dat(*p);
        p++;
        }
        }


        void init12864()
        {
        com(0x01);//清屏
        delay(5);
        com(0x30);//寫控制字0x30
        delay(5);
        com(0x30);
        delay(5);
        com(0x0c);//寫顯示狀態
        delay(5);
        com(0x01);//寫清屏指令
        delay(5);
        com(0x06);
        }

        void init()
        {
        _smod=0x01; //使用FH作為時鐘
        _pbc=0x00; //設置pb口為輸出模式
        _pbpu=0xff; //帶上拉電阻
        _pac=0xff; //PA口全部用于輸入
        _papu=0xff; //PA口帶上拉電阻
        }

        void main()
        {
        init(); //初始化單片機
        init12864(); //初始化12864
        com(0x01); //清屏
        delay(5);
        com(0x83); //寫入顯示地址
        delay(5);
        dat(1); //寫入數據
        while(1);
        }

        要寫的東西太多了,基于時間的關系,現在就只能寫到這里了,以后有時間再寫吧!



        關鍵詞: HT66F50串口通

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 苏州市| 拉萨市| 新密市| 株洲县| 新乡县| 环江| 通山县| 商洛市| 海城市| 弥勒县| 沧源| 林甸县| 江都市| 福清市| 松溪县| 延吉市| 金门县| 辽中县| 夏河县| 金昌市| 凤冈县| 公安县| 建平县| 神木县| 安顺市| 兴化市| 安龙县| 铁岭市| 西安市| 镇赉县| 都江堰市| 虎林市| 治县。| 兴海县| 昆山市| 金门县| 大田县| 闽侯县| 岳阳县| 登封市| 涟源市|