本帖最后由 wake_up_smiling 于 2018-1-20 12:51 編輯
基于51單片機的串口顯示字符串程序
目的:
通過串口調試助手像單片機發送字符串(文本模式),字符串將在數碼管上顯示,字型碼需要根據原理圖自己計算代碼如下
頭文件RS323.H:
- #include "stc15fxxxx.h" //調用stc15f系列頭文件
- #define Fosc 11059200L //下載晶振頻率
- #define serial_one_baud_rate 9600L //串口通訊波特率
- #define Timer1_Reload (65536UL -(Fosc / 4 / serial_one_baud_rate)) //用定時器1做波特率發生器,計算定時器1的重裝值
- u8 num2[4]={10,10,10,10};
- u8 num=0;
- u8 n1,n2,n3,n4,n5;
- //初始化串口
- void serial_one_init()
- {
- SCON |= 0x40; //8位數據
- P_SW1 &= ~0xc0;
- TR1 = 0; //關閉定時器
- AUXR &= ~0x01;
- TMOD &= ~(1<<6);
- TMOD &= ~0x30;
- AUXR |= (1<<6);
- TH1 = (u8)(Timer1_Reload >> 8);
- TL1 = (u8)Timer1_Reload;
- TR1 = 1; //打開定時器1
- PS = 1; //高優先級中斷
- REN = 1; //允許接收
- ES = 1; //打開串口中斷
- EA = 1; //打開全局中斷
- }
- /********************* 串口1中斷函數************************/
- void UART1_int (void) interrupt UART1_VECTOR
- {
- if(RI)
- {
- RI = 0;//清除接受標志
- num2[num]= (SBUF-48);
- num++;
- if(num==4)num=0;
- }
- }
復制代碼
c文件:
- /*4位數碼管,數碼管使用P2口作為段選端,p3.7,p3.6,p3.5,p3.4分別為4位數碼管的位選端,
- 數碼管為共陽數碼管,其中字型碼部分需要自己計算,附帶計算小工具,程序編譯成功無任何問題,有問題聯系q:1606260309 */
- #include"rs232.h"
- char led_mod[] = { 0x82,0xe7,0x2a,0x26,0x47,0x16,0x12,0xa7,0x02,0x06
- ,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x52,
- 0x9a,0x62,0x1a,0x1b,0x92,0x43,0xdb,0xe6};//0123456789*******ABCDEFGHIJ,需要自己算,中間的‘*’按個數任意填寫(訪問不到)這里以0xff補齊(共陽數碼管)
- unsigned int key=0;
- void delay()
- {
- int i=1000;
- while(i--);
- }
- void display(unsigned char m,unsigned char n)
- {
- if(m==1)
- {
- P37=0;
- P36=1;
- P35=1;
- P34=1;
- P2=led_mod[n];
- delay();
- }
- if(m==2)
- {
- P37=1;
- P36=0;
- P35=1;
- P34=1;
- P2=led_mod[n];
- delay();
- }
- if(m==3)
- {
- P37=1;
- P36=1;
- P35=0;
- P34=1;
- P2=led_mod[n];
- delay();
- }
- if(m==4)
- {
- P37=1;
- P36=1;
- P35=1;
- P34=0;
- P2=led_mod[n];
- delay();
- }
- }
- void main()
- {
- serial_one_init();//串口初始化
- while(1)
- {
- if(num==1)
- {
- num2[1]=10;
- num2[2]=10;
- num2[3]=10;
- }
- else if(num==2)
- {
- num2[2]=10;
- num2[3]=10;
- }
- else if(num==3)
- {
- num2[3]=10;
- }
- display(1,num2[0]);
- display(2,num2[1]);
- display(3,num2[2]);
- display(4,num2[3]);
- }
-
- }
復制代碼
QQ截圖20180120124327.png (14.93 KB, 下載次數: 23)
下載附件
2018-1-20 12:49 上傳
附件:
串口顯示字符串(c語言).zip
(60.44 KB, 下載次數: 36)
2018-1-20 12:42 上傳
點擊文件名下載附件
c51工程 下載積分: 黑幣 -5
|