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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3937|回復: 2
打印 上一主題 下一主題
收起左側

用51單片機制作的電子秒表 含源碼和proteus仿真 第一次發帖,不足之處望海涵

[復制鏈接]
跳轉到指定樓層
樓主
設計一款能夠任意啟停的秒表,5LED數碼顯示,計時單位為1/100
基本任務:
1、設計出如圖1所示的單片機電路。計時范圍為000.00~999.99S。
按鍵標號說明:
START
STOP
RST
RESTART
MOD-CHOOSE
NEXT
開始計時
暫停計時
復位清零
重新計時
計時模式切換
歷史計時切換

Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)

1、單片機總電路
當剛上電時,數碼管和LCD的顯示值都為零。按下START鍵開始計時,按下STOP暫停計時,利用單片機的復位電路對示值清零,即按下RST鍵實現復位清零。
進階任務:
1.設置重新啟動功能。
重啟功能即重新開始計時功能,可以用RESRTART按鍵實現。其中RESTART鍵和START鍵均可以使單片機進入外部中斷0,兩者之間通過二極管隔離,START按鍵按下時不會拉低RESRTART所連的P3.4端口的值。按下RESRTART鍵時不但可以拉低P3.4端口的值,同時可以進入外部中斷零。
2.設置計時功能。可以同時計時三個時間,停止后可通過按鍵選擇顯示。
與進階任務1中類似,使用相同的硬件電路。普通計時模式與次模式可以使用MOD-CHOOSE鍵進行切換,當這個鍵彈起時,為普通計時模式,按下時為同時計時三個時間。
當處于計時三個時間的模式時,STOP鍵需按下三次才會暫停,每一次按下時的時間都會存儲起來,暫停以后可以通過NEXT鍵使時間從高到低循環顯示。
3. 同時選用LCD液晶屏顯示。
    如圖1所示。

單片機源程序如下:
  1. #include <reg52.h>
  2. #include <stdio.h>
  3. #include <intrins.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. sbit start=P3^2;
  7. sbit stop =P3^3;
  8. sbit clear=P3^4;
  9. sbit swch =P3^5;
  10. sbit next =P3^7;
  11. //sbit e1=P2^0;sbit e2=P2^1;sbit e3=P2^2;sbit e4=P2^3;sbit e5=P2^4;
  12. sbit rs=P3^0;
  13. sbit rw=P3^1;
  14. sbit en=P3^6;

  15. sbit dp=P1^7;

  16. char displaytemp[16];
  17. uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  18. uchar table2[5];//存儲個位到萬位
  19. uint k;   //每10ms加一
  20. uchar ktime=1;//停止按鍵按下次數
  21. uint table3[5];//存儲多次計時的時間
  22. uchar ch2=0x01;
  23. uchar ch1=0;
  24. uchar q;
  25. uint flag=3;
  26. float klcd;

  27. void delay(uchar z)  //延時
  28. {
  29.   uchar x,y;
  30.   for(x=z;x>0;x--)
  31.   for(y=110;y>0;y--);
  32. }

  33. void led_disp(uchar ch0)  //led顯示
  34. {
  35.   P2=~ch2;
  36.   P1=table[table2[ch0]];
  37.   if(ch2==0x04)
  38.     dp=1;
  39.   else
  40.     dp=0;
  41.   ch2=ch2<<1;
  42.   if(ch2==0x20)
  43.     ch2=0x01;
  44. }

  45. /*------------------------------------------------
  46.               判忙函數
  47. ------------------------------------------------*/
  48. bit lcd_busy(void)
  49. {
  50.   P0= 0xFF;
  51.   rs=0;
  52.   rw=1;
  53.   en=0;
  54.   _nop_();
  55.   en=1;
  56.   return (bit)(P0 & 0x80);
  57. }
  58. /*------------------------------------------------
  59.               寫入命令函數
  60. ------------------------------------------------*/
  61. void LCD_Write_Com(unsigned char com)
  62. {  
  63.   //while(lcd_busy()); //忙則等待
  64.   delay(2);
  65.   rs=0;
  66.   rw=0;
  67.   en=1;
  68.   P0= com;
  69.   _nop_();
  70.   en=0;
  71. }
  72. /*------------------------------------------------
  73.               寫入數據函數
  74. ------------------------------------------------*/
  75. void LCD_Write_Data(unsigned char Data)
  76. {
  77.   //while(lcd_busy()); //忙則等待
  78.   delay(2);
  79.   rs=1;
  80.   rw=0;
  81.   en=1;
  82.   P0= Data;
  83.   _nop_();
  84.   en=0;
  85. }

  86. void lcd_clear(void) //清屏
  87. {
  88.   LCD_Write_Com(0x01);
  89.   delay(3);
  90. }

  91. void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
  92. {     
  93.   if (y==0)
  94.   {     
  95.           LCD_Write_Com(0x80 + x);    //表示第一行
  96.   }
  97.   else
  98.   {      
  99.           LCD_Write_Com(0xC0 + x);    //表示第二行
  100.   }        
  101.   while (*s)
  102.   {     
  103.     LCD_Write_Data( *s);     
  104.     s++;     
  105.   }
  106. }

  107. void lcd_init(void)
  108. {
  109.   LCD_Write_Com(0x38);    /*顯示模式設置*/
  110.   delay(2);
  111.   LCD_Write_Com(0x38);
  112.   delay(2);
  113.   LCD_Write_Com(0x38);
  114.   delay(2);
  115.   LCD_Write_Com(0x38);  
  116.   LCD_Write_Com(0x08);    /*顯示關閉*/
  117.   LCD_Write_Com(0x01);    /*顯示清屏*/
  118.   LCD_Write_Com(0x06);    /*顯示光標移動設置*/
  119.   delay(2);
  120.   LCD_Write_Com(0x0C);    /*顯示開及光標設置*/
  121. }

  122. void main(void)
  123. {
  124.    uchar m=0;
  125.    k=0;
  126.    lcd_init();
  127.    TMOD=0x11;
  128.    TH0=(65536-10000)/256;
  129.    TL0=(65536-10000)%256;
  130.    TH1=(65536-8000)/256;
  131.    TL1=(65536-8000)%256;
  132.    EA=1;
  133.    IT0=1;EX0=1;
  134.    IT1=1;EX1=1;
  135.    TR0=0;ET0=1;
  136.    TR1=1;ET1=1;
  137.    while(1)
  138.    {
  139.      klcd=(float)k/100;
  140.      sprintf(displaytemp,"% 3.2f",klcd);
  141.      LCD_Write_String(1,0,displaytemp);
  142.      if(table2[0]==table2[1]==table2[2]==table2[3]==table2[4]==9)
  143.      {
  144.        EA=0;
  145.        for(q=0;q++;q<5)
  146.          table2[q]=0;
  147.        EA=1;
  148.      }   
  149.    }
  150. }

  151. void int0(void) interrupt 0
  152. {
  153.   if(clear==0)
  154.   {
  155.     TR0=0;
  156.     k=0;
  157.     delay(2);
  158.     TR0=1;
  159.   }
  160.   else if(clear&next)
  161.     TR0=1;
  162.   else
  163. //       if(table3[3]!=0)
  164.        {
  165.          k=table3[flag];
  166.          flag--;
  167.          if(flag==0)
  168.            flag=3;
  169.        }      
  170. }

  171. void int1(void) interrupt 2
  172. {
  173.   if((swch==1))
  174.     TR0=0;
  175.   else
  176.   {
  177.     TR0=0;
  178.     table3[ktime]=k;
  179.     delay(1);
  180.     TR0=1;
  181.     ktime++;
  182.     if(ktime==4)
  183.     {
  184.       ktime=1;
  185.       TR0=0;
  186. ……………………

  187. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
電子秒表.7z (99.5 KB, 下載次數: 92)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:906076 發表于 2021-4-15 10:38 | 只看該作者
感謝樓主,本人萌新,有不太懂的地方,樓主能否哦把仿真圖各個模塊講解一下,感謝。!
回復

使用道具 舉報

板凳
ID:868449 發表于 2022-4-11 22:52 | 只看該作者
2018342326 發表于 2021-4-15 10:38
感謝樓主,本人萌新,有不太懂的地方,樓主能否哦把仿真圖各個模塊講解一下,感謝。!

抱歉,之前很久未登錄,請問現在您應該疑惑已解了吧
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 97精品国产97久久久久久免费 | 在线观看深夜视频 | 久久毛片 | 亚洲视频在线观看 | 五月激情综合网 | 福利社午夜影院 | 亚洲免费在线视频 | 欧美日韩在线一区 | 久久久久免费精品国产小说色大师 | 中文字幕亚洲一区二区三区 | 毛片一级片| 欧美性猛交一区二区三区精品 | 国产专区视频 | 国产精品 欧美精品 | 欧美一区二区三区免费在线观看 | 中文字幕欧美一区 | 国产精品美女在线观看 | 精品国产伦一区二区三区观看说明 | 青青久久| 国产免费一区二区三区 | 乱码av午夜噜噜噜噜动漫 | 亚洲日产精品 | 国产欧美精品区一区二区三区 | 国产精品国产a | 欧美一二三区 | 999国产视频 | 精品欧美一区二区精品久久 | 四虎最新地址 | 国产精品亚洲综合 | 日韩精品极品视频在线观看免费 | 欧美黄视频 | 亚洲成人a v | h片免费看| 国产一级视频在线观看 | 欧美视频日韩 | 欧美成人影院在线 | 一区二区三区电影网 | 日韩高清国产一区在线 | 天天躁日日躁xxxxaaaa | 一级毛片在线播放 | 日日摸夜夜添夜夜添特色大片 |