|
如附件所示
單片機(jī)源程序如下:
- #include "Lcd_1602.h"
- unchar count,s1num;
- char miao,shi,fen;
- unchar table[] = " ZNSYS ";
- unchar table1[] = " 00 00.00";
- void LCD_GPIO_init(void){
- GPIO_InitTypeDef GPIO_InitStructure;
- //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);
- GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
- DBGMCU_CR&=0xFFFFFFDF;
-
- GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
-
-
- GPIO_SetBits(GPIOB,GPIO_Pin_All);
- }
- void LCD_GPIO_WriteData(unchar data)
- {
- part_h_o=((data&0x80)>>7);
- part_g_o=((data&0x40)>>6);
- part_f_o=((data&0x20)>>5);
- part_e_o=((data&0x10)>>4);
- part_d_o=((data&0x08)>>3);
- part_c_o=((data&0x04)>>2);
- part_b_o=((data&0x02)>>1);
- part_a_o=((data&0x01));
- }
- unchar LCD_GPIO_RedData(void)
- {
- unchar data=0x00;
- data=0x80&(data+0x7f+part_a_i);
- data=0xc0&(data+0x3f+part_b_i);
- data=0xe0&(data+0x1f+part_c_i);
- data=0xf0&(data+0x0f+part_d_i);
- data=0xf8&(data+0x07+part_e_i);
- data=0xfc&(data+0x03+part_f_i);
- data=0xfe&(data+0x01+part_g_i);
- data=0xff&(data+0x00+part_h_i);
- return data;
- }
- void LCD_Write_com(unchar com)
- {
- lcd_rs=0;
- lcd_en=0;
- LCD_GPIO_WriteData(com);
- delay_us(50);
- lcd_en=1;
- delay_us(50);
- lcd_en=0;
- }
- void LCD_Write_date(unchar date)
- {
- lcd_rs=1;
- lcd_en=0;
- LCD_GPIO_WriteData(date);
- delay_us(50);
- lcd_en=1;
- delay_us(50);
- lcd_en=0;
- }
- void LCD_Init(void)
- {
- unchar num;
- lcd_en=0;
- fen=59;
- miao=53;
- shi=23;
- lcd_rw=0;
- LCD_Write_com(0x38);//16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口
- LCD_Write_com(0x0c);//開顯示,不顯示光標(biāo)
- LCD_Write_com(0x06);//寫個(gè)字符地址加一
- LCD_Write_com(0x01);//顯示清0,數(shù)據(jù)指針清零
- LCD_Write_com(0x80);
- for(num=0;num<15;num++)
- {
- LCD_Write_date(table[num]);
- delay_us(50);
- }
- LCD_Write_com(0x80+0x40);
- for(num=0;num<12;num++)
- {
- LCD_Write_date(table1[num]);
- delay_us(50);
- }
- }
- void Write_num(unchar add,unchar date){//add 4 7 10
- unchar shi,ge;
- shi=date/10;
- ge=date%10;
- LCD_Write_com(0x80+0x40+add);
- LCD_Write_date(0x30+shi);
- LCD_Write_date(0x30+ge);
- }
- /*void write_sfm(unchar add,unchar date)
- {
- unchar shi,ge;
- shi=date/10;
- ge=date%10;
- LCD_Write_com(0x80+0x40+add);
- LCD_Write_date(0x30+shi);
- LCD_Write_date(0x30+ge);
- }
- void keyscan()
- {
- if(s1==0)
- {
- delay(5);
- if(s1==0)
- { s1num++;
- while(!s1);
- if(s1num==1)
- {
- TR0=0;
- LCD_Write_com(0x80+0x40+10);
- LCD_Write_com(0x0f);
- }
- }
- if(s1num==2)
- {
- write_com(0x80+0x40+7);
- }
- if(s1num==3)
- {
- write_com(0x80+0x40+4);
- }
- if(s1num==4)
- {
- s1num=0;
- write_com(0x0c);
- }
-
- }
- if(s1num!=0)
- {
- if(s2==0)
- {
- delay(5);
- if(s2==0)
- {
- while(!s2);
- if(s1num==1)
- {
- miao++;
- if(miao==60)
- miao=0;
- write_sfm(10,miao);
- write_com(0x80+0x40+10);
-
-
- }
- if(s1num==2)
- {
- fen++;
- if(fen==60)
- fen=0;
- write_sfm(7,fen);
- write_com(0x80+0x40+7);
- }
- if(s1num==3)
- {
- shi++;
- if(shi==24)
- shi=0;
- write_sfm(4,shi);
- write_com(0x80+0x40+4);
- }
- }
- }
- if(s3==0)
- {
- delay(5);
- if(s3==0)
- {
- while(!s3);
- if(s1num==1)
- {
- if(miao==0)
- {
- miao=59;
- write_sfm(10,miao);
- write_com(0x80+0x40+10);
-
- miao--;
- if(miao==-1)
- miao=59;
- write_sfm(10,miao);
- write_com(0x80+0x40+10);
- }
- if(s1num==2)
- {
- fen--;
- if(fen==-1)
- fen=59;
- write_sfm(7,fen);
- write_com(0x80+0x40+7);
- }
- if(s1num==3)
- {
- shi--;
- if(shi==-1)
- shi=23;
- write_sfm(4,shi);
- write_com(0x80+0x40+4);
- }
- }
- }
- }
- }
- void main()
- {
- LCD_init();
- while(1)
- {
- keyscan();
-
- }
- // while(1);
- }
- /////////////////////////////////////////////////////////////////////////////////////此處屬于中斷
- void timer0() interrupt 1
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
LCD1602.zip
(2.16 KB, 下載次數(shù): 106)
2018-4-19 19:53 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|