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

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

QQ登錄

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

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

基于51單片機(jī)的電子表仿真設(shè)計(jì)+代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:434463 發(fā)表于 2018-11-27 19:47 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
51單片機(jī)課程設(shè)計(jì)仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)



單片機(jī)源程序如下:
  1. //電子表,針對(duì)教材設(shè)計(jì)
  2. //用共陽(yáng)數(shù)碼管在P0口、P2口以及74hc04芯片驅(qū)動(dòng)下,顯示24小時(shí)制電子表
  3. //電子表程序是利用STC8591內(nèi)部的定時(shí)∕計(jì)數(shù)器實(shí)現(xiàn)精確計(jì)數(shù)。
  4. //電子表共有四個(gè)按鍵key1、key2、key3、key4分別實(shí)現(xiàn)調(diào)模式、
  5. //增加、減少、復(fù)位功能,其中調(diào)模式按鍵key1可以分別調(diào)節(jié)小時(shí)、分鐘、秒鐘、鬧鈴          
  6. //設(shè)計(jì):?jiǎn)纹瑱C(jī)創(chuàng)新工作室--王曙光設(shè)計(jì),2015年12月15日
  7. #include<reg51.h>
  8. #include<key.c>
  9. unsigned char i,j,k;
  10. unsigned char seven_seg[] = {0xc0,0xf9,0xa4,0xb0,0x99,
  11.                                                                 0x92,0x82,0xf8,0x80,0x90};
  12. unsigned char flash;
  13. sbit SW = P3^3;                                                                                                                                                //接繼電器驅(qū)動(dòng)電路,低電平繼電器吸合,控制電鈴
  14. void timer0_isr(void) interrupt 1
  15. {
  16.         TH0 = 0xf8;
  17.         TL0 = 0x2f;
  18.         i++;
  19.         if(i >= 250)                                                                                                                                        //半秒時(shí)間到
  20.         {
  21.                 flash = ~flash;                                                                                                                                //得到8位閃爍變量
  22.                 i = 0;
  23.                 j++;
  24.         }
  25.         if(j >= 2)                                                                                                                                                //1分鐘到
  26.         {
  27.                 sec++;
  28.                 j = 0;
  29.         }                                                                                                       
  30.         if(sec >= 60)                                                                                                                                        //1分鐘到
  31.         {                                                                                                                                               
  32.                 min++;
  33.                 sec = 0;
  34.         }
  35.         if(min >= 60)                                                                                                                                        //1小時(shí)到
  36.         {                                                                                                 
  37.                 hour++;
  38.                 min = 0;
  39.         }
  40.         if(hour >= 24)   
  41.         hour = 0;
  42.         P0 = 0xff;                                                                                                                                                //Protuse軟件仿真消隱
  43.         if(key1_flag == 0)                                                                                                                                //正常走時(shí)
  44.         {
  45.                 switch(k)
  46.                 {
  47.                         case 0:P0 = seven_seg[sec % 10]; P2 = ~0x01;break;
  48.                         case 1:P0 = seven_seg[sec / 10]; P2 = ~0x02;break;
  49.                            case 2:P0 = seven_seg[min % 10] & (0x7f | flash); P2 = ~0x04;break;                //小數(shù)點(diǎn)閃爍
  50.                            case 3:P0 = seven_seg[min / 10]; P2 = ~0x08;break;
  51.                            case 4:P0 = seven_seg[hour % 10] & (0x7f | flash); P2 = ~0x10;break;        //小數(shù)點(diǎn)閃爍
  52.                            case 5:P0 = seven_seg[hour / 10]; P2 = ~0x20;break;
  53.                 }
  54.         }
  55.         if(key1_flag == 1)                                                                                                                                //調(diào)小時(shí),小時(shí)閃爍
  56.         {
  57.                 j = 0;
  58.                 switch(k)
  59.                 {
  60.                         case 0: P0 = seven_seg[sec_t % 10]; P2 = ~0x01;break;
  61.                         case 1: P0 = seven_seg[sec_t / 10]; P2 = ~0x02;break;
  62.                            case 2: P0 = seven_seg[min_t % 10]; P2 = ~0x04;break;
  63.                            case 3: P0 = seven_seg[min_t / 10]; P2 = ~0x08;break;
  64.                            case 4: P0 = seven_seg[hour_t % 10] | flash; P2 = ~0x10;break;                        //小時(shí)閃爍
  65.                            case 5: P0 = seven_seg[hour_t / 10] | flash; P2 = ~0x20;break;                        //小時(shí)閃爍
  66.                 }
  67.         }
  68.         if(key1_flag == 2)                                                                                                                                //調(diào)分鐘
  69.         {
  70.                 j = 0;
  71.                 switch(k)
  72.                 {
  73.                         case 0: P0 = seven_seg[sec_t % 10]; P2 = ~0x01;break;
  74.                         case 1: P0 = seven_seg[sec_t / 10]; P2 = ~0x02;break;
  75.                            case 2: P0 = seven_seg[min_t % 10]| flash; P2 = ~0x04;break;                         //分閃爍
  76.                            case 3: P0 = seven_seg[min_t / 10]| flash; P2 = ~0x08;break;                        //分閃爍
  77.                            case 4: P0 = seven_seg[hour_t % 10] ; P2 = ~0x10;break;
  78.                            case 5: P0 = seven_seg[hour_t / 10]; P2 = ~0x20;break;
  79.                 }
  80.         }       
  81.         if(key1_flag == 3)                                                                                                                                //調(diào)秒
  82.         {
  83.                 j = 0;
  84.                 switch(k)
  85.                 {
  86.                         case 0: P0 = seven_seg[sec_t % 10]| flash; P2 = ~0x01;break;                        //秒閃爍
  87.                         case 1: P0 = seven_seg[sec_t / 10]| flash; P2 = ~0x02;break;                        //秒閃爍
  88.                            case 2: P0 = seven_seg[min_t % 10]; P2 = ~0x04;break;
  89.                            case 3: P0 = seven_seg[min_t / 10]; P2 = ~0x08;break;
  90.                            case 4: P0 = seven_seg[hour_t % 10] ; P2 = ~0x10;break;
  91.                            case 5: P0 = seven_seg[hour_t / 10]; P2 = ~0x20;break;
  92.                 }
  93.         }
  94.         if(key1_flag == 4)                                                                                                                                //調(diào)定鬧小時(shí)
  95.         {
  96.                 j = 0;
  97.                 switch(k)
  98.                 {
  99.                         case 0: P0 = seven_seg[min_r % 10]; P2 = ~0x01;break;
  100.                         case 1: P0 = seven_seg[min_r / 10]; P2 = ~0x02;break;
  101.                            case 2: P0 = seven_seg[hour_r % 10]| flash; P2 = ~0x04;break;                        //定鬧小時(shí)閃爍
  102.                            case 3: P0 = seven_seg[hour_r  / 10]| flash; P2 = ~0x08;break;                        //定鬧小時(shí)閃爍
  103.                         case 4: P0 = 0xff;P2 = ~0x10;break;                                                                                //不顯示
  104.                         case 5: P0 = 0x0c;P2 = ~0x20;break;                                                                                //顯示字符"P"
  105.                 }
  106.         }
  107.         if(key1_flag == 5)                                                                                                                                //調(diào)定鬧分鐘
  108.         {
  109.                 j = 0;
  110.                 switch(k)
  111.                 {
  112.                         case 0: P0 = seven_seg[min_r % 10]| flash; P2 = ~0x01;break;                        //定鬧分閃爍
  113.                         case 1: P0 = seven_seg[min_r / 10]| flash; P2 = ~0x02;break;                        //定鬧分閃爍
  114.                            case 2: P0 = seven_seg[hour_r % 10]; P2 = ~0x04;break;
  115.                            case 3: P0 = seven_seg[hour_r  / 10]; P2 = ~0x08;break;
  116.                         case 4: P0 = 0xff;P2 = ~0x10;break;                                                                                //不顯示
  117.                         case 5: P0 = 0x0c;P2 = ~0x20;break;                                                                                //顯示字符"P"
  118.                 }
  119.         }
  120.         k++;
  121.         if(k >= 6)k = 0;
  122. }
  123. void timer0_initi(void)                                                                                                                                //中斷初始化函數(shù)
  124. {
  125.         TMOD = 0x01;                                                                                                                                       
  126.         TH0 = 0xf8;
  127.         TL0 = 0x2f;                                                                                                                                                //每次觸發(fā)中斷后從裝初值,使下次對(duì)機(jī)器脈沖計(jì)數(shù)2000個(gè)計(jì)滿溢出引發(fā)中斷  約0.2ms
  128.         EA = 1;                                                                                                                                                        //開(kāi)總中斷
  129.         TR0 = 1;                                                                                                                                                //啟動(dòng)定時(shí)器T0
  130.         ET0 = 1;                                                                                                                                                //開(kāi)T0中斷
  131. }
  132. void main(void)
  133. {
  134.         timer0_initi();
  135.         while(1)
  136.         {
  137.                 key();                                                                                                                                                //調(diào)用按鍵函數(shù)
  138.                 if(min == min_r && hour == hour_r)                                                                                        //當(dāng)時(shí)間等于鬧鐘                       
  139.                 SW = 1;                                                                                                                                                //鬧鈴響起
  140.                 else
  141.                 SW = 0;
  142.         }
  143. }
