|
本设计
" Q$ x1 Q' O5 m$ P STM32电子钟万年历Proteus仿真_LCD1602液晶屏 (仿真+原理图+PCB+源码+参考报告) 仿真:protues 8.9 程序编译器:keil 5 编程语言:C语言 编号C0003 基本功能:
0 \8 G' E3 w. A5 X: W `" R% \& g 1.具有显示年、月、日、时、分、秒功能; 2.能计算并显示星期; 3.能手动调整时间; 4.具有闹钟功能(LED)。 # z5 k: p0 }$ Z: }( @
仿真图(提供源文件): 原理图(提供源文件): PCB(提供源文件): 6 F/ S: y0 [6 J+ n0 D* h) o
程序(提供源文件源码):
: @. V4 N6 [4 u! {
7 s7 _+ d( Q) ^& V3 m& p% i; q
以下为部分程序: - int main(void), W0 C0 K: N- b/ U- R7 S4 J
- {: k9 F* v- T7 U7 J5 ~+ E
- bool i = 0;) `* M z" N$ Q+ H+ _
- /* Reset of all peripherals, Initializes the Flash interface and the Systick. */* g3 L' N3 B( ^
- HAL_Init(); G; y/ {9 s5 U) u- [+ }1 P, j
- /* Configure the system clock */
( B' ?: n8 E( x) F$ I( n/ Z; Z - SystemClock_Config();/ L9 F2 s" ^5 ~) F/ k) q& T0 v
- delay_init(10); //初始化延时函数$ e5 c; C) ^' B* u; r
- TIM3_Init(2400-1, 72-1); // 10ms
! U( ~* L8 r, |) W+ ?8 z4 v - MX_RTC_Init();
+ o; Q7 F- @ o - Key_Init();
* G+ F" Q; s$ g3 g! r - Beep_Init();
9 f$ D! U. y6 F& `/ N. n - LCD_Init();
! c9 X8 I2 M$ L% R4 t - sAlrm_g.Alm_Hour = 0;0 c# o! G) y, u- Z; ^2 \
- sAlrm_g.Alm_Min = 0;
5 O$ x# ?" V5 U c1 k$ I! e - sAlrm_g.Alm_Sec = 10;, \/ j2 w) u5 w* I4 c+ ~5 Z7 @ z
- while(1)
; ]9 t" h0 c8 v' ? Z - {- v# {/ c" f8 g% n' U9 \
- switch(set_mode)
6 Y( g! n; s% g* M( F - {1 b* Z1 q. D2 V% d, O
- case 0:' V) X! w# Z2 k0 W5 k
- HAL_RTC_GetDate(&hrtc, &sDate_g, RTC_FORMAT_BIN);
" {6 Y2 X% {* f! ~0 o - HAL_RTC_GetTime(&hrtc, &sTime_g, RTC_FORMAT_BIN); : o& ` R. r% A3 h/ R# ^) a2 ^
- Conv_Disp_Data(0);
6 K' j$ I! W0 |8 n - LCD_write_string(0, 0, (char*)temp_line_one);
5 m9 C& ~0 ?0 v+ ]& J! T - LCD_write_string(0, 1, (char*)temp_line_two);. [! c) b" f* {
- break;8 R% B9 Y# s% T# P# ~
- case 1:4 {& i. ~. F/ E' C" O
- Conv_Disp_Data(i*1);0 R9 z1 V. j ^$ ^1 \& o) ?
- i = !i;$ P9 D) s4 _) O( h: }! ?
- LCD_write_string(0, 0, (char*)temp_line_one);
8 @7 n( \ Y& x* w - break;+ }/ o1 D- v) U
- case 2:
* K/ e- ?6 V7 @% m6 p! O6 X# @* c6 I - Conv_Disp_Data(i*2);
0 Y: ?* R6 Y( K5 }# P6 N' U - i = !i;- g0 x. i; X ?, i: o- y
- LCD_write_string(0, 0, (char*)temp_line_one);1 X+ \2 i0 L) d/ U `' Y- U, a
- break;
- d( N( f7 M- w - case 3:
' h5 ^2 W ~9 v) g. N - Conv_Disp_Data(i*3);
% D% X% p& k0 _% k3 i, D - i = !i;
" w0 o5 y9 O0 o+ U1 } - LCD_write_string(0, 0, (char*)temp_line_one);
! d/ g/ K! A! l9 q - break;
7 ^$ Q1 g: R7 Q! F9 f4 i - case 4:) S3 m; [ U2 V: ?* J9 c
- Conv_Disp_Data(i*4);, t2 ?6 F* m( s$ h$ {4 K
- i = !i;
( k+ ` J1 J' B9 A* X" J - LCD_write_string(0, 0, (char*)temp_line_one);
; _# h) v6 o5 [! J& U/ K7 O2 y - break;
. p, }) [. r P% B$ h; ]) } - case 5:
, H. _: T& w2 _, z5 ? - Conv_Disp_Data(i*5);3 t0 }, z. _9 S' b
- i = !i;/ W9 l/ _8 u- w7 T
- LCD_write_string(0, 0, (char*)temp_line_one);
+ z/ S. k7 C* P - break; " {9 F$ \# p- p, w8 g
- case 6:
N$ _% d1 g1 B3 Y1 p" N- s - Conv_Disp_Data(i*6);% A4 i7 k2 b* o$ `" ^9 W- G. O/ ]4 z
- i = !i;) a+ d! N# p; N" Z
- LCD_write_string(0, 0, (char*)temp_line_one); }- B9 n; P1 M2 _8 t5 M
- break; 3 |- E/ `; `, n- J# W
- case 7:5 r) L9 v! d& m/ H9 m
- Conv_Disp_Data(i*7);9 w8 A* |, }$ C
- i = !i;6 y1 C3 N9 ]1 A
- LCD_write_string(0, 1, (char*)temp_line_two);# ~& f8 m# X L; {9 {; V8 Y3 Y
- break; 1 a5 U5 A/ N* m/ W5 {. ?- q* S& O
- case 8:
$ }; m+ Q) @4 R1 t' _, Z$ U - Conv_Disp_Data(i*8);
; v5 H" q) ~) y x - i = !i;
& z! d8 ^$ J, u" _" E - LCD_write_string(0, 1, (char*)temp_line_two);3 k% l* _# Y9 n- B) W" O- e( j2 ~
- break; 3 O) U6 H' f% l/ w( V1 n
- case 9:% G1 M3 G: m. u0 H, [- ?
- Conv_Disp_Data(i*9);
. t7 _3 @9 E6 { e M - i = !i;
, s! n1 x9 d7 V3 J& @ - LCD_write_string(0, 1, (char*)temp_line_two);' o( P* r' G' f5 B Y; Y2 U
- break; ; `- C$ B k# b" J: E; Y' ?
- default: 8 c3 K8 r% U: n( X( p% R7 u
- break; % X5 j. M( S# m' W3 L+ W5 m3 A
- } 8 U0 W1 q* S; d/ x
- if( (sTime_g.Hours == sAlrm_g.Alm_Hour) && (sTime_g.Minutes == sAlrm_g.Alm_Min) && (sTime_g.Seconds == sAlrm_g.Alm_Sec) )& y' }9 O3 g" e* [$ m
- { ?' J" Q, k! ^- U* V9 g% R
- for(uint8_t j = 0; j < 10; j++)$ K5 L+ n5 T9 X# t: w9 t2 U) {
- {
$ T3 D8 n, l$ ?3 @! B% O! d4 L - LED2_TOG();( f1 D, G6 T/ G* u3 g" p
- HAL_Delay(300);- D! E# k# I, w$ X
- }
- \$ i9 z) Z/ {5 ^8 {8 q - }
4 k' S6 r* p! O0 a- ^/ x: a - HAL_Delay(100);1 n; B+ n" X# B
- }
; {# ^0 S8 x; n - }
复制代码资料清单: 8 u4 @, L/ ]* L- Z% K) E& C
|