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

📄 main.c

📁 本源码是实现1602的液晶驱动,实验平台是AVR单片机
💻 C
字号:
#include <iom16v.h>
#include <macros.h>
#include <string.h>
#include "port.h" // 位变量定义及串口初死化
#include "1602.h"  //用的傻孩子的1602显示文件,其中显示数字的我改了一下.
unsigned int adczs; //ADC三次平均数
unsigned int re;    //串口接收到的数据,
void main(void)
{   
DDRC = 0b11111111;
PORTC = 0b00000000;
DDRB = 0b11111111;
PORTB = 0b00000000;
PORTDefine();
LCDInit();
PORTA=0;
DDRA=0;
   Locate(1,1)
   Print("[ADCL")
   Locate(11,1)
   Print("ADC16")
   Locate(1,0)
   Print("[ADCH")
   Locate(16,1)
   Print("]")
   Locate(16,0)
   Print("]")

ADMUX=0b01000000;  //ADC0,
ADCSR=0B10001110;  //
ADCSR|=0B01000000; //启动一次转换
delay_nms(1);
while(ADCSR&0b00010000)   //这个可能没有起做用,我还不熟
{
unsigned int n;     
unsigned int adcl;
unsigned int adch;
unsigned int adc;
unsigned int adcpjt;  

ADCSR|=0B00000000; //清转换完成标志位,也不知道是不是M16已经硬件清除了.
  adcl=0;
  adch=0;
  adc=0;
  n++;
  adcl=ADCL;
  adch=ADCH;
  PORTC=~adch;
  adc=ADC;
  adczs+=adc; //ADC转换三次的总数,
	
	adcl=((adc<<8)>>8); //好像也是多余的
	adch=((adc>>8)<<8); //前面已经读过了
	ADCSR|=0B01000000;
	Locate(7,1)	
	LCDDisplayNum(adcl); 
	Locate(7,0)
	LCDDisplayNum(re); 
	Locate(11,0)
	LCDDisplayNum(adcpj);
	if (n>2)
	{
	adcpj=(adczs/3); ADC转换三次的平均数
	adcpzs=0;
	n=0;
	}
	
        UDR=(adcl);
	while(UCSRA&=TXC)
	{
	;
	}
	
        UCSRA|=0B01000000;
	
        UDR=(adc>>8);
	while(UCSRA&=TXC)
	{
	;
	}
	while((UCSRA&=RXC))
	{
	;
	}
	re=UDR;
	delay_nms(200);
}
}
   

⌨️ 快捷键说明

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