|
主程序賦值的三個(gè)變量:“hour”、“minute”、“second”的值顯示在六位數(shù)碼管上
五個(gè)按鍵可以配合調(diào)整小時(shí)、分鐘、秒數(shù)并啟動(dòng)或暫停電子時(shí)鐘。
單片機(jī)源程序如下:
- #include "lcd.h"
- u8 table[]="0123456789";
- extern u8 hour,minute,second;
- void delay(u16 z)
- {
- u16 x,y;
- for(y=z;y>0;y--)
- for(x=123;x>0;x--);
- }
- void lcd_wcode(u8 inst)
- {
- GPIO_ResetBits(GPIOB,GPIO_Pin_0);
- GPIO_ResetBits(GPIOB,GPIO_Pin_1);
- GPIO_Write(GPIOC,inst);
- GPIO_ResetBits(GPIOB,GPIO_Pin_2);
- delay(10);
- GPIO_SetBits(GPIOB,GPIO_Pin_2);
- delay(10);
- GPIO_ResetBits(GPIOB,GPIO_Pin_2);
- delay(10);
- GPIO_SetBits(GPIOB,GPIO_Pin_0);
- }
- void lcd_wdata(u8 num)
- {
- GPIO_SetBits(GPIOB,GPIO_Pin_0);
- GPIO_ResetBits(GPIOB,GPIO_Pin_1);
- GPIO_Write(GPIOC,num);
- GPIO_ResetBits(GPIOB,GPIO_Pin_2);
- delay(10);
- GPIO_SetBits(GPIOB,GPIO_Pin_2);
- delay(10);
- GPIO_ResetBits(GPIOB,GPIO_Pin_2);
- delay(10);
- GPIO_SetBits(GPIOB,GPIO_Pin_0);
- }
- void LCD_Init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //íÆíìêä3ö
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿úËù¶èÎa50MHz
- GPIO_Init(GPIOC, &GPIO_InitStructure); //¸ù¾Yé趨2Îêy3õê¼»ˉGPIOC
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; //PB¶Ë¿úÅäÖÃ, íÆíìêä3ö
- GPIO_Init(GPIOB, &GPIO_InitStructure);
-
- lcd_wcode(0x38);
- lcd_wcode(0x0C);
- lcd_wcode(0x06);
- lcd_wcode(0x01);
- }
-
- void lcd_showtime()
- {
- lcd_wcode(0x80+0x04);
- lcd_wdata(table[hour/10]);
- lcd_wdata(table[hour%10]);
- lcd_wdata(':');
- lcd_wdata(table[minute/10]);
- lcd_wdata(table[minute%10]);
- lcd_wdata(':');
- lcd_wdata(table[second/10]);
- lcd_wdata(table[second%10]);
- }
復(fù)制代碼- #include "dsgshow.h"
- extern u8 hour,minute,second;
- u8 smgduan[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- u16 smgwei[6]={0x8000,0x4000,0x2000,0x1000,0x0800,0x0400};
- void DsgShowInit()
- {
- GPIO_InitTypeDef GPIO_InitStructure;
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC , ENABLE);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15|GPIO_Pin_14|GPIO_Pin_13|
- GPIO_Pin_12|GPIO_Pin_11|GPIO_Pin_10;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
- GPIO_Init(GPIOC, &GPIO_InitStructure);
- }
- void DsgShowTime()
- {
- u16 j;
- while(1)
- {
- GPIO_Write(GPIOA,smgwei[0]);
- GPIO_Write(GPIOC,smgduan[hour/10]);
- for(j=0;j<400;j++);
-
- GPIO_Write(GPIOA,smgwei[1]);
- GPIO_Write(GPIOC,(smgduan[hour%10])&0xff7f);
- for(j=0;j<400;j++);
-
- GPIO_Write(GPIOA,smgwei[2]);
- GPIO_Write(GPIOC,smgduan[minute/10]);
- for(j=0;j<400;j++);
-
- GPIO_Write(GPIOA,smgwei[3]);
- GPIO_Write(GPIOC,(smgduan[minute%10])&0xff7f);
- for(j=0;j<400;j++);
-
- GPIO_Write(GPIOA,smgwei[4]);
- GPIO_Write(GPIOC,smgduan[second/10]);
- for(j=0;j<400;j++);
-
- GPIO_Write(GPIOA,smgwei[5]);
- GPIO_Write(GPIOC,smgduan[second%10]);
- for(j=0;j<400;j++);
- }
- }
復(fù)制代碼
|
評(píng)分
-
查看全部評(píng)分
|