時鐘頻率,相當于人體的心臟,沒有它就掛。 復位電路由一個電阻和一個電容構成,學過模電又聰明的的你應該懂得這叫阻容 復位電路,它的輸出加載在單片機的復位引腳就是給單片機一個上電的緩沖時 間,保證單片機正常工作。 但是,但是,但是(重要的事情說三遍),上述電路在仿真軟件里面是不起作用 的,也就是說你把他們統統刪掉,單片機照樣飛奔。并且,你看到那個晶振的頻 率為11.0592,其實那個也是虛的,真實的單片機晶振在這里(雙擊單片機本身)
RS -- 這個是用來選擇發送的是地址還是數據的,(因為 1602 的顯示是需要 先發送地址,告訴人家我要在哪個地方顯示,然后再發送數據,告訴人家我要在 這個地方顯示什么內容),所以如果發送地址的時候,RS 就要設為 0;發送數據 時,RS 就要設為 1.
E -- 使能引腳 當該引腳為 1 時,表示 LCD 禁止被寫入,為 0 表示允許被寫 入;所以如果我們要往里面寫數據時,就需要拉低它,寫完后,再拉高。
由于該設計使用的按鍵較多,拍屁股一想,只能用矩陣鍵盤,節約 IO 口, 還顯得高大上。矩陣鍵盤最明顯的優勢就是占用的 IO口少,比如 16 個按鍵,要 接獨立按鍵就需要 16 個 IO 口,但是如果接成矩陣鍵盤就只需要 8 個 IO 口。現 在來看一下矩陣鍵盤的工作原理。在矩陣鍵盤里面,每一個按鍵的兩端各占一個
平,如果讀到 B 口為高電平,則表示該按鍵沒有按下,如果讀到 B 口為低電平, 則表示該按鍵被按下。
線圈導通,繼電器吸合。 六、LED電路
如果你想看程序,請你務必安裝 KEIL4 軟件,這樣才能看的心 安理得,切忌懶惰!!!
是一 個整體)。 每個文件的功能大致如下: Main.c --- 主文件,調用其他文件中的函數 Key.c --- 按鍵文件,處理矩陣按鍵 Lcd1602.c --- 顯示器文件,處理液晶顯示
對于 main 函數,其核心思想就是狀態機(就是把整個軟件分成多個狀態,在 不同的觸發條件下,切換到不同的狀態下運行)。
整個軟件分成三個狀態:初始化狀態,密碼生成狀態,密碼輸入狀態。 程序里面用一個變量 global_state 來存儲各種狀態,并且各個狀態的用如下數
初始化狀態 --- 0 密碼生成狀態 --- 1 密碼輸入狀態 --- 2
四列,本設計采用的是行掃描法,也就是說每次給四行當中的一行輸出低電平(其 他三行為高電平),然后再讀取四列的值,如果發現四列全部為高電平,那么就 表示沒有按鍵按下,如果有某一列為低電平,就表示有按鍵按下了。 比如我讓四行當中的第一行(P00)為0,同時讀取四列,發現第一列(P04)為 低電平,那么就說明”1”按鍵被按下。
先來普及一下 1602 的基本知識,該液晶顯示 2 行,每行顯示 16 個字符,并 且它不能顯示中文。
對于每個字符來說都有相應的地址,第一行的 16 個字符的地址是 0x80-0x8f, 第二行的 16 個字符的地址是 0xc0-0xcf。如下表所示
0x80 | 0x81 | 0x82 | 0x83 | 0x84 | 0x85 | 0x86 | 0x87 | 0x88 | 0x89 | 0x8a | 0x8b | 0x8c | 0x8d | 0x8e | 0x8f |
0xc0 | 0xc1 | 0xc2 | 0xc3 | 0xc4 | 0xc5 | 0xc6 | 0xc7 | 0xc8 | 0xc9 | 0xca | 0xcb | 0xcc | 0xcd | 0xce | 0xcf |
址(告訴它我要在哪里顯示),第二部給它輸入要顯示的字符(告訴它我要在這 里顯示什么東西)。并且要注意的是,顯示的內容是需要字符形式,比如要顯示 數字 1,就不能直接給 1,而是需要將整數 1 換算成字符的‘1’(1+0x30=’1’)才 能正確顯示。
現在我們想讓液晶在左上角顯示字母‘a’,從上表得知,左上角的地址為 0x80。 所以分如下兩步,就可以顯示
2、回到仿真主界面,點擊開始按鈕,
歡迎光臨 (http://www.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |