?? led_text.c
字號:
/*********************************************
File name : demo_6_5.c
Chip type : ATmega16
Program type : Application
Clock frequency : 4.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*********************************************/
#include <mega16.h>
#include <delay.h>
#define uchar unsigned char
#define uint unsigned int
/**********************數碼管顯示相關宏定義*******************************/
flash uchar led_7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //共陽極數碼管
flash uchar position[4]={0x80,0x40,0x20,0x10}; //位選
uchar time[3]; // 時、分、秒計數
uchar dis_buff[4]; // 顯示緩沖區,存放要顯示的4個字符的段碼值
uchar time_counter; // 1秒計數器
bit point_on; // 秒顯示標志
// 時間顯示函數,執行時間12ms
void time_display(void)
{
uchar i;
for(i=0;i<=3;i++)
{
PORTD &= 0x0F;
PORTC = led_7[dis_buff[i]];
if (point_on && ( i==2)) PORTC &= 0x7F;
PORTD|= position[i];
delay_ms(3);
PORTD&=0X0F;
}
}
// 時間值送顯示緩沖區函數
void time_to_disbuffer(void)
{
uchar i,j=0;
for (i=1;i<=2;i++)
{
dis_buff[j++] = time[i] % 10;
dis_buff[j++] = time[i] / 10;
}
}
/**********************MCU初始化*******************************/
void mcu_init(void)
{
DDRA=0X1D; //00011101
DDRB=0XB1; //10110001
PORTB=0X00;
DDRC=0XFF;
PORTC=0XFF;
DDRD=0XF0;
PORTD=0X00;
}
/**********************主函數*******************************/
void main()
{
mcu_init();
time[2] = 23; time[1] = 58; time[0] = 55; // 時間初值23:58:55
time_to_disbuffer();
while (1)
{
time_display(); // 顯示掃描,執行時間12ms
if (++time_counter >= 40)
{
time_counter = 0;
point_on = ~point_on;
if (++time[0] >= 60)
{
time[0] = 0;
if (++time[1] >= 60)
{
time[1] = 0;
if (++time[2] >= 24) time[2] = 0;
}
}
time_to_disbuffer();
}
delay_ms(13);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -