智能灯触摸台灯制作资料程序+原理图pcb分享给大家

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

智能灯触摸台灯制作资料程序+原理图pcb分享给大家
such808发表于 2015-7-25 13:17:12 | 只看该作者 |只看大图
上传资料希望各位喜欢
程序预览:
1.#include<reg5
2.h>
2.fanhui();
3.duanma[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x8 0,0x90};//共阳数字段码 0-9
4.sbit g1=P2^1;sbit g2=P2^3;sbit g3=P2^5;sbit g4=P2^7; //位选
5.sbit key1=P1^1;sbit key2=P1^5;sbit key3=P1^7;//按键
6.sbit spek=P1^0; //蜂鸣器
7.sbit powr=P2^0; //继电器开关
8.sbit chumo=P1^3; //触摸选项
9.char sum=0,s=59,min=0,h=0,add=0;
10.void delay()
11.{
12.int a,b;
13.for(a=10;a>0;a--)
14.for(b=50;b>0;b--);
15.}
16.delay1()
17.{
18.int a,b;
19.for(a=50;a>0;a--)
20.for(b=300;b>0;b--);
21.}
22./////////////////////////////////////////////////////
23.////////////////////时间处理函数/////////////////////
24./////////////////////////////////////////////////////
25.jishi()
26.{
27.if(s<0)
28.{
29.s=59;min--;
30.}
31.if(min<0)
32.{
33.min=59;
34.h--;
35.}
36.if(h<0)
37.{
38.h=23;
39.}
40.}
41./////////////////////////////////////////////////////
42.////////////////////显示函数/////////////////////////
43./////////////////////////////////////////////////////
44.xianshi()//
45.{
46.P0=duanma[h/10];////小时显示
47.g1=0;
48.delay();
49.g1=1;
50.P0=duanma[h%10];
51.g2=0;
52.delay();
53.g2=1;
54.if(add>25)
55.{
56.P0=duanma[min/10]+0x80;/////分显示
57.g3=0;
58.delay();
59.g3=1;
60.P0=duanma[min%10]+0x80;
61.g4=0;
62.delay();
63.g4=1;
64.}
65.else
66.{
67.P0=duanma[min/10];/////分显示
68.g3=0;
69.delay();
70.g3=1;
71.P0=duanma[min%10];
72.g4=0;
73.delay();
74.g4=1;
75.}
76.}
77.//////////////////////////////////////////////////////
78.////////////////待机程序/////////////////////////////
79./////////////////////////////////////////////////////
80.daiji()
81.{
82.powr=1;
83.g4=g3=g2=g1=1;
84.delay1();delay1();delay1();delay1();delay1();
85.while(1)
86.{
87.delay1();delay1();
88.if(chumo==1)
89.{
90.delay();
91.if(chumo==1)
92.{
93.while(chumo==1);
94.spek=0;
95.delay1();
96.spek=1;
97.sum=0,s=59,min=0,h=0,add=0;//重新对初始变量赋值
98.powr=0;
99.break;
100.}
101.}
102.}
103.fanhui();//重头开始
104.}
105.//////////////////////////////////////////////////////// 106.//////////////////返回起始点////////////////////////////// 107.///////////////////////////////////////////////////// 108.fanhui() //开始标号
109.{
110.while(1) //预备显示
111.{
112.g1=g2=g3=g4=0; //显示三条横线(---)0xbf
113.P0=0xbf;
114.delay1();
115.delay1();
116.delay1();
117.delay1();
118.g1=g2=g3=g4=1;
119.delay1();
120.delay1();
121.delay1();
122.delay1();
123.
124.if(key1==0)
125.{
126.spek=0;
127.delay1();
128.if(key1==0)
129.while(key1==0);
130.spek=1;
131.break;
132.}
133.if(chumo==1) ///////检测有无关闭指令134.{
135.delay1();delay1();delay1();delay1(); 136.if(chumo==1)
137.{
138.while(chumo==1);
139.spek=0;
140.delay1();
141.spek=1;
142.daiji();
143.}
144.}
145.}
146.}
147.///////////////////////////////////////////////////// 148.////////////////////按键函数///////////////////////// 149.///////////////////////////////////////////////////// 150.anjian()
151.{
152.if(chumo==1)
153.{
154.delay1();delay1();
155.if(chumo==1)
156.{
157.while(chumo==1);
158.spek=0;
159.delay1();
160.spek=1;
161.daiji();
162.}
163.}
164.if(key1==0)
165.{
166.delay1();
167.if(key1==0)
168.{
169.spek=0;
170.delay1();
171.spek=1;
172.while(key1==0);
173.while(1)
174.{
175.P0=duanma[h/10];////小时显示
176.g1=0;
177.delay();
178.g1=1;
179.P0=duanma[h%10];
180.g2=0;
181.delay();
182.g2=1;
183.P0=duanma[min/10]+0x80;/////分显示184.g3=0;
185.delay();
186.g3=1;
187.P0=duanma[min%10]+0x80;
188.g4=0;
189.delay();
190.g4=1;
191.while(add>49)
192.{
193.g1=g2=g3=g4=1;
194.}
195.if(key2==0) //时调整加、、、、、、、、、196.{
197.delay1();
198.if(key2==0)
199.{
200.spek=0;
201.delay1();
202.spek=1;
203.if(h==24)
204.{
205.h=0;
206.}
207.else
208.h++;
209.}
210.}
211.if(key3==0) //分调整加、、、、、、、、、212.{
213.delay1();
214.if(key3==0)
215.{
216.spek=0;
217.delay1();
218.spek=1;
219.if(min==60)
220.{
221.min=0;
222.}
223.else
224.min++;
225.}
226.}
227.if(key1==0) //调试确定并退出调试状态228.{
229.delay();
230.if(key1==0)
231.{
232.spek=0;
234.spek=1;
235.while(key1==0);
236.break; //跳出本while语句,即本函数结束237.}
238.}
239.}
240.}
241.}
242.}
243.///////////////////////////////////////////////////// 244.////////////////////主函数/////////////////////////// 245.///////////////////////////////////////////////////// 246.void main()
247.{
248.TMOD=0x01;
249.TH0=(65535-20000)/255;
250.TL0=(65535-20000)%255;
251.EA=1;
252.ET0=1;
253.TR0=1;
254.chumo=0;
255.while(1)
256.{
257.if(chumo==1)
258.{
259.delay1();
260.if(chumo==1)
261.while(chumo==1);
262.spek=0;
264.spek=1;
265.powr=0;
266.break;
267.}
268.}
269.fanhui(); //调用初始返回函数270.while(1) //执行主程序271.{
272.xianshi();
273.anjian();
274.if(h==0)
275.{
276.if(min==0)
277.{
278.if(add<25)
279.{
280.g4=g3=g2=g1=1;
281.delay1();
282.delay1();
283.delay1();
284.delay1();
285.}
286.if(s==0)
287.{
288.daiji();
289.}
290.}
291.}
292.}
293.}
294.///////////////////////////////////////////////////// 295.////////////////////秒表定时中断服务函数///////////// 296.///////////////////////////////////////////////////// 297.dingshi()interrupt 1
298.{
299.TH0=(65535-20000)/255;
300.TL0=(65535-20000)%255;
301.add++;
302.if(add==50)
303.{
304.add=0;
305.s--;
306.jishi();
307.}
308.}
复制代码。

相关文档
最新文档