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

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

QQ登錄

只需一步,快速開(kāi)始

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

AVR單片機(jī)Atmega16電子時(shí)鐘程序+仿真,內(nèi)部定時(shí)器實(shí)現(xiàn)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
Atmega16電子時(shí)鐘,內(nèi)部定時(shí)器,有可調(diào)鬧鐘。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include <iom16v.h>
  2. #include <macros.h>
  3. #define  key_bz    0b00000111
  4. char smg_zx[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d, 0x7d,0x07,0x7f,0x6f};// 全局變量
  5.   
  6. char hour=12;
  7. char min;
  8. char sec;
  9. char nz_hour=12;
  10. char nz_min=1;
  11. char mode=0;
  12. char set;

  13. void delay_ms(unsigned int k)                       
  14. {
  15.     unsigned int i,j;
  16.     for(i=0;i<k;i++)
  17.     {
  18.       for(j=0;j<570;j++);
  19.     }
  20. }
  21. // 用定時(shí)器實(shí)現(xiàn)定時(shí)
  22. void T0_init(void)// 端口初始化函數(shù)
  23. {
  24. TIFR=0XFF;
  25. TCCR0=0X0B; //64FENPIN, CTC MODE
  26. TCNT0=0;
  27. OCR0=250;
  28. TIMSK=0X02;

  29. }

  30. void port_init(void)// 端口初始化函數(shù)
  31. {
  32.   DDRC  |= 0b11110000;  // PC4 5 OUT PUT
  33.   PORTC |= 0b00111111; //m103 output only

  34. PORTD = 0x00; //  上電關(guān)閉數(shù)碼管, 因?yàn)樯想婋妷翰环(wěn)
  35. DDRD  = 0xff;
  36. DDRB  |= 0b11100000;  // PC5 6 7OUT PUT
  37. }

  38. //call this routine to initialize all peripherals
  39. void init_devices(void)
  40. {
  41. //stop errant interrupts until set up
  42. CLI(); //disable all interrupts
  43. port_init();//smg_zx[0]=1;
  44.   T0_init();
  45. SEI(); //re-enable interrupts
  46. //all peripherals are now initialized
  47. }
  48. //miao=45;

  49. void key (void)
  50. {

  51. if(!(PINC&0X01))
  52. {
  53.    delay_ms(2);
  54.    if(!(PINC&0X01))
  55.    {
  56.     TIMSK=0X00;
  57.     mode++;
  58.         mode%=3;
  59.         set=0;
  60.         if(mode==0)TIMSK=0X02;
  61.         while(!(PINC&0X01));
  62.    }
  63. }


  64. if(!(PINC&0X02))
  65. {
  66.    delay_ms(2);
  67.    if(!(PINC&0X02))
  68.    {
  69.     if(mode==1)
  70.         {
  71.          set++;
  72.          set%=3;
  73.         }
  74.         if(mode==2)
  75.         {
  76.          set++;
  77.          set%=2;
  78.         }
  79.         while(!(PINC&0X02));
  80.    }
  81. }


  82. if(!(PINC&0X04))
  83. {
  84.    delay_ms(2);
  85.    if(!(PINC&0X04))
  86.    {

  87.     if(mode==1)
  88.         {
  89.          if(set==0)
  90.          {
  91.           hour++;
  92.           hour%=24;
  93.          }
  94.          if(set==1)
  95.          {
  96.           min++;
  97.           min%=60;
  98.          }
  99.          if(set==2)
  100.          {
  101.           sec++;
  102.           sec%=60;
  103.          }  

  104.         }
  105.         if(mode==2)
  106.         {
  107.          if(set==0)
  108.          {
  109.           nz_hour++;
  110.           nz_hour%=24;
  111.          }
  112.          if(set==1)
  113.          {
  114.           nz_min++;
  115.           nz_min%=60;
  116.          }
  117.         }
  118.         while(!(PINC&0X04));
  119.    }
  120. }
  121.   
  122. }

  123. //主函數(shù)
  124. void main()
  125. {/// 變量聲明
  126.    
  127. char zz;  
  128.   // 調(diào)用初始化哈數(shù)
  129. //port_init();
  130. init_devices();
  131. // 特定代碼
  132.    while(1)
  133.    {
  134.    
  135.    
  136. if(mode==0)  
  137. {
  138.    
  139.     PORTD=~smg_zx[hour/10];  // 給5的字形編碼  
  140.     PORTB|=1<<PB6;//選中PC6
  141.         delay_ms(2);
  142.         PORTB&=0B00111111;//       
  143.                
  144.    
  145.     PORTD=~smg_zx[hour%10];  // 給5的字形編碼  
  146.          PORTB|=1<<PB7;//選中PC7
  147.          delay_ms(2);
  148.      PORTB&=0B00111111;//
  149.    
  150.    
  151.    
  152.      PORTD=~smg_zx[min/10];  // 給5的字形編碼  
  153.      PORTC|=1<<PC7;//選中PC7
  154.          delay_ms(2);
  155.          PORTC&=0B00001111;//       
  156.                
  157.    
  158.     PORTD=~smg_zx[min%10];  // 給5的字形編碼  
  159.         PORTC|=1<<PC6;//選中PC6

  160.          delay_ms(2);
  161.     PORTC&=0B00001111;//
  162.    
  163.     PORTD=~smg_zx[sec/10];  // 給5的字形編碼  
  164.     PORTC|=1<<PC5;//選中PC5
  165.         delay_ms(2);
  166.         PORTC&=0B00001111;//       
  167.                
  168.    
  169.      PORTD=~smg_zx[sec%10];  // 給5的字形編碼  
  170.          PORTC|=1<<PC4;//選中PC4
  171.          delay_ms(2);
  172.      PORTC&=0B00001111;//
  173. }

  174. else if(mode==1)  
  175. {
  176.    
  177.     PORTD=~smg_zx[hour/10];  // 給5的字形編碼  
  178.     PORTB|=1<<PB6;//選中PC6
  179.         delay_ms(2);
  180.         PORTB&=0B00111111;//       
  181.                
  182.    
  183.     PORTD=~smg_zx[hour%10];  // 給5的字形編碼  
  184.         if(set==0)  PORTD&=0x7f;//控制小數(shù)點(diǎn)亮
  185.          PORTB|=1<<PB7;//選中PC7
  186.          delay_ms(2);
  187.      PORTB&=0B00111111;//
  188.    
  189.    
  190.    
  191.      PORTD=~smg_zx[min/10];  // 給5的字形編碼  
  192.      PORTC|=1<<PC7;//選中PC7
  193.          delay_ms(2);
  194.          PORTC&=0B00001111;//       
  195.                
  196.    
  197.     PORTD=~smg_zx[min%10];  // 給5的字形編碼  
  198.          if(set==1)  PORTD&=0x7f;//控制小數(shù)點(diǎn)亮
  199.         PORTC|=1<<PC6;//選中PC6

  200.          delay_ms(2);
  201.     PORTC&=0B00001111;//
  202.    
  203.     PORTD=~smg_zx[sec/10];  // 給5的字形編碼  
  204.     PORTC|=1<<PC5;//選中PC5
  205.         delay_ms(2);
  206.         PORTC&=0B00001111;//       
  207.                
  208.    
  209.      PORTD=~smg_zx[sec%10];  // 給5的字形編碼  
  210.          if(set==2)  PORTD&=0x7f;//控制小數(shù)點(diǎn)亮
  211.          PORTC|=1<<PC4;//選中PC4
  212.          delay_ms(2);
  213.      PORTC&=0B00001111;//
  214. }
  215. else if(mode==2)
  216. {

  217.      PORTD=~smg_zx[nz_hour/10];  // 給5的字形編碼  
  218.     PORTB|=1<<PB6;//選中PC6
  219.         delay_ms(2);
  220.         PORTB&=0B00111111;//       
  221.                
  222.    
  223.     PORTD=~smg_zx[nz_hour%10];  // 給5的字形編碼  
  224.         if(set==0)  PORTD&=0x7f;//控制小數(shù)點(diǎn)亮
  225.          PORTB|=1<<PB7;//選中PC7
  226.          delay_ms(2);
  227.      PORTB&=0B00111111;//
  228.    
  229.    
  230.    
  231.      PORTD=~smg_zx[nz_min/10];  // 給5的字形編碼  
  232.      PORTC|=1<<PC7;//選中PC7
  233.          delay_ms(2);
  234.          PORTC&=0B00001111;//       
  235.                
  236.    
  237.      PORTD=~smg_zx[nz_min%10];  // 給5的字形編碼  
  238.          if(set==1)  PORTD&=0x7f;//控制小數(shù)點(diǎn)亮
  239.          PORTC|=1<<PC6;//選中PC6
  240.          delay_ms(2);
  241.      PORTC&=0B00001111;//
  242.    

  243. }


  244.    if((hour==nz_hour)&&(min==nz_min))//鬧鐘
  245.    {
  246.     if(zz++>20)
  247.         {
  248.      PORTB^=1<<PB5;//選中Pb5
  249.          zz=0;
  250.         }
  251.    }
  252.    else
  253.    PORTB|=1<<PB5;//選中Pb5
  254.        
  255.    
  256.          key ();
  257.        
  258.        
  259.    


  260.    }
  261.   }
  262.    //T0中斷服務(wù)程序 //  2ms 進(jìn)入中斷
  263.    #pragma interrupt_handler timer0_ocf_isr:20
  264.   void timer0_ocf_isr(void)
  265.   {static int count=0;
  266.    if(++count>=500)
  267.    { count=0;
  268.      sec++;
  269.          if(sec>=60)
  270.          {
  271.          sec=0;
  272.          min++;
  273.           if(min>=60)
  274.          {
  275.          min=0;
  276.          hour++;
  277.          hour%=24;
  278.          }
  279.          }
  280.    }
  281. }
