📄 t.txt
字号:
//硬件实验二十三 温度传感器试验 H23.C
#define LEDLen 6
#define ADPort 0x9000 /* AD采样输入片选 */
#define IN_KEY 0x8001
#define OUTBIT 0x8002
#define OUTSEG 0x8004
extern unsigned char IN(unsigned int port);
extern void OUT(unsigned int port, unsigned char v);
unsigned char LEDBuf[LEDLen]; /* 显示缓冲 */
unsigned char const LEDMAP[] = { /* 八段管显示码 */
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71
void Delay(unsigned char CNT)
{
unsigned char i;
while (CNT-- !=0)
for (i=80; i !=0; i--);
}
void DisplayLED()
{
unsigned char i, j, k;
unsigned char Pos;
unsigned char LED;
Pos = 0x20; /* 从左边开始显示 */
for (i = 0; i < LEDLen; i++) {
OUT(OUTBIT,0); /* 关所有八段管 */
LED = LEDBuf[i];
OUT(OUTSEG,LED);
OUT(OUTBIT, Pos); /* 显示一位八段管 */
Delay(1);
Pos >>= 1; /* 显示下一位 */
}
OUT(OUTBIT,0); /* 关所有八段管 */
}
/* ==================================*/
#define LowTemp (-99) /* A/D 0 */
#define HighTemp 99 /* A/D 255*/
signed char CurTemp;
void DisplayResult()
{
signed char T;
T = CurTemp;
if (T < 0) {
LEDBuf[0] = 0x40;
T = - T;
} else LEDBuf[0] = 0;
LEDBuf[1] = LEDMAP[T / 10];
LEDBuf[2] = LEDMAP[T % 10];
LEDBuf[3] = 0;
}
unsigned char ReadAD()
{
unsigned int i;
OUT(ADPort, 0); /* start A/D convert */
for (i=0; i<10; i++) ; /* delay 100us */
return (0xff - IN(ADPort));
}
void ReadTemp()
{
unsigned char i;
signed int Temp;
Temp = 0;
for (i=0; i<16; i++) {
Temp += ReadAD();
}
CurTemp = (Temp/16) * (HighTemp-LowTemp) / 256 + LowTemp;
}
void main()
{
unsigned char dtimer;
while (1) {
for(dtimer=10;dtimer>0;dtimer--){
DisplayResult();
DisplayLED();
};
ReadTemp();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -