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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5388|回復: 7
打印 上一主題 下一主題
收起左側

求教!寫個單片機編程,比較5個數組大小,依次排序出大小,編程如下:

[復制鏈接]
跳轉到指定樓層
樓主
ID:198318 發表于 2017-5-9 05:56 來自手機 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
30黑幣
#include<reg51.h>                                                     unsigned char x,y,z,k,h;                                              int main()                                                                      {                                                                                         while(1)                                                                         {                                                                                    x=10,y=9,z=8,k=7,h=6;                                               下面該怎么用for和if依次比較排列他們的大小?求幫忙      

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:193350 發表于 2017-5-9 11:27 | 只看該作者
用冒泡法排序就好了
回復

使用道具 舉報

板凳
ID:111634 發表于 2017-5-9 11:30 | 只看該作者
給你介紹一本書,《單片機實驗實訓100例——基于Keil C和Proteus》 ISBN 978-7-5124-1603-1,北航社出版。內有:實例4  a、b、c從小到大排序;實例5  數組a[8] 從大到小(從小到大)排序;實例13  a、b、c排序打印輸出;實例14  16個數據從大到小排列輸出
回復

使用道具 舉報

地板
ID:104825 發表于 2017-5-9 14:43 | 只看該作者
#include<reg51.h>
void paixu(unsigned char *p, unsigned char len);
void main()
{
        unsigned char tab[5] = {1,2,3,4,5};
        unsigned char i = 0;
        while(1)
        {
                paixu(tab,5);//tab內容變為5,4,3,2,1
        }
}

void paixu(unsigned char *p,unsigned char len)
{
        unsigned char i, j,buf;
        for(i=0; i<len-1; i++)
        {       
                for(j=0; j<len-i-1; j++)
                {
                        if(p[j]<p[j+1])
                        {
                                buf = p[j];
                                p[j] = p[j+1];
                                p[j+1] = buf;
                        }
                }
        }
       
       
}
回復

使用道具 舉報

5#
ID:104825 發表于 2017-5-9 14:44 | 只看該作者
#include<reg51.h>
void paixu(unsigned char *p, unsigned char len);
void main()
{
        unsigned char tab[5] = {1,2,3,4,5};
        unsigned char i = 0;
        while(1)
        {
                paixu(tab,5);
        }
}

void paixu(unsigned char *p,unsigned char len)
{
        unsigned char i, j,buf;
        for(i=0; i<len-1; i++)
        {       
                for(j=0; j<len-i-1; j++)
                {
                        if(p[j]<p[j+1])
                        {
                                buf = p[j];
                                p[j] = p[j+1];
                                p[j+1] = buf;
                        }
                }
        }
       
       
}
回復

使用道具 舉報

6#
ID:146949 發表于 2017-5-9 16:22 | 只看該作者

