新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AVR128的程序——12864時鐘

        AVR128的程序——12864時鐘

        作者: 時間:2016-11-22 來源:網絡 收藏
        #include
        #include
        #define uint unsigned int
        #define uchar unsigned char
        #define psbset DDRB |= (1<<4)
        #define psbset PORTB |= (1<<4)
        #define psbclr PORTB &=~(1<<4)
        #define rsout DDRB |= (1<<5)
        #define rsset PORTB |=(1<<5)
        #define rsclr PORTB &=~(1<<5)
        #define rwout DDRB |= (1<<6)
        #define rwset PORTB |= (1<<6)
        #define rwclr PORTB &= ~(1<<6)
        #define enout DDRB |= (1<<7)
        #define enset PORTB |= (1<<7)
        #define enclr PORTB &= ~(1<<7)
        unsigned char table1[]=" 2012年02月04日";
        unsigned char table2[]="星期六 溫度 8℃";
        unsigned char table3[]=" 00: 00: 00";
        unsigned char table4[]=" 科嵌電子創作";
        uint num=50,fen=9,shi=8,ri=04,yue=02;;
        void mcu_init(void);
        void timer1_init(void)
        {
        TCNT1H = 0xE1;
        TCNT1L = 0x7C;
        TCCR1A = 0x00;
        TCCR1B = 0x05;
        TIMSK = 0x04;
        }
        void Delayus(uint US)
        {
        uint i;
        US=US*5/4;
        for( i=0;i
        }
        void Delayms(uint MS)
        {
        uint i,j;
        for( i=0;i
        for(j=0;j<1141;j++);
        }
        void write_12864com(uchar com)
        {
        rwclr;
        rsclr;
        Delayus(500);
        PORTA=com;
        enset;
        Delayus(1000);
        enclr;
        Delayus(1000);
        }
        void write_12864dat(uchar dat)
        {
        rwclr;
        rsset;
        Delayus(500);
        PORTA=dat;
        enset;
        Delayus(1000);
        enclr;
        Delayus(1000);
        }
        void init12864lcd(void)
        {
        Delayms(500);
        write_12864com(0x30);
        Delayus(500);
        write_12864com(0x30);
        Delayus(500);
        write_12864com(0x0f);
        Delayus(500);
        write_12864com(0x01);
        Delayms(25);
        write_12864com(0x06);
        Delayus(2500);
        write_12864com(0x0c);
        Delayus(500);
        }
        void display(void)
        {
        uchar i;
        write_12864com(0x80);
        for(i=0;i<16;i++)
        {
        write_12864dat(table1[i]);
        Delayms(10);
        }
        }
        void display1(void)
        {
        uchar i;
        write_12864com(0x90);
        for(i=0;i<16;i++)
        {
        write_12864dat(table2[i]);
        Delayms(10);
        }
        }
        void display2(void)
        {
        uchar i;
        write_12864com(0x88);
        for(i=0;i<12;i++)
        {
        write_12864dat(table3[i]);
        Delayms(10);
        }
        }
        void display3(void)
        {
        uchar i;
        write_12864com(0x98);
        for(i=0;i<14;i++)
        {
        write_12864dat(table4[i]);
        Delayms(10);
        }
        }
        void write_sfm(uchar add,uchar date)
        {
        uchar shi,ge;
        shi=date/10;
        ge=date;
        write_12864com(add);
        write_12864dat(0x30+shi);
        write_12864dat(0x30+ge);
        }
        void main(void)
        {
        mcu_init();
        init12864lcd();
        timer1_init();
        SEI();
        display();
        display1();
        display2();
        display3();
        while(1)
        {
        write_sfm(0x8D,num);
        write_sfm(0x8B,fen);
        write_sfm(0x89,shi);
        write_sfm(0x86,ri);
        write_sfm(0x84,yue);
        }
        }
        void mcu_init(void)
        {
        DDRA = 0XFF;
        PORTA = 0XFF;
        DDRC = 0XFF;
        PORTC = 0XFF;
        DDRF |= 0X0E;
        PORTF |= 0X0E;
        PORTF &= 0xF0;
        DDRB |= 0X10;
        PORTB |= 0X10;
        psbset;
        rsout;
        rwout;
        enout;
        }
        #pragma interrupt_handler timer1_ovf_isr:15
        void timer1_ovf_isr(void)
        {
        TCNT1H = 0xE1;
        TCNT1L = 0x7C;
        num++;
        if(num==60)
        {
        num=0;
        fen++;
        if(fen==60)
        {
        fen=0;
        shi++;
        if(shi==24)
        {
        shi=0;
        ri++;
        if(ri==32)
        {
        ri=1;
        yue++;
        }
        }
        }
        }
        }


        關鍵詞: AVR12812864時

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 青川县| 德江县| 陈巴尔虎旗| 广宗县| 股票| 尉犁县| 舞钢市| 宁国市| 茌平县| 富民县| 敦化市| 万山特区| 阿勒泰市| 西藏| 丹巴县| 柳江县| 济南市| 文登市| 平原县| 苏尼特右旗| 木里| 梁山县| 临汾市| 左贡县| 临海市| 邯郸县| 华坪县| 资溪县| 贵南县| 高密市| 集贤县| 成武县| 永胜县| 苗栗市| 当涂县| 吉安县| 梅州市| 江口县| 旬阳县| 石屏县| 罗江县|