久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
大佬們,怎么用atc89c51寫程序用串口助手顯示詩(shī)
[打印本頁(yè)]
作者:
fengying654
時(shí)間:
2024-12-7 18:13
標(biāo)題:
大佬們,怎么用atc89c51寫程序用串口助手顯示詩(shī)
要求是用矩陣鍵盤控制,按一個(gè)按鍵顯示一行詩(shī),16個(gè)按鍵顯示16個(gè)詩(shī)
作者:
lzw991101
時(shí)間:
2024-12-9 10:42
串口發(fā)送程序,按鍵你寫好,檢測(cè)到了就發(fā)送就行了
void Uart_SendByte(unsigned char byte)
{
SBUF = byte;
while(!UartSendFlag);
UartSendFlag = 0;
}
void Uart_SendString(unsigned char *str,unsigned char strlen)
{
unsigned char i;
for(i=0;i<strlen;i++)
{
Uart_SendByte(*str++);
}
}
作者:
飛云居士
時(shí)間:
2024-12-9 10:52
#include <reg52.h> // 包含STC89C51寄存器定義
#include <string.h>
#define LCD_PORT P2 // LCD使用的端口
#define ROWS 4 // 矩陣鍵盤行數(shù)
#define COLS 4 // 矩陣鍵盤列數(shù)
// 矩陣鍵盤行列定義
unsigned char key_map[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
// 詩(shī)句數(shù)組
const char *poems[16] = {
"床前明月光",
"疑是地上霜",
"舉頭望明月",
"低頭思故鄉(xiāng)",
"無邊落木蕭蕭下",
"不盡長(zhǎng)江滾滾來",
"浮天水送",
"白云愁思隨意飛",
"月落烏啼霜滿天",
"江楓漁火對(duì)愁眠",
"姑蘇煙雨朦朧夜",
"白墻紅瓦映長(zhǎng)空",
"子規(guī)夜半猶啼血",
"聽取蛙聲一片",
"霞光萬道舞翩躚",
"幾番風(fēng)雨幾度秋"
};
// 函數(shù)聲明
void delay(unsigned int ms);
void lcd_command(unsigned char cmd);
void lcd_data(unsigned char data);
void lcd_init();
void lcd_print(const char *str);
unsigned char scan_key();
void main() {
lcd_init(); // 初始化LCD
while (1) {
unsigned char key = scan_key(); // 掃描按鍵
if (key != 0xFF) { // 檢測(cè)到按鍵
if (key >= 0 && key < 16) {
lcd_print(poems[key]); // 顯示對(duì)應(yīng)的詩(shī)句
}
delay(200); // 防抖
}
}
}
// 延時(shí)函數(shù)
void delay(unsigned int ms) {
unsigned int i, j;
for (i = 0; i < ms; i++)
for (j = 0; j < 120; j++);
}
// LCD命令
void lcd_command(unsigned char cmd) {
LCD_PORT = cmd;
P0 &= ~0x04; // 選擇指令寄存器
P0 |= 0x04; // 發(fā)送命令
delay(1);
}
// LCD數(shù)據(jù)
void lcd_data(unsigned char data) {
LCD_PORT = data;
P0 |= 0x04; // 選擇數(shù)據(jù)寄存器
P0 |= 0x04; // 發(fā)送數(shù)據(jù)
delay(1);
}
// LCD初始化
void lcd_init() {
lcd_command(0x38); // 8位數(shù)據(jù),2行,5x7點(diǎn)陣
lcd_command(0x0C); // 顯示開,光標(biāo)關(guān)
lcd_command(0x06); // 輸入模式設(shè)置
lcd_command(0x01); // 清屏
delay(2);
}
// 輸出字符串到LCD
void lcd_print(const char *str) {
while (*str) {
lcd_data(*str++);
}
}
// 矩陣鍵盤掃描
unsigned char scan_key() {
unsigned char row, col;
for (row = 0; row < ROWS; row++) {
P1 = ~(0x01 << row); // 設(shè)置一行為低電平
for (col = 0; col < COLS; col++) {
if (!(P1 & (0x01 << (col + 4)))) { // 檢查列
return row * COLS + col; // 返回按鍵索引
}
}
}
return 0xFF; // 沒有按鍵被按下
}
代碼說明
LCD配置:該代碼使用 P2 口控制LCD1602顯示。相應(yīng)的LCD初始化、命令發(fā)送和數(shù)據(jù)發(fā)送函數(shù)均已實(shí)現(xiàn)。
矩陣鍵盤:通過 scan_key 函數(shù)掃描4x4矩陣鍵盤,返回相應(yīng)按鍵的索引。
詩(shī)句數(shù)組:定義了16個(gè)詩(shī)句,按鍵所對(duì)應(yīng)的索引與詩(shī)句數(shù)組一致。
按鍵處理:當(dāng)檢測(cè)到按鍵按下時(shí),顯示對(duì)應(yīng)的詩(shī)句。
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
亚洲成人自拍
|
国产中文字幕亚洲
|
国产精品美女久久久
|
欧洲成人免费视频
|
wwwxxx国产
|
av黄色在线
|
91精品国产色综合久久
|
亚洲国产成人精品在线
|
中文字幕日韩一区
|
亚洲一区二区三区视频在线
|
99热.com
|
在线视频一区二区
|
久久久久九九九女人毛片
|
91在线观看
|
国产精品观看
|
欧美激情精品久久久久久变态
|
成人欧美一区二区三区视频xxx
|
天堂在线91
|
蜜桃精品视频在线
|
毛片网站在线观看
|
亚洲第一天堂无码专区
|
国产高清视频在线观看播放
|
久久99精品久久久
|
欧美精品二区
|
亚洲精品乱码8久久久久久日本
|
欧美日韩国产一区二区
|
成人精品一区亚洲午夜久久久
|
日韩欧美一级片
|
亚洲性视频
|
91精品国产一区二区三区
|
午夜在线免费观看视频
|
国产色网站
|
中文字幕亚洲视频
|
国产农村妇女毛片精品久久麻豆
|
精品久久久久久久久久久下田
|
91久久久久
|
女人牲交视频一级毛片
|
性色的免费视频
|
国产一区二区三区在线看
|
日韩精品成人在线
|
在线视频一区二区三区
|