📄 1.c
字号:
//1.c : source file for the 1 project
//
#include "1.h"
#include "1UART.h"
#include <delay.h>
#include <math.h>
#include <stdlib.h>
#define uchar unsigned char
#define uint unsigned int
/////////////////////////////////////////////////////////////////////////////
//1
uchar led1[40]=
{0x0c,0xfc,0x19,0x98,0xe8,0x8a,0x0a,0xbc,0x08,0x88,0x28,0x4a,0x0f,0x58,0x0b,0x2b,
0x04,0xf4,0x11,0x90,0xe0,0x82,0x02,0xb4,0x00,0x80,0x20,0x42,0x07,0x50,0x03,0x23,
0xff,0xfb};
uchar led2[40]=
{0x60,0x7e,0x31,0x32,0x2e,0xa2,0xa0,0x7a,0x20,0x22,0x28,0xa4,0xe1,0x34,0xa1,0xa9,
0x40,0x5e,0x11,0x12,0x0e,0x82,0x80,0x5a,0x00,0x02,0x08,0x84,0xc1,0x14,0x81,0x89,
0xff,0x64,0xdf,0xa1,0x68,0x34,0xbf};
uint ads1[10];
int ad1;
uchar input=0;
uchar output=0;
static void io_init(void)
{
//{{WIZARD_MAP(General)
//}}WIZARD_MAP(General)
//{{WIZARD_MAP(I/O Ports)
// PortA
PORTA = 0x0;
DDRA = 0xf8; //11111000
// PortB
PORTB = 0x0;
DDRB = 0x1f; //00011111
// PortC
PORTC = 0x3f; //00111111
DDRC = 0xc0; //11000000
// PortD
PORTD = 0x0;
DDRD = 0x0;
//}}WIZARD_MAP(I/O Ports)
//{{WIZARD_MAP(Watchdog)
// Watchdog Disabled
wdt_disable();
//}}WIZARD_MAP(Watchdog)
//{{WIZARD_MAP(Analog Comparator)
// Analog Comparator Disabled
ACSR = 0x80;
//}}WIZARD_MAP(Analog Comparator)
}
int main(void)
{
//{{WIZARD_MAP(Initialization)
io_init();
uart_init();
adc_init();
//}}WIZARD_MAP(Initialization)
// TODO: Add extra initialization here
//{{WIZARD_MAP(Global interrupt)
sei();
//}}WIZARD_MAP(Global interrupt)
while(1)
{
// TODO: Add your code here
led_list();
lcd_u();
put_send(0x30+33);put_send(0x30+((ad1/10)%10));put_send(0x30+((ad1/100)%10));
put_send(0x30+((ad1/1000)%10));put_send('%');send_char('$');
}
}
uint get_u0(void)
{
static uchar dd1;
uchar i;
double in;
ads1[dd1%10]=read_adc(0);
dd1++;
in=0;
for(i=0;i<10;i++)
{
in+=ads1[i];
}
in*=0.3;
return (uint)in;
}
void lcd_u(void)
{
ad1=get_u0();
led[3]=(ad1/1000)%10;
led[2]=(ad1/100)%10;
led[1]=(ad1/10)%10;
led[0]=33;
}
void led_outbyt(char a)
{
char i,d;
for(i=0;i<8;i++)
{
cbi(PORTA,6); //LCD_SCK清0,
d=a&0x80;
if(d)
sbi(PORTA,7); //LCD_DAT
else
cbi(PORTA,7);
a<<=1;
sbi(PORTA,6);
}
}
void led_list(void)
{
uchar i,j;
j=1;
for(i=0;i<8;i++)
{
led_outbyt(led2[led[i]]);
led_outbyt(j);
led_outbyt(led2[led[i+8]]);
led_outbyt(j);
led_outbyt(j);
led_outbyt(led1[led[i+16]]);
cbi(PORTA,5); //数据锁存 LCD_E
sbi(PORTA,5); //数据锁存
delay(8,1000);
j<<=1;
led_outbyt(0);led_outbyt(0);led_outbyt(0);led_outbyt(0);led_outbyt(0);led_outbyt(0);
cbi(PORTA,5); //数据锁存
sbi(PORTA,5); //数据锁存
delay(1,1000);
}
}
void adc_init(void)
{
//{{WIZARD_MAP(ADC)
// ADC Clock: 125.000kHz
// ADC Voltage Reference: AVCC
// ADC Noise Canceler Disabled
SFIOR |= 0x0; //特殊功能IO 寄存器
ADMUX = 0xc0; //ADC 多工选择寄存器,2.56V的片内基准电压源,AREF引脚外加滤波电容
ADCSRA = 0x86; //10000110,ADC 控制和状态寄存器A,b7为ADC使能,b2b1b0是64位预分频
//}}WIZARD_MAP(ADC)
}
unsigned int read_adc(unsigned char adc_input)
{
// Set ADC input
ADMUX &= 0xf8;
ADMUX |= adc_input;
// Start ADC conversion
sbi(ADCSRA, ADSC);
// Waiting for ADC conversion completed
loop_until_bit_is_set(ADCSRA, ADIF);
sbi(ADCSRA, ADIF);
return ADCW;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -