|
吾爱游客
发表于 2018-10-2 14:16
1、申请ID:D971231
2、个人邮箱:2923618610qq.com
3、原创技术文章:
**说明**
本科专业学习建筑电气课程,所以可以拿出来的跟程序有关系的作品只有自己烧录的单片机内置设计
先放上源码
#include <reg52.h>//单片机的烧录原则上使用51,然而做设计为了方便则选择功能相同的52系列
#define uchar unsigned char
#define uint unsigned int
#define N 1
uchar x;
char table1[N]={0x30};//寻址信息
uint cnt=0;
uchar sendFlag = 0;
uchar receFlag =0; //单片初始参数的设定
uint i=0,j;
uchar code dis[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //0-9的二位码
void delayms(uchar ms) //以下为延迟函数
{
uchar i;
while(ms--){
for(i = 0; i < 120; i++);
}
}
void serial_init(void) //显示操作开始
{
SCON = 0x50;
TMOD=0x20;
PCON =0x00;
TH1=0xfd;
TL1=0xfd;
TI=0;
ES=1;
TR1=1;
EA=1;
}
void send_char(unsigned char txd)
{
SBUF = txd;
while(!TI);
TI=0;
sendFlag = 1;
}
void fasong(){
uchar i;
for(i=0;i<N;i++){
send_char(table1[i]);
}
}
void display()
{
P1=0x01;
P2=dis[(table1[0]-0x30)&0x0f];
delayms(10);
P1=0x02;
P2=dis[(table1[0]-0x30)/16];
delayms(10);
}
void main()
{
serial_init();
while(1){
display();
if(receFlag==1){
fasong();
receFlag=0;
}
}
}
/***********************************************
*************************************************/
void serial() interrupt 4
{
uchar temp=0;
// if(RI==0)return;
ES=0;
if(RI)
{
RI=0; ?
temp = SBUF;
if(temp!=0x0d&&temp!=0x0a){
table1[cnt]=temp;
cnt++;
while(!RI);
if(cnt==N)
{
cnt=0;
receFlag=1;
}
}
}
ES=1;
}
自知跨度比较大,版主不知道审核也会不会过,但是本科阶段拿出来的自己获得奖项的也就这个了
说一下思路吧
计算机与外部设备或者I/O口交流通信时,第一两端设备工作电压不同,第二两端设备汇编或者译码或者识别的方式有差异
针对问题一,引入专用设备MAX232以达到平衡电压稳定保护设备
针对问题二,引入数码管和电脑虚拟串口模拟
代码的思路
首先对pc机器进行扫描寻找真实串口或虚拟串口——对pc进行川口设定——规定交互信息的译码方式和频率时间——设定交互的内容——模拟
说了这么多 自知跨度很大 不知道版主会不会给审核,若未通过,还望抱歉耽误版主阅读时间了。
谢谢 |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|