復(fù)制代碼

所有資料51hei提供下載:
仿真測(cè)試.rar (30.95 KB, 下載次數(shù): 119)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:478073 發(fā)表于 2019-5-15 00:29 | 只看該作者
正找算開(kāi)始整這個(gè)了,現(xiàn)在出來(lái)先看看路數(shù)
回復(fù)

使用道具 舉報(bào)

板凳
ID:665601 發(fā)表于 2019-12-17 22:10 | 只看該作者
這個(gè)的原理是什么呢
回復(fù)

使用道具 舉報(bào)

地板
ID:668117 發(fā)表于 2019-12-19 11:00 | 只看該作者
這個(gè)niu
回復(fù)

使用道具 舉報(bào)

5#
ID:850948 發(fā)表于 2020-12-8 17:08 | 只看該作者
請(qǐng)問(wèn)按鍵是什么作用
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 蜜桃视频在线观看免费视频网站www | 国产精品久久久久久吹潮 | 日韩一区二区三区视频在线观看 | 日韩在线 | 资源首页二三区 | 亚洲国产网址 | 国产成人影院 | 99精品一区二区三区 | 91在线看 | www.97国产 | 91视视频在线观看入口直接观看 | 一区二区三区欧美 | 99福利视频 | 成人午夜影院 | 亚洲免费在线观看视频 | а天堂中文最新一区二区三区 | 91国产在线播放 | 一区二区免费看 | 国产视频1区 | 精品久久久网站 | 免费一级欧美在线观看视频 | 超碰电影 | 高清视频一区二区三区 | 日韩欧美国产精品一区 | 欧美日韩精品 | 久久国产成人午夜av影院武则天 | 天天综合91 | 一区二区三区四区在线免费观看 | 成人免费在线电影 | 黄篇网址 | 日韩高清中文字幕 | 亚洲精品中文在线 | 成人亚洲片 | 毛片a级| 91一区二区在线观看 | 日韩欧美精品在线 | 久久精品亚洲 | 综合欧美亚洲 | 99re视频在线观看 | 亚洲精品一区二区三区中文字幕 | 亚洲系列第一页 |