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

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

QQ登錄

只需一步,快速開始

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

單片機(jī)門鈴程序Proteus仿真圖 帶音量調(diào)節(jié),帶光照檢測(cè) 可以判斷是否天黑亮燈

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
使用51單片機(jī),帶音量調(diào)節(jié),帶光照檢測(cè)。可以判斷是否天黑亮燈,等白天后燈自動(dòng)熄滅,也可以手動(dòng)熄滅,能夠選擇鈴聲,共四首,帶指示燈。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int


  4. sbit BeepIO = P3^2; //定義音頻輸出管腳
  5. sbit LED1=P2^0;
  6. sbit LED2=P2^1;
  7. sbit LED3=P2^2;
  8. sbit LED4=P2^3;
  9. sbit KEY1 = P1^1;
  10. sbit KEY2 = P1^2;
  11. sbit KEY8 = P1^0; //按鍵8 音樂切換
  12. sbit GM=P1^3;
  13. sbit LED_L=P3^7;
  14. uchar music=1;
  15. uchar n=0;
  16. uchar n1=0;
  17. uchar n2=0;
  18. uchar n3=0;
  19. uchar key=0;
  20. char temp1,temp2; //存放初值的中間變量
  21. int flag_clock=0;
  22. uchar code music_dat[][2]= //校歌《蔚藍(lán)之歌》音樂數(shù)據(jù)
  23. {
  24. 3,4, 3,4, 2,4, 1,4, //第一節(jié)
  25. 2,6, 2,2, 1,4, 8,6, //第二節(jié)
  26. 0,4, 9,2, 10,2, 1,4, 2,4, //第三節(jié)
  27. 3,4, 3,2, 2,4, 1,4, 5,16, //第四節(jié)
  28. 6,6, 6,2, 5,4, 3,4, 2,2, 2,2, 1,4, 10,4, 9,6, //第五節(jié)
  29. 0,2, 8,2, 9,2, 1,2, 9,4, 3,4, //第六節(jié)
  30. 2,6, 2,2, 2,4, 1,4, 8,16, //第七節(jié)
  31. 0XFF //結(jié)束
  32. };

  33. uchar code music_dat1[][2]= //小蘋果
  34. {
  35. 1,2, 1,2, 2,4, 1,4, 4,4, 3,8, //第一節(jié)
  36. 1,2, 1,2, 2,4, 1,4, 5,4, 4,8, //第二節(jié)
  37. 1,2, 1,2, 8,4, 6,4, 4,4, 3,4, 2,4, //第三節(jié)
  38. 7,2, 7,2, 6,4, 4,4, 5,4, 4,8, //第四節(jié)
  39. 0XFF //結(jié)束
  40. };

  41. uchar code music_dat2[][2]= //鈴兒響叮當(dāng)音樂數(shù)據(jù)
  42. {
  43. 6,2, 6,2, 6,4, 6,2, 6,2, 6,4, //第一節(jié)
  44. 6,2, 8,2, 4,3, 5,1, 6,8, //第二節(jié)
  45. 7,2, 7,2, 7,3, 7,1, 7,2, 6,2, 6,2, 6,1, 6,1, //第三節(jié)
  46. 6,2, 5,2, 5,2, 4,2, 5,4, 8,4, //第四節(jié)
  47. 6,2, 6,2, 6,4, 6,2, 6,2, 6,4, //第五節(jié)
  48. 6,2, 8,2, 4,3, 5,1, 6,8, //第六節(jié)
  49. 7,2, 7,2, 7,3, 7,1, 7,2, 6,2, 6,2, 6,1, 6,1, //第七節(jié)
  50. 8,2, 8,2, 7,2, 5,2, 4,6, //第八節(jié)
  51. 0XFF //結(jié)束
  52. };

  53. uchar code music_dat3[][2]= //音樂數(shù)據(jù)
  54. {
  55. 6,4,4,4,5,4,2,4,6,2,5,2,4,2,5,2,2,4,6,4,4,4,5,4,5,2,5,2,8,2,6,2,3,4,4,4,4,1,3,1,
  56. 2,4,3,2,4,2,5,4,1,4,9,2,8,2,6,4,6,4,5,2,4,4,5,2,6,2,5,4,1,4,2,4,2,1,4,1,2,4,
  57. 0XFF //結(jié)束
  58. };

  59. uint code table[]={ //數(shù)組存放的數(shù)據(jù)是各個(gè)音調(diào)的初始值
  60. 0Xfc,0X8e,0Xfc,0Xed,0Xfd,0X43,0Xfd,0X6a,0Xfd,0Xb3,0Xfd,0Xf3,0Xfe,0X2d,0Xfb,0X00,0Xfb,0X8c,0Xfc,0X0e};
  61. unsigned int code table1[12]={ //這個(gè)數(shù)組里存放的是1-7的音調(diào)的初始值
  62. 0xfc5b,0xfc8e,0xfced,0xfd43,0xfd6a,0xfdb3,0xfdf3,0xfe2d,0xfb00,0xfb8c,0xfcc0e,0xfb68
  63. };

  64. void delay100ms(unsigned char z)
  65. {
  66. unsigned int i;
  67. z++;
  68. while(--z)
  69. {
  70. for(i=11502;i;i--);
  71. }
  72. }

  73. void delay(uint z)
  74. {
  75. uint x,y;
  76. for(x=z;x>0;x--)
  77. for(y=110;y>0;y--);
  78. }

  79. void key_scan()
  80. {
  81. if(KEY8 == 0)
  82. {delay(5);
  83. if(KEY8 == 0)
  84. {
  85. music++;
  86. flag_clock=0;       
  87. if(music == 5)
  88. {
  89. music = 1;
  90. }       
  91. while(!KEY8);
  92. }
  93. }
  94. TR0=0; //計(jì)時(shí)器停止,也就是停止放音
  95. }

  96. void systimer0_init(void)
  97. {
  98. TMOD |=0x01;//設(shè)置為1時(shí)用或(|)
  99. TMOD &=0xfd;//設(shè)置為0時(shí)用與(&)
  100. EA = 1;
  101. ET0 = 1;
  102. TR0 = 1;
  103. }

  104. void key_sw()
  105. {
  106. if(KEY1==0)
  107. {
  108.   flag_clock=1;
  109. }
  110. }

  111. int flag_led=0;
  112. void light()
  113. {
  114. if(GM!=0)
  115. {
  116.   if(KEY2==0)
  117.         {
  118.          flag_led++;
  119.          if(flag_led==2) flag_led=0;
  120.    while(KEY2==0);               
  121.         }
  122.   if(flag_led==1||flag_clock==1)  {LED_L=0;}
  123.         if(flag_led==0&&flag_clock==0)  LED_L=1;
  124. }
  125. if(GM==0)
  126. {
  127.   LED_L=1;flag_led=0;
  128. }
  129. }
  130. void main()
  131. {
  132. BeepIO=0;
  133. LED_L=1;
  134. systimer0_init();
  135. while(1)
  136. {       

  137. key_sw();
  138. BeepIO=1;
  139. key_scan();
  140. if(music > 0)
  141. {light();
  142. light();
  143. key_sw();
  144. key_scan();
  145. if(music == 4) //判斷按鍵是否按下
  146. {
  147. LED1=1;LED2=1;LED3=1;LED4=0;

  148. key_sw();
  149. key_scan();
  150. if(flag_clock==1)
  151. {       
  152. light();
  153. TH0=table1[music_dat1[n1][0]]/256; //賦初值
  154. TL0=table1[music_dat1[n1][0]]%256;
  155. TR0=1; //音樂開始
  156. delay100ms(music_dat1[n1][1]); //調(diào)用延時(shí),用做節(jié)拍的發(fā)生
  157. n1++; //下個(gè)音調(diào)開始
  158. if(music_dat1[n1][0]==0xff)
  159. {
  160. n1=0; //判斷是否到最后一個(gè)音調(diào)
  161. TR0=0; //一個(gè)調(diào)放完,即將進(jìn)行下一個(gè)調(diào)
  162. flag_clock=0;
  163. }
  164. }
  165. }

  166. if(music == 3) //判斷按鍵是否按下
  167. {
  168. LED1=1;LED2=1;LED3=0;LED4=1;

  169. key_scan();
  170. key_sw();
  171. if(flag_clock==1)
  172. {light();
  173. TH0=table1[music_dat2[n2][0]]/256; //賦初值
  174. TL0=table1[music_dat2[n2][0]]%256;
  175. TR0=1; //音樂開始
  176. delay100ms(music_dat2[n2][1]); //調(diào)用延時(shí),用做節(jié)拍的發(fā)生
  177. n2++; //下個(gè)音調(diào)開始
  178. if(music_dat2[n2][0]==0xff)
  179. {
  180. n2=0; //判斷是否到最后一個(gè)音調(diào)
  181. TR0=0; //一個(gè)調(diào)放完,即將進(jìn)行下一個(gè)調(diào)
  182. flag_clock=0;

  183. }
  184. }
  185. }

  186. if(music == 1) //判斷按鍵是否按下
  187. {
  188. LED1=0;LED2=1;LED3=1;LED4=1;

  189. key_scan();
  190. key_sw();
  191. while(flag_clock==1)
  192. {light();
  193. TH0=table1[music_dat[n][0]]/256; //賦初值
  194. TL0=table1[music_dat[n][0]]%256;
  195. TR0=1; //音樂開始
  196. delay100ms(music_dat[n][1]); //調(diào)用延時(shí),用做節(jié)拍的發(fā)生
  197. n++; //下個(gè)音調(diào)開始
  198. if(music_dat[n][0]==0xff)
  199. {
  200. n=0; //判斷是否到最后一個(gè)音調(diào)
  201. TR0=0; //一個(gè)調(diào)放完,即將進(jìn)行下一個(gè)調(diào)
  202. flag_clock=0;

  203. }
  204. }
  205. }

  206. if(music == 2) //判斷按鍵是否按下
  207. {LED1=1;LED2=0;LED3=1;LED4=1;

  208. key_scan();
  209. key_sw();
  210. if(flag_clock==1)
  211. {light();
  212. TH0=table1[music_dat3[n3][0]]/256; //賦初值
  213. TL0=table1[music_dat3[n3][0]]%256;
  214. TR0=1; //音樂開始
  215. delay100ms(music_dat3[n3][1]); //調(diào)用延時(shí),用做節(jié)拍的發(fā)生
  216. n3++; //下個(gè)音調(diào)開始
  217. if(music_dat3[n3][0]==0xff)
  218. {
  219. n3=0; //判斷是否到最后一個(gè)音調(diào)
  220. TR0=0; //一個(gè)調(diào)放完,即將進(jìn)行下一個(gè)調(diào)
  221. flag_clock=0;

  222. }
  223. }
  224. }

  225. }
  226. }
  227. }
  228. void time0() interrupt 1
  229. {

  230. if(music == 1)
  231. {
  232. TH0=table1[music_dat[n][0]]/256; //賦初值
  233. TL0=table1[music_dat[n][0]]%256;
  234. }
  235. else if(music == 4)
  236. {
  237. TH0=table1[music_dat1[n1][0]]/256; //賦初值
  238. TL0=table1[music_dat1[n1][0]]%256;
  239. }
  240. else if(music == 3)
  241. {
  242. TH0=table1[music_dat2[n2][0]]/256; //賦初值
  243. TL0=table1[music_dat2[n2][0]]%256;
  244. }
  245. else if(music == 2)
  246. {
  247. TH0=table1[music_dat3[n3][0]]/256; //賦初值
  248. TL0=table1[music_dat3[n3][0]]%256;
  249. }
  250. else
  251. {
  252. TH0=temp1;
  253. TL0=temp2;
  254. }
  255. BeepIO=~BeepIO; //不斷取反得到相應(yīng)的音調(diào)
  256. }
