 |
:: مهندس متميز ::
تاريخ التسجيل: Mar 2006
الدولة: Syria
المشاركات: 515
|
|
نشاط [ Sallam ]
قوة السمعة:
|
|
06-05-2015, 11:52 PM
المشاركة 68
|
|
تدريبات على وحدات العرض السفن سجمنت 7-Segmentمع المترجم CCS C التدريب الأول :
تدريب بسيط لإنشاء عداد من “0” إلى “F” وهى تمثل نظام الأعداد السداسى عشر .
الدائرة الكهربية :

البرنامج :
كود:
/******************************************************
Application Name: Display Counter 0,1,2,3.....F
*******************************************************/
#include <16f877.h> // Microcontroller device
#use delay(clock=4000000) // Oscillator frequency used for delay function
int8 i; // Declare 8-bit variable named i .
// Data values for common cathode 7segment display unit 0 , 1 , ...., F
const int digit[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7C, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};
/********* MAIN FUNCTION ********/
void main ()
{
output_b(0x00); // Port B Initial value = 0
output_a(0x02); // Pin RA1 at logic 1 , the other pins at logic 0 , cathode on
while(true) // infinite loop
{
for(i=0;i<=15;i++) // Repeat 16 times , for loop
{
output_b(digit[i]); //Eeach time :Array elemene digits [i] value Send to port B
delay_ms(500); // Wait for 500 ms
}
}
}
|
استاذي المحترم
بحسب فهمي لهذا الدرس قمت باضافة عداد تنازلي بحيث يبقى يعد صعودا وهبوطا.
كود:
/******************************************************
Application Name: Display Counter 0,1,2,3.....F
*******************************************************/
#include <16f877a.h> // Microcontroller device
#use delay(clock=4000000) // Oscillator frequency used for delay function
int8 i; // Declare 8-bit variable named i .
// Data values for common cathode 7segment display unit 0 , 1 , ...., F
const int digit[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7C, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};
/********* MAIN FUNCTION ********/
void main()
{
output_b(0x00); // Port B Initial value = 0
output_a(0x02); // Pin RA1 at logic 1 , the other pins at logic 0 , cathode on
while(true) // infinite loop
{
a:
for(i=0;i<=15;i++) // Repeat 16 times , for loop
{
output_b(digit[i]); //Eeach time :Array elemene digits [i] value Send to port B
delay_ms(500); // Wait for 500 ms
if(i==15)
{
for(i=15;i>=0;i--)
{
output_b(digit[i]);
delay_ms(500);
if(i==0)goto a;
}
}
}
}
}
اشكرك مجددا
|