師傅所教知識制作了一個LCD12864的屏幕顯示,字模自己軟件下載的,俺們新手,寫的粗糙
期末項目為時鐘的顯示和設定,內含鬧鐘
PU原理圖
按鍵:PA0:暫停時鐘
在暫停時鐘后再按一次PA0則開始選擇改變分鐘(反白),繼續按下PA0開始設置時鐘的改變(反白)
PA1與PA2連用檢測按鍵:數字的增加
PB0:數據的減少
PB1與PB2連用檢測按鍵:確認改變
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
原理圖.png (73.18 KB, 下載次數: 93)
下載附件
2020-7-4 08:46 上傳
另外,我現在另添加的鬧鐘的設置,可在運行程序后設置鬧鐘,鬧鐘的設定沒上傳,原理類似
缺點: 1. 日期判定沒有做完,只是進行了簡單的判斷,沒有大月小月的判斷,閏年這類的 2. 時鐘的修改的增加判斷23的時候沒用反白和清屏
修改代碼如下
//減少
if(Key_Scan(KEY2_GPIO_PORT,KEYB0_GPIO_PIN) == KEY_ON)
{
if(a == 1)
{
a = a+ 22;
LCD12864_SeleScreen(LCD12864_Left);
LCD12864_Dsp_number1_1(38,3,a);
}else
{
a = a - 1;
LCD12864_SeleScreen(LCD12864_Left);
LCD12864_Dsp_12x24_Num(38,3,0xff);
LCD12864_Dsp_number1_1(38,3,a);
}
}
//增加
if(Key_Scan(KEY1_GPIO_PORT,KEYA1_GPIO_PIN) == KEY_ON)
{
if(a == 23)
{
ri = ri + 1;
a= a * 0+1;
LCD12864_SeleScreen(LCD12864_Right);
LCD12864_Dsp_number_2(35,0, ri);
LCD12864_SeleScreen(LCD12864_Left);
LCD12864_Dsp_12x24_Num(38,3,0xff);
LCD12864_Dsp_number1_1(38,3,a);
}else
{
a = a + 1;
LCD12864_SeleScreen(LCD12864_Left);
LCD12864_Dsp_12x24_Num(38,3,0xff);
LCD12864_Dsp_number1_1(38,3,a);
}
}
單片機源程序如下:
- #include "stm32f10x.h" // 相當于51單片機中的 #include <reg51.h>
- #include ".\LED\bsp_LED.h"
- #include ".\KEY\bsp_key.h"
- #include "delay.h"
- #include "sys.h"
- #include ".\beep\beep.h"
- int main(void)
- {
- Init();
- led_init();
- key_init();
- BEEP_Init();//喇叭初始化
- play_successful();
-
- LCD12864_Dsp_zhonghe(2020,11,31,7,23,55
- ,1,2); //年份,月份,日期,星期,小時,分鐘,
- //鬧鐘
- // LCD12684_Dsp_perture();
- // delay10ms(100);
- // clearScreen(LCD12864_Full);
- // LCD12864_Write_Command(0x3F);
- // LCD12864_Dsp_time(2020);//年份
- // LCD12864_Dsp_time2(11,25);//月份,日期
- // LCD12864_Dsp_time1(5); //星期
- // LCD12864_Dsp_shijian(24,58);//小時,分鐘
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
-
- // while(1)
- // {
- //// PlayMusic(); //播放生日快樂
- // // play_music();
- // play_music();
- // }
- //
- }
復制代碼 另外我還錄制了視頻 文件太大 發不上來
所有資料51hei提供下載:
程序+仿真.7z
(1.59 MB, 下載次數: 406)
2020-7-4 00:50 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|