久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1721|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

第四屆藍(lán)橋杯單片機(jī)省賽題程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:413345 發(fā)表于 2020-4-8 18:38 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. //頭文件
  2. #include<iap15f2k61s2.h>
  3. #include<intrins.h>
  4. #include<stdio.h>
  5. #include"ds1302.h"
  6. #include"iic.h"
  7. //IO口定義
  8. sbit relay=P0^4;
  9. sbit buzzer=P0^6;
  10. sbit Trig=P1^0;
  11. sbit Echo=P1^1;
  12. //變量定義
  13. #define keyin P3
  14. #define time_display 0
  15. #define csb_display 1
  16. #define settime_display 2
  17. #define setdistance_display 3
  18. bit csb_flag=0;
  19. bit san_flag=0;
  20. bit flag=0;
  21. unsigned char LED_SMGwei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00};
  22. unsigned char SMGduan[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00,0x40};
  23. unsigned char table[8];
  24. unsigned char display_turn=0;
  25. unsigned int csb_du=0;
  26. unsigned char trg,cont;
  27. unsigned char set_shi,set_fen,set_miao;
  28. unsigned char notice_distance=30;
  29. unsigned char time_weizhi=0;
  30. //微秒延遲
  31. void Delay_us(unsigned int time)                //@11.0592MHz
  32. {
  33.         unsigned int m=0;
  34.         for(m=0;m<=time;m++)
  35.         {
  36.         _nop_();
  37.         _nop_();
  38.         _nop_();
  39.         }
  40. }
  41. //定時(shí)器
  42. void Timer0Init(void)                //1毫秒@11.0592MHz
  43. {
  44.         AUXR |= 0x80;                //定時(shí)器時(shí)鐘1T模式
  45.         TMOD &= 0xF0;                //設(shè)置定時(shí)器模式
  46.         TL0 = 0xCD;                //設(shè)置定時(shí)初值
  47.         TH0 = 0xD4;                //設(shè)置定時(shí)初值
  48.         TF0 = 0;                //清除TF0標(biāo)志
  49.         TR0 = 1;                //定時(shí)器0開始計(jì)時(shí)
  50.         ET0=1;
  51.         EA=1;
  52. }
  53. void timer0() interrupt 1
  54. {
  55.         static unsigned char count=0,count2=0,i=0;
  56.         static unsigned int count1=0;
  57.         count++;count2++;
  58.         if(count==1)
  59.         {
  60.                 count=0;
  61.                 P2=0xe0;P0=~SMGduan[table[ i]];P2=0x00;                P2=0xc0;P0=LED_SMGwei[ i];P2=0x00;                i++;                if(i==8)i=0;        }        if(count2==200)        {                count2=0;                csb_flag=1;        }        if(flag)        {                count1++;                if(count1==500)                {                        count1=0;                        san_flag=!san_flag;                }        }}//毫秒延遲void Delay_ms(unsigned int time)                //@11.0592MHz{        unsigned char i, j;        unsigned int m;  for(m=0;m<=time;m++)        {        _nop_();        _nop_();        _nop_();        i = 11;        j = 190;        do        {                while (--j);        } while (--i);  }}        //獨(dú)立按鍵void KeyRead(void) {     unsigned char ReadData;                 ReadData=keyin^0xff;          trg=ReadData&(ReadData^cont);          cont=ReadData;}//蜂鳴器繼電器控制void buzzer_relay(unsigned char buzzer_mode,unsigned char relay_mode){        P2=0xa0;relay=relay_mode;buzzer=buzzer_mode;P2=0x00;}//led控制void LED(unsigned char i){   P0=~LED_SMGwei[ i];P2=0x80;P2=0x00;        }//超聲波float csb(){        float length=0;        unsigned int t=0;        unsigned char i=8;        do        {         Trig=!Trig;   Delay_us(20);        }        while(i--);        TR1=1;        while((Echo==1)&&(TF1==0));        TR1=0;        if(TF1==1)        {                TF1=0;                length=999;        }        else         {                t=TH1;                t<<=8;                t|=TL1;                length=t*0.017*1.085;        }        TH1=0;  TL1=0;        if(length==999)return length=999;        else        return (length+8);} //顯示void display(unsigned int du,unsigned char mode,unsigned char num){         if(mode==1)        {                table[0]=du>=10000000? du/10000000%10:16;                table[1]=du>=1000000? du/1000000%10:16;                table[2]=du>=100000? du/100000%10:16;                table[3]=du>=10000? du/10000%10:16;                table[4]=du>=1000? du/1000%10:16;                table[5]=du>=100? du/100%10:16;                table[6]=du>=10? du/10%10:16;                table[7]=du>=0? du%10:16;                }        else if(mode==0)        table[num]=du;}unsigned char shi;unsigned char fen;unsigned char miao;void clock(){        EA=0;        miao=(Read_Ds1302_Byte(0x81)/16)*10+Read_Ds1302_Byte(0x81)%16;        fen=(Read_Ds1302_Byte(0x83)/16)*10+Read_Ds1302_Byte(0x83)%16;        shi=(Read_Ds1302_Byte(0x85)/16)*10+Read_Ds1302_Byte(0x85)%16;        EA=1;        display(miao%10,0,7);        display(miao/10,0,6);        display(17,0,5);        display(fen%10,0,4);        display(fen/10,0,3);        display(17,0,2);        display(shi%10,0,1);        display(shi/10,0,0);}void set_display(unsigned char mode){        if(mode==settime_display)        {                if(san_flag==1&&time_weizhi==1){                        display(16,0,1);                        display(16,0,0);                        display(set_fen%10,0,4);                        display(set_fen/10,0,3);                }                else if(san_flag==0&&time_weizhi==1){                        display(set_shi%10,0,1);                        display(set_shi/10,0,0);                        display(set_fen%10,0,4);                        display(set_fen/10,0,3);                }                if(san_flag==1&&time_weizhi==2){                        display(16,0,4);                        display(16,0,3);                        display(set_shi%10,0,1);                        display(set_shi/10,0,0);                }                else if(san_flag==0&&time_weizhi==2){                        display(set_fen%10,0,4);                        display(set_fen/10,0,3);                        display(set_shi%10,0,1);                        display(set_shi/10,0,0);                }                display(set_miao%10,0,7);                display(set_miao/10,0,6);                display(17,0,5);                display(17,0,2);        }        else if(mode==setdistance_display){                display(notice_distance,1,0);        }}void display_mode(unsigned char mode){                if(mode==time_display)        {                clock();        }        else if(mode==csb_display)        {                display(csb_du,1,0);        }        else                set_display(mode);}//數(shù)碼管void SMG(){                P2=0xc0;P0=0xff;P2=0x00;                P2=0xe0;P0=0x00;P2=0x00;}void main(){        LED(0);        SMG();        buzzer_relay(1,0);        Delay_ms(1000);        LED(8);        buzzer_relay(0,0);        display_turn=time_display;        settime(11,50,59);        write_24c02(0x50,30);        notice_distance=read_24c02(0x50);        Timer0Init();        while(1)        {                if(csb_flag)                {                        csb_du=csb();                        csb_flag=0;                }                display_mode(display_turn);                KeyRead();                if(trg==0x01)                {                        display_turn=!display_turn;                }                if(trg==0x02)                {                        if(display_turn==time_display){                                if(time_weizhi==0)                                {                                        set_shi=shi;set_fen=fen;set_miao=miao;                                        display_turn=settime_display;                                }                                time_weizhi+=1;flag=1;                        }                        else if(display_turn==settime_display)                        {                                time_weizhi+=1;                                if(time_weizhi==3){                                        settime(set_shi,set_fen,set_miao);                                        time_weizhi=0;flag=0;                                        display_turn=time_display;                                }                        }                        if(display_turn==csb_display){                                display_turn=setdistance_display;                        }                        else if(display_turn==setdistance_display){                                write_24c02(0x50,notice_distance);                                display_turn=csb_display;                        }                }                if(trg==0x04)                {                        if(display_turn==settime_display)                        {                                if(time_weizhi==1)                                {                                        set_shi+=1;                                        if(set_shi==24)set_shi=23;                                }                                if(time_weizhi==2)                                {                                        set_fen+=1;                                        if(set_fen==60)set_fen=59;                                }                        }                        else if(display_turn==setdistance_display){                                notice_distance+=1;                                if(notice_distance==999)notice_distance=999;                        }                }                if(trg==0x08)                {                        if(display_turn==settime_display)                        {                                if(time_weizhi==1)                                {                                        if(set_shi==0){set_shi=0;continue;}                                        set_shi-=1;                                }                                if(time_weizhi==2)                                {                                                                                if(set_fen==0){set_fen=0;continue;}                                        set_fen-=1;                                }                        }                        else if(display_turn==setdistance_display){                                                                if(notice_distance==0){notice_distance=0;break;}                                notice_distance-=1;                        }                }        }}
復(fù)制代碼


第四屆省賽.7z

32.16 KB, 下載次數(shù): 4, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久人 | 欧洲精品一区 | 99久久久无码国产精品 | 91久久综合 | 亚洲美女网站 | 免费成年网站 | 99精品免费 | 天天夜干 | 国产精品成人一区 | 九九99精品| 亚洲精品一区二区在线观看 | 91社区在线高清 | av网站免费在线观看 | 日韩中文字幕区 | 不卡在线一区 | 成人国产一区二区三区精品麻豆 | av电影一区二区 | 精品日韩电影 | 成人免费视频网站在线看 | chengrenzaixian| 精品国产三级 | 一级毛片免费视频观看 | 午夜视频在线 | 成人国产在线视频 | 99亚洲视频 | 国产精品a久久久久 | 久久精品欧美一区二区三区不卡 | 成人在线看片 | 日日想夜夜操 | 色爱综合| 欧美在线一区二区三区 | 亚洲一区二区久久 | 福利视频一区二区 | 欧美精品网站 | 国产精品爱久久久久久久 | 久草视频在线播放 | 在线观看中文字幕av | 中文字幕av一区二区三区 | 99精品视频在线观看 | 成人片免费看 | 亚洲视频免费观看 |