Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <xc.h>
- #include <stdio.h>
- #include <stdlib.h>
- #define _XTAL_FREQ 1000000
- #pragma config FOSC = XT // Oscillator Selection bits (HS oscillator)
- #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
- #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
- #pragma config BOREN = OFF // Brown-out Reset Enable bit (BOR disabled)
- #pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
- #pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
- #pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
- #pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
- unsigned int volume, value, f, ADCvalue, voltage;
- int i, x;
- int mask;
- const unsigned char DIGIT[10] = {0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};
- void ADCinit(void){
- ADCS2= ADCS1= 0; ADCS0= 1; //Set Fosc/8
- ADFM= 1; //right justified
- CHS2= CHS1= CHS0= 0; // Choose AN0
- PCFG3= PCFG2= PCFG1= 1; PCFG0= 0;
- }
- unsigned int atod(void){
- ADON= 1; //A to D on
- GO= 1;
- __delay_ms(1);
- while (GO);
- return (int) ADRESH* 256 + ADRESL; // Dich 8 bit
- }
- shift_out(){
- int numero;
- value= DIGIT[numero];
- mask= 1;
- RC3= 0; //Set ST_CP= 0 , open latch
- RC0= 0; // Set SH_CP=0 , enable to write to shift register
- for(i=0; i< 7; i++){
- if (value & mask)
- RC1= 1; //DS= 1;
- else
- RC1=0; //DS= 0;
- RC0= 1;
- __delay_us(5);
- RC0= 0; // Next bit
- __delay_us (5);
- mask = mask << 1;
- }
- RC3= 1; // Shift out to Qn gate
- __delay_us(125);
- }
- void main (){
- TRISA= 0xff;
- TRISC= 0x00;
- ADCinit ();
- unsigned int ones,tens=0;
- while(1)
- {
- __delay_ms(1);
- ADCvalue = atod();
- voltage = ADCvalue *5000 /1023;
- f = voltage / 10 - 273;
- ones= f%10;
- tens= (f/10)%10;
- shift_out();
- PORTC = DIGIT[tens];
- __delay_us(50);
- PORTC = DIGIT [ones];
- __delay_us(50);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement