at89c51电子秤keil的代码
时间: 2023-12-04 15:37:37 浏览: 40
根据提供的引用内容,AT89C51是一种单片机,可以用于数字电子秤的设计。同时,引用提供了AT89C52 LCD1602 ADC0832 proteus 8.13的仿真测试,包含仿真功能、Keil C51源代码。因此,可以使用Keil C51编写AT89C51的代码来实现数字电子秤的功能。
具体的代码实现需要根据具体的设计需求进行编写,可以参考引用中的《基于AT89C51的数字电子秤的设计.doc》文档,或者参考引用中的Keil C51源代码进行修改。
相关问题
at89c51双机通信keil代码
以下是基于AT89C51单片机的双机通信Keil代码示例:
发送端代码:
```c
#include <reg51.h>
#define BAUDRATE 9600
#define FOSC 11059200L
#define TIMER_1_PRESCALER 12
sbit LED = P1^0;
sbit TXD = P3^1;
void init_serial() {
TMOD &= 0x0F;
TMOD |= 0x20;
TH1 = TL1 = -(FOSC / (TIMER_1_PRESCALER * 32 * BAUDRATE));
TR1 = 1;
SCON = 0x50;
}
void send_byte(unsigned char byte) {
SBUF = byte;
while (!TI);
TI = 0;
}
void main() {
unsigned char data = 0x12;
init_serial();
while (1) {
send_byte(data);
LED = ~LED;
}
}
```
接收端代码:
```c
#include <reg51.h>
#define BAUDRATE 9600
#define FOSC 11059200L
#define TIMER_1_PRESCALER 12
sbit LED = P1^0;
sbit RXD = P3^0;
void init_serial() {
TMOD &= 0x0F;
TMOD |= 0x20;
TH1 = TL1 = -(FOSC / (TIMER_1_PRESCALER * 32 * BAUDRATE));
TR1 = 1;
SCON = 0x50;
ES = 1;
EA = 1;
}
void receive_byte() interrupt 4 {
unsigned char byte;
if (RI) {
byte = SBUF;
RI = 0;
LED = ~LED;
}
}
void main() {
init_serial();
while (1);
}
```
这段代码实现了基于AT89C51单片机的双机通信,其中一个单片机发送数字,另一个单片机接收并用LED灯进行提示。
AT89C51数字时钟keil代码
以下是AT89C51数字时钟的Keil代码示例:
```c
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
uchar hour, min, sec;
bit flag;
void delay(uint z)
{
uint x, y;
for (x = z; x > 0; x--)
for (y = 110; y > 0; y--);
}
void display()
{
uchar i;
for (i = 0; i < 8; i++)
{
P2 = 0xff;
P0 = table[hour / 10];
P2 = 0xfe;
delay(5);
P2 = 0xff;
P0 = table[hour % 10];
P2 = 0xfd;
delay(5);
P2 = 0xff;
P0 = table[min / 10];
P2 = 0xfb;
delay(5);
P2 = 0xff;
P0 = table[min % 10]; P2 = 0xf7;
delay(5);
if (flag == 0)
{
P2 = 0xff;
P0 = table[sec / 10];
P2 = 0xef;
delay(5);
P2 = 0xff;
P0 = table[sec % 10];
P2 = 0xdf;
delay(5);
}
else
{
P2 = 0xff;
P0 = 0x00;
P2 = 0xef;
delay(5);
P2 = 0xff;
P0 = 0x00;
P2 = 0xdf;
delay(5);
}
}
}
void init()
{
TMOD = 0x01;
TH0 = 0x4c;
TL0 = 0x00;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void main()
{
init();
while (1)
{
display();
}
}
void timer0() interrupt 1
{
TH0 = 0x4c;
TL0 = 0x00;
sec++;
if (sec == 60)
{
sec = 0;
min++;
if (min == 60)
{
min = 0;
hour++;
if (hour == 24)
{
hour = 0;
}
}
}
flag = ~flag;
}
```