本帖最后由 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]);
- }
-
- }
复制代码
附件:
串口显示字符串(c语言).zip
(60.44 KB, 下载次数: 36)
|