復(fù)制代碼

所有資料51hei附件下載:
仿真代碼.7z (120.07 KB, 下載次數(shù): 41)


評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产日韩欧美在线 | 99免费精品| 自拍视频在线观看 | 午夜午夜精品一区二区三区文 | 国产成人精品在线播放 | 久久www免费人成看片高清 | 欧美成年网站 | 国产区精品在线观看 | 91色在线视频| 理论片免费在线观看 | 中文字幕视频在线观看 | 久久中文字幕一区 | 91看片免费版 | 久久国产精品一区二区 | 成人看片在线观看 | 成人精品久久日伦片大全免费 | 亚洲精品中文字幕在线观看 | 国产精品99久久久久久人 | 精品欧美激情在线观看 | 亚洲a一区 | 99热这里都是精品 | 在线观看中文字幕 | 国产一区| 插插插干干干 | 日屁网站 | 国产一区二区三区在线观看免费 | 欧美日韩亚洲国产综合 | 黄色成人在线网站 | 亚洲日韩第一页 | 日本高清中文字幕 | 日韩一区二区三区在线观看视频 | 国产日韩精品视频 | 久久天天躁狠狠躁夜夜躁2014 | 久久er99热精品一区二区 | 在线欧美亚洲 | 国产一区二区免费 | 精品视频免费在线 | 成人18亚洲xxoo| 国产视频二区 | 国产精品久久777777 | 老子午夜影院 |