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

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

QQ登錄

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

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

單片機(jī)倒計(jì)時(shí)秒表系統(tǒng)實(shí)驗(yàn)程序Proteus仿真

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:863267 發(fā)表于 2020-12-19 11:12 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
電路圖如圖1所示,通過(guò)51單片機(jī)的P1作為段口,P0作為位口構(gòu)成2位LED動(dòng)態(tài)顯示的硬件電路。P2.0、P2.1連接兩個(gè)按鍵K0、K1分別用于調(diào)整初始時(shí)間的+1和-1,P3.0連接LED燈,P3.2連接復(fù)位按鍵,P3.3連接啟動(dòng)按鍵。
要求實(shí)現(xiàn)一倒計(jì)時(shí)秒表,啟動(dòng)后顯示初始時(shí)間20,可以調(diào)整初始時(shí)間。調(diào)整結(jié)束后按下啟動(dòng)鍵,開(kāi)始倒計(jì)時(shí)。在倒計(jì)時(shí)過(guò)程中調(diào)整初始時(shí)間按鍵無(wú)效。倒計(jì)時(shí)時(shí)間到,顯示00,并且LED燈亮。整個(gè)過(guò)程中都可以復(fù)位,復(fù)位后顯示初始時(shí)間,LED燈滅。圖1  倒計(jì)時(shí)秒表的電路原理圖

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


單片機(jī)源程序如下:
  1. #include <reg51.h>
  2. unsigned  char code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共陰數(shù)碼管 0-9
  3. sbit led=P3^0;
  4. sbit s1=P0^0;
  5. sbit s2=P0^1;
  6. sbit k0=P2^0;
  7. sbit k1=P2^1;
  8. int sec=0,i,a,b=20,key1;
  9. /*-----延遲函數(shù)-------*/
  10. void delay(int z)
  11. {
  12.         while(z-->0);
  13. }
  14. /*-----顯示函數(shù)-------*/
  15. void display(int n)
  16. {
  17.         if(n>0)
  18.         {
  19.         s2=1;s1=0;          //顯示十位
  20.         P1=tab[n/10];  //除10,取十位數(shù)值
  21.         delay(100);           //延遲顯示
  22.         s1=1;s2=0;           //顯示個(gè)位
  23.         P1=tab[n%10];  //求余,取個(gè)位數(shù)值
  24.         delay(100);           //延遲
  25.         }
  26.         else
  27.         {                                //當(dāng)輸入值小于0,顯示0
  28.         s2=1;s1=0;            //顯示十位
  29.         P1=tab[0];            //除10,取十位數(shù)值
  30.         delay(100);            //延遲
  31.         s1=1;s2=0;            //顯示個(gè)位
  32.         P1=tab[0];                //求余,取個(gè)位數(shù)值
  33.         delay(100);            //延遲顯示
  34.         }                          
  35. }
  36. /*-----外部中斷0中斷服務(wù)函數(shù)----------*/
  37. void RESET() interrupt        0
  38. {
  39.         sec=0;         //恢復(fù)初始值
  40.         b=20;         //恢復(fù)初始值
  41.         TR0=0;         //關(guān)閉定時(shí)器
  42.        
  43. }
  44. /*-----外部中斷1中斷服務(wù)函數(shù)----------*/
  45. void START() interrupt        2
  46. {
  47.         TR0=1;        //打開(kāi)定時(shí)器
  48. }
  49. /*-----定時(shí)器T0服務(wù)函數(shù),計(jì)時(shí)功能----------*/
  50. void timer0() interrupt 1
  51. {
  52.         i--;   //50ms時(shí)間到
  53.         TH0=(65536-50000)/256;        //存放高8位,50ms
  54.         TL0=(65536-50000)%256;          //存放低8位
  55.         if(i==0)
  56.         {
  57.         i=20;            //1s計(jì)數(shù)
  58.         sec++;                        //軟件計(jì)數(shù)1s
  59.         }
  60. }
  61. /*------鍵值掃描函數(shù)----------*/
  62. void key()
  63. {       
  64.         k0=1;k1=1;                    //讀按鍵
  65.         key1=P2;                //將P2的值賦值給key1
  66.         key1=key1&0x03;                //屏蔽高6位,保留k0,k1的值
  67.         while(key1!=0x03)   //判斷是否有按鍵按下
  68.         {
  69.         delay(600);                        //消抖動(dòng)
  70.         key1=P2;
  71.         key1=key1&0X03;
  72.         while(key1!=0x03)         //當(dāng)有按鍵按下時(shí)
  73.         {
  74.         if(k0==0) b=b+1;            //按下k0按鍵時(shí),初始值加1
  75.         else b=b-1;                         //按下k1按鍵時(shí),初始值減1
  76.         k0=1;k1=1;                   //判斷按鍵是否抬起
  77.         key1=P2;                  //重新將P2的值賦值給key1
  78.         key1=key1&0x03;
  79.         while(key1!=0x03)  //判斷是否有按鍵按下
  80.         {
  81.         key1=P2;
  82.         key1=key1&0x03;
  83.         }
  84.         }
  85.         }
  86. }
  87. /*------主函數(shù)----------*/
  88. void main()
  89. {
  90.         TMOD=0X01;                           //設(shè)定定時(shí)器0工作,工作方式1
  91.         TH0=(65536-50000)/256;         //存放高8位,50ms
  92.         TL0=(65536-50000)%256;         //存放低8位
  93.         IT0=1;IT1=1;                 //外部中斷選擇下降沿觸發(fā)
  94.         IE=0X87;                         //開(kāi)啟INT0,INT1,T0
  95.         PX0=1;                            //設(shè)定INT0為高優(yōu)先級(jí)
  96.         led=1;                                //初始燈熄滅
  97.         TR0=0;                                //初始計(jì)數(shù)停止
  98.         i=2;
  99.         while(1)
  100.         {
  101.         a=b-sec;                         //將增計(jì)時(shí)變?yōu)闇p計(jì)時(shí)
  102.         if(TR0==0)                         //當(dāng)定時(shí)器關(guān)閉時(shí)開(kāi)啟鍵值掃描
  103.         {key();}
  104.         display(a);                         //顯示函數(shù)
  105.         if(a<=0)                                       
  106.         {                                         
  107.         led=0;                                 //當(dāng)減計(jì)時(shí)為0時(shí),報(bào)警燈點(diǎn)亮
  108.         }
  109.         else
  110.         {
  111.         led=1;                                //當(dāng)減計(jì)時(shí)不為0時(shí),報(bào)警燈熄滅
  112.         }
  113.         }

  114. }
