切换到宽版
  • 6655阅读
  • 41回复

小白不会编程,求大师给代写一段程序(最终源码)(结贴) [复制链接]

上一主题 下一主题
离线widkzdwitm
 

发帖
78
M币
10
专家
6
粉丝
39
只看楼主 倒序阅读 我要置顶 楼主  发表于: 2017-12-30
此悬赏帖已过期
最佳答案:100 M币
求人不如求己,自己的思路还是自己明白。
以前只会现成HEX烧录的小白,通过几天的自学,明白了单片机的基本原理,
又研究Proteus仿真,死了不少脑细胞。

自学几天,几个程序修剪拼凑,修修改改,终于完美!
原来也不是那么难!








#include <STC12C5A.H>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit DAT = P1^2;
sbit ST  = P1^1;
sbit SH  = P1^0;
sbit D1  = P1^3;
uchar SEG[] = {0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF};//由于加了ULN2803又研究了一下段码原来是10001001改成11110110
uchar  buf[40];
bit rev_start,rev_stop;
uchar shi,fen,miao;
uint ms=0;
void SEND595(unsigned char SED)
{
    unsigned char _dat=SED, a;
    for(a=0; a<8; a++)
     {
        if(_dat & 0x80)
            DAT = 1;
        else
            DAT = 0;
        _dat <<= 1;
        SH = 0;      
        SH = 1;
     }
}

void UTC_time()
{
    if((rev_stop==1)&&(buf[5]=='C'))
    {
        ES=0;
        shi=(buf[7]-0x30)*10+(buf[8]-0x30);
        fen=(buf[9]-0x30)*10+(buf[10]-0x30);
        miao=(buf[11]-0x30)*10+(buf[12]-0x30);//保留秒,虽然不显示,后面用的

        shi=shi+8;
        if(shi>=24)
        {
            shi%=24;//这里想了很久才想明白什么意思
        }
        TR0=1;
        ES=1;
    }        
}
void init()
{    
    PCON&=0x7F;            
    SCON=0x50;        
    AUXR&=0xBF;        
    AUXR&=0xFE;        
    TMOD=0x21;        
    TL1=0xfa;        
    TH1=0xfa;        
    ET1=0;            
    TR1=1;            

    TL0=0x00;        
    TH0=0x4c;        
    ET0=1;            
    TR0=0;            
    ES=1;            
    EA=1;            
}
void main()
{    
    init();
    while(1)
    {
        UTC_time();
        if(miao==00)//这里用的秒,秒是00时刷新一次,也就是一分钟刷新一次
        {
            SEND595(SEG[fen%10]);
                        SEND595(SEG[fen/10]);
                        SEND595(SEG[shi%10]);
                        SEND595(SEG[shi/10]);
                        ST = 0;
                        ST = 1;
        }                                            
    }
}
void display() interrupt 1
{    
    TL0=0x00;//20MS    
    TH0=0x70;
    ms++;
    if(ms>=25)
    {
        ms=0;
                D1=~D1;//看例程发现=~很好玩,用到了这里
    }            
}
void OUT_UTCtime() interrupt 4
{
    uchar ch,num;
    ES = 0;

    if (RI)              
    {
        ch = SBUF;
        if (ch == '$')  
        {
            rev_start = 1;
            rev_stop  = 0;      
        }
        if (rev_start == 1)      
        {
            buf[num++] = ch;  
            if (ch == '\n')  
            {
                buf[num] = '\n';
                rev_start = 0;
                rev_stop  = 1;  
                num = 0;
            }
        }
    }
    RI = 0;  
    ES = 1;
}
会的大神不要笑话,毕竟是初学小白
[ 此帖被widkzdwitm在2018-01-14 23:15重新编辑 ]
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共1条打赏M币+5
离线yumeitao

发帖
13827
M币
5720
专家
3
粉丝
79
只看该作者 1楼 发表于: 2017-12-30
不会帮顶.字数

发帖
10
M币
-460
专家
0
粉丝
3
只看该作者 2楼 发表于: 2017-12-30
帮顶,我是小白
离线lincy

发帖
1883
M币
1895
专家
1
粉丝
10
只看该作者 3楼 发表于: 2017-12-30
不会纯属帮顶
离线klop

发帖
11881
M币
2381
专家
2
粉丝
56
只看该作者 4楼 发表于: 2017-12-30
这也可以?
不会吧?
离线wikiqian

发帖
2961
M币
742
专家
-1
粉丝
49
只看该作者 5楼 发表于: 2017-12-30
难道是学校的课程设计?
离线wsss1234

发帖
16558
M币
630
专家
5
粉丝
50
只看该作者 6楼 发表于: 2017-12-30
1楼,2楼不要灌水,小心版主扣分!

楼主,看样子你是学生吧?做课程设计用的?这个电路设计和编程对一个学完单片机课程的学生应该不算太难吧?建议你最好还是好好看看书,查查资料,相信你自己能做出来。
离线phillipfyh

发帖
336
M币
1287
专家
0
粉丝
6
只看该作者 7楼 发表于: 2017-12-30
这个也是不会 ,帮顶吧
离线wu314296988

发帖
695
M币
2466
专家
1
粉丝
10
只看该作者 8楼 发表于: 2017-12-30
硬件图也没有,这个也简单,网上应该有程序,自己改改也就可以用了。
离线维民所止

发帖
1106
M币
454
专家
2
粉丝
2
只看该作者 9楼 发表于: 2017-12-30
这个不难,还是看半天书自己做吧。
快速回复
限80 字节
温馨提示:所有技术区严禁灌水,“沙发”“顶”字样;禁止广告贴;以免被删除
 
上一个 下一个