標(biāo)題: 基于單片機(jī)的溫控智能風(fēng)扇的問(wèn)題,小白提問(wèn)希望解答 [打印本頁(yè)]

作者: lx843040583    時(shí)間: 2017-5-7 18:55
標(biāo)題: 基于單片機(jī)的溫控智能風(fēng)扇的問(wèn)題,小白提問(wèn)希望解答
#include <reg52.h>                 //調(diào)用單片機(jī)頭文件
#define uchar unsigned char        //無(wú)符號(hào)字符型 宏定義  變量范圍0~255
#define uint  unsigned int         //無(wú)符號(hào)整型 宏定義    變量范圍0~65535
#include <intrins.h>
#define RdCommand 0x01 //定義ISP的操作命令
#define PrgCommand 0x02
#define EraseCommand 0x03  
#define Error 1
#define Ok 0
#define WaitTime 0x01 //定義CPU的等待時(shí)間
sfr ISP_DATA=0xe2;    //Flash數(shù)據(jù)寄存器地址(E2h)
sfr ISP_ADDRH=0xe3;   //Flash高字節(jié)寄存器地址(E3h)
sfr ISP_ADDRL=0xe4;   //Flash低字節(jié)寄存器地址(E4h)
sfr ISP_CMD=0xe5;     //Flash命令模式寄存器地址(E5h)
sfr ISP_TRIG=0xe6;    //Flash命令觸發(fā)寄存器地址(E6h)
sfr ISP_CONTR=0xe7;   //ISP/IAP控制寄存器地址(E2h)
sbit dula=P2^6;//U1鎖存器的鎖存端  000001111111 顯示函數(shù)11111100000
sbit wela=P2^7;//申明U2鎖存器的鎖存
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};                                          
uchar num;//定時(shí)器要用到
void ISP_IAP_enable(void);        //打開(kāi)ISP,IAP功能
void ISP_IAP_disable(void);       //關(guān)閉ISP,IAP功能
void ISPgoon(void);               //公用的觸發(fā)代碼
uchar byte_read(unsigned int byte_addr);//字節(jié)讀
void SectorErase(unsigned int sector_addr);//扇區(qū)擦除
void byte_write(unsigned int byte_addr, unsigned char original_data);//字節(jié)寫(xiě)
void display(); //000033333 顯示函數(shù)3333300000

//數(shù)碼管段選定義            
uchar code smg_du[]={0x28,0xee,0x32,0xa2,0xe4,0xa1,0x21,0xea,0x20,0xa0,
                                           0x60,0x25,0x39,0x26,0x31,0x71,0xff};         //斷碼
//數(shù)碼管位選定義
uchar code smg_we[] = {0xef,0xdf,0xbf,0x7f};
uchar dis_smg[8] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};        
uchar smg_i = 3;    //顯示數(shù)碼管的個(gè)位數(shù)
sbit dq   = P2^4;   //18b20 IO口的定義
sbit pwm = P2^3;    //蜂鳴器IO口定義


其中,
//數(shù)碼管段選定義            
uchar code smg_du[]={0x28,0xee,0x32,0xa2,0xe4,0xa1,0x21,0xea,0x20,0xa0,
                                           0x60,0x25,0x39,0x26,0x31,0x71,0xff};         //斷碼

是什么意思啊? 0X28顯示的并不是0吧? 這段話是什么意思呢?斷碼是什么?




作者: xcoter    時(shí)間: 2017-5-7 19:27
斷碼,通過(guò)控制數(shù)碼管上對(duì)應(yīng)燈管亮滅來(lái)達(dá)到顯示出需要的顯示內(nèi)容
作者: 維超    時(shí)間: 2017-5-7 19:46
1:“斷碼”應(yīng)是“段碼”的筆誤.
2:0X28就是這里的硬件條件下的“0”的編碼?磮D



作者: lx843040583    時(shí)間: 2017-5-7 21:02
維超 發(fā)表于 2017-5-7 19:46
1:“斷碼”應(yīng)是“段碼”的筆誤.
2:0X28就是這里的硬件條件下的“0”的編碼。看圖

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

那這個(gè)代碼是什么意思啊
作者: ahshmj    時(shí)間: 2017-5-7 21:22
是“段碼”。即便是錯(cuò)別字也應(yīng)該知道。
作者: lx843040583    時(shí)間: 2017-5-7 21:27
ahshmj 發(fā)表于 2017-5-7 21:22
是“段碼”。即便是錯(cuò)別字也應(yīng)該知道。

uchar code smg_du[]={0x28,0xee,0x32,0xa2,0xe4,0xa1,0x21,0xea,0x20,0xa0,
                                           0x60,0x25,0x39,0x26,0x31,0x71,0xff};  
0X28按照樓上那位的圖顯示,是如何顯示出0的呢? 求解答阿大神
作者: ahshmj    時(shí)間: 2017-5-8 08:47
有些led數(shù)碼管的管腳排列不一樣(不過(guò)很少),也有些是線路板設(shè)計(jì)時(shí),各字段對(duì)應(yīng)的IO沒(méi)按順序排(處于商業(yè)原因,故意打亂)。

你可以根據(jù)你自己的硬件,看看適應(yīng)那種編碼。如果是常見(jiàn)的LED和按順序排列的段輸出,就可以用常見(jiàn)的段編碼,不過(guò),共陽(yáng)極和共陰極也是有區(qū)別的。
作者: 維超    時(shí)間: 2017-5-8 10:27
lx843040583 發(fā)表于 2017-5-7 21:27
uchar code smg_du[]={0x28,0xee,0x32,0xa2,0xe4,0xa1,0x21,0xea,0x20,0xa0,
                          ...

作為共陽(yáng)正向數(shù)碼管,要顯示“0”,就是位碼高電平。段碼中的A,B,C,D,E, F要低電平。而原作者的段碼從高到低的排列是E,D,DP,C,G,A,F,B。相應(yīng)端置低電平就是0。連起來(lái)是“00101000”.再轉(zhuǎn)換成16進(jìn)制就是0X28了。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1