復(fù)制代碼

所有資料51hei提供下載:
單片機(jī)系統(tǒng)實(shí)驗(yàn).rar (41.61 KB, 下載次數(shù): 62)

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品网 | 毛片毛片毛片毛片毛片 | 91热在线 | 黄色免费观看网站 | 亚洲欧美视频一区 | 欧美在线综合 | 亚洲精品一二区 | 亚洲福利一区二区 | 激情国产 | 中国黄色毛片视频 | 成人黄色a | 黄a大片 | 亚洲国产专区 | 亚洲精品福利在线 | 亚洲最大成人综合 | 在线激情视频 | 成人国产精品久久 | 国产精品伦一区二区三级视频 | 久草视频在线看 | 韩日av片| 91福利电影在线观看 | 国产精品一区二区久久 | 国产成人影院 | 三级成人片 | 欧美日韩视频 | 亚洲一区二区三区久久久 | 久久高清国产视频 | 天天操天天拍 | 午夜a v电影 | 亚洲国产精品久久久久 | 欧美精品网站 | 日韩视频在线一区 | 日韩免费1区二区电影 | 亚洲欧美中文字幕在线观看 | 亚洲成人天堂 | 尤物视频在线免费观看 | 不卡视频一区二区三区 | 亚洲精品小视频在线观看 | jlzzjlzz欧美大全 | 天天爱爱网 | 久草在线青青草 |