蓝桥杯单片机学习过程记录(三十一)第九届国赛多功能测量仪表

本文记录了作者在第九届蓝桥杯国赛中制作多功能测量仪表的经验,涉及单片机编程,包括温度传感器DS18B20的使用,独立按键、数码管显示、LED控制、定时器操作、IIC协议中的EEPROM读写以及NE555方波产生器的应用。重点提到了处理温度数据的精度问题,EEPROM的数据存储技巧,以及理解和运用NE555定时器的原理。
摘要由CSDN通过智能技术生成

蓝桥杯单片机学习过程记录(三十一)第九届国赛多功能测量仪表

第九届国赛,比较基础。有几点需要注意:一是温度获取需要小数,定义变量时long。二是存储时拆分开成两部分进行存储,要不然eeprom保存不了那么大的数字。三是小灯亮灭部分谁开谁闭,非与或灯要理清楚。四是NE555的计数定时,要清楚定时器的原理。
应用的内容:
独立按键、数码管
led、定时器
温度传感器DS18B20
IIC中RB2和EEPROM读取写入
NE555方波产生器
题目如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

/*
---------------------
第九届国赛多功能测量仪表
2020.3.29
完成
---------------------
*/


#include<STC15F2K60S2.H>
#include<intrins.h>
#include<onewire.h>
#include<iic.h>

sbit s7=P3^0;
sbit s6=P3^1;
sbit s5=P3^2;
sbit s4=P3^3;

bit flag_shanshuo;
long wendu;
unsigned int count_freq,freq,rb2_read;
unsigned char t_1,rb2_save,freq_save_1,freq_save_2,wendu_save_1,wendu_save_2,dis_h_1,dis_h_2,dianya_set;
unsigned char flag_yemian,flag_h,flag_longset;
unsigned char yi,er,san,si,wu,liu,qi,ba;
unsigned char seg[]={
   0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10, 0xbf,0xff,0xc1,0xc6,0x8e,0x89,0x8c};
void allinit();
void delayms(int ms);
void display_12(yi,er);
void display_34(san,si);
void display_56(wu,liu);
void display_78(qi,ba);
void Timer0Init(void);
void Timer1Init(void);
unsigned char iic_read(unsigned char add);
void eeprom_write(unsigned char add,unsigned char dat);
unsigned char eeprom_read(unsigned char add);
long ds18b20_get();
void key_scan();
void led_set();	
//主函数
void main(){
   
	//初始化
	allinit();
	Timer0Init();Timer1Init();
	EA=1;ET0=1;ET1=1;
	dianya_set=eeprom_read(0x10);delayms(5);
	while(1){
   
		//实时读取电压
		rb2_read=iic_read(0x03)*2;
		//小灯亮灭函数
		led_set();		
		//电压显示界面
		if(flag_yemian==0){
   
			yi=22;er=21;san=21;si=21;wu=21;liu=21;qi=rb2_read/100+10;ba=rb2_read%100/10;
		}
		//频率显示界面
		else if(flag_yemian==1){
   
			yi=24;er=21;san=21;si=freq/10000;wu=freq%10000/1000;liu=freq%1000/100;qi
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值