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

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

QQ登錄

只需一步,快速開始

搜索

智能溫控風(fēng)扇單片機(jī)仿真設(shè)計(jì),想知道為什么仿真的時(shí)候數(shù)碼管不兩 不顯示數(shù)字

查看數(shù): 3210 | 評(píng)論數(shù): 2 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請(qǐng)稍候......
發(fā)布時(shí)間: 2019-3-27 22:58

正文摘要:

希望好心人幫幫我- - 下面是源代碼 #include <reg52.h> #define uchar unsigned char #define uint unsigned int sbit DQ=P1^7; sbit key1=P1^3; sbit key2=P1^4; sbit dianji=P3^1; float ff; u ...

回復(fù)

ID:213173 發(fā)表于 2019-3-28 17:33
你這程序大量采用dmsec()軟件延時(shí),哪能正常工作?給你改好了,你試試。 智能溫控風(fēng)扇單片機(jī)仿真設(shè)計(jì)+仿真.zip (118.09 KB, 下載次數(shù): 24)


  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit DS=P1^6;
  6. sbit key1=P3^6;
  7. sbit key2=P3^7;
  8. sbit dianji=P1^0;
  9. uchar code smgdu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0~9數(shù)碼管段碼
  10. uchar code smgwei[]={0xef,0xdf,0xbf,0x7f};       //1~4數(shù)碼管位碼
  11. uchar TempData[4];//溫度顯示值緩存
  12. uchar TempData1[3];//設(shè)定顯示值緩存
  13. uchar set=25;                //設(shè)定值變量
  14. uint  count=0;                //顯示設(shè)定值計(jì)數(shù)延時(shí)變量
  15. bit Flag=0;        //讀時(shí)間標(biāo)志
  16. bit Allow=0;//設(shè)置狀態(tài)標(biāo)志
  17. void delay_us(uchar us)//約2us延時(shí)函數(shù)
  18. {
  19.         while(--us);
  20. }
  21. void delay(uchar z)//約1ms延時(shí)函數(shù)
  22. {
  23.         while(z--)
  24.         {
  25.                 delay_us(245);
  26.                 delay_us(245);
  27.         }
  28. }

  29. void display() //4個(gè)數(shù)碼管顯示
  30. {
  31.         static uchar i;
  32.         P0=0x00;                        //消隱
  33.         if(Allow==1)
  34.         {
  35.                 switch(i)        //顯示設(shè)定值
  36.                 {
  37.                         case 0: i++; break;
  38.                         case 1: P2=smgwei[i];P0=TempData1[i];i++; break;
  39.                         case 2: P2=smgwei[i];P0=TempData1[i];i=0; break;
  40.                 }
  41.         }
  42.         else
  43.         {
  44.                 switch(i)        //顯示溫度值
  45.                 {
  46.                         case 0: P2=smgwei[i];P0=TempData[i];i++; break;
  47.                         case 1: P2=smgwei[i];P0=TempData[i];i++; break;
  48.                         case 2: P2=smgwei[i];P0=TempData[i];i++; break;
  49.                         case 3: P2=smgwei[i];P0=TempData[i];i=0; break;
  50.                 }
  51.         }
  52. }
  53. //讀一個(gè)字節(jié)
  54. uchar read_byte()
  55. {
  56.         uchar i,dat;
  57.         for(i=0;i<8;i++)
  58.         {
  59.                 DS=0;
  60.                 dat>>=1;
  61.                 DS=1;
  62.                 if(DS)
  63.                 dat|=0x80;
  64.                 delay_us(25);
  65.         }
  66.         return (dat);
  67. }  
  68. //寫一個(gè)字節(jié)
  69. void write_byte(uchar dat)
  70. {
  71.         uchar i;
  72.         for(i=0;i<8;i++)
  73.         {
  74.                 DS=0;
  75.                 DS=dat&0x01;
  76.                 delay_us(25);
  77.                 DS=1;
  78.                 dat>>=1;
  79.         }
  80. }
  81. //單總線初始化時(shí)序         
  82. bit ds_init()
  83. {
  84.         bit i;
  85.         DS=1;
  86.         delay_us(5);
  87.         DS=0;
  88.         delay_us(200);
  89.         delay_us(200);
  90.         DS=1;
  91.         delay_us(50);
  92.         i=DS;
  93.         delay_us(25);
  94.         return (i);
  95. }
  96. uint ReadTemperature()
  97. {
  98.         uint H,i;
  99.         uchar L;
  100.         ds_init();//初始化溫度傳感器
  101.         write_byte(0xcc);//發(fā)送跳躍ROM指令
  102.         write_byte(0x44);//發(fā)送溫度轉(zhuǎn)換指令
  103.         delay(10);
  104.         ds_init();//初始化溫度傳感器
  105.         write_byte(0xcc);//發(fā)送跳躍ROM指令
  106.         write_byte(0xbe);//讀取溫度傳感器暫存器的值
  107.         L=read_byte();
  108.         H=read_byte();
  109.         H<<=8;
  110.         i=L+H;
  111.         return(i);
  112. }
  113. /*************************
  114.           按鍵掃描程序
  115. *************************/
  116. void key_scan()
  117. {
  118.         static bit key1_sign,key2_sign;                        //按鍵自鎖標(biāo)志變量
  119.         static uint count1,count2;                                //消抖計(jì)數(shù)變量                       

  120.         if(!key1)                                                        //檢測(cè)按鍵1按下
  121.         {
  122.                 if((++count1>=100)&&(key1_sign==0))//檢測(cè)消抖計(jì)數(shù)與按鍵1自鎖標(biāo)志
  123.                 {                       
  124.                         key1_sign=1;                        //按鍵1自鎖標(biāo)志置1
  125.                         Allow=1;                                        //顯示設(shè)定值
  126.                         count=0;                                        //顯示設(shè)定值計(jì)數(shù)延時(shí)清0
  127.                         if(set<90)
  128.                                 set++;                                //調(diào)整設(shè)定值變量自+1
  129.                         TempData1[1]=smgdu[set/10];
  130.                         TempData1[2]=smgdu[set%10];
  131.                 }
  132.         }
  133.         else
  134.         {
  135.                 key1_sign=0;                                //按鍵1自鎖標(biāo)志清0
  136.                 count1=0;                                        //消抖計(jì)數(shù)count1清0
  137.         }
  138.         if(!key2)                                                        //檢測(cè)按鍵2按下
  139.         {
  140.                 if((++count2>=100)&&(key2_sign==0))//檢測(cè)消抖計(jì)數(shù)與按鍵1自鎖標(biāo)志
  141.                 {                       
  142.                         key2_sign=1;                        //按鍵1自鎖標(biāo)志置1
  143.                         Allow=1;                                        //顯示設(shè)定值
  144.                         count=0;                                        //顯示設(shè)定值計(jì)數(shù)延時(shí)清0
  145.                         if(set>20)
  146.                                 set--;                                //調(diào)整設(shè)定值變量自-1
  147.                         TempData1[1]=smgdu[set/10];
  148.                         TempData1[2]=smgdu[set%10];
  149.                 }
  150.         }
  151.         else
  152.         {
  153.                 key2_sign=0;                                //按鍵1自鎖標(biāo)志清0
  154.                 count2=0;                                        //消抖計(jì)數(shù)count1清0
  155.         }
  156. }
  157. void Timer0Init()             //2毫秒@12.000MHz
  158. {
  159.         TMOD= 0x01;                //設(shè)置定時(shí)器模式
  160.         TL0 = 0x30;                //設(shè)置定時(shí)初值
  161.         TH0 = 0xF8;                //設(shè)置定時(shí)初值
  162.         TR0 = 1;                //定時(shí)器0開始計(jì)時(shí)
  163.         EA=1;
  164.         ET0=1;
  165. }
  166. void main()
  167. {        
  168.         uint  temp;
  169.         uchar TempH,TempL;
  170.         bit   negative;//負(fù)數(shù)標(biāo)志
  171.        
  172.         Timer0Init();   //初始化定時(shí)器   
  173.         while(1)           
  174.         {
  175.                 if(Flag==1)         
  176.                 {
  177.                         Flag=0;
  178.                         temp=ReadTemperature();//讀取溫度
  179.                         if(temp&0x8000)
  180.                         {
  181.                                 negative=1;                //負(fù)號(hào)標(biāo)志
  182.                                 temp=~temp;                //取反加1
  183.                                 temp +=1;
  184.                         }
  185.                         else negative=0;        //正數(shù)
  186.        
  187.                         TempH=temp>>4;                //分解為整數(shù)
  188.                         TempL=temp&0x0F;        //分解為小數(shù)
  189.                         TempL=TempL*6/10;        //保留一位小數(shù)
  190.        
  191.                         if(negative==1)
  192.                         TempData[0]=0x40;//顯示負(fù)號(hào)
  193.                         else if(TempH/100==0)//小于100
  194.                         TempData[0]=0;             //百位消隱
  195.                         else
  196.                         TempData[0]=smgdu[TempH/100]; //顯示百位溫度
  197.        
  198.                         if((TempH/100==0)&&((TempH%100)/10==0))
  199.                         TempData[1]=0;              //十位消隱
  200.                         else
  201.                         TempData[1]=smgdu[(TempH%100)/10];        //顯示十位溫度
  202.                         TempData[2]=smgdu[(TempH%100)%10]|0x80;//顯示個(gè)位溫度,帶小數(shù)點(diǎn)
  203.                         TempData[3]=smgdu[TempL];      //顯示小數(shù)溫度1位        
  204.                 }
  205.                 if(TempH>=set)          //溫度超過設(shè)定溫度,電機(jī)啟動(dòng)
  206.                         dianji=0;
  207.                 else dianji=1;        

  208.                 key_scan();
  209.         }
  210. }
  211. void timer0int() interrupt 1 //定時(shí)器,定時(shí)2ms
  212. {
  213.         static uchar num;
  214.         TL0 = 0x30;                //設(shè)置定時(shí)初值
  215.         TH0 = 0xF8;                //設(shè)置定時(shí)初值
  216.         display();
  217.         if(++num>=250)   //延時(shí)500ms讀溫度數(shù)值
  218.         {
  219.                 num=0;
  220.                 Flag=1;
  221.         }        
  222.         if(Allow==1)       
  223.         {
  224.                 if(++count>=1000)        //顯示設(shè)定值計(jì)數(shù)延時(shí)
  225.                 {
  226.                         Allow=0;                        //恢復(fù)正常顯示
  227.                         count=0;                        //計(jì)數(shù)清0
  228.                 }
  229.         }
  230. }