復(fù)制代碼

所有資料51hei提供下載:
電子表設(shè)計(jì).rar (55.19 KB, 下載次數(shù): 71)


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

使用道具 舉報(bào)

沙發(fā)
ID:435222 發(fā)表于 2018-11-28 20:09 | 只看該作者
謝謝樓主
回復(fù)

使用道具 舉報(bào)

板凳
ID:618143 發(fā)表于 2019-10-29 23:07 | 只看該作者
多謝
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美在线观看 | 欧美极品在线 | 国产精品久久a | 四虎最新 | 五月天国产| 伊人免费网 | 久久精品一级 | 国产精品久久久久久久久久三级 | 久久久久国产 | 一区二区视频 | 看av网| 理论片87福利理论电影 | 成人在线精品 | 欧美精品一区二区在线观看 | 国产最好的av国产大片 | 91九色网站 | 国产日韩精品一区二区 | 午夜精品在线 | 成人免费三级电影 | 欧美精品一区二区三区四区五区 | 欧美日韩久久精品 | 久久久久久亚洲精品 | 欧美成人一区二区三区 | 午夜影视 | 日韩高清一区 | 亚洲不卡在线观看 | 日本在线免费 | 欧美精品在线一区 | 欧产日产国产精品国产 | 真人女人一级毛片免费播放 | 久草.com | 色在线免费视频 | 中文字幕日韩三级 | 欧美一区二区三区 | 国产一区二区三区高清 | 日韩高清一区二区 | 亚洲精品一区在线 | 日本精品视频一区二区 | 性视频网 | 国产精品一级 | 色在线视频网站 |