找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9931|回复: 0
打印 上一主题 下一主题
收起左侧

bascom avr单片机温控加Proteus仿真

[复制链接]
跳转到指定楼层
楼主
bascom-avr温控加仿真,适合单片机学习,小项目制作
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. $regfile = "m32def.dat"
  2. $crystal = 8000000
  3. $baud = 9600
  4. Dim Ad As Word , N As Single , V As String * 5 , F As Byte , G As Byte , Spt As Eram Byte , Sp1 As Byte , Flag As Bit
  5. Dim Flag2 As Bit , Sll As Eram Byte , Slh As Eram Byte , Hy As Eram Byte , Md As Eram String * 5 , Flag3 As Bit , Flag4 As Bit
  6. Dim Md1 As String * 5 , Sll1 As Byte , Slh1 As Byte , Hy1 As Byte , Alh As Eram Byte , All As Eram Byte , Alh1 As Byte , All1 As Byte
  7. Dim Hy2 As Byte , Sp2 As Byte , Md2 As String * 5 , Alh2 As Byte , All2 As Byte , V1 As Byte , Ma As Byte , Mb As Byte , Sll2 As Byte , Slh2 As Byte
  8. Config Debounce = 30
  9. Config Porta.4 = Output                                     'haeter
  10. Config Porta.5 = Output                                     'colling
  11. Config Porta.1 = Output                                     'alarm
  12. Config Pinb.7 = Input                                       'key security
  13. Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
  14. Config Lcd = 16 * 2
  15. Config Adc = Single , Prescaler = Auto , Reference = Off
  16. Portb = 255                                                 'pullup internal
  17. Start Adc
  18. Deflcdchar 0 , 4 , 14 , 4 , 4 , 4 , 4 , 4 , 4
  19. Deflcdchar 1 , 4 , 14 , 4 , 4 , 4 , 4 , 4 , 4
  20. Deflcdchar 2 , 4 , 4 , 4 , 4 , 4 , 14 , 4 , 4
  21. Cursor Off
  22. Print "welcom to control temperature"
  23. '#############################################################
  24. Do
  25. Debounce Pinb.0 , 0 , L1 , Sub                              'mode
  26. Debounce Pinb.2 , 0 , L2 , Sub                              'right,down
  27. Debounce Pinb.4 , 0 , L3 , Sub                              'top
  28. Debounce Pinb.6 , 0 , L4 , Sub                              'setup
  29. Ad = Getadc(0)
  30. N = Ad * 0.14663
  31. V = Fusing(n , "#.##")                                      'temperature by format string
  32. Hy2 = Hy
  33. Sp2 = Spt                                                   'sp
  34. Md2 = Md
  35. Alh2 = Alh
  36. All2 = All
  37. V1 = Val(v)                                                 'convert format to byte
  38. If F = 0 Then
  39. Cls
  40. Lcd "T=" ; V ; "C"
  41. Locate 1 , 11
  42. Lcd "sp=" ; Sp2
  43. Locate 2 , 1
  44. Lcd "md=" ; Md2 ; " " ; "hy=" ; Hy2
  45. If Porta.1 = 1 Then
  46. Locate 2 , 14
  47. Lcd "alm"
  48. End If
  49. Waitms 70
  50. End If
  51. If V1 > Alh2 Or V1 < All2 Then
  52. Porta.1 = 1
  53. Else
  54. Porta.1 = 0
  55. End If
  56. Hy2 = Hy
  57. Hy2 = Hy2 / 2
  58. Ma = Sp2 + Hy2
  59. Mb = Sp2 - Hy2
  60. If Md2 = "HT" Then                                          'main
  61. Porta.5 = 0
  62. If V1 =< Mb Then
  63. Porta.4 = 1
  64. Elseif V1 >= Ma Then
  65. Porta.4 = 0
  66. End If
  67. Elseif Md2 = "CL" Then
  68. Porta.4 = 0
  69. If V1 >= Ma Then
  70. Porta.5 = 1
  71. Elseif V1 =< Mb Then
  72. Porta.5 = 0
  73. End If
  74. End If
  75. Loop
  76. End
  77. '#############################################################
  78. L1:                                                         'intro mode
  79. Sll2 = Sll
  80. Slh2 = Slh
  81. Print "tempreature=" ; V ; "setpoint=" ; Sp2 ; "mode=" ; Md2 ; "hystrisis" ; Hy2
  82. Print "alarm high=" ; Alh2 ; "alarm low=" ; All2 ; "setpoint high=" ; Slh2 ; "setpoint low=" ; Sll2
  83. If Flag = 0 And Flag2 = 0 Then
  84. Incr F
  85. End If
  86. If F = 1 And Flag = 0 And Flag2 = 0 Then
  87. Cls
  88. Locate 1 , 5
  89. Lcd "setpoint"                                              'mode SP
  90. Elseif F = 2 And Flag = 0 And Flag2 = 0 Then
  91. Cls
  92. Locate 1 , 2
  93. Lcd "configuration"                                         'mode CFG
  94. Elseif F = 3 And Flag = 0 And Flag2 = 0 Then
  95. F = 0                                                       'mode normal
  96. End If
  97. Return
  98. '#############################################################
  99. L2:
  100. If F = 2 And Flag2 = 1 And Flag3 = 0 Then                   'right motion to CFG
  101. If G = 0 Then
  102. Cls
  103. Locate 1 , 1
  104. Lcd Chr(0) ; Chr(0) ; Chr(0)
  105. Locate 2 , 1
  106. Lcd "SLL"
  107. Locate 2 , 5
  108. Lcd "SLH"
  109. Locate 2 , 10
  110. Lcd "MD"
  111. Locate 2 , 14
  112. Lcd "HY"
  113. G = 5
  114. Elseif G = 5 Then
  115. Cls
  116. Locate 1 , 5
  117. Lcd Chr(0) ; Chr(0) ; Chr(0)
  118. Locate 2 , 1
  119. Lcd "SLL"
  120. Locate 2 , 5
  121. Lcd "SLH"
  122. Locate 2 , 10
  123. Lcd "MD"
  124. Locate 2 , 14
  125. Lcd "HY"
  126. G = 10
  127. Elseif G = 10 Then
  128. Cls
  129. Locate 1 , 10
  130. Lcd Chr(0) ; Chr(0) ; Chr(0)
  131. Locate 2 , 1
  132. Lcd "SLL"
  133. Locate 2 , 5
  134. Lcd "SLH"
  135. Locate 2 , 10
  136. Lcd "MD"
  137. Locate 2 , 14
  138. Lcd "HY"
  139. G = 15
  140. Elseif G = 15 Then
  141. Cls
  142. Locate 1 , 14
  143. Lcd Chr(0) ; Chr(0) ; Chr(0)
  144. Locate 2 , 1
  145. Lcd "SLL"
  146. Locate 2 , 5
  147. Lcd "SLH"
  148. Locate 2 , 10
  149. Lcd "MD"
  150. Locate 2 , 14
  151. Lcd "HY"
  152. G = 20
  153. Elseif G = 20 Then
  154. Cls
  155. Locate 1 , 1
  156. Lcd Chr(0) ; Chr(0) ; Chr(0)
  157. Locate 2 , 1
  158. Lcd "ALH"
  159. Locate 2 , 6
  160. Lcd "ALL"
  161. Locate 2 , 13
  162. Lcd "bake"
  163. G = 25
  164. Elseif G = 25 Then
  165. Cls
  166. Locate 1 , 6
  167. Lcd Chr(0) ; Chr(0) ; Chr(0)
  168. Locate 2 , 1
  169. Lcd "ALH"
  170. Locate 2 , 6
  171. Lcd "ALL"
  172. Locate 2 , 13
  173. Lcd "bake"
  174. G = 30
  175. Elseif G = 30 Then
  176. Cls
  177. Locate 1 , 13
  178. Lcd Chr(0) ; Chr(0) ; Chr(0)
  179. Locate 2 , 1
  180. Lcd "ALH"
  181. Locate 2 , 6
  182. Lcd "ALL"
  183. Locate 2 , 13
  184. Lcd "bake"
  185. G = 0
  186. End If
  187. Elseif F = 2 And Flag2 = 1 And Flag3 = 1 Then               'intro md
  188. If Flag4 = 0 Then
  189. Cls
  190. Locate 1 , 1
  191. Lcd Chr(0) ; Chr(0) ; Chr(0)
  192. Locate 2 , 1
  193. Lcd "heat"
  194. Locate 2 , 9
  195. Lcd "cold"
  196. Flag4 = 1
  197. Elseif Flag4 = 1 Then
  198. Cls
  199. Locate 1 , 9
  200. Lcd Chr(0) ; Chr(0) ; Chr(0)
  201. Locate 2 , 1
  202. Lcd "heat"
  203. Locate 2 , 9
  204. Lcd "cold"
  205. Flag4 = 0
  206. End If
  207. Elseif F = 1 And Flag = 1 Then                              'down
  208. Decr Sp1
  209. Cls
  210. Locate 1 , 7
  211. Lcd Chr(1) ; Chr(2)
  212. Locate 2 , 1
  213. Lcd "setpoint=" ; Sp1
  214. Elseif F = 7 Then
  215. Decr Sll1
  216. Cls
  217. Locate 1 , 7
  218. Lcd Chr(1) ; Chr(2)
  219. Locate 2 , 1
  220. Lcd "sp level low=" ; Sll1
  221. Elseif F = 8 Then
  222. Decr Slh1
  223. Cls
  224. Locate 1 , 7
  225. Lcd Chr(1) ; Chr(2)
  226. Locate 2 , 1
  227. Lcd "splevel high=" ; Slh1
  228. Elseif F = 9 Then
  229. Decr Hy1
  230. Cls
  231. Locate 1 , 7
  232. Lcd Chr(1) ; Chr(2)
  233. Locate 2 , 1
  234. Lcd "hystrisis=" ; Hy1
  235. Elseif F = 11 Then
  236. Decr Alh1
  237. Cls
  238. Locate 1 , 7
  239. Lcd Chr(1) ; Chr(2)
  240. Locate 2 , 1
  241. Lcd "alarm high=" ; Alh1
  242. Elseif F = 12 Then
  243. Decr All1
  244. Cls
  245. Locate 1 , 7
  246. Lcd Chr(1) ; Chr(2)
  247. Locate 2 , 1
  248. Lcd "alarm low=" ; All1
  249. End If
  250. Return
  251. '##########################################################
  252. L3:                                                         'top
  253. If F = 1 And Flag = 1 Then
  254. Incr Sp1
  255. Cls
  256. Locate 1 , 7
  257. Lcd Chr(1) ; Chr(2)
  258. Locate 2 , 1
  259. Lcd "setpoint=" ; Sp1
  260. Elseif F = 7 Then
  261. Incr Sll1
  262. Cls
  263. Locate 1 , 7
  264. Lcd Chr(1) ; Chr(2)
  265. Locate 2 , 1
  266. Lcd "sp level low=" ; Sll1
  267. Elseif F = 8 Then
  268. Incr Slh1
  269. Cls
  270. Locate 1 , 7
  271. Lcd Chr(1) ; Chr(2)
  272. Locate 2 , 1
  273. Lcd "splevel high=" ; Slh1
  274. Elseif F = 9 Then
  275. Incr Hy1
  276. Cls
  277. Locate 1 , 7
  278. Lcd Chr(1) ; Chr(2)
  279. Locate 2 , 1
  280. Lcd "hystrisis=" ; Hy1
  281. Elseif F = 11 Then
  282. Incr Alh1
  283. Cls
  284. Locate 1 , 7
  285. Lcd Chr(1) ; Chr(2)
  286. Locate 2 , 1
  287. Lcd "alarm high=" ; Alh1
  288. Elseif F = 12 Then
  289. Incr All1
  290. Cls
  291. Locate 1 , 7
  292. Lcd Chr(1) ; Chr(2)
  293. Locate 2 , 1
  294. Lcd "alarm low=" ; All1
  295. End If
  296. Return
  297. '##########################################################
  298. L4:                                                         'setup
  299. If F = 1 And Flag = 0 Then
  300. Cls
  301. Lcd "please change sp"
  302. Locate 2 , 1
  303. Lcd "by key top/down"
  304. Wait 1
  305. Cls
  306. Sp1 = Spt
  307. Locate 1 , 7
  308. Lcd Chr(1) ; Chr(2)
  309. Locate 2 , 1
  310. Lcd "setpoint=" ; Sp1

  311. ……………………

  312. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
bascon温控加仿真.zip (327.63 KB, 下载次数: 19)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表