1、优 良 中 及格 不及格2012年2月25日课程设计目的通过该课程设计将嵌入式系统原理及应用课程中所学的处理器和接口等技 术应用于实际设计中。通过中断、PWM定时器、串口、SIO、GPIO等技术在实 验平台上进行综合设计,在理论和实验的基础上进一步提高综合设计能力。二.课程设计内容及功能要求1.通过一个PWM定时计数器,采用定时中断的功能,设计能够在 LED上 进行时分秒显示的时钟;2.通过键盘实现对钟的功能;3.实现闹钟的功能,闹钟的时间由键盘输入进行设定;4.将时钟在超级终端上显示;时间的设定可以通过超级终端实现;三功能实现1.总体功能框图开始设置中断2.详细设计:(将所设计的各部分的功能
2、程序框图及相关程序代码进行详细的描述)1.#i ncludeuhal.h#in cludemyuart.hKeyBoard.hTimer.hlsr.h44b.h#i nclude Zlg7289.hdef.h#in clude lcd320.h int Timer3INTCou nt=0;int hour = 0 ;int mi nute = 0 ;#pragma import_use_ no _semihost in g_swi) / en sure no functions that use semihosti ng int main( void)int clock_h = 23 ;int
3、 clock_m = 59 ;int clock_s = 0 ;int key ;int val=0;ARMTargetI ni t(); /开发版初始化Zlg7289_Reset();Ini t_Timer3(100,16,40000,20000);INTS_OFF();/Disable in terrupt in PSRSetlSRnterrupt(INT_TIMER3_OFFSET, Timer3_ISR,0);Open_INT_GLOBAL();Open_INT(BIT_TIMER3);INTS_ON();/E nable in terrupt in PSRStart_Timer3()
4、;Uart_Pri ntf(n);LCDnit();LCD_ChangeMode(DspTxtMode);/转换LCD显示模式为文本显示模式while(1)/延时让数码管频率显示可见。Delay(1000);Timer3INTCou nt = Timer3INTCou nt + 1 ;if(Timer3INTCou nt59)Timer3INTCo unt = 0 ;if( key = 10 ) /秒设置,键盘 2按下时扫描值为10 / 延时让数码管频率显示可见。/分钟加一分钟大于59时清零/秒清零/原理同分钟minute = minute + 1 ; if(mi nute 59 ) minu
5、te = 0 ;/ Timer3INTCo unt = 0 ; if( key =2 )hour = hour + 1 ;if(hour 23 )hour = 0;Delay(IOOO);LED_Display(Timer3INTCount , minute , hour); /在数码管显示时分秒%d:%dn ,hour,mi nute,Timer3INTCou nt); 在超级终端显示时分秒闹钟设置 *原理参照对钟设置/ 闹钟设置 * 闹钟设置 *else if( key =1 key = 9| key = 17 )if( key = 1)clock_h = clock_h + 1 ;if(
6、 clock_h clock_h = 0 ;if( key =9 )clock_m = clock_m + 1 ;if( clock_m 59 )clock_m = 0 ;if( key = 17 )LED_Display(clock_s , clock_m , clock_h);,hour,mi nute,Timer3INTCou nt);else ;/ Start_Timer3();while( hour = clock_h & minute = clock_m &key != 1 & key != 9 &= 17 &= 2 &= 10 &= 18 ) /闹钟时间到且闹钟启动时,进入下面的
7、闹钟显示/ Uart_Printf( time is over ! geting up now ! n LCD_pri ntf( geti ng up now !/ Uart_Pri ntf(r%d ,rTCNTO3); Delay(1000);2.#in elude ZLG7289.hextern Timer3INTCount, hour , minute ;void Ini t_Timer3(U8 prescaler1,U8 divider3,U16 cou ntb3,U16 compb3) U8 div;switch(divider3)case 2: div=0x00;break;cas
8、e 4: div=0x01;case 8: div=0x02;case 16: div=0x03;default:prescaler1 is for timer2&3 Fre(Timer)=MCLK/(prescaler+1)/divider rTCFGO&=(0xff8);rTCFG0|=(prescaler1/All in terrupt,select MUX in put for TimerN rTCFG1 &=(0x0f24|0x0f12);rTCFG1|=(divrTCMPB3=compb3;rTCNTB3=cou ntb3;rTCON|=(0x0119);/Auto reloadv
9、oid Start_Timer3(void) rTCON|=(OxO117);/Ma nual UpdaterTCO N&=(0x0118);/l nverter off rTCON|=(OxO159)/ 秒累加到 59 时清零Timer3INTCou nt=O;min ute = min ute + 1 ;if(minute 59) /分钟累加到 59时清零minute = 0 ;if(hour23) 小时累加到23时清零hour=0 ;/ LED_Display(Timer3INTCou nt , minute , hour);,Timer3INTCou nt);3.zlg7289.hint Zlg7289SIOBa nd; int Zlg7289SIOCtrl;void Zlg7289_Reset()ZLG7289_ENABLE();WriteSDIO(ZLG7289_CMD_RST);ZLG7289_DISABLE();Delay(20);un sig ned int Zlg7289_ReadKey()un sig ned
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1