⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 avr单片机atmage16驱动小灯的一些例程 并且包括一些收发数据的程序利用usb口
💻 C
字号:
/*
实验三十:

	DS18B20实验,动态LED数据管显示温度。
	1、AVR单片机读取DS18B20实验,并通过学习板上在LED数码管显示温度。
	2、晶振频率为内部1MHz。
	3、DS18B20由PA7口实现单总线访问,实现读取温度。
	4、低层驱动函数中带有中断保护,程序可直接用于商业产品中。
	5、LED数码管显示采用定时器中断方式,全中断驱动,不需要主程序管理,只要把要显示的内部放到显示缓存区就行了。
	6、进行此实验请插上JP1的所有8个短路块,JP6(SPI_EN)短路块。
	7、DS18B20的电源脚接到VCC及GND上面,数据线接到PA7口。

	AVR  mega16学习板
	AVR_AFA
	www.iccavr.com
	11:48 2007-6-30
*/

#include "iom16v.h"						/*包含相关头文件*/
#include "ds1820.h"
#include "led4.h"

/*
延时函数

延时单位为:mS。
CPU频率为:1MHz。
*/
void delay_ms(unsigned int i) {

	unsigned char b;
	while (i --) {
		for (b = 1; b; b++) {
			;
			}
		}
}

/*
主函数

实现系统的初始化操作。
周期性读取温度。
然后放入显示缓存区。
上面两个任务之间完全独立运行,方便移植。
*/
void main(void) {

	unsigned int i;

	DDRA = 0x00;						/*方向输入*/
	PORTA = 0xFF;						/*打开上拉*/
	DDRB = 0xFF;						/*方向输出*/
	PORTB = 0xF0;						/*电平设置*/
	DDRC = 0x00;
	PORTC = 0xFF;
	DDRD = 0x00;
	PORTD = 0xFF;

	delay_ms(200);
	ds1820_reset();						/*复位D18B20*/
	led4_init();						/*启动显示任务*/
	while (1) {
		ds1820_start();					/*启动一次转换*/
		delay_ms(2000);					/*等待转换结束*/
		i = ds1820_read_temp();			/*读取温度数值*/
		i = (i * 10) / 16;				/*数值处理*/
		led_buf[3] = i / 1000;			/*将显示信息加载到显示缓存区*/
		i = i % 1000;
		led_buf[2] = i / 100;
		i = i % 100;
		led_buf[1] = i / 10;
		led_buf[0] = i % 10;
		led_buf[4] = 1;					/*小数点位置*/
		}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -