大家好,这是用一台坏的电脑液晶显示器(屏碎、背光灯尚好)改装成为一个用于医院、诊所等医疗场所进行x片观看的“观片灯”。
特点:色度纯正、光线均匀、亮度可调、延迟关灯、环保省电,可加设定时功能(用于体温测定、皮试的时间提醒)
材料:一台坏液晶显示器(越大越好,要求供电和背光部件正常。如果没坏的舍得改装也勉强可以呵呵)、单片机一个、蜂鸣器一个、接插件-电线-发光二极管等若干。
过程提要:
1. 拆开显示器,去掉主控板,解码板。只留供电板和高压板(一般在同一块板子上)
2. 拆开液晶部分,去掉液晶板。如果可能的话把液晶板上的未碎的一层玻璃也拆下如图,并用细砂纸打磨成透明玻璃。(如果全碎的话可以找一块玻璃切割成同样大小,目的是保护液晶后面的背光部件)
3. 将去掉液晶显示部件的背光部件和那块玻璃反序装回。
4. 接单片机线路,最好用接插件连接如图
5. 编制程序并写入单片机,程序见文尾。功能可自己添加、修改
6. 改装原按键板,我这儿改成每个按键接一线到单片机,并加装了三只不同色的发光二极管用于状态显示
7. 在外壳上加装了一个四线接口用于以后的程序升级、调试。加装一个蜂鸣器用于倒计时的提醒 8. 各条线路接好后仔细检查,装好
9. 测试效果不错喔
上面的光条是拍摄时反光所致
10. 这里是程序内容。
#include <reg51.h> //51芯片管脚定义头文件
#define baogao 100
#define moren 3000
sbit dim=P1^7; // dim 背光亮度控制
sbit backlight=P1^6; // on/off 背光开关控制
sbit key1=P2^0;
sbit key2=P2^1;
sbit key3=P2^2;
sbit key4=P2^3;
sbit key5=P2^4;
sbit beep=P2^5;
sbit lhong=P3^4; //指示灯
sbit llan=P3^5; sbit key_open=P3^3; //总开关 unsigned char dim1=8,dim2=10;
unsigned long time,time_pi,time_ti,time_guan; void Delay(unsigned char c) /* 延时处理,12MHZ 12T时10ms*/ { unsigned char a,b; for(c;c>0;c--) for(b=38;b>0;b--) for(a=130;a>0;a--); }
void pmw_layout() interrupt 1 using 3 /* 定时计数器0的中断服务子程序,用于定时发送亮度信号*/
{
TH0=0XFC; //T0重新装入初值1ms
TL0=0X18;
dim1++;
if(dim1>dim2) {dim=1; dim1=0;} else dim=0; //更改目标值,改变亮度
if(time>1)time--;
}
void timer() /*************定时器初始化**************/
{
TMOD=0X01; //T0模式1
EA=1; //中断总开关打开
TH0=0Xfc; //T0重新装入初值10ms
TL0=0X18;
ET0=1; //T0开中断
TR0=1; //开启T0
}
void main()
{
beep=0;
llan=0;
lhong=0;
time=baogao;
time_pi=0;
time_ti=0;
time_guan=3*moren;
timer();
while(1) //主循环
{
if(key_open==0) //按下开关键,开关背光灯
{
key_open=1;
Delay(15);
if(backlight==0)
{
beep=1;
Delay(20);
beep=0;
Delay(15);
beep=1;
Delay(20);
beep=0;
time_guan=moren;
backlight=1;
}
else
{
backlight=0;
time_guan=0;
Delay(10);
beep=1;
Delay(30);
beep=0;
}
}
if(key1==0) //按下第一个按键,开始测体温五分钟计时
{
key1=1;
if(time_ti==0){time_ti=moren;beep=1;}
Delay(15);
llan=1;
beep=0;
}
if(key2==0) //按下第二个按键,停止响铃 ,关闭到时定时器
{
key2=1;
Delay(15);
beep=0;
if(time_ti==1) {time_ti=0; llan=0;}
if(time_pi==1) {time_pi=0; lhong=0;}
}
if(backlight==1) //在开启背光后,可以用第三、四个按键进行亮度调节
{
if(key3==0&&dim2>0) //按下第三个按键,亮度降低
{
key3=1;
Delay(25);
dim2--;
}
if(key4==0&&dim2<10) //按下第四个按键,亮度增加
{
key4=1;
Delay(25);
dim2++;
}
}
if(key5==0) //按下第五个按键,开始测皮试十五分钟计时
{
key5=1;
if(time_pi==0){time_pi=3*moren;beep=1;}
Delay(15);
lhong=1;
beep=0;
}
if(time==1) //处理由定时器传来的信号
{
time=baogao;
if(time_ti>0) //体温1定时器为打开状态
{ llan=1;
if(time_ti==1) //体温1时间 到 开警报
{
beep=1;
Delay(10);
beep=0;
Delay(10);
beep=1;
Delay(10);
beep=0;
}
else time_ti--;
}
if(time_pi>0) //皮试1定时器为打开状态
{ lhong=1;
if(time_pi==1) //皮试1时到
{
beep=1; //皮试1时间到,开警报
Delay(30);
beep=0;
Delay(10);
beep=1;
Delay(10);
beep=0;
}
else time_pi--;
}
if(time_guan>0) //皮试3定时器为打开状态 此定时器用于定时自动关闭屏幕
{
if(time_guan==1) //屏幕开启时间到
{ //屏幕开启时间过长,自动关闭
backlight=0;
time_guan=0;
beep=1; //四声警报,指示背光自动关闭
Delay(7);
beep=0;
Delay(7);
beep=1;
Delay(7);
beep=0;
Delay(7);
beep=1;
Delay(7);
beep=0;
Delay(7);
beep=1;
Delay(7);
beep=0;
}
else time_guan--;
}
}
}
}
我也是初学者,程序目前只是达到能用的地步,不够精简,希望大家改正后回发上来共享一下
[ 此帖被wdmcxkjy在2010-10-13 15:24重新编辑 ]