久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

串口通信-數據發送到PC加1后接收到單片機在數碼管上顯示

作者:寒竹子   來源:本站原創   點擊數:  更新時間:2014年03月18日   【字體:

本程序的完整原理圖下載: http://www.zg4o1577.cn/f/ks51.pdf 

/**
*功能:串口通信-數據發送到PC加一后接收到單片機在數碼管上顯示
*時間:2014年3月2日10:04:07
*作者:寒竹子
*備注:波特率:19200bps
*總結:串口通信時需要發送和接收數據時可以用到串口中斷,在中斷中進行數據的發送和接收,
*    數碼管顯示時必須要放在while (1)中,只有這樣才可以正常顯示數字!
**/

#include <reg52.h>

typedef unsigned int uint;
typedef unsigned char uchar;

//數碼管段選和位選聲明
sbit WELA = P2^7;
sbit DULA = P2^6;

//數碼管編碼
uchar code table[] = {
0x3F,  //"0"
                0x06,  //"1"
                0x5B,  //"2"
                0x4F,  //"3"
                0x66,  //"4"
                0x6D,  //"5"
                0x7D,  //"6"
                0x07,  //"7"
                0x7F,  //"8"
                0x6F   //"9"
};
uint num = 254;

void UART_init();
void UART_init();
void display(uint num);

int main(void)
{
UART_init();
WELA = 1;
P0 = 0xFF;
WELA = 0;
DULA  = 1;
P0 =  0x00;
DULA = 0;

while (1)//等待串口發送和接收數據中斷
{
//在數碼管上顯示
display(num);//數碼管顯示是動態顯示的,所以必須要放在while (1)循環中,這樣才可以動態顯示!
P1 = num;
}

return 0;
}

//串口通信初始化(定時器T1初始化和串口通信方式的選擇)
void UART_init()
{
//設定T1定時器工作方式2,八位自動重裝,用于設定串口通信波特率
TMOD = 0x20;//T1: GATE C/!T 0 0 M1 M0:10 T0:0000
//設定波特率19200bps 初值 X = 2^8 - 11059200 / 19200 / 12 /32; X = 254.5 0xFE
TH1 = TL1 = 0xFE;
TR1 = 1;//打開定時器T1
SCON = 0x50;//設定串口通信方式1,八位異步傳輸波特率可設定
/*
SM0 = 0;
SM1 = 1;//方式1
REN = 1;//允許接收
*/
//因為要進行發送和接收,需要用到串口中斷
EA = 1;//開總中斷
ES = 1;//開定時器T1中斷
}

//延時xms
void delayms(uint xms)
{
uint i, j;

for (i = 0; i < xms; i++)
for (j = 0; j < 110; j++);
}

//數碼管顯示
void display(uint num)
{
//將num分解
uchar bai, shi, ge;

bai = num / 100 % 10;
shi = num / 10 % 10;
ge  = num % 10;

//先段選后位選
DULA = 1;//打開段選鎖存器
P0 = table[ge];//送入個位
DULA = 0;//關閉段選鎖存器
P0 = 0xFF;//先關閉所有數碼管的顯示,避免亂碼
WELA = 1;//打開位選鎖存器
P0 = 0xDF;//1101 1111
WELA = 0;//關閉位選鎖存器
//延時3毫秒
delayms(3);
P0 = 0x00;//消影

//十位
DULA  = 1;
P0 = table[shi];
DULA = 0;
P0 = 0xFF;
WELA = 1;
P0 = 0xEF; //1110 1111
WELA = 0;
delayms(3);
P0 = 0x00;

//百位
DULA = 1;
P0 = table[bai];
DULA = 0;
P0 = 0xFF;//關閉所有數碼管,避免段選數據的影響
WELA = 1;
P0 = 0xF7; //1111 0111
WELA = 0;
delayms(3);
P0 = 0x00;//消影
}

//串口通信中斷
void UART_sendAndReceive_int() interrupt 4//串口中斷號4
{
//判斷發送和接收的完成
if (TI)//硬件置位,發送數據完成
{
TI = 0;//TI清零,等待發送下一位數據
//允許接收數據
REN = 1;
}
//接收
if (RI)//接收完成
{
RI = 0;//RI清零,等待接收下一位數據
//取出SBUF中的數據
num = SBUF;
//num++
num++;
//禁止接收數據
REN = 0;
SBUF = num;//發送num
}
}

關閉窗口

相關文章

主站蜘蛛池模板: 欧美v片| 青青艹在线视频 | 国产成人99久久亚洲综合精品 | 国产在视频一区二区三区吞精 | 国产精品欧美精品日韩精品 | 视频在线亚洲 | 成人免费视频在线观看 | 日本视频在线播放 | 欧美精品久久久 | 亚洲国产精品一区二区三区 | 狠狠干影院 | 毛片一级片 | 国产精品一区久久久久 | 欧美午夜影院 | 国产精品久久久久久久久免费高清 | 久久精品小视频 | 免费观看一级特黄欧美大片 | 国产美女久久 | 亚洲成人一区二区三区 | 久久激情视频 | 黄色网址在线播放 | 四虎最新视频 | 色久在线 | 97国产精品视频人人做人人爱 | 黄色毛片在线看 | 国产精品美女www爽爽爽视频 | 欧美一区二区三区高清视频 | 国产免费av网 | 国产美女一区二区三区 | 久久久久久中文字幕 | 国产欧美一区二区三区在线看 | 91精品国产91久久久久游泳池 | 高清视频一区二区三区 | 国产美女视频一区 | 国产色网 | 在线观看免费高清av | 日韩高清在线 | 国产免费一区二区三区免费视频 | 亚洲免费精品 | 国产精品毛片久久久久久 | 性福视频在线观看 |