基于ATmega16与1602LCD的温度显示程序.pdf

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
精品文档 基于 ATmega16与 1602LCD的温度显示程序 // 主芯片为 ATmega16 // 间隔 2s 采集一次温度值 // 使用 1602 的液晶作为显示 主程序如下: #include <iom16v.h> #include <macros.h> #include "18B20.h" #include "1602.h" uchar adc_0[]={"Temperature:"}; uchar adc_1[]={0xdf,0x43}; // 延时函数在 16M 时延时 1ms void s_1ms(unsigned int ms) { unsigned int aa; for(;ms>=1;ms--) { for(aa=0;aa<=2000;aa++) {;} } } void main() { unsigned int i,tem3,tem2,tem1; // 端口初始化 DDRA = 0xff; PORTA = 0x00; DDRB = 0xFF; PORTB = 0xF0; DDRC = 0x00; PORTC = 0xFF; DDRD = 0xff; PORTD = 0xff; // 延时 200ms s_1ms(200); //DS18B20 复位 ds1820_reset(); //1602 初始化 LcdInit(); 。 1欢迎下载 精品文档 WriteChar(1,0,12,adc_0); WriteChar(1,14,2,adc_1); while (1) { // 进行一次转换 ds1820_start(); s_1ms(2000); i = ds1820_read_temp(); // 读取温度数值 i = (i * 10) / 16; // 数值处理 // 第 3 位没有显示 i = i % 1000; // 显示第 2 位 tem2= i / 100; WriteNum(1,12,tem2); i = i % 100; // 显示第 1 位 tem1= i / 10; WriteNum(1,13,tem1); } } DS18B20的头文件程序: //DS18B20 连接在端口 C 的第 6 引脚 // 设置成输入 #define DQ_INPUT DDRC &= ~(1 << PC6) // 设置成输出 #define DQ_OUT DDRC |= (1 << PC6) // 设置成低电平 #define DQ_LO PORTC &= ~(1 << PC6) // 设置成高电平 #define DQ_HI PORTC |= (1 << PC6) // 读出 #define DQ_R PINC & (1 << PC6) // 中断标志 unsigned char init_f; // 延时函数 void s_10us(unsigned int ms) { unsigned int aa; 。 2欢迎下载

文档评论(0)

wanggx999 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档