




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、廣州白云技師學院 電子系 技師班單片機技術課程項目化教學系列基于AVR單片機(ATMEGE16A)的帶密碼顯示的DS302仿真設計 廖高靈功能:1、開機密碼123456用戶可以根據(jù)自己需求修改 2、進入時鐘界面通過K1,K2,K3調(diào)整時鐘仿真界面:程序代碼:(已經(jīng)通過調(diào)試)/*main_1302.c*/#include<iom16v.h>#include<macros.h>#include"1602_jp_sz.c"#include"1302_sz.c"#include"keyboard.c"#include&
2、quot;jzkeyboard.c"#include"password.c"#define uchar unsigned char#define uint unsigned intvoid delay1(uint x) uint i,j; for(i=x;i>0;i-) for(j=600;j>0;j-); void write_time() miao=change1(miao); fen=change1(fen); si=change1(si); ri=change1(ri); yue=change1(yue); xq=change1(xq); ni
3、an=change1(nian); write_ds1302(0x80,miao); write_ds1302(0x82,fen); write_ds1302(0x84,si); write_ds1302(0x86,ri); write_ds1302(0x88,yue); write_ds1302(0x8a,xq); write_ds1302(0x8c,nian);uchar change(uchar dat) /16-10 uchar a,b; a=dat/16; a=10*a; b=dat%16; dat=a+b; return dat; uchar change1(uchar dat)
4、/10-16 uchar a,b; a=dat/10; a=16*a; b=dat%10; dat=a+b; return dat; void show_time() /uchar a,b; miao=read_ds1302(0x81); fen=read_ds1302(0x83); si=read_ds1302(0x85); ri=read_ds1302(0x87); yue=read_ds1302(0x89); xq=read_ds1302(0x8b); nian=read_ds1302(0x8d); miao=change(miao); fen=change(fen); si=chang
5、e(si); ri=change(ri); yue=change(yue); xq=change(xq); nian=change(nian); _1602dis_sfm(si,fen,miao); _1602dis_nyrq(nian,yue,ri,xq); void main() DDRD&=BIT(PC0)&BIT(PC1)&BIT(PC2); PORTD|=BIT(PC0)|BIT(PC1)|BIT(PC2); DDRC=0XFF; init1602(); delay1(20); lcd_inputpassword(); while(1) password();
6、 while(flag) show_time(); keyboard(); /*1602_jp_sz.c*/*/功能: 1602顯示時鐘/管腳配置:PB為數(shù)據(jù),PD3=RS,PD6=RW,PD7=E;/ k1=PA0,K2=PA1,K3=PA2;/*/#include<iom16v.h>#include<macros.h>#define uchar unsigned char#define uint unsigned int/#pragma interrupt_handler s_f_m:9#pragma data:codeconst uchar table1=&quo
7、t; 20 - - "const uchar table2=" : : "signed char si,fen,miao,nian,yue,ri,xq;uchar up,down;void delay(uint x) uint i,j; for(i=x;i>0;i-) for(j=600;j>0;j-);/*lcd1602*/void write1602_cm(uchar cm) DDRB=0XFF; DDRD|=BIT(PD3)|BIT(PD6)|BIT(PD7); PORTD&=BIT(PD3);/RS=0; PORTD&=BIT(
8、PD6);/RW=0; PORTD&=BIT(PD7);/E=0; delay(1); PORTB=cm; PORTD|=BIT(PD7);/E=1; delay(1); PORTD&=BIT(PD7);/E=0; PORTD|=BIT(PD3);/RS=1;void write1602_dat(uchar dat) DDRB=0XFF; DDRD|=BIT(PD3)|BIT(PD6)|BIT(PD7); PORTD|=BIT(PD3);/RS=1; PORTD&=BIT(PD6);/RW=0; PORTD&=BIT(PD7);/E=0; delay(1); P
9、ORTB=dat; PORTD|=BIT(PD7);/E=1; delay(1); PORTD&=BIT(PD7);/E=0; PORTD&=BIT(PD3);/RS=0;void _1602dis_2line(uchar addr,uchar dat) uchar si,ge; si=dat/10;ge=dat%10; write1602_cm(0x80+0x40+addr); write1602_dat(0x30+si); delay(1); write1602_dat(0x30+ge); delay(1);void _1602dis_1line(uchar addr,uc
10、har dat) uchar si,ge; si=dat/10;ge=dat%10; write1602_cm(0x80+addr); write1602_dat(0x30+si); delay(1); write1602_dat(0x30+ge); delay(1);void _1602dis_sfm(uchar s,uchar f,uchar m) _1602dis_2line(3,s); _1602dis_2line(6,f); _1602dis_2line(9,m);void _1602dis_nyrq(uchar n,uchar y,uchar r,uchar q)_1602dis_
11、1line(4,n);_1602dis_1line(7,y);_1602dis_1line(10,r);_1602dis_1line(13,q);void init1602() /*TCCR1B=0X04;/256分頻 TCNT1H=(65535-31250)/256; TCNT1L=(65535-31250)%256;/1s TIMSK|=BIT(2); SREG|=BIT(7);*/ write1602_cm(0x38); write1602_cm(0x0C); write1602_cm(0x06); write1602_cm(0x01); / si=9;fen=3;miao=23;voi
12、d lcd_time_init() uchar i; write1602_cm(0x80); for(i=0;i<15;i+) write1602_dat(table1i); delay(5); write1602_cm(0x80+0X40); for(i=0;i<11;i+) write1602_dat(table2i); delay(5); /*1302_sz.c*/*ds1302*/功能:讀取1302時鐘/管腳分配:PC1=SCK PC0=I/O PC2=CE/*/#include<macros.h>#include"1302.h"#defin
13、e uchar unsigned char#define uint unsigned intvoid delay2(uint x) uint i,j; for(i=x;i>0;i-) for(j=600;j>0;j-);void write_dat(uchar dat) uchar i,temp; DDRC=0XFF; temp=dat; for(i=8;i>0;i-) if(temp&0x01) IO_H; else IO_L; temp=temp>>1;/10011101 sclk_H;sclk_L; uchar read_dat() uchar i,
14、temp; DDRC&=BIT(PC0); PORTC|=BIT(PC0); for(i=8;i>0;i-) temp=temp>>1; if(PINC&0x01) temp=temp|0x80; sclk_H; sclk_L; return temp;void write_ds1302(uchar add,uchar dat) CE_L; sclk_L; CE_H; write_dat(add); write_dat(dat); /sclk_L; CE_L;uchar read_ds1302(uchar add) uchar temp; CE_L; sclk
15、_L; CE_H; write_dat(add); temp=read_dat(); sclk_H; CE_L; return temp;/* keyboard.c*/*/獨立鍵盤 k1=PDO k2=PD1 k3=PD2/*/#define k1 PIND&0x01#define k2 PIND&0X02#define k3 PIND&0X04uchar num;void K1() if(k1) num+; void keyboard() if(k1) num+; write1602_cm(0x80+0x40+10); write1602_cm(0x0f); whil
16、e(k1); while(num=1) /miao +- write1602_cm(0x80+0x40+10); K1(); while(k1); if(k2) miao+;if(miao=60)miao=0;while(k2); _1602dis_2line(9,miao); if(k3) miao-;if(miao=0xff)miao=59;while(k3); _1602dis_2line(9,miao); while(num=2) /fen+- write1602_cm(0x80+0x40+7); K1(); while(k1); if(k2) fen+;if(fen=60)fen=0
17、;while(k2); _1602dis_2line(6,fen); if(k3) fen-;if(fen=0xff)fen=59;while(k3); _1602dis_2line(6,fen); while(num=3) /si+- write1602_cm(0x80+0x40+4); K1(); while(k1); if(k2) si+;if(si=24)si=0;while(k2); _1602dis_2line(3,si); if(k3) si-;if(si=0xff)si=23;while(k3); _1602dis_2line(3,si); while(num=4) /xq+-
18、 write1602_cm(0x80+14); K1(); while(k1); if(k2) xq+;if(xq=8)xq=1;while(k2); _1602dis_1line(13,xq); if(k3) xq-;if(fen=0)fen=7;while(k3); _1602dis_1line(13,xq); while(num=5) /ri+- write1602_cm(0x80+11); /輸入與改月相對應的日期,上限為31天 K1(); while(k1); if(k2) ri+;if(ri=32)ri=1;while(k2); _1602dis_1line(10,ri); if(
19、k3) ri-;if(ri=0)ri=31;while(k3); _1602dis_1line(10,ri); while(num=6) /yue write1602_cm(0x80+8); K1(); while(k1); if(k2) yue+;if(yue=13)yue=1;while(k2); _1602dis_1line(7,yue); if(k3) yue-;if(yue=0)yue=12;while(k3); _1602dis_1line(7,yue); while(num=7) /nian write1602_cm(0x80+5); K1(); while(k1); if(k2
20、) nian+;if(nian=100)yue=1;while(k2); _1602dis_1line(4,nian); if(k3) nian-;if(nian=0)yue=99;while(k3); _1602dis_1line(4,nian); if(num=8) /break; write1602_cm(0x0c);num=0; write_time();/* jzkeyboard.c*/uchar dat;void time(uint z) uchar x,y; for(x=z;x>0;x-) for(y=110;y>0;y-);void jzkeyboard()ucha
21、r num3,num1,num2; /*/ DDRA|=0xf0; PORTA&=0x0f; DDRA&=0xf0; PORTA|=0x0f; num3=0x0f&PINA; /*/ /time(500); if(num3!=0x0f) DDRA|=0x0f; PORTA&=0xf0; DDRA&=0x0f; PORTA|=0xf0; num1=0xf0&PINA; num2=num1|num3; switch(num2) case 0xee: dat=0; break; case 0xde: dat=1; break; case 0xbe: d
22、at=2; break; case 0x7e: dat=3; break; case 0xed: dat=4; break; case 0xdd: dat=5; break; case 0xbd: dat=6; break; case 0x7d: dat=7; break; case 0xeb: dat=8; break; case 0xdb: dat=9; break; /return(dat); while(PINA!=0xf0); /松手檢測/* password.c*/uchar i,p1,p2,p3,p4,p5,p6,flag;flash uchar pa="Input p
23、assword! "flash uchar er="Error! "void dengdai(uint x) uint i,j; for(i=x;i>0;i-) for(j=50000;j>0;j-);void lcd_inputpassword() uchar i; write1602_cm(0x80); for(i=0;i<16;i+) write1602_dat(pai); delay(5); write1602_cm(0x80+0x40+5); write1602_cm(0x0f);void error()uchar i; write16
24、02_cm(0x80); for(i=0;i<16;i+) write1602_dat(eri); delay(5); void password() DDRA|=0x0f; PORTA&=0xf0; DDRA&=0x0f; PORTA|=0xf0; if(PINA!=0xf0) i+; jzkeyboard(); /PORTC=dat; if(i=1) p1=dat;write1602_cm(0x80+0x40+5);write1602_dat('*'); if(i=2) p2=dat;write1602_cm(0x80+0x40+6);write1602_da
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)境與設備監(jiān)控系統(tǒng)李偉課件
- 鋼框架結構施工準備鋼框架結構安裝課件
- 轉讓手機公司合同范本
- 邯鄲幼兒師范高等??茖W?!锻恋乩靡?guī)劃學》2023-2024學年第二學期期末試卷
- 內(nèi)蒙古美術職業(yè)學院《廣告策劃與文案寫作》2023-2024學年第二學期期末試卷
- 山東華宇工學院《管理信息系統(tǒng)實踐》2023-2024學年第二學期期末試卷
- 2025河北保定市國控集團有限責任公司公司招聘工作人員8名筆試參考題庫附帶答案詳解
- 2024-2025學年乾安縣三年級數(shù)學第二學期期末質(zhì)量跟蹤監(jiān)視試題含解析
- 2024-2025學年成武縣數(shù)學三下期末學業(yè)質(zhì)量監(jiān)測模擬試題含解析
- 2025屆阿壩縣四下數(shù)學期末達標檢測模擬試題含解析
- 數(shù)據(jù)中心運維服務投標方案(技術標)
- 2025年中煤集團新疆能源有限公司招聘筆試參考題庫含答案解析
- 2024-2025學年山東省濰坊市高一上冊1月期末考試數(shù)學檢測試題(附解析)
- 電玩城培訓課件
- 2025年全年日歷-含農(nóng)歷、國家法定假日-帶周數(shù)豎版
- 小學生播音員課件
- 2024年重大事項內(nèi)部會審制度(3篇)
- 飛機乘務人員培訓課件
- 解讀《干部教育培訓工作條例》
- 精神科患者首次風險評估單
- 【MOOC】中央銀行學-江西師范大學 中國大學慕課MOOC答案
評論
0/150
提交評論