




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、#include "stm32f10x.h"#define read_busybit()GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_7 ) #define DATAOUT GPIOC->ODR/unsigned char table1="65"unsigned char table2="大學" ;unsigned char table3="學院" ;unsigned char table4="電子信息" ;unsigned char table5="
2、姓名" ; unsigned char hy5;unsigned char k=0;void delay(unsigned int x) while(x-);/ 外設時鐘使能/*/void RCC_Configuration(void) /在208頁 這里是引腳時鐘配置 /* 使能外設時鐘 */RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2
3、Periph_GPIOE, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);/* 全部用到1602的引腳將在在配置*/void GPIO_Configuration(void) /1602引腳配置GPIO_InitTypeDef GPIO_InitStructure;/* LD1 & LD2 & LD3 & LD4 configration */GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GP
4、IO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOE, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin =GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Ini
5、tStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure); /矩陣鍵盤引腳輸出配置GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure
6、);/矩陣鍵盤引腳輸入配置GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_11|GPIO_Pin_7|GPIO_Pin_6;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure); void key()/按鍵檢測 unsigned char ii,jj; unsigned int key1010; u16 ling=GPIO_
7、Pin_7,GPIO_Pin_6,GPIO_Pin_11,GPIO_Pin_13; u16 heng=GPIO_Pin_0,GPIO_Pin_1,GPIO_Pin_2,GPIO_Pin_9; GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_9); for (ii=0;ii<4;ii+) GPIO_ResetBits(GPIOB,hengii); for(jj=0;jj<4;jj+) delay(50000); delay(50000); /delay(50000); if(GPIO_ReadInputData
8、Bit(GPIOB,lingjj)=0) while(GPIO_ReadInputDataBit(GPIOB,lingjj=0); keyiijj=1; else keyiijj=0; /delay(50000); GPIO_SetBits(GPIOB,hengii); if(key00=1)&&(GPIO_ReadInputDataBit(GPIOB,ling0)=1)hy5=1; /* if(key01=1)&&(GPIO_ReadInputDataBit(GPIOB,ling0)=1)hy5=2; if(key02=1)&&(GPIO_Re
9、adInputDataBit(GPIOB,ling0)=1)hy5=3; if(key03=1)&&(GPIO_ReadInputDataBit(GPIOB,ling0)=1)hy5=4; if(key10=1)&&(GPIO_ReadInputDataBit(GPIOB,ling1)=1)hy5=5; /* if(key11=1)&&(GPIO_ReadInputDataBit(GPIOB,ling1)=1)hy5=6; if(key12=1)&&(GPIO_ReadInputDataBit(GPIOB,ling1)=1)hy5
10、=7; if(key13=1)&&(GPIO_ReadInputDataBit(GPIOB,ling1)=1)hy5=8; if(key20=1)&&(GPIO_ReadInputDataBit(GPIOB,ling2)=1)hy5=9; /* if(key21=1)&&(GPIO_ReadInputDataBit(GPIOB,ling2)=1)hy5=10; if(key22=1)&&(GPIO_ReadInputDataBit(GPIOB,ling2)=1)hy5=11; if(key23=1)&&(GPIO_
11、ReadInputDataBit(GPIOB,ling2)=1)hy5=12; if(key30=1)&&(GPIO_ReadInputDataBit(GPIOB,ling3)=1)hy5=13;/* if(key31=1)&&(GPIO_ReadInputDataBit(GPIOB,ling3)=1)hy5=14; if(key32=1)&&(GPIO_ReadInputDataBit(GPIOB,ling3)=1)hy5=15; if(key33=1)&&(GPIO_ReadInputDataBit(GPIOB,ling3)=
12、1)hy5=16;/ hy2=9;/ return hy2; / void LCD_DataIo_In(void)/數據線輸入 1602輸入引腳配置GPIO_InitTypeDef GPIO_InitStructure;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_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_InitStructure.
13、GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOE, &GPIO_InitStructure);void LCD_DataIo_Out(void)/數據線輸出 1602引腳輸出配置GPIO_InitTypeDef GPIO_InitStructure;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_InitStructure.GPIO_Mode = G
14、PIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOE, &GPIO_InitStructure); void hy() GPIO_ResetBits(GPIOE,GPIO_Pin_7); GPIO_ResetBits(GPIOE,GPIO_Pin_6); GPIO_ResetBits(GPIOE,GPIO_Pin_5); GPIO_ResetBits(GPIOE,GPIO_Pin_4); GPIO_ResetBits(GPIOE,GPIO_Pin_3); GPIO_ResetBi
15、ts(GPIOE,GPIO_Pin_2); GPIO_ResetBits(GPIOE,GPIO_Pin_1); GPIO_ResetBits(GPIOE,GPIO_Pin_0); void GPIO_Cofiguration_12864(void) GPIO_InitTypeDef GPIO_InitStructure; 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_InitStructure.GP
16、IO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOC,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_
17、Init(GPIOD,&GPIO_InitStructure); void LCD_12864_in(void) GPIO_InitTypeDef GPIO_InitStructure; 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_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed=GPI
18、O_Speed_50MHz; GPIO_Init(GPIOC,&GPIO_InitStructure); void LCD_12864_out(void) GPIO_InitTypeDef GPIO_InitStructure; 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_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructur
19、e.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOC,&GPIO_InitStructure); void readbusy_12864() LCD_12864_in(); GPIO_ResetBits(GPIOD,GPIO_Pin_1); / rs GPIO_SetBits(GPIOD,GPIO_Pin_2); /rw GPIO_SetBits(GPIOD,GPIO_Pin_3);/en while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_7); GPIO_ResetBits(GPIOD,GPIO_Pin_3)
20、; LCD_12864_out(); void hy2() GPIO_ResetBits(GPIOC,GPIO_Pin_0); GPIO_ResetBits(GPIOC,GPIO_Pin_1); GPIO_ResetBits(GPIOC,GPIO_Pin_2); GPIO_ResetBits(GPIOC,GPIO_Pin_3); GPIO_ResetBits(GPIOC,GPIO_Pin_4); GPIO_ResetBits(GPIOC,GPIO_Pin_5); GPIO_ResetBits(GPIOC,GPIO_Pin_6); GPIO_ResetBits(GPIOC,GPIO_Pin_7)
21、; /*/void NVIC_Configuration(void) /* 初始化時鐘晶振 72MHZ*/void SysClock_Init(void) /上半部分在196頁ErrorStatus HSEStartUpStatus; RCC_DeInit();RCC_HSEConfig(RCC_HSE_ON); /這個函數表示選擇外部晶振作為時鐘源HSEStartUpStatus = RCC_WaitForHSEStartUp(); /if(HSEStartUpStatus = SUCCESS)/等待外部晶振起振 FLASH_PrefetchBufferCmd(FLASH_PrefetchB
22、uffer_Enable);/開打預取指緩存使能FLASH_SetLatency(FLASH_Latency_2); /2延時周期。設一個flash的等待狀態。時鐘過快要在這里等待 RCC_HCLKConfig(RCC_SYSCLK_Div1); /設置主時鐘。設置AHB時鐘(HCLK) AHB時鐘=系統時鐘 RCC_PCLK2Config(RCC_HCLK_Div1); / 設置高速的AHB時鐘(PCLK2),APB2時鐘=HCLK(RCC_HCLK_Div1) RCC_PCLK1Config(RCC_HCLK_Div2); /設置低速的AHB時鐘(PCLK1),AHB1時鐘=HCLK/2
23、RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);/PLL的輸入時鐘=HSE時鐘頻率(RCC_PLLSource_HSE_Div1),PLL輸入時鐘X9(RCC_PLLMul_9) /這里如果晶振是8MHZ時,RCC_PLLMul_9表示通過鎖相環倍頻9倍,此時晶振變為8MHZ*9=72MHZ,就變為72MHZ。此時主時鐘就是72MHZ ( RCC_HCLKConfig(RCC_SYSCLK_Div1); ) /此時上面的 RCC_PCLK2Config(RCC_HCLK_Div1) 也為72MHZ,還有上面的 RCC_PCLK1Confi
24、g(RCC_HCLK_Div2);時鐘就變為76MHZ/2=36MHZ RCC_PLLCmd(ENABLE);/ 使能或者失能 PLL 在這里是使能 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) = RESET) /RCC_FLAG_PLLRDY是PLL就緒 ; RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);/選擇PLL做為系統時鐘(RCC_SYSCLKSource_PLLCLK) while(RCC_GetSYSCLKSource() != 0x08)/RCC_GetSYSCLKSource功能是返回用作系統時鐘的時鐘
25、源 ,0x08表示PLL作為系統時鐘 / ;/* * */*讀忙函數*/unsigned char readbusy() /讀忙函數void readbusy() /unsigned char result;LCD_DataIo_In();/GPIO_SetBits(GPIOE,GPIO_Pin_7);GPIO_ResetBits(GPIOA,GPIO_Pin_1);/rs=0GPIO_SetBits(GPIOA,GPIO_Pin_2);/rw=1GPIO_SetBits(GPIOA,GPIO_Pin_3);/en=1/delay(5000); while(GPIO_ReadInputData
26、Bit(GPIOE,GPIO_Pin_7 );/result=read_busybit();GPIO_ResetBits(GPIOA,GPIO_Pin_3); /en=0/return result; LCD_DataIo_Out(); void write_12864_cmd(unsigned char a11) /寫指令/while(readbusy(); readbusy_12864() ; hy2(); GPIO_ResetBits(GPIOD,GPIO_Pin_1); /rs=0GPIO_ResetBits(GPIOD,GPIO_Pin_2); /rw=0 GPIO_ResetBit
27、s(GPIOD,GPIO_Pin_3);/GPIO_ResetBits(GPIOA,GPIO_Pin_3); delay(5000 ); DATAOUT=a11; GPIO_SetBits(GPIOD,GPIO_Pin_3);/1 delay(5000 ); GPIO_ResetBits(GPIOD,GPIO_Pin_3);/0 void write_12864_data(unsigned char data11) /寫數據 /unsigned int j=256; / while(readbusy()&&(j-);/ while(readbusy();readbusy_128
28、64(); hy2(); delay(5000 ); GPIO_ResetBits(GPIOD,GPIO_Pin_3); GPIO_SetBits(GPIOD,GPIO_Pin_1) ; /rs=1 GPIO_ResetBits(GPIOD,GPIO_Pin_2);/rw=0 delay(5000 ); DATAOUT=data11; GPIO_SetBits(GPIOD,GPIO_Pin_3);/1 delay(5000 ); GPIO_ResetBits(GPIOD,GPIO_Pin_3);/0 void init_12864() / GPIO_ResetBits(GPIOD,GPIO_P
29、in_5);/這是12864的復位鍵 /delay(5000 ); GPIO_SetBits(GPIOD,GPIO_Pin_4); GPIO_SetBits(GPIOD,GPIO_Pin_5); write_12864_cmd(0x30); delay(5000 ); write_12864_cmd(0x30); delay(5000 ); write_12864_cmd(0x30); delay(5000 ); write_12864_cmd(0x06); delay(5000 ); write_12864_cmd(0x01); delay(5000 ); write_12864_cmd(0
30、x0c); delay(5000 ); /write_12864_cmd(0x02); void weizhi_12864(unsigned char a1,unsigned char a2) unsigned char x; if(a1=1) a1=0x80; else if(a1=2) a1=0x90; else if(a1=3) a1=0x88; else if(a1=4) a1=0x98; x=a1+a2; write_12864_cmd(x); void writeby(unsigned char a1,unsigned char a2) readbusy(); hy(); GPIO
31、_ResetBits(GPIOA,GPIO_Pin_1); /rs=0 GPIO_ResetBits(GPIOA,GPIO_Pin_2); GPIO_ResetBits(GPIOA,GPIO_Pin_3); if(a2=0) GPIO_ResetBits(GPIOA,GPIO_Pin_1); /rs=0 GPIO_ResetBits(GPIOA,GPIO_Pin_2); /rw=0 if(a2=1) GPIO_SetBits(GPIOA,GPIO_Pin_1); /rs=1 GPIO_ResetBits(GPIOA,GPIO_Pin_2); /rw=0 if(a1&0x80) GPIO
32、_SetBits(GPIOE,GPIO_Pin_7) ; else GPIO_ResetBits(GPIOE,GPIO_Pin_7); if(a1&0x40) GPIO_SetBits(GPIOE,GPIO_Pin_6) ; /等于1的意思 else GPIO_ResetBits(GPIOE,GPIO_Pin_6); if(a1&0x20) GPIO_SetBits(GPIOE,GPIO_Pin_5) ; else GPIO_ResetBits(GPIOE,GPIO_Pin_5); if(a1&0x10) GPIO_SetBits(GPIOE,GPIO_Pin_4) ;
33、 else GPIO_ResetBits(GPIOE,GPIO_Pin_4); GPIO_SetBits(GPIOA,GPIO_Pin_3); delay(5000 ); GPIO_ResetBits(GPIOA,GPIO_Pin_3); hy(); if(a1<<4)&0x80) GPIO_SetBits(GPIOE,GPIO_Pin_7) ; else GPIO_ResetBits(GPIOE,GPIO_Pin_7); if(a1<<4)&0x40) GPIO_SetBits(GPIOE,GPIO_Pin_6) ; /等于1的意思 else GPIO
34、_ResetBits(GPIOE,GPIO_Pin_6); if(a1<<4)&0x20) GPIO_SetBits(GPIOE,GPIO_Pin_5) ; else GPIO_ResetBits(GPIOE,GPIO_Pin_5); if(a1<<4)&0x10) GPIO_SetBits(GPIOE,GPIO_Pin_4) ; else GPIO_ResetBits(GPIOE,GPIO_Pin_4); GPIO_SetBits(GPIOA,GPIO_Pin_3); delay(5000 ); GPIO_ResetBits(GPIOA,GPIO_Pin_3);/*160
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 稀土金屬壓延加工中的質量改進方法選擇與實施考核試卷
- 游樂設施施工中的安全文化建設考核試卷
- 木片在紙漿生產中的優化研究考核試卷
- 搪瓷制品的環保生產與廢棄物處理考核試卷
- 生態保護宣傳教育策略考核試卷
- 青浦區高三語文二模2021作文
- 電飯煲煮飯不熟應對考核試卷
- 浙江省J12共同體聯盟校初三語文中考模擬考試試卷(含答案)
- 家用電器具的材料腐蝕與防護考核試卷
- 管道工程行業熱點問題研究動向與趨勢預測考核試卷
- 電力行業公共信用綜合評價標準(試行)
- 繼發性高血壓的診斷思路與流程
- 游標卡尺及螺旋測微器的讀數(共34張PPT)精選
- 上海市汽車維修結算工時定額(試行)
- 裝配式建筑發展存在的問題及對策分析
- 中國古典文獻學(全套)
- 自身免疫性腦炎
- 醫院質控科工作質量考核指標
- CRPS電源設計向導 CRPS Design Guide r-2017
- GB/T 4937.22-2018半導體器件機械和氣候試驗方法第22部分:鍵合強度
- GB/T 3452.2-2007液壓氣動用O形橡膠密封圈第2部分:外觀質量檢驗規范
評論
0/150
提交評論