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

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

QQ登錄

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

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

基于51單片機(jī)定時(shí)器的秒表程序 只顯示 毫秒 秒 分鐘

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:396513 發(fā)表于 2019-12-25 16:04 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
喜歡研究單片機(jī)定時(shí)器的可以來(lái)看一下,代碼里有單片機(jī)定時(shí)器初始化的代碼

單片機(jī)源程序如下:
  1. #include <AT89X52.H>
  2. #define uint unsigned int                         //宏定義無(wú)符號(hào)整型數(shù)據(jù)
  3. #define uchar unsigned char                        //宏定義無(wú)符號(hào)字符型數(shù)據(jù)
  4. sbit key1=P3^6;                                                //按鍵
  5. sbit led=P1^0;                                                //燈
  6. sbit ledc=P1^1;                                                //燈
  7. uchar Cntus=0,Cnt10ms=0,Cnt1s=0,Cnt1min=0;//中斷計(jì)時(shí)變量

  8. bit stop=0;                                                        //停止標(biāo)志
  9. void display();                                                //顯示程序聲明
  10. void keyscan();                                                //按鍵掃描程序聲明

  11. /**************************************
  12. 1602液晶
  13. **************************************/
  14. sbit RS = P2^5;               
  15. sbit RW = P2^6;
  16. sbit E  = P2^7;
  17.                            /**********************************************************
  18. 函數(shù)說(shuō)明: 延時(shí)程序
  19. **********************************************************/
  20. void delay(uchar t)
  21. {
  22.         uint j;
  23.         uchar i;
  24.         for(i=0;i<t;i++)
  25.                 for(j=0;j<1000;j++);
  26. }
  27. /**************************************
  28. 短延時(shí)
  29. **************************************/
  30. void delay5ms()   
  31. {
  32.     uchar i,v,k;
  33.     for(i=1;i>0;i--)
  34.         for(v=168;v>0;v--)
  35.             for(k=22;k>0;k--);
  36. }
  37. /**************************************
  38. 寫(xiě)指令
  39. **************************************/
  40. void lcd_Write_com(uchar com)         
  41. {
  42.         RS=0;                        //定義指令寄存器
  43.         RW=0;                                  //寫(xiě)允許
  44.         P0=com;                                          //寫(xiě)指令
  45.         delay5ms();        E=1;                //片選端上拉
  46.         delay5ms();        E=0;                //下降沿鎖存
  47. }
  48. /**************************************
  49. 寫(xiě)數(shù)據(jù)
  50. **************************************/
  51. void lcd_write_date(uchar date)       
  52. {
  53.         RS=1;                                        //定義數(shù)據(jù)寄存器
  54.         RW=0;                                        //寫(xiě)允許
  55.         P0=date;                                //寫(xiě)數(shù)據(jù)
  56.         delay5ms();        E=1;                //片選端上拉
  57.         delay5ms();        E=0;                //下降沿鎖存
  58. }
  59. /**************************************
  60. 顯示程序
  61. **************************************/
  62. void dis_lcd1602(uchar x,uchar y,uchar dat)
  63. {
  64.         uchar add;
  65.         if(y==1)         add=(0x80+x);
  66.         if(y==2)         add=(0xc0+x);
  67.         lcd_Write_com(add);                //寫(xiě)指令
  68.         lcd_write_date(dat);        //寫(xiě)數(shù)據(jù)
  69. }  
  70. /**************************************
  71. 液晶初始化
  72. **************************************/
  73. void lcd1602_init()
  74. {
  75.         lcd_Write_com(0x38);        //設(shè)置8位格式,2行,5*7
  76.         lcd_Write_com(0x01);        //清屏
  77.         lcd_Write_com(0x0c);        //整體顯示,關(guān)光標(biāo),不閃爍
  78.         lcd_Write_com(0x06);        //設(shè)定輸入方式,增量不移位
  79.         lcd_Write_com(0x80);        //初始坐標(biāo)
  80. }
  81. /**************************************
  82. 液晶顯示漢字程序
  83. **************************************/
  84. void hz_lcdDis(uchar x,uchar y,uchar *p) //漢字顯示
  85. {
  86.    uchar i=0,temp;
  87.    if(x)temp = 0x40;   else temp = 0;
  88.    for(i=y;*p!='\0';i++,p++)
  89.    {
  90.                 lcd_Write_com(i|0x80+temp);
  91.                 lcd_write_date(*p);
  92.                 delay5ms();                         
  93.    }
  94. }
  95. /**************************************
  96. 液晶顯示數(shù)字程序
  97. **************************************/
  98. void  num_lcdDis(uchar X,uchar Y,uint num,uchar n)       
  99. {
  100.         uint i=0,temp,hang;   
  101.         n +=1;
  102.            if(X)hang = 0x40;else hang = 0;
  103.            for(i=(n-1);i>0;i--)
  104.     {           
  105.                   lcd_Write_com((i+Y-1)|0x80+hang);          //從個(gè)位開(kāi)始顯示
  106.                   temp = num%10+0x30;
  107.                   lcd_write_date(temp);       
  108.                  delay5ms();
  109.                   num/=10;                                         
  110.         }       
  111. }

  112. void  num_lcdDis1_1(uint num)//input 電壓 整數(shù)部分       
  113. {
  114.         uint i,temp,x;   

  115.             x=5;
  116.            for(i=0;i<2;i++)
  117.     {         x--;  
  118.                   lcd_Write_com(0x80+x);        //寫(xiě)指令
  119.                   temp = num%10+0x30;
  120.                   lcd_write_date(temp);//        寫(xiě)數(shù)據(jù)
  121.                   num/=10;                                         
  122.         }       
  123. }
  124. /**************************************
  125. 液晶顯示數(shù)字程序
  126. **************************************/
  127. void  num_lcdDisx(uchar X,uchar Y,uint num,uchar n)       
  128. {
  129.         uint i=0,temp,hang;   
  130.         n +=1;
  131.            if(X)hang = 0x40;
  132.         else hang = 0;
  133.            for(i=(n-1);i>0;i--)
  134.     {           
  135.                   lcd_Write_com((i+Y-1)|0x80+hang);//從個(gè)位開(kāi)始顯示
  136.                   temp = num%10+0x30;
  137.                   lcd_write_date(temp);       
  138.                  delay5ms();
  139.                   num/=10;                                         
  140.         }       
  141. }
  142. /***********按鍵掃描程序****************/
  143. void keyscan()       
  144. {
  145.         static uint count2=0,count1=0;        //計(jì)數(shù)變量                       
  146.         static bit key_sign=0;                        //按鍵自鎖標(biāo)志
  147.         if(key1==0)                                                //檢測(cè)按鍵為0
  148.         {        delay(50);
  149.                 if(key1==0){
  150.                            count1++;
  151.                         stop=!stop;
  152.                
  153.                 }
  154.                                                 //計(jì)數(shù)延時(shí)消抖
  155.           
  156.         }
  157.         else
  158.         {
  159.                 count1=0;                                        //計(jì)數(shù)變量清0
  160.         }
  161. }
  162. /***********定時(shí)器初始化程序****************/
  163. void Timer0Init(void)                                //2.5毫秒@11.0592MHz
  164. {
  165.         TMOD = 0x01;                                        //設(shè)置定時(shí)器模式
  166.         TL0 = 0x00;                                                //設(shè)置定時(shí)初值
  167.         TH0 = 0xF7;                                                //設(shè)置定時(shí)初值
  168.         TR0 = 1;                                                //定時(shí)器0開(kāi)始計(jì)時(shí)
  169.         EA=1;                                                        //開(kāi)總中斷
  170.         ET0=1;                                                        //開(kāi)定時(shí)器0中斷
  171. }
  172. /***************主程序****************/
  173. void main()
  174. {
  175. int cm=0;
  176.         Timer0Init();                                        //定時(shí)器初始化
  177.         lcd1602_init();//液晶初始化
  178.         hz_lcdDis(0,0,"Timer system");        //啟動(dòng)電源
  179.         hz_lcdDis(1,7,":  :");                //歡迎你
  180.                 led=1;
  181.         while(1)
  182.         {
  183.                 //        Cnt1min                   Cnt1s                         Cnt10ms       
  184.                 num_lcdDis(1,5,Cnt1min,2);
  185.                 num_lcdDis(1,8,Cnt1s,2);
  186.                 num_lcdDis(1,11,Cnt10ms,2);
  187.                 if(Cnt1min>9){
  188.                    led=0;
  189.                 }
  190.          
  191.                 keyscan();                                        //按鍵掃描
  192.         }
  193. }
  194. /**************中斷服務(wù)程序*****************/
  195. void timer0() interrupt        1                        //2.5毫秒@11.0592MHz
  196. {
  197.         TL0 = 0x00;                                                //設(shè)置定時(shí)初值
  198.         TH0 = 0xF7;                                                //設(shè)置定時(shí)初值
  199.         Cntus++;                                                //中斷變量Cntus自+1
  200.         if(Cntus>=4)                                        //10ms
  201.         {
  202.                 Cntus=0;                                        //清0
  203.                 if(stop==1)                                        //啟動(dòng)
  204.                         Cnt10ms++;                                //10毫秒計(jì)數(shù)
  205.                 if(Cnt10ms>=100)
  206.                 {
  207.                         Cnt10ms=0;
  208.                         ledc=!ledc;
  209.                         Cnt1s++;
  210.                                                         //秒計(jì)數(shù)
  211.                         if(Cnt1s>=60)
  212.                         {
  213.                                 Cnt1s=0;
  214.                                 Cnt1min++;                        //分計(jì)數(shù)
  215.                                 if(Cnt1min>=100)
  216.                                         Cnt1min=0;
  217.                         }
  218.                 }
  219.         }
  220. }
復(fù)制代碼

所有資料51hei提供下載:
毫秒級(jí)的秒表.zip (131.34 KB, 下載次數(shù): 70)

評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:502875 發(fā)表于 2020-2-23 00:21 | 只看該作者
頂你,學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

板凳
ID:91165 發(fā)表于 2020-3-20 08:57 | 只看該作者
精度夠高   
回復(fù)

使用道具 舉報(bào)

地板
ID:396513 發(fā)表于 2020-10-29 12:16 | 只看該作者
懶得寫(xiě)了 一搜發(fā)現(xiàn)竟然是自己發(fā)的
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国外成人在线视频网站 | 亚洲午夜精品一区二区三区 | 欧美黑人激情 | 亚洲精品一区二区三区在线 | 日本一区二区高清不卡 | 久久视频精品在线 | 亚洲精品视频网站在线观看 | 亚洲天堂男人的天堂 | 综合国产在线 | 可以在线看的黄色网址 | 精品国产一区二区国模嫣然 | 日韩亚洲视频 | 99欧美精品 | 激情av网站 | 成人国产综合 | 国产伊人精品 | 成人在线视频网 | 男人天堂网址 | 欧美久久一区 | 久久精品一区 | 奇米久久久 | 99re视频在线免费观看 | 中文无码日韩欧 | 爱操影视| 日本久久精品视频 | 国产一区二区三区免费观看在线 | 91一区二区在线观看 | 国产精品视频免费观看 | 精品久久国产 | 日韩精品中文字幕在线 | 国产伦精品一区二区三区精品视频 | 激情国产 | 伊人青青久久 | 久久久xx| 欧美日韩精品一区二区 | 国产精品99久久久久久久久久久久 | www日本高清 | 欧美精品一二三区 | 久久久久久999 | 亚洲国产第一页 | 99精品久久 |