?? display.c
字號:
#include<inttypes.h>
#include<avr/io.h>
#include<util/delay.h>
#include "head.h"
extern uint8_t Second,Minute,Hour;
extern uint8_t AMinute,AHour,alarmEN;
extern uint8_t disp[6];
extern uint8_t dis[];
////////////////////////////////
/*
功能:計算輸出的時間格式
_____________________
參數: mod 選擇計算的是當前時間還是鬧鐘
______________________
返回:沒有
*/
////////////////////////////////
void dispro (uint8_t mod)
{
if (mod==TIME) //當前時間模式
{
disp[0]=Hour/10; //時
disp[1]=Hour-disp[0]*10;
disp[2]=Minute/10; //分
disp[3]=Minute-disp[2]*10;
disp[4]=Second/10; //秒
disp[5]=Second-disp[4]*10;
}
if (mod==ALARM) //鬧鐘模式
{
disp[0]=AHour/10;
disp[1]=AHour-disp[0]*10;
disp[2]=AMinute/10;
disp[3]=AMinute-disp[2]*10;
disp[4]=0;
disp[5]=alarmEN; //是否開啟鬧鐘,1為開啟,0為關閉
}
}
/////////////////////////////////////
/*
顯示函數
_____________________________
參數:
c:選擇顯示的區域
mod:選擇顯示當前時間還是鬧鐘
_____________________________
返回:無
*/
////////////////////////////////////
void display (uint8_t c,uint8_t mod)
{
dispro (mod); //計算顯示的內容
uint8_t begin,end;
switch (c)
{
case SHOW_HOUR : begin=0;end=2;break; //根據顯示的區域不同而改變數碼管
case SHOW_MINUTE : begin=2;end=4;break; //的起始于結束位
case SHOW_SECOND : begin=4;end=6;break;
case SHOW_ALL : begin=0;end=6;c++;break;
default:{} break;
}
uint8_t i,sel;
sel=c;
for(i=begin;i<end;i++) //這個循環用來掃描數碼管輸出
{
PORTA=0x00; //插黑顯示
PORTD=~sel; //向D口輸出片選信號
PORTA=dis[disp[i]]; //向A口輸出段選信號
_delay_ms(5);
sel=sel<<1;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -