圣龙扬特-AVR电子

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1084|回复: 20

废旧微波炉改造成恒温恒湿箱

[复制链接]

66

主题

4

好友

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
2
帖子
339
精华
0
注册时间
2013-2-20
在线时间
349 小时
发表于 2013-11-22 01:25:11 |显示全部楼层
废旧微波炉改造成恒温恒湿箱

  家里喜欢烘焙,经常烤一些小点心。

  但发面很难控制一致,同样配方,效果往往不同。索性找来个旧微波炉,废物再利用,用它的壳子改造个恒温恒湿箱。原理挺简单,做起来还挺麻烦,开工,制作中尽量使用废旧物品和手头已有的元件。

  1.加热部分
  选用2片铝合金外壳PTC加热板。220V,干烧表温120℃,最大功率120W。


  PTC加热板具有无明火、热转换率高、受电源电压影响小等优势。能自动节能,当加热板把环境温度升高后,其功率会逐渐降低,只有额定功率的90%或者更少。使用寿命长,上万次的反复开关对其性能也无影响。

  2
.加湿部分
  思来想去,决定采用超声波雾化器来加湿,虽然制作麻烦,但效果会不错。超声波模块拆自一个废弃的桌面小型加湿器,原配24V电源也在,当时多亏没扔。
  按照微波炉空间尺寸,买了个密封型塑料盒作为加湿部分的储水盒。在盒底开超声波模块安装孔,以及进水孔和放水孔,在盒盖开进风槽和出风孔。

  原来的进气风扇不合适,找了个笔记本电脑换下的小风扇,用塑料板做导气风道,记号笔笔帽做出风口连接件。经过试验,小风扇在3V电压工作时,风量大小比较合适,用LM317将24V降到3V,线路板按超声波模块电路板尺寸制作,按原位螺丝孔叠装在超声波 模块电路板上,散热片就剪片铝板凑合吧。


  使用洗手盆溢水管做出风导管,从微波屏蔽盒将水雾引到微波炉内腔。
  用2mm厚敷铜板制做2个高度合适的支架,用于将加湿盒固定在微波炉内。

  
  为方便加水,需设置加水口,在微波炉面板处设计一可抽拉加水盒,使用3mm有机玻璃制作,微波炉面板背面安装加水盒固定支架。有机玻璃使用三氯甲烷(氯仿)粘合。


(接第四楼)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

回复

使用道具 举报

6

主题

1

好友

3385

积分

超级版主

Rank: 8Rank: 8

UID
10
帖子
48
精华
1
注册时间
2013-2-26
在线时间
27 小时
发表于 2013-11-22 09:34:00 |显示全部楼层
雕刻机强大啊
已有 1 人评分金钱 收起 理由
箫天 + 100 给分100 :D

总评分: 金钱 + 100   查看全部评分

天之道,利而不害;圣人之道,为而不争
回复

使用道具 举报

3

主题

0

好友

678

积分

高级会员

Rank: 4

UID
20
帖子
19
精华
0
注册时间
2013-2-26
在线时间
5 小时
发表于 2013-11-22 09:39:00 |显示全部楼层
有个雕刻机就是爽
已有 1 人评分金钱 收起 理由
箫天 + 100 给分100 :D

总评分: 金钱 + 100   查看全部评分

回复

使用道具 举报

66

主题

4

好友

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
2
帖子
339
精华
0
注册时间
2013-2-20
在线时间
349 小时
发表于 2013-11-22 20:34:50 |显示全部楼层
  3.供电部分
  3.1 加热板
  PTC加热板电源为AC220V,2片最大功率合计240W,由1只3A固态继电器控制通断。
  3.2 雾化器
  超声波雾化模块电源为DC24V,直接使用原配电源供电,由1只TIP41C三极管控制通断。TIP41C为NPN中功率三极管,100V,6A,65W。
  加湿风扇供电为3V,从加湿模块上引出DC24V由LM317T降压获得。LM317T是可调3端正电压稳压器,输出电压1.25V至37V连续可调,最大电流1.5A
  3.3 照明灯
  照明板为4只白色发光二极管,透过网窗为微波炉内腔照明,供电为DC5V,由1只TIP41C三极管控制通断。


  3
.5 主控板
  主控板DC5V电源由加湿模块DC24V电源通过KIS3R33降压获得。KIS3R33是当年白菜价格的DC-DC电源模块,电流可达3A,使用方法灵活,模块输出电压为3.3V,在Adj与GND间串连10K电阻,将输出调整为5V。



  4.控制部分
  4.1 主控芯片
  采用ATmega16A-AU单片机,内部8M工作频率,禁止JTAG。
  ATmega16是基于增强的AVR RISC结构的低功耗8 位CMOS微控制器。具有16K字节系统内可编程Flash,512 字节EEPROM,1K 字节SRAM,32 个通用I/O 口线,32 个通用工作寄存器,JTAG接口,支持片内调试与编程,3个具有比较模式的定时器/ 计数器(T/C),片内/外中断,可编程串行USART,通用串行接口,8路10位具有可选差分输入级可编程增益的ADC ,具有片内振荡器的可编程看门狗定时器,1个SPI 串行端口,以及6个可以通过软件进行选择的省电模式。
  4.2 传感器
  采用SHT11温湿度传感器。
  SHT11是单片全校准数字式温度和相对湿度贴片封装传感器,具有串行数字式输出、免调试、免标定、免外围电路及全互换的特点。温度值输出分辨率为14位,湿度值输出分辨率为12位,可通过编程降至12位和8位。电源电压2.4V~5.5V,工作电流0.55mA。



  为减小热传导对传感器影响,将SHT11焊接在小片PCB上,通过支架悬空固定在微波炉内胆上部分的空腔内。


  4.3 人机界面
  4.3.1 显示部分使用LCD12864,驱动芯片为KS0108。BASCOM-AVR驱动LCD非常简单,直接支持KS0108驱动的点阵LCD,这为编辑显示界面提供了方便。
  因空间大小限制,LCD12864只能竖着安装。屏上显示温度、湿度以及工作状态。
  将静态部分制作成固定背景底图,其它部分动态显示。温湿度值用10×20点阵数字显示,状态标志用图片方式显示。

    

  4.3.2  操作按键设置4个点触按钮开关,分别为选择、增、减、启动。按键接单片机外部中断,可确保不漏键。按钮帽是从坏笔记本键盘上拆的,废品利用,还算规整。



(接第十五楼)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

回复

使用道具 举报

6

主题

2

好友

3315

积分

论坛元老

Rank: 8Rank: 8

UID
12
帖子
30
精华
2
注册时间
2013-2-26
在线时间
12 小时
发表于 2013-11-22 20:53:04 |显示全部楼层
老大就是牛!你不怕微波?
已有 1 人评分金钱 收起 理由
箫天 + 100 给分100

总评分: 金钱 + 100   查看全部评分

拔剑四顾心茫然
回复

使用道具 举报

6#
无效楼层,该帖已经被删除

66

主题

4

好友

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
2
帖子
339
精华
0
注册时间
2013-2-20
在线时间
349 小时
发表于 2013-11-22 20:57:32 |显示全部楼层
sunany 发表于 2013-11-22 20:53
老大就是牛!你不怕微波?


里面东西全拆了,只用了微波炉的壳子。TIP41C还是你送的,派上用场了。
回复

使用道具 举报

14

主题

0

好友

3519

积分

超级版主

Rank: 8Rank: 8

UID
50
帖子
115
精华
1
注册时间
2013-2-28
在线时间
39 小时

突出贡献

发表于 2013-11-22 20:57:34 |显示全部楼层
春风吹,战鼓擂,老大就是老大。。。谁怕谁。。。。。改天给你发个温湿度的保护罩。。。这样片子年漂移会控制在0.3%.内
已有 1 人评分金钱 收起 理由
箫天 + 100 给分100

总评分: 金钱 + 100   查看全部评分

回复

使用道具 举报

66

主题

4

好友

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
2
帖子
339
精华
0
注册时间
2013-2-20
在线时间
349 小时
发表于 2013-11-22 20:59:36 |显示全部楼层
小毛驴 发表于 2013-11-22 20:57
春风吹,战鼓擂,老大就是老大。。。谁怕谁。。。。。改天给你发个温湿度的保护罩。。。这样片 ...


SHT11用上了,不错,谢谢!
回复

使用道具 举报

3

主题

0

好友

336

积分

中级会员

Rank: 3Rank: 3

UID
121
帖子
11
精华
0
注册时间
2013-3-2
在线时间
2 小时
发表于 2013-11-23 16:18:48 |显示全部楼层
已有 1 人评分金钱 收起 理由
箫天 + 100 来了就给分

总评分: 金钱 + 100   查看全部评分

回复

使用道具 举报

3

主题

0

好友

336

积分

中级会员

Rank: 3Rank: 3

UID
121
帖子
11
精华
0
注册时间
2013-3-2
在线时间
2 小时
发表于 2013-11-23 16:19:04 |显示全部楼层
雕刻机多少钱?
回复

使用道具 举报

66

主题

4

好友

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
2
帖子
339
精华
0
注册时间
2013-2-20
在线时间
349 小时
发表于 2013-11-23 16:20:47 |显示全部楼层
格瓦拉 发表于 2013-11-23 16:19
雕刻机多少钱?

不到1W
回复

使用道具 举报

0

主题

0

好友

174

积分

初级会员

Rank: 2

UID
222
帖子
10
精华
0
注册时间
2013-3-5
在线时间
8 小时
发表于 2013-11-23 16:38:45 |显示全部楼层
(未完待续......)什么时候出续集?
已有 1 人评分金钱 收起 理由
箫天 + 100

总评分: 金钱 + 100   查看全部评分

回复

使用道具 举报

66

主题

4

好友

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
2
帖子
339
精华
0
注册时间
2013-2-20
在线时间
349 小时
发表于 2013-11-23 16:52:16 |显示全部楼层
aiwm 发表于 2013-11-23 16:38
(未完待续......)什么时候出续集?

正在整理,整理一点发一点。
回复

使用道具 举报

1

主题

0

好友

126

积分

初级会员

Rank: 2

UID
324
帖子
4
精华
0
注册时间
2013-3-24
在线时间
2 小时
发表于 2013-11-23 22:55:22 |显示全部楼层
等着老大把整个东西发上来。
已有 1 人评分金钱 收起 理由
箫天 + 100 来了就给分

总评分: 金钱 + 100   查看全部评分

回复

使用道具 举报

66

主题

4

好友

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
2
帖子
339
精华
0
注册时间
2013-2-20
在线时间
349 小时
发表于 2013-11-23 23:02:39 |显示全部楼层
  4.4 电路图
  4.4.1 主控电路

  4.4.2 LM317降压电路

  4.4.3  装配



  4.5 编程语言
  使用BASCOM-AVR编程。
  BASCOM-AVR是MCS Electronics公司开发的以BASIC高级程序设计语言为基础,集编辑、编译、仿真、程序下载于一体的AVR单片机开发环境。简洁方便,具有可视化图形界面和实物图形化仿真平台,可以直观地仿真程序的运行结果,为我们使用开发AVR单片机提供了简洁方便、功能强大的手段。
  BASCOM-AVR为结构化BASIC语言,与Visual Basic/Quick Basic高度兼容,简要清晰,易于理解掌握。提供丰富的数据类型,结构化、模块化的程序设计,大量面向通用I/O和专用外设的操作语句,为增强单片机系统的实时性,支持汇编语言混合编程。扩充许多通用单片机外部设备的专用语句,例如字符LCD、图形LCD、I2C总线器件、单总线器件、PC键盘、矩阵键盘、SPI总线器件等。

  5.附记
  恒温恒湿箱已正式服役,工作稳定,效果满意,是本人又一实用型DIY。


  5
.1 字库和图形文件
  使用PhotoShop制作10×20点阵数字字库和图标图形文件。
  使用PCtoLCD2002将点阵字库图形转换为字模数据。
  使用BASCOM-AVR自带图形转换工具Graphic converter,将图标图形文件转换为bgf点阵文件,供程序编译调用。
  5.2 加工工具
  PCB、面板、固定件、有机玻璃盒等器件,主要使用CNC雕刻机加工。雕刻机控制系统软件为维宏Ncstudio 5.5。
  器件制作使用Visio 2003做图,存为dwg格式矢量文件,由ArtCAM Pro 8.1制作刀路,存为G代码格式。
  PCB制作使用Protel99画图,输出Gerber和NC Drill文件,由CopperCAM产生G代码刀路文件。
  5.3 相关文档
  文档列表:                < 打包下载  >
  恒温恒湿箱控制程序.bas
  恒温恒湿箱控制程序.hex
  恒温恒湿箱控制程序.bin
  恒温恒湿箱LCD_bgf.rar
  恒温恒湿箱电路.ddb
  恒温恒湿箱工作原理仿真.DSN
  恒温恒湿箱CNC加工.vsd




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

回复

使用道具 举报

66

主题

4

好友

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
2
帖子
339
精华
0
注册时间
2013-2-20
在线时间
349 小时
发表于 2013-11-24 15:56:42 |显示全部楼层

恒温恒湿箱控制程序

'-------------------------------------------------------------------------------
'Name                     : 恒温恒湿箱控制程序.bas
'Copyright                : http://avr.cnta.net
'MicroChip                : AtMega16
'Compiler                 : BASCOM-AVR 2.0.7.3
'Author                   : slyt/箫天
'-------------------------------------------------------------------------------
$regfile = "m16def.dat"
$crystal = 8000000
$hwstack = 100
$swstack = 100
$framesize = 100
$baud = 19200

$lib "glcdKS108.lib"

'==================================声明函数=====================================
Declare Sub Disp_10x20(byval Wr_dat As String , Byval Wr_x As Byte , Byval Wr_y As Byte)
Declare Sub Getit()
Declare Sub Get_sht11()
Declare Sub Init_sht11()
Declare Function Get_key_code() As Byte

'==================================配置资源=====================================
Config Graphlcd = 128 * 64sed , Dataport = Porta , Controlport = Portc , Ce = 3 , Ce2 = 4 , Cd = 7 , Rd = 6 , Reset = 2 , Enable = 5

Config Int1 = Falling
On Int1 Int1_int
Enable Int1

Config Timer0 = Timer , Prescale = 1024                     '128us*256=32.768ms
On Timer0 Timer0_isr
Enable Timer0

'================================定义控制变量===================================
Dim Sht_timer_counter As Byte                               '检测温湿度时间,1秒=30
Dim Key_timer_counter As Byte                               '不按按钮时间,最长4秒,120
Dim Set_select As Bit                                       '选择设置项 温度或者湿度
Dim Power_on As Bit                                         '启动工作

Heat_on Alias Portb.: Ddrb.= 1                          '加热控制
Water_on Alias Portb.: Ddrb.= 1                         '加湿控制
Light_on Alias Portb.: Ddrb.= 1                         '照明控制
Beep Alias Portb.: Ddrb.= 1                             '提示音

Led_red Alias Portc.: Ddrc.= 1                          'LED指示
Led_grn Alias Portc.: Ddrc.= 1                          'LED指示

'================================定义按钮变量===================================
Ddrd = &B00000011
Portd = &HFF

Key_pin Alias Pind

Dim Key_press As Word                                       '按钮是否按下
Dim Key_code As Byte

Const Key_select = &B1110
Const Key_up = &B1101
Const Key_down = &B1011
Const Key_start = &B0111

'===============================定义SHT11变量===================================
Dim Ctr As Byte
Dim Dataword As Word
Dim Command As Byte
Dim Dis As String * 20
Dim Temperature As Integer
Dim Humidity As Integer
Dim Old_temperature As Integer
Dim Old_humidity As Integer

Dim Calc1 As Single
Dim Calc2 As Single
Dim Calc3 As Single
Dim Rhlinear As Single
Dim Rhlintemp As Single
Dim Tempc As Single
Dim Tempf As Single

Dim Com_temperature As Integer
Dim Set_temp As Byte                                        '温度设置值,存储在EEPROM
Dim Set_rh As Byte                                          '湿度设置值,存储在EEPROM

Const C1 = -4                                               '计算湿度参数
Const C2 = 0.0405
Const C3 = -0.0000028
Const T1c = .01                                             '计算温度参数
Const T2 = .00008
Const T1f = .018

Sck Alias Portb.7                                           '定义SHT11时钟引脚
Dataout Alias Portb.6                                       '定义SHT11数据引脚
Datain Alias Pinb.6
Setio Alias Ddrb.6
Ddrb.= 1
Ddrb.= 1

'================================定义显示变量===================================
Dim I As Byte , J As Byte , K As Byte
Dim Zimo(3) As Byte
Dim Dianzhen As Long At Zimo Overlay
Dim Lcdstr As String * 2

'##################################绘制界面#####################################
Cls
Showpic 0 , 0 , Back
Showpic 4 , 31 , Set_set                                    '温度SET
Showpic 45 , 31 , Set_set                                   '湿度SET
Showpic 88 , 31 , Heat                                      '加热图标
Showpic 88 , 0 , Water                                      '加湿图标
Showpic 107 , 0 , Pwr_off
                                                             '读取温湿度存储值
Readeeprom Set_temp , 10
Readeeprom Set_rh , 20
If Set_temp = &HFF Then Set_temp = 30
If Set_rh = &HFF Then Set_rh = 50
Writeeeprom Set_temp , 10
Writeeeprom Set_rh , 20

Lcdstr = Str(set_temp)
Disp_10x20 Lcdstr , 13 , 30                                 '显示设置温度
Lcdstr = Str(set_rh)
Disp_10x20 Lcdstr , 54 , 30                                 '显示设置湿度

Sound Beep , 2000 , 210

Waitms 1000
Boxfill(88 , 4) -(103 , 22) , 0                             '清除加湿图标
Waitms 500
Boxfill(88 , 23) -(103 , 39) , 0                            '清除加热图标
Waitms 500
Boxfill(, 23) -(11 , 39) , 0                              '清除温度SET字样
Boxfill(45 , 23) -(52 , 39) , 0                             '清除湿度SET字样

'###############################################################################
Sht_timer_counter = 30
Key_timer_counter = 0
Key_press = 0
Power_on = 0
Heat_on = 0
Water_on = 0
Light_on = 0
Led_grn = 1

Temperature = 0
Humidity = 0
Old_temperature = 1
Old_humidity = 1

Sound Beep , 1000 , 210
Enable Interrupts

Do
   If Sht_timer_counter > 30 Then                           '1秒钟检测1次温湿度
      If Key_timer_counter > 120 Then                       '不操作超过4秒
         Boxfill(, 23) -(11 , 39) , 0                     '清除温度SET字样
         Boxfill(45 , 23) -(52 , 39) , 0                    '清除湿度SET字样
         Writeeeprom Set_temp , 10                          '存储设置值
         Writeeeprom Set_rh , 20
         Old_temperature = 100
         Old_humidity = 100
         Key_press = 0
      End If

      If Key_press = 0 Then                                 '若无按钮按下
         Call Init_sht11()                                  '初始化STH11
         Call Get_sht11()                                   '获取温湿度值
         If Temperature <> Old_temperature Then
            Lcdstr = Str(temperature)
            If Temperature < 10 Then Lcdstr = " " + Lcdstr
            Disp_10x20 Lcdstr , 13 , 30                     '温度显示
            Old_temperature = Temperature
         End If
         If Humidity <> Old_humidity Then
            Lcdstr = Str(humidity)
            If Humidity < 10 Then Lcdstr = " " + Lcdstr
            Disp_10x20 Lcdstr , 54 , 30                     '湿度显示
            Old_humidity = Humidity
         End If
         If Power_on = 1 Then                               '若启动工作
               If Temperature <> 99 And Humidity <> 0 Then  '判断是否连接传感器
                  If Com_temperature < Set_temp Then
                     Heat_on = 1                            '启动加热
                     Showpic 88 , 31 , Heat                 '加热图标
                  End If
                  If Temperature >= Set_temp Then
                     Heat_on = 0                            '停止加热
                     Boxfill(88 , 23) -(103 , 39) , 0       '清除加热图标
                  End If

                  If Humidity < Set_rh Then
                     Water_on = 1                           '启动加湿
                     Showpic 88 , 0 , Water                 '加湿图标
                  End If
                  If Humidity >= Set_rh Then
                     Water_on = 0                           '停止加湿
                     Boxfill(88 , 4) -(103 , 22) , 0        '清除加湿图标
                  End If
               End If
            Else
               Water_on = 0
               Heat_on = 0
               Light_on = 0
         End If
         Key_timer_counter = 0                              '按钮不操作定时复位
      End If
      Sht_timer_counter = 0                                 '显示定时复位
   End If
Loop

End

'###############################################################################

'==================================读取按钮值===================================
Function Get_key_code() As Byte
   Local Get_key As Byte
   Get_key = Key_pin
   Shift Get_key , Right , 4
   Get_key_code = Get_key
End Function

'=================================读取温湿度值==================================
Sub Get_sht11()
   Command = &B00000011
   Call Getit                                               '读取温度

   Tempf = T1f * Dataword
   Tempf = Tempf - 40
   Tempc = T1c * Dataword
   Tempc = Tempc - 40

   Temperature = Round(tempc)
   If Temperature > 99 Then Temperature = 99
   If Temperature < 0 Then Temperature = 0

   Com_temperature = Fix(tempc)
   If Com_temperature > 99 Then Com_temperature = 99
   If Com_temperature < 0 Then Com_temperature = 0

   Command = &B00000101
   Call Getit                                               '读取湿度

   Calc2 = C2 * Dataword
   Calc3 = Dataword * Dataword
   Calc3 = Calc3 * C3
   Calc2 = Calc2 + Calc3
   Rhlinear = C1 + Calc2

   Calc1 = T2 * Dataword
   Calc1 = Calc1 + T1c
   Calc2 = Tempc - 25
   Calc1 = Calc2 * Calc1
   Rhlintemp = Calc1 + Rhlinear

   Humidity = Round(rhlintemp)
   If Humidity > 99 Then Humidity = 99
   If Humidity < 0 Then Humidity = 0
End Sub

'=================================初始化SHT11===================================
Sub Init_sht11()
   Set Dataout
   For Ctr = 1 To 12
      Set Sck
      Waitus 2
      Reset Sck
      Waitus 2
   Next Ctr
End Sub