#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
#define SPI_S0          0x04
#define SPI_S1          0x08
#define SPIF            0x80                    //SPSTAT.7
#define WCOL            0x40                    //SPSTAT.6
#define SSIG            0x80                    //SPCTL.7
#define SPEN            0x40                    //SPCTL.6
#define DORD            0x20                    //SPCTL.5
#define MSTR            0x10                    //SPCTL.4
sfr P4   = 0xC0;   //1111,1111 端口4
sfr P5   = 0xC8;   //xxxx,1111 端口5
sfr P6   = 0xE8;   //0000,0000 端口6
sfr P7   = 0xF8;   //0000,0000 端口7
sfr P0M1 = 0x93;
sfr P0M0 = 0x94;
sfr P1M1 = 0x91;
sfr P1M0 = 0x92;
sfr P2M1 = 0x95;
sfr P2M0 = 0x96;
sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;
sfr P4M1 = 0xb3;
sfr P4M0 = 0xb4;
sfr P5M1 = 0xC9;
sfr P5M0 = 0xCA;
sfr P6M1 = 0xCB;
sfr P6M0 = 0xCC;
sfr P7M1 = 0xE1;
sfr P7M0 = 0xE2;
sfr   IE2      = 0xaf;               //中斷使能寄存器2
sfr   AUXR     = 0x8e;               //輔助寄存器
sfr   T2H      = 0xD6;               //定時器2高8位
sfr   T2L      = 0xD7;               //定時器2低8位
sfr P_SW1           =   0xa2;                   //外設功能切換寄存器1
sfr SPSTAT          =   0xcd;                   //SPI狀態寄存器
sfr SPCTL           =   0xce;                   //SPI控制寄存器
sfr SPDAT           =   0xcf;                   //SPI數據寄存器
sbit SS             =   P2^4;    //LCD5110 片選 接51的SPI_SS (不可隨意改動)
sbit    res = P0^7;  //LCD5110 復位,0復位   (可隨意改動)
sbit    dc  = P0^5;  //LCD5110 1寫數據,0寫指令  (可隨意改動)
//sbit   sdin = P2^3;  //LCD5110 數據 接51的SPI_MOSI(不可隨意改動)
//sbit   sclk = P2^1;  //LCD5110 時鐘 接51的SPI_CLK  (不可隨意改動)
const unsigned char code F6x8[][6] =
{
    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },   // sp 0
    { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 },   // ! 1
    { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 },   // " 2
    { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 },   // # 3
    { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 },   // $ 4
    { 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 },   // % 5
    { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 },   // & 6
    { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 },   // ' 7
    { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 },   // ( 8
    { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 },   // ) 9
    { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 },   // * 10
    { 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 },   // + 11
    { 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 },   // , 12
    { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 },   // - 13
    { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 },   // . 14
    { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 },   // / 15
    { 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E },   // 0 16
    { 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 },   // 1 17
    { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 },   // 2 18
    { 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 },   // 3 19
    { 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 },   // 4 20
    { 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 },   // 5 21
    { 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 },   // 6 22
    { 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 },   // 7 23
    { 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 },   // 8 24
    { 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E },   // 9 25
    { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 },   // : 26
    { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 },   // ; 27
    { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 },   // < 28
    { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 },   // = 29
    { 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 },   // > 30
    { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 },   // ? 31
    { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E },   // @ 32
    { 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C },   // A 33
    { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 },   // B 34
    { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 },   // C 35
    { 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C },   // D 36
    { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 },   // E 37
    { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 },   // F 38
    { 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A },   // G 39
    { 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F },   // H 40
    { 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 },   // I 41
    { 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 },   // J 42
    { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 },   // K 43
    { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 },   // L 44
    { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F },   // M 45
    { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F },   // N 46
    { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E },   // O 47
    { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 },   // P 48
    { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E },   // Q 49
    { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 },   // R 50
    { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 },   // S 51
    { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 },   // T 52
    { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F },   // U 53
    { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F },   // V 54
    { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F },   // W 55
    { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 },   // X 56
    { 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 },   // Y 57
    { 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 },   // Z 58
    { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 },   // [ 59
    { 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 },   // 55 60
    { 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 },   // ] 61
    { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 },   // ^ 62
    { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 },   // _ 63
    { 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 },   // ' 64
    { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 },   // a 65
    { 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 },   // b 66
    { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 },   // c 67
    { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F },   // d 68
    { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 },   // e 69
    { 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 },   // f 70
    { 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C },   // g 71
    { 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 },   // h 72
    { 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 },   // i 73
    { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 },   // j 74
    { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 },   // k 75
    { 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 },   // l 76
    { 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 },   // m 77
    { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 },   // n 78
    { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 },   // o 79
    { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 },   // p 80
    { 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC },   // q 81
    { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 },   // r 82
    { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 },   // s 83
    { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 },   // t 84
    { 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C },   // u 85
    { 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C },   // v 86
    { 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C },   // w 87
    { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 },   // x 88
    { 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C },   // y 89
    { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 },   // z 90
    { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 }    // = 91
};
void Delayms(uint ms) [url=]//1mS@12.000MHz[/url]
{  unsigned char i, j;
   while(ms--){
        i = 12;
  j = 169;
  do
  {
   while (--j);
  } while (--i);}
}
void InitSpi()
{
    ACC = P_SW1;                                //可用于測試U7,U7使用的是第二組SPI控制Flash
    ACC &= ~(SPI_S0 | SPI_S1);                  //SPI_S0=1 SPI_S1=0
    ACC |= SPI_S0;                              //(P2.4/SS_2, P2.3/MOSI_2, P2.2/MISO_2, P2.1/SCLK_2)
    P_SW1 = ACC;  
    SPSTAT = SPIF | WCOL;                       //清除SPI狀態
    SS = 1;
    SPCTL = SSIG | SPEN | MSTR;                 //設置SPI為主模式
}
void LCD_write_byte(unsigned char dt, unsigned char command)//LCD5110寫入數據
{
    SS = 0;
dc=command;     // 0是寫命令,1是寫數據
SPDAT = dt;                                //觸發SPI發送
    while (!(SPSTAT & SPIF));                   //等待SPI數據傳輸完成
    SPSTAT = SPIF | WCOL;                       //清除SPI狀態
    SS = 1;
}
void LCD_clear(void) //5110LCD清屏
{
unsigned int i;
LCD_write_byte(0x0c, 0);   
LCD_write_byte(0x80, 0);   
for (i=0; i<504; i++)
LCD_write_byte(0, 1);   
}
void LCD_set_XY(unsigned char X, unsigned char Y)  //x 左右共0~83列可移,Y由上至下共0~5行可移
{
LCD_write_byte(0x40 | Y, 0);  // column  Y+=64
LCD_write_byte(0x80 | X, 0);        // row   X+=128
}
void LCD_init(void) //5110LCD初始化LCD_init
{            
  res=0; // 產生一個讓LCD復位的低電平脈沖
  Delayms(10);
  res=1;   
  SS = 0;  // 關閉LCD
  Delayms(10);
  SS = 1;// 使能LCD
  Delayms(10);
  LCD_write_byte(0x21, 0); // 使用擴展命令設置LCD模式
  LCD_write_byte(190, 0); // 設置偏置電壓
  LCD_write_byte(0x06, 0); // 溫度校正
  LCD_write_byte(0x13, 0); // 1:48
  LCD_write_byte(0x20, 0); // 使用基本命令
  LCD_clear();         // 清屏
  LCD_write_byte(0x0C, 0); // 設定顯示模式,正常顯示      
  SS = 0;  // 關閉LCD
}
void LCD_P6x8Str(unsigned char x,unsigned char y,unsigned char ch)
{
  unsigned char i;      
    LCD_set_XY(x,y);   
   for(i=0;i<6;i++){
   LCD_write_byte(F6x8[ch],1);}
}
void LCD_P6x8Str3wita(unsigned char x,unsigned char y,unsigned char dat)
{
LCD_P6x8Str(x,y,16+dat/100%10);
LCD_P6x8Str(x+6,y,16+dat/10%10);
LCD_P6x8Str(x+12,y,16+dat%10);
}
void main(void)
{
    unsigned char x,y,z,k,h;
unsigned char max[5],s1,s2,s3;
    P0M0 = 0x00;
    P0M1 = 0x00;
    P1M0 = 0x00;
    P1M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;
    P3M0 = 0x00;
    P3M1 = 0x00;
    P4M0 = 0x00;
    P4M1 = 0x00;
    P5M0 = 0x00;
    P5M1 = 0x00;
    P6M0 = 0x00;
    P6M1 = 0x00;
    P7M0 = 0x00;
    P7M1 = 0x00;
InitSpi();
    LCD_init();
//x=6,y=7,z=8,k=9,h=10;
//x=10,y=6,z=7,k=8,h=9;
//x=9,y=10,z=6,k=7,h=8;
//x=8,y=9,z=10,k=6,h=7;
//x=7,y=8,z=9,k=10,h=6;
//x=10,y=6,z=9,k=8,h=7;
//x=8,y=10,z=8,k=7,h=6;
x=7,y=10,z=6,k=9,h=8;
max[0]=x;
max[1]=y;
max[2]=z;
max[3]=k;
max[4]=h;
for(s2=0;s2<5;s2++)
{
if(x==max[s2]){LCD_P6x8Str(0,s2,88);LCD_P6x8Str3wita(12,s2,x);}else
if(y==max[s2]){LCD_P6x8Str(0,s2,89);LCD_P6x8Str3wita(12,s2,y);}else
if(z==max[s2]){LCD_P6x8Str(0,s2,90);LCD_P6x8Str3wita(12,s2,z);}else
if(k==max[s2]){LCD_P6x8Str(0,s2,75);LCD_P6x8Str3wita(12,s2,k);}else
if(h==max[s2]){LCD_P6x8Str(0,s2,72);LCD_P6x8Str3wita(12,s2,h);}
}
for(s1=0;s1<4;s1++)
{
for(s2=0;s2<4-s1;s2++)
{
   if(max[s2]<max[s2+1])
     {
   s3=max[s2];
   max[s2]=max[s2+1];
   max[s2+1]=s3;
  }
}
}
for(s2=0;s2<5;s2++)
{
if(x==max[s2]){LCD_P6x8Str(48,s2,88);LCD_P6x8Str3wita(60,s2,x);}else
if(y==max[s2]){LCD_P6x8Str(48,s2,89);LCD_P6x8Str3wita(60,s2,y);}else
if(z==max[s2]){LCD_P6x8Str(48,s2,90);LCD_P6x8Str3wita(60,s2,z);}else
if(k==max[s2]){LCD_P6x8Str(48,s2,75);LCD_P6x8Str3wita(60,s2,k);}else
if(h==max[s2]){LCD_P6x8Str(48,s2,72);LCD_P6x8Str3wita(60,s2,h);}
}
while(1);
}

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品一区二区av | 高清人人天天夜夜曰狠狠狠狠 | 日韩精品一区二区三区视频播放 | 9191av| 国产精品久久久久久久7电影 | 本道综合精品 | 成人免费视频网站 | 精品中文在线 | 精品国产一区二区三区久久 | 免费1区2区3区 | 久操国产 | 男女羞羞视频免费 | 亚洲国产精品久久久久 | 国产超碰人人爽人人做人人爱 | 国产精品一区二 | heyzo在线| 国产精品爱久久久久久久 | 国产精品久久久久久238 | 影音先锋久久 | 超碰免费在线 | 黄在线免费观看 | 成人在线电影在线观看 | 天天操操 | 激情的网站 | 国产精品自产拍在线观看蜜 | 国产精品美女久久久久久免费 | 国产最好的av国产大片 | 精品熟人一区二区三区四区 | 久久精品一区二 | 亚洲第一网站 | 91中文视频| 中文字幕日本一区二区 | 成人精品一区二区三区 | 日韩av在线中文字幕 | 国产超碰人人爽人人做人人爱 | 男女av| 欧美在线一区二区三区 | 国产精品久久久久久238 | 国产精品久久国产精品99 gif | 天天久久 | 四虎影视在线 |