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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

帶年月日鬧鐘的時鐘 帶proteus仿真

[復制鏈接]
跳轉到指定樓層
樓主
帶年月日鬧鐘的時鐘 帶proteus仿真


帶proteus仿真圖


所有資料下載:
hui2.rar (64.86 KB, 下載次數: 43)


程序:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define play P0
  5. sbit LSA=P2^0;
  6. sbit LSB=P2^1;
  7. sbit LSC=P2^2;
  8. sbit led=P2^3; //鬧鐘檢測
  9. sbit k1=P2^7;//功能切換
  10. sbit k2=P2^6;//設置加
  11. sbit k3=P2^5;// 設置減
  12. sbit k4=P2^4; //設置位選
  13. sbit beet=P1^5; //蜂鳴器輸出口
  14. uchar y;//按鍵松開
  15. uchar kai;//鬧鐘開啟標志
  16. uchar she;//設置標志
  17. uchar t;//時間計數
  18. uchar num;//功能切換
  19. uchar fen;
  20. uchar shi;
  21. uchar miao;
  22. uchar yue;
  23. uchar nian;
  24. uchar ri;
  25. uchar shijian[8];
  26. uchar shi1; //鬧鈴時
  27. uchar fen1; //鬧鈴分
  28. unsigned char code shuma[12]={
  29. 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, //數碼管顯示數組0到9
  30. 0x7f,0x6f,0x40,0x00};
  31. uchar brunyue[12]={31,28,31,30,31,30,31,31,30,31,30,31};
  32. uchar runyue[12]={31,29,31,30,31,30,31,31,30,31,30,31};
  33. void zhongshe();
  34. void qishe();
  35. void naoshe();
  36. void shezhi();
  37. void delay10ms(void) //誤差 0us
  38. {
  39. unsigned char a,b,c;
  40. for(c=1;c>0;c--)
  41. for(b=38;b>0;b--)
  42. for(a=130;a>0;a--);
  43. }
  44. void naozhong()
  45. { uint a,m;
  46. if((shi1==shi)&&(fen1==fen)&&(kai%2))
  47. { for(m=20;m>0;m--)
  48. for(a=10;a>0;a--)
  49. if((k1==0)||(k2==0)||(k3==0)||(k4==0))
  50. { kai=0;break; }
  51. else
  52. beet=~beet;
  53. }
  54. }
  55. void plays() //輸出顯示
  56. {
  57. unsigned char i;
  58. unsigned int j;
  59. for(i=0;i<8;i++)
  60. {
  61. switch(i) //位選,選擇點亮的數碼管,
  62. {
  63. case(0):
  64. LSA=0;LSB=0;LSC=0; break;//顯示第0位
  65. case(1):
  66. LSA=1;LSB=0;LSC=0; break;//顯示第1位
  67. case(2):
  68. LSA=0;LSB=1;LSC=0; break;//顯示第2位
  69. case(3):
  70. LSA=1;LSB=1;LSC=0; break;//顯示第3位
  71. case(4):
  72. LSA=0;LSB=0;LSC=1; break;//顯示第4位
  73. case(5):
  74. LSA=1;LSB=0;LSC=1; break;//顯示第5位
  75. case(6):
  76. LSA=0;LSB=1;LSC=1; break;//顯示第6位
  77. case(7):
  78. LSA=1;LSB=1;LSC=1; break;//顯示第7位
  79. }
  80. play=shuma[shijian[i]];
  81. if(t>50)
  82. { switch(she)
  83. {
  84. case(3):
  85. if((i==0)||(i==1))
  86. play=0x00; break;
  87. case(2):
  88. if((i==3)||(i==4))
  89. play=0x00; break;
  90. case(1):
  91. if((i==6)||(i==7))
  92. play=0x00; break;
  93. }
  94. }
  95. j=10; //掃描間隔時間設定
  96. while(j--);
  97. play=0x00;//消隱
  98. }
  99. }
  100. void nao()//鬧鐘賦值
  101. { shijian[7]=kai;
  102. shijian[6]=11;
  103. shijian[5]=11;
  104. shijian[4]=fen1%10;
  105. shijian[3]=fen1/10;
  106. shijian[2]=10;
  107. shijian[1]=shi1%10;
  108. shijian[0]=shi1/10;


  109. }
  110. void rili() //日期賦值
  111. { shijian[7]=ri%10;
  112. shijian[6]=ri/10;
  113. shijian[5]=10;
  114. shijian[4]=yue%10;
  115. shijian[3]=yue/10;
  116. shijian[2]=10;
  117. shijian[1]=nian%10;
  118. shijian[0]=nian/10;
  119. }
  120. void zhong()//電子鐘賦值
  121. { shijian[7]=miao%10;
  122. shijian[6]=miao/10;
  123. shijian[5]=10;
  124. shijian[4]=fen%10;
  125. shijian[3]=fen/10;
  126. shijian[2]=10;
  127. shijian[1]=shi%10;
  128. shijian[0]=shi/10;
  129. }
  130. void InitTimer0(void)
  131. {
  132. TMOD = 0x01;
  133. TH0 = 0x0D8;
  134. TL0 = 0x0F0;
  135. EA = 1;
  136. ET0 = 1;
  137. TR0 = 1;
  138. }
  139. void shezhi()//功能設置函數
  140. { if((she!=0)&&((k2==0)||(k3==0)))
  141. { delay10ms();
  142. if((she!=0)&&((k2==0)||(k3==0)))
  143. {
  144. switch(num)
  145. { case(0):
  146. zhongshe(); break;
  147. case(1):
  148. qishe(); break;
  149. case(2):
  150. naoshe();break;
  151. }
  152. }
  153. }
  154. }
  155. void main()
  156. {
  157. num=0;kai=1;she=0;
  158. fen1=1;shi1=0;
  159. miao=0;fen=0;shi=0;
  160. ri=29;yue=5;nian=16;
  161. InitTimer0();
  162. while(1)
  163. {
  164. if(k1==0)
  165. {delay10ms();
  166. if(k1==0)
  167. {num=(num+4)%3;
  168. she=0;}
  169. led=~led;
  170. while(!k1) ;}
  171. if(k4==0)
  172. {delay10ms();
  173. if(k4==0)
  174. she=(she+5)%4;
  175. while(!k4) ;
  176. }
  177. shezhi();
  178. naozhong();
  179. plays();

  180. }
  181. }
  182. void Timer0Interrupt(void) interrupt 1
  183. {
  184. TH0 = 0x0D8;
  185. TL0 = 0x0F0;
  186. t++;
  187. if(t==100)
  188. { t=0;
  189. miao++;
  190. if(miao>59)
  191. { miao=0;
  192. fen++;
  193. if(fen>59)
  194. {
  195. fen=0;
  196. shi++;
  197. if(shi>23)
  198. {
  199. shi=0;
  200. ri++;
  201. if(nian%4==0)
  202. { if(ri>runyue[yue-1])
  203. { ri=1;
  204. yue++; }
  205. if(yue>12)
  206. { yue=1;
  207. nian++;}
  208. }
  209. else
  210. {if(ri>brunyue[yue-1])
  211. {
  212. ri=0;
  213. yue++;
  214. }
  215. if(yue>12)
  216. {
  217. yue=0;
  218. nian++ ;
  219. }


  220. }
  221. }
  222. }
  223. }
  224. }
  225. switch(num)
  226. {
  227. case(0):
  228. zhong();break;
  229. case(1):
  230. rili();break;
  231. case(2):
  232. nao();break;
  233. default: zhong();
  234. }
  235. }
  236. void zhongshe()
  237. { switch(she)
  238. {
  239. case(1):
  240. miao=0;InitTimer0();break;
  241. case(2):
  242. if(k2==0)
  243. fen=(fen+61)%60;
  244. else
  245. fen=(fen+59)%60;
  246. break;
  247. case(3):
  248. if(k2==0)
  249. shi=(shi+25)%24;
  250. else
  251. shi=(shi+23)%24;
  252. break;
  253. }
  254. while((!k2)||(!k3)) ;
  255. }
  256. void naoshe()
  257. { switch(she)
  258. {
  259. case(1):
  260. if(kai==1)
  261. kai=0;
  262. else kai=1; break;
  263. case(2):
  264. if(k2==0)
  265. fen1=(fen1+61)%60;
  266. else
  267. fen1=(fen1+59)%60;
  268. break;
  269. case(3):
  270. if(k2==0)
  271. shi1=(shi1+25)%24;
  272. else
  273. shi1=(shi1+23)%24;
  274. break;
  275. }
  276. while((!k2)||(!k3)) ;
  277. }
  278. void qishe()
  279. { switch(she)
  280. {
  281. case(1):
  282. if(k2==0)
  283. {if(nian%4==0)
  284. ri=(ri+runyue[yue-1]+2)%(runyue[yue-1]+1) ;
  285. else
  286. ri=(ri+brunyue[yue-1]+2)%(brunyue[yue-1]+1);
  287. }

  288. else
  289. { if(nian%4==0)
  290. ri=(ri+runyue[yue-1])%(runyue[yue-1]+1) ;
  291. else
  292. ri=(ri+brunyue[yue-1])%(brunyue[yue-1]+1);
  293. }
  294. break;
  295. case(2):
  296. if(k2==0)
  297. yue=(yue+14)%13;
  298. else
  299. yue=(yue+12)%13;
  300. break;
  301. case(3):
  302. if(k2==0)
  303. nian++;
  304. else
  305. nian--;
  306. }
  307. while((!k2)||(!k3)) ;}
復制代碼


評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:104845 發表于 2016-6-3 10:28 來自手機 | 只看該作者
51黑有你更精彩

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 韩日一区 | 日韩成人av在线 | 日本电影韩国电影免费观看 | 欧美中文字幕一区二区三区亚洲 | 欧美日韩精品影院 | 五月婷婷中文 | 国产精品毛片 | 中文字幕在线观看日韩 | h视频在线观看免费 | 国产精品久久久久久久久久久久冷 | 亚洲国产电影 | 欧美视频区 | 亚洲精品乱码久久久久久蜜桃91 | 亚洲人va欧美va人人爽 | 午夜免费观看体验区 | 久久精品日产第一区二区三区 | 热久久久| 美女天天干 | 一级毛片色一级 | 91精品国产综合久久久久蜜臀 | 精品伦精品一区二区三区视频 | 九九热精品视频 | 中文字幕免费观看 | 免费永久av | 日韩视频一区 | 成人激情视频在线 | 亚洲成人一区二区 | 国产91九色| 黄色网一级片 | 成人精品系列 | 国产欧美日韩二区 | 欧美国产视频一区二区 | 欧美h视频 | 亚洲影音 | 在线观看第一区 | 亚洲精品成人在线 | 粉嫩av在线 | 国产成人福利在线观看 | 在线观看涩涩视频 | 国产免费一二三区 | 日韩一区二区在线视频 |