'==================================操作SHT11====================================
Sub Getit()
   Local Datavalue As Word
   Local Databyte As Byte

   Set Sck                                                  '启动传输
   Reset Dataout
   Reset Sck
   Set Sck
   Set Dataout
   Reset Sck

   Shiftout Dataout , Sck , Command , 1                     '发送测量命令  00000011-测温度,00000101-测温度

   Setio = 0                                                '设置数据口为输入
   Set Sck                                                  'SCK置高
   Reset Sck                                                'SCK置低

   Waitms 400                                               '等待400毫秒, 转换时间: 20/80/320ms--8/12/14bit

   Shiftin Datain , Sck , Databyte , 1                      '读取MSB
   Datavalue = Databyte

   Setio = 1                                                '发送ACK
   Reset Dataout
   Set Sck
   Reset Sck

   Setio = 0
   Shiftin Datain , Sck , Databyte , 1                      '读取LSB
   Shift Datavalue , Left , 8
   Datavalue = Datavalue Or Databyte
   Dataword = Datavalue

   Setio = 1                                                '发送ACK
   Reset Dataout
   Set Sck
   Reset Sck

   Setio = 0
   Shiftin Datain , Sck , Databyte , 1                      '读取CRC字节

   Setio = 1
   Set Dataout
   Set Sck
   Reset Sck
End Sub


'===============================写10X20点阵数字=================================
Sub Disp_10x20(wr_dat As String , Wr_x As Byte , Wr_y As Byte )
   Local Index As Word
   Local Temp_s As String * 1
   Local Ww As Byte
   Local Wx As Byte
   Local Wy As Byte
   Local Mybyte As Byte

   Ww = Len(wr_dat)
   For Mybyte = 1 To Ww
      Temp_s = Mid(wr_dat , Mybyte , 1)
      Select Case Temp_s
         Case "0" To "9"
            Index = Asc(temp_s) - 48
         Case " "
            Index = 10
         Case Else
            Index = 0
      End Select
      Index = Index * 30

      For I = 10 To 1 Step -1
         Zimo(1) = Lookup(index , Shuzi10x20)               '列字节1
         Incr Index
         Zimo(2) = Lookup(index , Shuzi10x20)               '列字节2
         Incr Index
         Zimo(3) = Lookup(index , Shuzi10x20)               '列字节3
         Incr Index

         Wy = Wr_y + I
         For J = 0 To 19
            Wx = Wr_x + J
            If Dianzhen.= 1 Then
               Pset Wx , Wy , 1
               Else
               Pset Wx , Wy , 0
            End If
            Shift Dianzhen , Right , 1
         Next
      Next
      Wr_y = Wr_y - 12
   Next
End Sub

'===============================按钮中断========================================
Int1_int:
   Key_code = Key_pin
   Shift Key_code , Right , 4
   If Key_code <> &B1111 Then
      Incr Key_press
      Sound Beep , 180 , 210

      If Key_press = 1 Then                                 '按钮第一次按下
         Select Case Key_code
            Case Key_start                                  '开始按钮
               Toggle Power_on
               Led_red = Power_on                           '指示灯
               Light_on = Power_on                          '照明灯
               If Power_on = 1 Then
                     Showpic 107 , 0 , Pwr_on
                  Else
                     Showpic 107 , 0 , Pwr_off
                     Boxfill(88 , 23) -(103 , 39) , 0       '清除加热图标
                     Boxfill(88 , 4) -(103 , 22) , 0        '清除加湿图标
                     Boxfill(107 , 23) -(122 , 39) , 0      '清除风扇图标
               End If
               Key_press = 0
               Sht_timer_counter = 25
            Case Key_down To Key_select
               Lcdstr = Str(set_temp)
               Disp_10x20 Lcdstr , 13 , 30                  '显示设置温度
               Lcdstr = Str(set_rh)
               Disp_10x20 Lcdstr , 54 , 30                  '显示设置湿度
               If Set_select = 0 Then
                     Showpic 4 , 31 , Set_set               '温度SET
                     Boxfill(45 , 23) -(52 , 39) , 0        '清除湿度SET字样
                  Else
                     Showpic 45 , 31 , Set_set              '湿度SET
                     Boxfill(, 23) -(11 , 39) , 0         '清除温度SET字样
               End If
               Key_timer_counter = 0                        '按钮不操作定时复位,计时开始
         End Select
         Do
            Key_code = Get_key_code()
         Loop Until Key_code = &B1111
         Waitms 100
         Do
            Key_code = Get_key_code()
         Loop Until Key_code = &B1111
      End If

      If Key_press > 1 Then                                 '按钮第N次按下
         Select Case Key_code
            Case Key_start                                  '开始按钮
               Toggle Power_on
               Led_red = Power_on                           '指示灯
               Light_on = Power_on                          '照明灯
               If Power_on = 1 Then
                     Showpic 107 , 0 , Pwr_on
                  Else
                     Showpic 107 , 0 , Pwr_off
                     Boxfill(88 , 23) -(103 , 39) , 0       '清除加热图标
                     Boxfill(88 , 4) -(103 , 22) , 0        '清除加湿图标
                     Boxfill(107 , 23) -(122 , 39) , 0      '清除风扇图标
               End If
               Do
                  Key_code = Get_key_code()
               Loop Until Key_code = &B1111
               Waitms 100
               Do
                  Key_code = Get_key_code()
               Loop Until Key_code = &B1111
            Case Key_select
               Toggle Set_select
               If Set_select = 0 Then
                  Showpic 4 , 31 , Set_set                  '温度SET
                  Boxfill(45 , 23) -(52 , 39) , 0           '清除湿度SET字样
                  Lcdstr = Str(set_temp)
                  Disp_10x20 Lcdstr , 13 , 30               '显示设置温度
                  Else
                  Showpic 45 , 31 , Set_set                 '湿度SET
                  Boxfill(, 23) -(11 , 39) , 0            '清除温度SET字样
                  Lcdstr = Str(set_rh)
                  Disp_10x20 Lcdstr , 54 , 30               '显示设置湿度
               End If
               Key_timer_counter = 0                        '按钮不操作定时复位,计时开始
               Do
                  Key_code = Get_key_code()
               Loop Until Key_code = &B1111
               Waitms 100
               Do
                  Key_code = Get_key_code()
               Loop Until Key_code = &B1111
            Case Key_up
               Do
                  If Set_select = 0 Then
                     Incr Set_temp
                     If Set_temp > 50 Then Set_temp = 50
                     Lcdstr = Str(set_temp)
                     Disp_10x20 Lcdstr , 13 , 30            '显示设置温度
                     Else
                     Incr Set_rh
                     If Set_rh > 80 Then Set_rh = 80
                     Lcdstr = Str(set_rh)
                     Disp_10x20 Lcdstr , 54 , 30            '显示设置湿度
                  End If
                  Key_timer_counter = 0                     '按钮不操作定时复位,计时开始

                  Waitms 100
                  If Get_key_code() <> Key_up Then
                        Do
                           Key_code = Get_key_code()
                        Loop Until Key_code = &B1111
                        Exit Do
                     Else
                        Waitms 200
                        If Get_key_code() <> Key_up Then    '判断按住不放
                           Exit Do
                        End If
                  End If
               Loop
            Case Key_down
               Do
                  If Set_select = 0 Then
                     Decr Set_temp
                     If Set_temp < 25 Then Set_temp = 25
                     Lcdstr = Str(set_temp)
                     Disp_10x20 Lcdstr , 13 , 30            '显示设置温度
                     Else
                     Decr Set_rh
                     If Set_rh < 10 Then Set_rh = 10
                     Lcdstr = Str(set_rh)
                     Disp_10x20 Lcdstr , 54 , 30            '显示设置湿度
                  End If
                  Key_timer_counter = 0                     '按钮不操作定时复位,计时开始
                  Waitms 100
                  If Get_key_code() <> Key_down Then
                        Do
                           Key_code = Get_key_code()
                        Loop Until Key_code = &B1111
                        Exit Do
                     Else
                        Waitms 200
                        If Get_key_code() <> Key_down Then  '判断按住不放
                           Exit Do
                        End If
                  End If
               Loop
         End Select
       End If
   End If
Return

'-------------------------------------------------------------------------------
Timer0_isr:
   Incr Sht_timer_counter
   Incr Key_timer_counter
Return

'============================10X20点阵数字======================================
Shuzi10x20:
Data &HE0 , &HFF , &H00 , &HF8 , &HFF , &H03 , &H3C , &H80 , &H07 , &H0E
Data &H00 , &H0E , &H0E , &H00 , &H0E , &H0E , &H00 , &H0E , &H3C , &H80
Data &H07 , &HF8 , &HFF , &H03 , &HC0 , &HFF , &H00 , &H00 , &H00 , &H00       '0
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &HE0 , &H00 , &H00 , &HF0
Data &H00 , &H00 , &HFE , &HFF , &H0F , &HFE , &HFF , &H0F , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00       '1
Data &HF0 , &H00 , &H0E , &HFC , &H00 , &H0F , &H1C , &H80 , &H0F , &H0E
Data &HC0 , &H0E , &H0E , &H60 , &H0E , &H0E , &H38 , &H0E , &H1C , &H1E
Data &H0E , &HFC , &H0F , &H0E , &HF0 , &H03 , &H0E , &H00 , &H00 , &H00       '2
Data &H70 , &H80 , &H01 , &H7C , &H80 , &H07 , &H1E , &H00 , &H0F , &H0E
Data &H0E , &H0E , &H0E , &H0E , &H0E , &H0E , &H0E , &H0E , &H1E , &H1F
Data &H0F , &HFC , &HFB , &H07 , &HF0 , &HF1 , &H01 , &H00 , &H00 , &H00       '3
Data &H00 , &HF0 , &H00 , &H00 , &HFE , &H00 , &H80 , &HE7 , &H00 , &HE0
Data &HE1 , &H00 , &H3C , &HE0 , &H00 , &HFE , &HFF , &H0F , &HFE , &HFF
Data &H0F , &H00 , &HE0 , &H00 , &H00 , &HE0 , &H00 , &H00 , &H00 , &H00       '4
Data &HFE , &HC7 , &H01 , &HFE , &HC7 , &H07 , &H8E , &H03 , &H0F , &HCE
Data &H01 , &H0E , &HCE , &H01 , &H0E , &HCE , &H01 , &H0E , &H8E , &H87
Data &H0F , &H0E , &HFF , &H07 , &H0E , &HFE , &H01 , &H00 , &H00 , &H00       '5
Data &HE0 , &HFF , &H00 , &HF8 , &HFF , &H03 , &H3C , &H8F , &H07 , &H8E
Data &H03 , &H0E , &H8E , &H03 , &H0E , &H8E , &H03 , &H0E , &H1E , &H07
Data &H0F , &H3C , &HFF , &H07 , &H30 , &HFC , &H01 , &H00 , &H00 , &H00       '6
Data &H0E , &H00 , &H00 , &H0E , &H80 , &H0F , &H0E , &HF0 , &H0F , &H0E
Data &HFE , &H0F , &H8E , &H7F , &H00 , &HEE , &H07 , &H00 , &HFE , &H01
Data &H00 , &H3E , &H00 , &H00 , &H1E , &H00 , &H00 , &H00 , &H00 , &H00       '7
Data &HF0 , &HF1 , &H01 , &HFC , &HFB , &H07 , &H1E , &H1F , &H0F , &H0E
Data &H0E , &H0E , &H0E , &H0E , &H0E , &H0E , &H0E , &H0E , &H1E , &H1F
Data &H0F , &HFC , &HFB , &H07 , &HF0 , &HF1 , &H01 , &H00 , &H00 , &H00       '8
Data &HF8 , &H87 , &H03 , &HFC , &H9F , &H07 , &H1E , &H3C , &H0F , &H0E
Data &H38 , &H0E , &H0E , &H38 , &H0E , &H0E , &H38 , &H0F , &H3C , &H9E
Data &H07 , &HF8 , &HFF , &H03 , &HE0 , &HFF , &H00 , &H00 , &H00 , &H00       '9
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00       'Space

'===============================声明图片========================================
Back:
$bgf "back.bgf"
Heat:
$bgf "heat.bgf"
Fan:
$bgf "fan.bgf"
Water:
$bgf "water.bgf"
Set_set:
$bgf "set.bgf"
Pwr_on:
$bgf "on.bgf"
Pwr_off:
$bgf "off.bgf"

'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
回复

使用道具 举报

6

主题

1

好友

3385

积分

超级版主

Rank: 8Rank: 8

UID
10
帖子
48
精华
1
注册时间
2013-2-26
在线时间
27 小时
发表于 2013-11-27 09:20:27 |显示全部楼层
再次拜读 老大威武
天之道,利而不害;圣人之道,为而不争
回复

使用道具 举报

1

主题

0

好友

146

积分

初级会员

Rank: 2

UID
526
帖子
15
精华
0
注册时间
2013-10-17
在线时间
10 小时
发表于 2013-11-30 22:13:03 |显示全部楼层
老大威武,又学了不少!
已有 1 人评分金钱 收起 理由
箫天 + 100 来了就给分,:D

总评分: 金钱 + 100   查看全部评分

回复

使用道具 举报

2

主题

0

好友

748

积分

高级会员

Rank: 4

UID
160
帖子
37
精华
0
注册时间
2013-3-3
在线时间
9 小时
发表于 2013-12-4 14:30:49 |显示全部楼层
搞得太好了,想转载可否?先问下。免得惹麻烦。
回复

使用道具 举报

0

主题

0

好友

19

积分

新手上路

Rank: 1

UID
588
帖子
4
精华
0
注册时间
2014-3-14
在线时间
0 小时
发表于 2014-3-14 10:27:16 |显示全部楼层
搞得太好了,佩服!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|圣龙扬特-AVR电子 ( 鲁ICP备05022832号 )

GMT+8, 2020-11-30 15:05 , Processed in 0.340214 second(s), 35 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部