File Tổng Hợp Bài Tập Lớn Vi Xử Lý
File Tổng Hợp Bài Tập Lớn Vi Xử Lý
File Tổng Hợp Bài Tập Lớn Vi Xử Lý
BÀI 1:
/*
* File: newmain.c
* Author: BinhNGO
*
* Created on August 15, 2020, 5:14 PM
*/
#include<htc.h>
__CONFIG( FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON &
LVP_OFF & CPD_OFF & WRT_OFF & DEBUG_OFF);
#define rs RC0
#define rw RC1
#define en RC2
int i;
void lcd_init();
void cmd(unsigned char a);
void dat(unsigned char b);
void show(unsigned char *s);
void main()
{
TRISB=TRISC0=TRISC1=TRISC2=0;
TRISD=0xff; //Port D act as Input
lcd_init();
cmd(0x80);
//show(" EmbeTronicX ");
show(" BinhNGO,UTC ");
while(1) {
if(PIR == 0) {
cmd(0xc0);
show("Intruder Detcted");
// sáng đèn, quay động cơ servo mở cửa
delay;delay;
} else {
cmd(0xc0);
show(" ");
}
void lcd_init()
{
cmd(0x38);
cmd(0x0c);
cmd(0x06);
cmd(0x80);
}
#include<htc.h>
__CONFIG( FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON &
LVP_OFF & CPD_OFF & WRT_OFF & DEBUG_OFF);
#define rs RC0
#define rw RC1
#define en RC2
#define delay for(i=0;i<1000;i++)
int i;
void lcd_init();
void cmd(unsigned char a);
void dat(unsigned char b);
void show(unsigned char *s);
void main()
void lcd_init()
{
cmd(0x38);
cmd(0x0c);
cmd(0x06);
cmd(0x80);
}
#include<htc.h>
__CONFIG( FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON &
LVP_OFF & CPD_OFF & WRT_OFF & DEBUG_OFF);
#define rs RC0
#define rw RC1
#define en RC2
int i;
void lcd_init();
void cmd(unsigned char a);
void dat(unsigned char b);
void show(unsigned char *s);
void main()
{
TRISB=TRISC0=TRISC1=TRISC2=0;
TRISD=0xff; //Port D act as Input
lcd_init();
cmd(0x80);
show(" EmbeTronicX ");
while(1) {
if(IR == 0) {
cmd(0xc0);
show("Obstacle Detcted");
delay;delay;
} else {
cmd(0xc0);
show(" ");
}
}
}
/*
* File: newmain.c
* Author: BinhNGO
*
* Created on October 31, 2020, 8:58 AM
*/
#include<htc.h>
__CONFIG( FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON &
LVP_OFF & CPD_OFF & WRT_OFF & DEBUG_OFF);
#define rs RC0
#define rw RC1
#define en RC2
int i;
void lcd_init();
void cmd(unsigned char a);
void dat(unsigned char b);
void show(unsigned char *s);
void main()
{
TRISB=TRISC0=TRISC1=TRISC2=0;
TRISD=0xff; //Port D act as Input
lcd_init();
cmd(0x80);
show(" BinhNGO UTC ");
while(1) {
if(SOUND == 0) {
cmd(0xc0);
show(" Sound Detected");
delay;delay;
} else {
cmd(0xc0);
show(" ");
}
}
}
/*
* File: newmain.c
* Author: BinhNGO
*
* Created on October 31, 2020, 9:46 AM
*/
#include<htc.h>
#define rs RC0
#define rw RC1
#define en RC2
#define delay for(i=0;i<1000;i++)
int i;
void lcd_init();
void cmd(unsigned char a);
void dat(unsigned char b);
void show(unsigned char *s);
void main()
{
TRISB=TRISC0=TRISC1=TRISC2=0;
TRISD=0xff; //Port D act as Input
lcd_init();
cmd(0x80);
show(" BinhNGO UTC ");
while(1) {
if(RAIN == 0) {
cmd(0xc0);
void lcd_init()
{
cmd(0x38);
cmd(0x0c);
cmd(0x06);
cmd(0x80);
}
/*
* File: newmain.c
* Author: BinhNGO
*
* Created on October 31, 2020, 9:36 AM
*/
#include<htc.h>
__CONFIG( FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON &
LVP_OFF & CPD_OFF & WRT_OFF & DEBUG_OFF);
#define rs RC0
#define rw RC1
#define en RC2
#define delay for(i=0;i<1000;i++)
void lcd_init();
void cmd(unsigned char a);
void dat(unsigned char b);
void show(unsigned char *s);
void main()
{
TRISB=TRISC0=TRISC1=TRISC2=0;
TRISD=0xff; //Port D act as Input
lcd_init();
cmd(0x80);
show(" BinhNGO UTC ");
while(1) {
if(FLAME) {
cmd(0xc0);
show(" Flame Detected");
delay;delay;
} else {
cmd(0xc0);
show(" ");
}
}
}
void lcd_init()
/*
* File: newmain.c
* Author: BinhNGO
*
* Created on October 31, 2020, 9:55 AM
*/
#include<htc.h>
__CONFIG( FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON &
LVP_OFF & CPD_OFF & WRT_OFF & DEBUG_OFF);
int i;
void lcd_init();
void cmd(unsigned char a);
void dat(unsigned char b);
void show(unsigned char *s);
void main()
{
TRISB=TRISC0=TRISC1=TRISC2=0;
TRISD=0xff; //Port D act as Input
lcd_init();
cmd(0x80);
show(" BinhNGO UTC ");
while(1) {
if(GAS) {
cmd(0xc0);
show(" Gas Detected");
delay;delay;
} else {
cmd(0xc0);
show(" ");
void lcd_init()
{
cmd(0x38);
cmd(0x0c);
cmd(0x06);
cmd(0x80);
}
#include<pic.h>
void main()
{
TRISB0=0;
TRISB1=0;
TRISB2=TRISB3=TRISB4=1;
while(1) {
if(sw==1) {
in1=1;
in2=0;
// LCD quay thuaan
} else {
in1=in2=0;
}
/*
* File: newmain.c
* Author: BinhNGO
*
* Created on October 31, 2020, 8:35 AM
*/
// LDR Sensor
#include<pic.h>
#define delay for(i=0;i<=1000;i++)
#define rs RC0
#define rw RC1
#define e RC2
__CONFIG( FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON &
LVP_OFF & CPD_OFF & WRT_OFF & DEBUG_OFF);
void lcd_int();
void cmd(unsigned char a);
void dat(unsigned char b);
void show(unsigned char *s);
int i;
void main()
{
unsigned int val;
TRISB=TRISC=0; //Port B and Port C is Output (LCD)
TRISD = 0; //Port D is output LED
TRISA0=1; //RA0 is input (ADC)
lcd_int();
while(1) {
cmd(0x80);
val = adc();
show("LIGHT:");
if(val>150) {
show("LOW-LED ON");
void lcd_int()
{
cmd(0x38);
cmd(0x0c);
cmd(0x06);
cmd(0x80);
}
return adcval;
}
BÀI 10: UART Terminal
#include<pic.h>
#include"serial.h"
#include"lcd.h"
__CONFIG( FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON &
LVP_OFF & CPD_OFF & WRT_OFF & DEBUG_OFF);
void main()
{
TRISD=0;
INTCON|=0b11000000;
PIE1=0b00100000;
lcd_init();
serial_init();
while(1) {
cmd(0x01);
}
}
int i;
void lcd_init();
void cmd(unsigned char a);
void dat(unsigned char b);
void show(unsigned char *s);
void lcd_init()
{
TRISC0=TRISC1=TRISC2=TRISD=0;
cmd(0x38);
cmd(0x0e);
cmd(0x06);
cmd(0x80);
}
2. /*
3. * File: newmain.c
4. * Author: BinhNGO
5. *
6. * Created on September 14, 2020, 11:28 AM
7. */
8.
9. #include<htc.h>
10.
11. __CONFIG( FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON &
LVP_OFF & CPD_OFF & WRT_OFF & DEBUG_OFF);
12.
13. void ser_int();
14. void tx(unsigned char);
15. unsigned char rx();
16. void txstr(unsigned char *);
17.
18. void main()
19. {
20. TRISC6=0; //Output (TX)
21. TRISC7=1; //Input (RX)
22. ser_int();
23. // txstr("(EmbeTronicX): Enter the letters in keyboard\n\r\r");
24. txstr("(Binh NGO test USART): Nhap ky tu tu ban phim may tinh:\n\r\r");
25. while(1) {
Nguyễn Đức Hải
38
26. tx(rx());
27. }
28. }
29.
30. void ser_int()
31. {
32. TXSTA=0x20; //BRGH=0, TXEN = 1, Asynchronous Mode, 8-bit mode
33. RCSTA=0b10010000; //Serial Port enabled,8-bit reception
34. SPBRG=17; //9600 baudrate for 11.0592Mhz
35. TXIF=RCIF=0;
36. }
37.
38. void tx(unsigned char a)
39. {
40. TXREG=a;
41. while(!TXIF);
42. TXIF = 0;
43. }
44.
45. unsigned char rx()
46. {
47. while(!RCIF);
48. RCIF=0;
49. return RCREG;
50. }
51.
52. void txstr(unsigned char *s)
53. {
54. while(*s) {
55. tx(*s++);
56. }
57. }
__CONFIG( FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON &
LVP_OFF & CPD_OFF & WRT_OFF & DEBUG_OFF);
#define rs RD2
#define en RD3
void lcd_init();
void cmd(unsigned char a);
void dat(unsigned char b);
void show(unsigned char *s);
void lcd_delay();
void main()
{
unsigned int i;
TRISB=TRISD2=TRISD3=0;
lcd_init();
cmd(0x90);
//show("www.EmbeTronicX.com");
show("Binh NGO, WELCOME :)");
//show("CHAO MUNG KTDT&THCN-GTVT");
while(1)
{
for(i=0;i<15000;i++);
cmd(0x18);
for(i=0;i<15000;i++);
}
}
void lcd_init()
{
cmd(0x02);
cmd(0x28);
Nguyễn Đức Hải
40
cmd(0x0e);
cmd(0x06);
cmd(0x80);
}
void lcd_delay()
{
unsigned int lcd_delay;
for(lcd_delay=0;lcd_delay<=1000;lcd_delay++);
}
3. TIMER 0 + TIMER1
int i;
void lcd_init();
void cmd(unsigned char a);
void dat(unsigned char b);
void show(unsigned char *s);
Nguyễn Đức Hải
42
void lcd_init()
{
TRISC0=TRISC1=TRISC2=TRISD=0;
cmd(0x38);
cmd(0x0e);
cmd(0x06);
cmd(0x80);
}
#include<pic.h>
#include"lcd.h"
unsigned int z;
int a=0,b=0,c=0;
void intr_init()
{
INTCON=0xe0;
PIE1=0x03;
}
void timer_init()
{
OPTION_REG=0b00000111; //internal clk,rising edge,prescaler
with tim0,256
T1CON=0b00000001; //prescale=1,oscilator is off,internal
clk,timer on
T2CON=0b01111100; //postscale=16,prescale=1,timer on
}
void main()
{
lcd_init();
timer_init();
intr_init();
while(1) {
cmd(0x01);
}
}
void timer_int();
void t0delay(unsigned int);
void t1delay(unsigned int);
void t2delay(unsigned int);
void timer_int()
Nguyễn Đức Hải
45
{
OPTION_REG=0b00000111; //internal clk,rising edge,prescaler
with tim0,256
T1CON=0b00000000; //prescale=1,oscilator is off,internal
clk,timer off
T2CON=0b01111000; //postscale=16,prescale=1,timer off
}
#include<pic.h>
#define led1 RC0
#define led2 RC1
#define sang 0
#define tat 1
__CONFIG(1);
char i;
void main()
{
TRISB=0;
TRISC0=TRISC1=0;
led1=led2=tat;
while(1){
for(dem=0 ;dem<=99;dem++){
chuc =dem/10;
donvi=dem%10;
for(i=0;i<10;i++)
{
led1=sang;
PORTB=so[chuc];
delay(1000);
led1=tat;
for(i=0;i<10;i++)
{
led1=sang;
PORTB=so1[chuc];
delay(1000);
led1=tat;
led2=sang;
PORTB=so1[donvi];
delay(1000);
led2=tat;
}
}
}
}
}
/*
* File: Keypad.c
* Author: BinhNGO
*
* Created on August 13, 2020, 1:30 PM
*/
#include <pic.h>
__CONFIG( FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON &
LVP_OFF & CPD_OFF & WRT_OFF & DEBUG_OFF);
void main()
{
unsigned int i;
}
}
void lcd_init()
{
cmd(0x02);
cmd(0x28);
cmd(0x0e);
cmd(0x06);
cmd(0x80);
}
void lcd_delay()
{
unsigned int lcd_delay;
for(lcd_delay=0;lcd_delay<=1000;lcd_delay++);
}
void keyinit()
{
TRISB=0XF0;
OPTION_REG&=0X7F; //ENABLE PULL UP
}
7. ĐỘNG CƠ MOTOR:
/*
* File: newmain.c
* Author: BinhNGO
*
* Created on August 14, 2020, 9:04 AM
*/
#include<pic.h>
void main()
{
TRISB0=0;
TRISB1=0;
TRISB2=1;
while(1) {
if(sw==1) {
in1=1;
in2=0;
} else {
in1=in2=0;
}
}
}
#include<pic.h>
#define delay for(i=0;i<=1000;i++)
#define rs RC0
#define rw RC1
#define e RC2
__CONFIG( FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON &
LVP_OFF & CPD_OFF & WRT_OFF & DEBUG_OFF);
void adc();
void lcd_int();
void cmd(unsigned char a);
void dat(unsigned char b);
void show(unsigned char *s);
int i;
void main()
{
TRISB=TRISC=0; //Port B and Port C is Output (LCD)
void lcd_int()
{
cmd(0x38);
cmd(0x0c);
cmd(0x06);
cmd(0x80);
}
void adc()
{
unsigned int adcval;
int i;
void lcd_init();
void cmd(unsigned char a);
void dat(unsigned char b);
void show(unsigned char *s);
void lcd_init()
{
TRISB=TRISC0=TRISC1=TRISC2=0;
cmd(0x38);
cmd(0x0c);
cmd(0x06);
cmd(0x80);
}
void i2c_init();
void i2c_start();
void i2c_stop();
void i2c_restart();
void i2c_init()
{
TRISC3=TRISC4=1;
SSPCON=0x28; //SSP Module as Master
SSPADD=((11059200/4)/100)-1; //Setting Clock Speed, My PCLK = 11.0592MHz
}
void i2c_start()
{
SEN=1;
waitmssp();
}
void i2c_stop()
{
PEN=1;
waitmssp();
}
void i2c_restart()
void i2c_ack()
{
ACKDT=0;
ACKEN=1;
waitmssp();
}
void i2c_nak()
{
ACKDT=1;
ACKEN=1;
waitmssp();
}
void waitmssp()
{
while(!SSPIF);
SSPIF=0;
}
__CONFIG( FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON &
LVP_OFF & CPD_OFF & WRT_OFF & DEBUG_OFF);
void delay1();
void main()
while(1);
}
#include <pic.h>
#include "lcd4.h"
__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON & LVP_OFF & CPD_OFF &
WRT_OFF & DEBUG_OFF);
int a=0;
while(!TMR0IF);
TMR0IF=0;
unsigned int i;
void len()
{ cmd(0xc8);
delay(21);
void xuong()
cmd(0xc8);
delay(42);
void main() {
unsigned int i;
OPTION_REG=0X07;
INTCON = 0X0E;
lcd_init();
Nguyễn Đức Hải
70
// cmd(0x90);
how("Dem 0-99");
while (1) {
len();
xuong();
#include
CONFIG __CONFIG(FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON & LVP_OFF &
CPD_OFF & WRT_OFF & DEBUG_OFF);
void main(void) {
ADCON1 = 0x07;
TRISB = 0x00;
Nguyễn Đức Hải
71
//Set PortB to all outputs
TRISA0 = TRISA1 = 1;
TRISC0 = TRISC1 = 0;
char digit=0;
while(1)
displayed(digit);
{ __delay_ms(100);
{ digit++;
if (digit==100)
digit=0; __
else{ displayed(digit); }
{ digit--;
if (digit==0)
digit=99;
else { displayed(digit); }
}}
ten = (digit)/10;
one = (digit)%10;
RC0 = 0;
Nguyễn Đức Hải
72
PORTB = (SEGMENT_MAP[ten]);
_delay_ms(10);
RC0 = 1;
RC1 = 0;
PORTB = (SEGMENT_MAP[one]);
__delay_ms(10);
RC1 = 1;
#include
#define rs RC0
#define rw RC1
#define en RC2
void lcd_init();
__CONFIG( FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON & LVP_OFF & CPD_OFF &
WRT_OFF & DEBUG_OFF);
void ser_int();
void main()
{ TRISD=1;
int i;
TRISC6=TRISC7=1;
ser_int();
lcd_init();
cmd(0x80);
show("<>");
cmd(0xc0);
} while(1); }
void ser_int()
{ TXSTA=0x20;
RCSTA=0b10010000;
SPBRG=17; TXIF=RCIF=0; }
{ TXREG=a;
while(!TXIF);
Nguyễn Đức Hải
74
TXIF = 0; }
{ while(!RCIF);
RCIF=0;
return RCREG; }
{ while(*s)
{ tx(*s++); } }
void lcd_init()
{ TRISC0=TRISC1=TRISC2=TRISB= 0;
cmd(0x38);
cmd(0x0c);
cmd(0x06);
cmd(0x80); }
{ lcd_dat=a;
rs=0;
rw=0;
en=1
delay;
en=0; }
{ lcd_dat=b;
rs=1;
rw=0;
en=1;
delay;
en=0; }
{ dat(*s++); } }
Code
#include const unsigned char Code7Seg[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
unsigned int count=0;
{ TRISD = 0x00;
PORTD = 0X00;
TRISB0 = 1;
PORTB = 0X00;
GIE = 1;
INTE = 1;
INTEDG = 1
while(1)
if(count==10) { count=0; } } }
{ if(INTF==1) {
{ count++; INTF=0; }
#include
#include "key.h"
#include"lcd4.h"
__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON & LVP_OFF & CPD_OFF &
WRT_OFF & DEBUG_OFF);
void main() {
unsigned int i;
TRISD = 0;
Nguyễn Đức Hải
77
TRISC0=TRISC1 = 0;
TRISC5 = 0;
lcd_init();
keyinit();
unsigned char b;
cmd(0x80);
b = key();
dat(b); } }
#include <xc.h>
// CONFIG __CONFIG(FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON & LVP_OFF &
CPD_OFF & WRT_OFF & DEBUG_OFF);
const unsigned char maled[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
void display(void);
void main(void)
PORTB = 0;
TRISDbits.TRISD0 = 0;
TRISDbits.TRISD1 = 0;
PORTD = 0;
while (1) {
display();
dem=TMR0;
if(dem>=100)
{ TMR0=0; dem=0; } }
{ chuc = dem/10;
donvi = dem%10;
PORTB = maled[chuc];
RD0=0;
__delay_ms(10);
RD0=1;
PORTB = maled[donvi];
RD1=0;
__delay_ms(10);
Nguyễn Đức Hải
79
RD1=1; }
#include
#include"lcd4.h"
#include "timers.h"
__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON & LVP_OFF & CPD_OFF &
WRT_OFF & DEBUG_OFF); // unsigned int z;
unsigned int z;
int a=0,b=0,c=0;
{ if(TMR0IF)
{ a++;
if(a==42) //1sec
{ cmd(0x80);
show("Timer 0 interupt");
RD0= 1;
// RD1= 0;
RD2= 0;
Nguyễn Đức Hải
80
a=0;
delay; }
TMR0IF=0; }
else if(TMR1IF)
{ b++;
if(b==84) //2secs {
cmd(0xc0);
show("Timer 1 interupt");
RD0 = 0;
RD1 = 1;
b=0;
delay;}
TMR1IF=0;
} else if(TMR2IF)
{ c++;
if(c==2025) //3secs
{ cmd(0x80);
show("Timer 2 interupt");
RD0 = 0;
RD1 = 0;
RD2 = 1;
c=0; delay; }
TMR2IF=0; }}
void intr_init()
{ INTCON=0xe0;
PIE1=0x03; }
void timer_init()
void main()
lcd_init();
timer_init();
intr_init();
while(1)
{ delay;
cmd(0x01);
delay;} }
#include <studio.h>
#include <xc.h>
// CONFIG __CONFIG(FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON & LVP_OFF &
CPD_OFF & WRT_OFF & DEBUG_OFF); //
GPIO_init();
while(1) { SANGHET();
__delay_ms(500);
TATHET();
__delay_ms(500);
XENKE(); _
_delay_ms(500);
SANGNUA();
__delay_ms(500); } }
void GPIO_init(void)
{ TRISB = 0X00;
PORTB = 0X00; }
{ PORTB = 0XFF;
{ PORTB = 0X00;
Nguyễn Đức Hải
83
}
{ PORTB = 0XAA;
__delay_ms(500);
PORTB = 0X55; }
PORTB = 0X0F;
__delay_ms(500);
PORTB = 0XF0; }
#include <pic.h>
#include <htc.h>
void delay_ms(int x) {
int i,j;
for(j = 0 ; j <123;j++)}}}}
#define r3 RB6
#define r2 RB5
#define r1 RB4
#define c4 RB3
#define c3 RB2
#define c2 RB1
#define c1 RB0
int returnKeyPad() //khi bam mot nut tra ve mot gia tri tuong ung {
if(r1==1&&r2==1&&r3==1&&r4==1)
return 0;
{ if(c1==0)
return 1;
if(c2==0)
return 2;
if(c3==0)
return 3;
if(c4==0)
return 13; }
if(r2==0&&r1==1&&r3==1&&r4==1)
{ if(c1==0)
return 4;
if(c2==0)
return 5;
if(c3==0)
return 6;
if(c4==0)
Nguyễn Đức Hải
85
return 14; }
if(r1==1&&r2==1&&r3==0&&r4==1)
{ if(c1==0)
return 7;
if(c2==0)
return 8;
if(c3==0)
return 9;
if(c4==0)
return 15; }
if(r1==1&&r2==1&&r3==1&&r4==0)
{ if(c1==0)
return 10;
if(c3==0)
return 12;
if(c4==0)
return 16; } }
void LED(int x) //voi moi gia tri tra ve thi co mot muc sang tuong ung
{ switch(x)
{ case 1:
led=0x60;
while(r1==0);
break;
case 2:
led= 0xda;
while(r1==0);
break;
case 3:
Nguyễn Đức Hải
86
led= 0xf2;
while(r1==0);
break;
case 4:
led= 0x66;
while(r2==0);
break;
case 5:
led= 0xb6;
while(r2==0);
break; case 6:
led= 0xbe;
while(r2==0);
break;
case 7:
led=0xe0;
while(r3==0);
break;
case 8:
led=0xfe;
while(r3==0);
break;
case 9:
led=0xE6;
while(r3==0);
break;
case 13:
led= 0xfc;
while(r1==0);
Nguyễn Đức Hải
87
break;
case 14:
led= 0x7a;
while(r2==0);
break;
case 15:
led= 0x9e;
while(r3==0);
break;
case 16:
led= 0x8E;
while(r4==0);
break;
case 12:
led=0x9C;
while(r4==0);
break;
case 11:
led= 0x3E;
while(r4==0);
break;
case 10:
led=0xee;
while(r4==0); break; } }
void keyinit()
{ TRISB = 0XF0;
void scan(int i)
delay_ms(10); }
delay_ms(10); }
delay_ms(10); } }
void main() {
TRISB=1;
TRISC=0;
keyinit();
int i =0;
while(1) {
PORTC=0x02;
scan(i);
i++;
if(i>=4) i=0;
LED(returnKeyPad()); } }
#include<stdio.h>
#include<xc.h>
// CONFIG __CONFIG( FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON & LVP_OFF &
CPD_OFF & WRT_OFF & DEBUG_OFF);
void delay();
void display_digit(int);
void main()
ADCinit();
f = voltage / 10;
ones=f%10;
tens=(f/10)%10;
display_digit(tens);
RD0=1;
delay();
RD0=0;
display_digit(ones);
delay();
RD1=0; } }
void display_digit(int c)
switch(c) {
case 0:
seg_data=0xC0;
break;
case 1:
seg_data=0xF9;
break;
case 2:
seg_data=0xA4;
break;
case 3:
seg_data=0xB0;
break;
case 4:
seg_data=0x99;
break;
case 5:
seg_data=0x92;
break;
Nguyễn Đức Hải
92
case 6:
seg_data=0x82;
break;
case 7:
seg_data=0xF8;
break;
case 8:
seg_data=0x80;
break;
case 9:
seg_data=0x90;
break; } }
void delay() {
ADCON1bits.ADCS2 = 0,
ADCON0bits.ADCS1 = 0,
ADCON0bits.ADCS0 = 1;
ADCON0bits.CHS2 = 0,
ADCON0bits.CHS1 = 0,
ADCON0bits.CHS0 = 0;
ADCON1bits.ADFM = 1;
ADCON1bits.PCFG3 = 1,
ADCON1bits.PCFG2 = 1,
Nguyễn Đức Hải
93
ADCON1bits.PCFG1 = 1,
ADCON1bits.PCFG0 = 0;
ADCON0bits.ADON = 1; }
ADCON0bits.GO_nDONE = 1;
while(ADCON0bits.GO_nDONE);
return (TempValue); }