📄 4094.c
字号:
// Usando el CD4094 para manejar 1 display 7 segmentos
#include <16F84A.h>
#fuses XT,NOPROTECT,NOWDT,PUT
#use delay(clock=4000000)
// Definici髇 de pines de control
#define DATA PIN_A0
#define CLOCK PIN_A1
#define STROBE PIN_A2
// tabla de numeros constantes que contienen el correspondiente valor
// en 7 segmentos
int const segmentos[16]={0x3f,0x6,0x5b,0x4f,0x66,0x6d,0x7d,0x7,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
// declaraci髇 de la funci髇 escribir_4094
void escribir_4094(int caracter);
// programa principal
void main(){
output_a(0x0);
output_b(0x0);
set_tris_a(0x0);
set_tris_b(0x0);
while(true){
for(t=0;t<16;t++){
escribir_4094(t); // env韆 el n鷐eros en hexadecimal al display 7-seg
delay_ms(1000);
}
}
}
//**************************************************************
// Funci髇 escribir_4094
//
// Descripci髇: env韆 serialmente el datode 8 bits de acuerdo al
// argumento caracter y activa las se馻les de control establecidas
// en el mapa de tiempos del CD4094
//
// datos de entrada: caracter un n鷐ero entero
// datos de salida: ninguno
//**************************************************************
void escribir_4094(int caracter){
int contador_8;
output_low(PIN_A0);
output_low(STROBE);
output_low(CLOCK);
for(contador_8=0;contador_8<8;contador_8++){
output_bit(DATA,bit_test(segmentos[caracter],contador_8));
output_high(CLOCK);
delay_cycles(1);
output_low(CLOCK);
}
output_low(CLOCK);
output_high(STROBE);
delay_cycles(1);
output_low(STROBE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -