7 Segment 4 หลัก Run ตัวเลขตั้งแต่ 0 - 999


(Permpol Thanapunnamas) #1

……โมเดลที่ 2 นี้คือ จะมีไมโครคอนโทรลเลอร์ FIC16F1939 ต่อเข้ากับ 7 Segment 4 หลัก มีไม่มีสวิตช์ เมื่อกดรันจะโปรแกรมจะเพิ่มค่าลงทีละ 1 ตั้งแต่ 0 - 999 ตามลูป For ที่กำหนดว่าให้เพิ่มค่าครั้งละ i++ ในส่วนของไฟล์ sim หาไม่เจอครับมันนานแล้วนามสกุลจะเป็น .DSN ใครสงสัยว่าจะต่ออะไรยังไงหรือมองภาพไม่ออกคอมเม้นถามได้เลยครับ

#include <htc.h>
__CONFIG(FOSC_INTOSC & 
WDTE_OFF & 
PWRTE_ON & 
MCLRE_ON & 
CP_OFF & 
CPD_OFF & 
BOREN_OFF & 
CLKOUTEN_OFF & 
IESO_ON & 
FCMEN_ON &

WRT_OFF & 
//VCAPEN_OFF & 
PLLEN_ON & 
STVREN_ON & 
BORV_HI & 
LVP_OFF);
#define _XTAL_FREQ 32000000
#define DSP_7SEG LATD
#define SCAN_DIS1 LATCbits.LATC0
#define SCAN_DIS2 LATCbits.LATC1
#define SCAN_DIS3 LATCbits.LATC2
#define SCAN_DIS4 LATCbits.LATC3
#define ON 1;
#define OFF 0;
char const LED_CHR[17]={0x3F,0x06,0x5B,0x4F,0x66,
						0x6D,0x7D,0x07,0x7F,0x6F,
						0x77,0x7C,0x39,0x5E,0x79,
						0x71,0x80};
unsigned int i,j;

unsigned int data2;
unsigned int buff1,buff2,buff3,buff4,temp;

void main(void)
{
	OSCCONbits.SPLLEN = 1;
	OSCCONbits.IRCF = 14;
	OSCCONbits.SCS = 0;
	
	TRISD=0x00;
	TRISC=0x00;
	while(1)
	{
 for(i=0;i<999;i++)
{
	data2=i;
	buff1=(data2/1000);
	temp=(data2%1000);
	buff2=(temp/100);
	temp=temp%100;
	buff3=(temp/10);
	buff4=(temp%10);
DSP_7SEG=LED_CHR[buff1];
SCAN_DIS1=OFF;
__delay_ms(1);
SCAN_DIS1=ON;

DSP_7SEG=LED_CHR[buff2];
SCAN_DIS2=OFF;
__delay_ms(1);
SCAN_DIS2=ON;

DSP_7SEG=LED_CHR[buff3];
SCAN_DIS3=OFF;
__delay_ms(1);
SCAN_DIS3=ON;

DSP_7SEG=LED_CHR[buff4];
SCAN_DIS4=OFF;
__delay_ms(1);
SCAN_DIS4=ON;
}
		}
	}