久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
將串口回復的字符展示于單片機的數碼管上
[打印本頁]
作者:
SSY0226
時間:
2025-5-19 16:29
標題:
將串口回復的字符展示于單片機的數碼管上
一、實驗要求
1. 通過PC電腦與開發板的串行接口連接,實現雙向串行通訊,設定波特率為4800。
2. 在PC端輸入“0”-“9”和“A”-“F”中的任何字符,51處理器將此字符開始的后續6個字符顯示在單片機的數碼顯示管上。
3. 當輸入字符達到字母表末尾時,遵循以下跳轉規則:大寫字母'F'后跳轉至數字'0',數字'9'后跳轉至大寫字母'A'。
4. 必須考慮輸入數據的合法性,對于不在處理范圍內的字符,數碼管應顯示“ERROR_ _ _”。
5.任意設置一個獨立按鍵為清除鍵,用于一鍵清除顯示管內容。
代碼:
#include <reg51.h>
#include <stdio.h>
unsigned char disp[8]={0,0,0,0,0,0,0,0};
unsigned char receive_data,uart_flag=0;
void process(unsigned char dataa);
void display(void);
void delay(unsigned int i);
void Usart() interrupt 4 //串口中斷子程序
{if(RI==1){
receive_data=SBUF;
RI=0;
uart_flag=1;
}}
void cleardisplay(){ //一鍵清除顯示管內容
unsigned char i;
for(i=0;i<8;i++)
{disp[i]=0x00;}
}
void main(void)
{
unsigned char seet=1; //按鍵狀態記錄
TMOD=0X20; //設置波特率為4800
TH1 = 0xF3;
TL1 = 0xF3;
SCON=0X50;
PCON |= 0x80;
EA=1;
ES=1;
TR1=1;
while(1){if(uart_flag)
{process(receive_data);
uart_flag=0;}
if((P3 & 0x04) == 0) //判斷清除鍵是否被按下
{if(seet==1)
{seet=0;
cleardisplay(); }}
else seet=1;
display();}
}
void process(unsigned char dataa) //數據處理子程序
{
unsigned char i,temp;
unsigned char vaild_data;
unsigned char
smgduan[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
vaild_data = dataa;
temp = vaild_data;
if(vaild_data>=0x30&&vaild_data<=0x39) //判斷接收到的數據是否在0-9
{for(i=0;i<6;i++)
{if(temp>=0x39)
{temp=vaild_data+8+i;
disp[i] = smgduan[temp-0x41 + 10];} //[i]放到顯示緩存
else{ temp=vaild_data+1+i;
disp[i]=smgduan[temp-0x30 ];}}
disp[6]=0x00; //數碼管最后兩位熄滅
disp[7]=0x00;
}else if(vaild_data>=0x41&&vaild_data<=0x46) //判斷數據是否在A-F
{for(i=0;i<6;i++)
{if(temp>=0x46||temp<=0x39)
{ temp=vaild_data-22+i;
disp[i]=smgduan[temp-0x30];}
else {temp=vaild_data+i+1;
disp[i]=smgduan[temp-0x41+10];}}
disp[6]=0x00;
disp[7]=0x00;}
else{disp[0] = 0x79; //無效數據給顯示賦值為ERROR___
disp[1] = 0x77;
disp[2] = 0x77;
disp[3] = 0x5C;
disp[4] = 0x77;
disp[5] = 0x08;
disp[6] = 0x08;
disp[7] = 0x08;}
}
void display()
{
static unsigned char i = 0; //數碼管顯示函數
for(i=0;i<8;i++)
{
switch(i)
{
case(0):P2 = 0x00;break; //選中最右邊數碼管
case(1):P2 = 0x04;break; //依次從右到左點亮數碼管
case(2):P2 = 0x08;break;
case(3):P2 = 0x0C;break;
case(4):P2 = 0x10;break;
case(5):P2 = 0x14;break;
case(6):P2 = 0x18;break;
case(7):P2 = 0x1C;break;
}
P0=disp[7-i]; //將顯示緩存數據給P0口
delay(200); //延時點亮時長
P0=0x00;
}
}
void delay(unsigned int i) //延時函數
{while(i--);}
復制代碼
作者:
keemee
時間:
2025-5-20 08:16
基本看懂了,馬上試試,謝謝了
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
黄色日皮视频
|
欧美激情视频网站
|
中文字幕观看
|
久久久久久久综合
|
国产精品久久久久久久久久久久久久久
|
国产最新视频
|
eeuss一区二区三区
|
91视频精选
|
黄色激情视频在线观看
|
中文字幕一区二区三区在线观看
|
亚洲亚洲人成综合网络
|
精品免费视频
|
国产精品自拍一区
|
成人国产综合
|
成人综合网站
|
国产不卡在线视频
|
欧美日韩黄
|
亚洲一区久久
|
成人黄色在线
|
日韩一区二区在线播放
|
能看毛片的网站
|
a级片免费观看
|
国产成人97精品免费看片
|
亚洲午夜视频在线观看
|
免费毛片视频
|
日韩在线精品视频
|
av网站在线看
|
成人免费毛片嘿嘿连载视频
|
久久久久久久久久国产精品
|
日韩欧美久久久
|
中国a一片一级一片
|
亚洲区视频
|
国产精品一区二区三区在线
|
国产黄a三级三级看三级
|
欧美又粗又长
|
中文字幕日本
|
国产一级片免费
|
久久免费视频网站
|
在线观看一区
|
18在线观看免费入口
|
成人激情视频
|