復(fù)制代碼



ID:96682 發(fā)表于 2019-3-28 11:55
LZ 共陰的卻用共陽接法,電路圖有誤程序上有瑕疵還不匹配

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 99热精品在线 | 一区二区中文 | 91国内精精品久久久久久婷婷 | 国产特级毛片 | 91国产在线播放 | 国产成人精品综合 | 婷婷色国产偷v国产偷v小说 | 国产一区二区三区久久久久久久久 | 日韩在线中文字幕 | 在线视频 亚洲 | 亚洲黄色av网站 | 91精品国产综合久久久久 | 日日日操 | 天天拍天天草 | 国产精品久久久久久吹潮 | 午夜欧美a级理论片915影院 | 亚洲欧美一区在线 | 欧美成ee人免费视频 | 黄色日本视频 | 亚洲精品黄色 | av影音在线 | 成人羞羞国产免费视频 | 亚洲毛片在线 | 亚洲黄色视屏 | 国产精品久久久久久久久久久久冷 | 另类视频在线 | 色综合久久天天综合网 | 欧美另类视频 | www国产亚洲精品 | 91精品国产一区二区三区香蕉 | 成年人国产在线观看 | 中文字幕一区二区三区日韩精品 | 日操操夜操操 | 色精品视频 | 亚洲三区在线播放 | 欧美极品一区二区 | 黄视频国产 | 国产精品日韩一区二区 | 日韩成人高清 | 成人国产精品久久久 | 99精品一区二区三区 |