武汉科技大学本科毕业设计
if(line_num>7) line_num=2; write_6_8_char(0,line_num,'*'); } }
if(Add_10) //可能有加10按键按下 {
LCD_DLY_ms(15); //延时消抖 if(Add_10==1&&page_num==1) {
while(Add_10);
change_value(page_num,line_num,10); } }
if(Sub_10) //可能有减10按键按下 {
LCD_DLY_ms(15); //延时消抖 if(Sub_10==1&&page_num==1) {
while(Sub_10);
change_value(page_num,line_num,-10); } }
if(Add_1) //可能有加1按键按下 {
LCD_DLY_ms(15); //延时消抖 if(Add_1==1&&page_num==1) {
while(Add_1);
change_value(page_num,line_num,1); } }
if(Sub_1) //可能有减1按键按下
- 41 -
武汉科技大学本科毕业设计
{
LCD_DLY_ms(15); //延时消抖 if(Sub_1==1&&page_num==1) {
while(Sub_1);
change_value(page_num,line_num,-1); } } }
TF卡的语音播放驱动:
//-------------------------语音播放驱动---------------------------// void TF_SD_play() {
unsigned char i; PORTK_PK0=0;
Dly_ms(5); PORTK_PK0=1;
Dly_ms(300);
PORTK_PK1=0; Dly_ms(2);
for(i=0;i<16;i++) {
PORTK_PK1=0; PORTK_PK2=0; Dly_100us();
PORTK_PK1=1; Dly_100us(); }
PORTK_PK2=1; Dly_ms(20); }
- 42 -
武汉科技大学本科毕业设计
2.5ms的中断定时:
//---------定时器1.全局控制基准定时器,实现1.25ms周期性中断-------// #pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 8 Timer1(void) {
TFLG1_C0F=1;
TC0+=6250; //2.5ms
sampling_voltage();
if(LED_cnt>0) LED_cnt--; //用于灯光闪烁的频率控制 if(real_speed>normal_speed&&LED_cnt==0&&real_speed<=out1_speed) {
PORTA_PA0=~PORTA_PA0; LED_cnt=200; }
if(real_speed<=normal_speed) PORTA_PA0=0;
if(redraw_cnt>0) redraw_cnt--; //用于刷屏的递减
if(play_delay_flag==1) //控制语音播放用的递减 {
if(play_delay_cnt<1400) play_delay_cnt++; else {
play_delay_flag=0;play_delay_cnt=0; } } }
#pragma CODE_SEG DEFAULT
Main函数部分: void main(void) {
- 43 -
武汉科技大学本科毕业设计
DisableInterrupts;
Init_IO(); LCD_Init(); Init_PLL(); Init_portk(); Init_ATD(); Init_TIM();
location_change(16); EnableInterrupts;
TSCR1_TEN =1; //start Timer Dly_ms(1000); pre_show(); for(;;) {
if(real_speed>out1_speed&&PORTK_PK3==0&&play_delay_flag==0) {
TF_SD_play(); play_delay_flag=1; } else {
Key_Scan(); //按键扫描 if(redraw_cnt==0) {
redraw(); //刷屏 redraw_cnt=20; } } } }
- 44 -