#include<iom16v.h>
#include <macros.h>
#include "LCD1602.h"
#include "DS18B20.h"
unsigned char L1[16];//显示第一行
unsigned char L2[16];//显示第二行
unsigned int temp_h,temp_l,led_flag=0;
extern unsigned int temper;
void delay_nus(unsigned int n) //8*0.125=1us
{
int i,j;
for(j=0;j<8;j++)
{
for (i=0;i<n;i++)
NOP();
}
}
void delay_1ms(void)
{
unsigned char i,j;
for(i=0;i<40;i++)
for(j=0;j<33;j++)
{;}
}
void delay_xms(unsigned int x)
{
unsigned int i;
for(i=0;i<x;i++)
{
delay_1ms();
}
}
unsigned char keyscan(void)//key1:+;key2:-;key3:FUN;key4:OK;
{
unsigned int key;
if((PIND|0x0F)!=0xFF)
{
delay_xms(70);
if((PIND|0x0F)!=0xFF)
{
key=(PIND|0x0F);
switch(key)
{
case 0xEF:key=1;break;
case 0xDF:key=2;break;
case 0xBF:key=3;break;
case 0x7F:key=4;break;
default:key=0;break;
}
}
return key;
}
}
void led_show(void)
{
if(temper>temp_l)
{
if(temper>temp_h)
{
led_flag=1;
}
else
{
led_flag=0;
}
}
else
{
led_flag=2;
}
}
void main(void)
{
unsigned int plus,minus,fun,set,temp_ht,temp_lt,i;
temp_h=300,temp_l=100,plus=0,minus=0,fun=0,set=0;
temp_ht=temp_h;
temp_lt=temp_l;
DDRA=0xFF;
DDRB=0xFF;
DDRC = 0x10;
DDRD=0x0F;
PORTA=0xFF;
PORTB=0xFF;
PORTC = 0x10;
PORTD=0xFF;
LCD1602_init();
while(1)
{
get_tem();
led_show();
switch(led_flag)
{
case 0: PORTD|=BIT(0);PORTD|=BIT(1);break;
case 1: PORTD&=~BIT(0);PORTD|=BIT(1);break;
case 2: PORTD|=BIT(0);PORTD&=~BIT(1);break;
default: break;
}
switch(keyscan())
{
case 1: plus=1;break;
case 2: minus=1;break;
case 3: fun++;if(fun==3){fun=0;}temp_ht=temp_h;temp_lt=temp_l;break;
case 4: set=1;break;
default: break;
}
if(plus==1)
{
plus=0;
switch(fun)
{
case 0: break;
case 1: temp_ht+=10;break;
case 2: temp_lt+=10;break;
default: break;
}
}
if(minus==1)
{
minus=0;
switch(fun)
{
case 0: break;
case 1: temp_ht-=10;break;
case 2: temp_lt-=10;break;
default: break;
}
}
if(set==1)
{
switch(fun)
{
case 0: break;
case 1: temp_h=temp_ht;break;
case 2: temp_l=temp_lt;break;
default: break;
}
set=0;
fun=0;
}
if(fun==0)
{
L2[0]='H';
L2[1]=temp_h/100+'0';
L2[2]=temp_h%100/10+'0';
L2[3]='.';
L2[4]=temp_h%10+'0';
L2[5]=' ';
L2[6]=' ';
L2[7]='L';
L2[8]=temp_l/100+'0';
L2[9]=temp_l%100/10+'0';
L2[10]='.';
L2[11]=temp_l%10+'0';
LCD_write_string(0,0,L1);
LCD_write_string(0,1,L2);
}
else if(fun==1)
{
for(i=0;i<16;i++)
{
L2[i]=' ';
}
L2[0]='S';
L2[1]='E';
L2[2]='T';
L2[3]=' ';
L2[4]='H';
L2[5]=temp_ht/100+'0';
L2[6]=temp_ht%100/10+'0';
L2[7]='.';
L2[8]=temp_ht%10+'0';
LCD_write_string(0,0," ");
LCD_write_string(0,1,L2);
}
else
{
for(i=0;i<16;i++)
{
L2[i]=' ';
}
L2[0]='S';
L2[1]='E';
L2[2]='T';
L2[3]=' ';
L2[4]='L';
L2[5]=temp_lt/100+'0';
L2[6]=temp_lt%100/10+'0';
L2[7]='.';
L2[8]=temp_lt%10+'0';
LCD_write_string(0,0," ");
LCD_write_string(0,1,L2);
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本课程实验基于Atmega16、DS18B20、LCD1602进行了温度采集、LCD显示以及超过阈值报警等功能。本课程实验基于Proteus 8.6仿真,注意需要设置为8MHz的内部震荡。正常工作时,1602显示温度值以及上下限的阈值;按下FUN,切换为上限值,再按一下切换为下限值,再按切回正常显示。单独显示上/下限值时可以用'+','-'按键进行阈值的调整,按下SET确定调整值。
资源推荐
资源详情
资源评论
收起资源包目录
基于Atmega16的温度采集和阈值报警课程实验以及Proteus仿真.zip (162个子文件)
DS18B20.h.130717111250 3KB
main.c.221121101816 1B
main.c.221121105758 556B
main.c.221121105842 768B
DS18B20.h.221121110432 368B
DS18B20.c.221121110534 2KB
main.c.221121111412 980B
DS18B20.h.221121111636 426B
DS18B20.c.221121111654 2KB
DS18B20.c.221121111824 2KB
ds18b20.h.221121111824 458B
DS18B20.c.221121112614 2KB
ds18b20.h.221121112650 3KB
main.c.221121112918 980B
main.c.221121113046 974B
ds18b20.h.221121113608 3KB
main.c.221121113608 1KB
main.c.221121113630 1KB
ds18b20.h.221121113730 3KB
ds18b20.h.221121113908 3KB
ds18b20.h.221121114050 3KB
ds18b20.h.221121114328 3KB
ds18b20.h.221121114354 3KB
ds18b20.h.221121114416 3KB
ds18b20.h.221121114856 3KB
ds18b20.h.221121114916 3KB
ds18b20.h.221121114932 3KB
ds18b20.h.221121115044 3KB
main.c.221121115254 1KB
main.c.221121115344 1KB
DS18B20.c.221121115524 2KB
main.c.221121115524 1KB
main.c.221121115626 1KB
main.c.221121115748 1KB
main.c.221121202912 1KB
main.c.221121205846 1KB
main.c.221121205902 1KB
main.c.221121205932 1KB
main.c.221121205940 1KB
main.c.221121210148 1KB
main.c.221121211142 1KB
main.c.221121211152 1KB
main.c.221121211324 1KB
main.c.221121211938 1KB
ds18b20.h.221121212312 3KB
ds18b20.h.221121212320 3KB
main.c.221121212442 1KB
ds18b20.h.221121212704 3KB
ds18b20.h.221121224632 3KB
ds18b20.h.221122142704 3KB
main.c.221122143634 1KB
ds18b20.h.221122143744 3KB
ds18b20.h.221122144012 3KB
DS18B20.h.221122144024 3KB
main.c.221122144254 1KB
main.c.221122151744 1KB
DS18B20.h.221122153656 2KB
main.c.221122153656 1KB
main.c.221122153730 1KB
main.c.221122154100 1KB
DS18B20.h.221122154348 2KB
main.c.221122154422 1KB
DS18B20.h.221122154550 2KB
main.c.221122154550 1KB
main.c.221122154630 1KB
DS18B20.c.221122154750 2KB
main.c.221122154750 1KB
DS18B20.c.221122155028 2KB
DS18B20.c.221122155236 2KB
DS18B20.h.221122155310 385B
main.c.221122155318 1KB
main.c.221122155452 1KB
main.c.221122191538 1KB
main.c.221122193810 2KB
DS18B20.c.221122193854 2KB
main.c.221122193904 2KB
main.c.221122194104 2KB
main.c.221122194222 2KB
main.c.221122194412 2KB
main.c.221122194428 2KB
main.c.221122194452 2KB
main.c.221122194532 2KB
main.c.221122194654 2KB
main.c.221122194750 2KB
main.c.221122200416 2KB
main.c.221122200430 2KB
main.c.221122200900 2KB
main.c.221122201242 2KB
main.c.221122201610 3KB
main.c.221122201706 3KB
main.c.221122201748 3KB
main.c.221122201842 3KB
main.c.221122202020 3KB
main.c.221122202030 3KB
main.c.221122202704 3KB
main.c.221122202912 3KB
main.c.221122203110 3KB
main.c.221122203210 3KB
main.c.221122203540 3KB
main.c.221122203932 3KB
共 162 条
- 1
- 2
资源评论
木贞子
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功