Trả lời mọi câu hỏi liên quan 8051

Kiên Xơ Mít

Học sinh phổ thông
Code còn nhiều lỗi khác nữa
cảm ơn a đã giải thích các lỗi cho em :) nhưng những lỗi đó chắc do e copy lỗi nên ra còn ko thì phần mềm cũng có thể báo lỗi rõ ràng rồi, còn cái lỗi chính error near "void" thì e chịu cứng, ko hiểu gì cả, mong a giúp đỡ :(
 
cảm ơn a đã giải thích các lỗi cho em :) nhưng những lỗi đó chắc do e copy lỗi nên ra còn ko thì phần mềm cũng có thể báo lỗi rõ ràng rồi, còn cái lỗi chính error near "void" thì e chịu cứng, ko hiểu gì cả, mong a giúp đỡ :(
Bạn sửa ntn nhé:
#include <REGX51.H>
int n=0;


void delay(int time)
{int i;
for(i=0;i<time;i++)
{;}
}

void solanbam()
{
if (P2_0==0) //de nut bam o cong p2.0//
{delay(100);
while(P2_0==0)
{;}
n++;
if(n==7)
{n=0;} }
}

void hienthi(int solan)
{ switch(solan)
{ case 0: {break;}
case 1: P1_0=1; break;
case 2: P1_1=1; break;
case 3: P1_2=1; break;
case 4: P1_3=1; break;
case 5: P1_4=1; break;
case 6: P1_5=1; break;
}
}

void main()
{

while(1)
{solanbam();
hienthi(n); }
}
 

trantuyen123

Học sinh phổ thông
Thân chào các bạn!
Đã lâu không tham gia diễn đàn. Hiện tại BQT sẽ thanh lọc các thành viên ảo không có bài viết.
Do đó, mình cũng tranh thủ viết 1 bài.
Các bạn có các thắc mắc gì liên quan xoay quanh về MCU 8051- ASM- C thì cứ đặt câu hỏi.
Rất vui xin được giải đáp các thắc, các khó khăn của bạn trong quá trình:
1 - Lâp trình Code
2 - Thiết kế phần cứng sơ đồ mạch cho 8051.
Sẽ cố gắng tối đa để giúp các bạn.
Vì ai cũng có những câu hỏi, không ít thì nhiều, đây là nơi sẻ giúp bạn điều đó, từ câu hỏi đơn giản nhất.
Hên quá!.. e đang bí mấy tuần nay không biết hỏi ai... Hiện em đang làm bài tập lớn đo nhiệt độ LM35 sử dụng ADC 0804 và Vi điều khiển 8051 và ngôn ngữ lập trình Assembly.. hiển thị lên màn hình LCD_1602..em sử dụng kiểu truyền dữ liệu cho LCD là 4 bit.. hiện em đang vướng ở chỗ viết chữ có dấu hiển thị lên LCD.. và cái thứ 2 là em muốn đo được nhiệt độ từ -55*C tới 150*C.. mà hiện tại chỉ đo được từ 0-150*C thui.. bởi vì Vout của LM 35 khi đo nhiệt độ từ 0-> (-55)*C.. nó trả về mức điện áp âm. A chỉ em với.. em cám ơn nhiều hehe!!!
 
bbb.jpg

#include <REGX52.H>
#include <INTRINS.H>

#define lcd_data P2
sbit lcd_rs = P2^0;
sbit lcd_en = P2^1;
// Khai bao ky tu
unsigned char code data1[] = {31, 17, 21, 21, 21, 21, 17, 31 };
unsigned char code data2[] = {31, 27, 19, 27, 27, 27, 17, 31 };
unsigned char code data3[] = {31, 17, 29, 29, 17, 23, 17, 31 };
unsigned char code data4[] = {31, 17, 29, 17, 29, 29, 17, 31 };
unsigned char code data5[] = {31, 21, 21, 21, 17, 29, 29, 31 };
unsigned char code data6[] = {31, 17, 23, 17, 29, 29, 17, 31 };
unsigned char code data7[] = {31, 17, 23, 17, 21, 21, 17, 31 };
unsigned char code data8[] = {31, 17, 29, 29, 29, 29, 29, 31 };

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
void delay(unsigned int t){
unsigned int i;
for(i=0;i<t;i++);
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
void lcd_enable()
{
lcd_en = 0;
delay(1);
lcd_en = 1;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
void lcd_command(unsigned char lenh)
{
lcd_rs = 0;
lcd_data = (lcd_data & 0x0f)|(((lenh>>4) & 0x0F)<<4);
lcd_enable();
lcd_data = (lcd_data & 0x0f)|((lenh & 0x0F)<<4);
lcd_enable();
delay(1);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
void LCD_Init()
{
lcd_en = 1;
lcd_rs = 0;
lcd_command(0x33);
lcd_command(0x32);
lcd_command(0x28);
lcd_command(0x0C);
lcd_command(0x06);
lcd_command(0x01);
delay(25);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
void LCD_Gotoxy(unsigned char x, unsigned char y){
unsigned char address;
if(y == 0) address=(0x80+x);
else if(y == 1) address=(0xc0+x);
delay(10);
lcd_command(address);
delay(5);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
void LCD_PutChar(unsigned char ascii)
{
lcd_rs = 1;
lcd_data = (lcd_data & 0x0f)|(((ascii>>4) & 0x0F)<<4);
lcd_enable();
lcd_data = (lcd_data & 0x0f)|((ascii & 0x0F)<<4);
lcd_enable();
delay(1);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
void LCD_Puts(unsigned char *lcdstring)
{
while (*lcdstring)
{
LCD_PutChar(*lcdstring++);
}
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
void Dam(unsigned char addr, unsigned char *noi_dung,unsigned char x,unsigned char y)
{
unsigned int i=0;
lcd_command(addr);
while(i<8)
{
LCD_PutChar(noi_dung);
i++;
}
LCD_Gotoxy(x,y);
LCD_PutChar((addr-64)/8);
}
//~~~~~~~~~~~~~~ Ham chinh ~~~~~~~~~~~~~~~~~~~~~~//
void main(){
LCD_Init();
delay(10);
while(1)
{
Dam( 64,data1,0,1);
Dam( 72,data2,1,1);
Dam( 80,data3,2,1);
Dam( 88,data4,3,1);
Dam( 96,data5,4,1);
Dam(104,data6,5,1);
Dam(112,data7,6,1);
Dam(120,data8,7,1);
LCD_Gotoxy(0,0);
LCD_Puts("Ky tu dac biet");
}
}
 

trantuyen123

Học sinh phổ thông
Xem đính kèm 76337
#include <REGX52.H>
#include <INTRINS.H>

#define lcd_data P2
sbit lcd_rs = P2^0;
sbit lcd_en = P2^1;
// Khai bao ky tu
unsigned char code data1[] = {31, 17, 21, 21, 21, 21, 17, 31 };
unsigned char code data2[] = {31, 27, 19, 27, 27, 27, 17, 31 };
unsigned char code data3[] = {31, 17, 29, 29, 17, 23, 17, 31 };
unsigned char code data4[] = {31, 17, 29, 17, 29, 29, 17, 31 };
unsigned char code data5[] = {31, 21, 21, 21, 17, 29, 29, 31 };
unsigned char code data6[] = {31, 17, 23, 17, 29, 29, 17, 31 };
unsigned char code data7[] = {31, 17, 23, 17, 21, 21, 17, 31 };
unsigned char code data8[] = {31, 17, 29, 29, 29, 29, 29, 31 };

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
void delay(unsigned int t){
unsigned int i;
for(i=0;i<t;i++);
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
void lcd_enable()
{
lcd_en = 0;
delay(1);
lcd_en = 1;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
void lcd_command(unsigned char lenh)
{
lcd_rs = 0;
lcd_data = (lcd_data & 0x0f)|(((lenh>>4) & 0x0F)<<4);
lcd_enable();
lcd_data = (lcd_data & 0x0f)|((lenh & 0x0F)<<4);
lcd_enable();
delay(1);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
void LCD_Init()
{
lcd_en = 1;
lcd_rs = 0;
lcd_command(0x33);
lcd_command(0x32);
lcd_command(0x28);
lcd_command(0x0C);
lcd_command(0x06);
lcd_command(0x01);
delay(25);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
void LCD_Gotoxy(unsigned char x, unsigned char y){
unsigned char address;
if(y == 0) address=(0x80+x);
else if(y == 1) address=(0xc0+x);
delay(10);
lcd_command(address);
delay(5);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
void LCD_PutChar(unsigned char ascii)
{
lcd_rs = 1;
lcd_data = (lcd_data & 0x0f)|(((ascii>>4) & 0x0F)<<4);
lcd_enable();
lcd_data = (lcd_data & 0x0f)|((ascii & 0x0F)<<4);
lcd_enable();
delay(1);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
void LCD_Puts(unsigned char *lcdstring)
{
while (*lcdstring)
{
LCD_PutChar(*lcdstring++);
}
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
void Dam(unsigned char addr, unsigned char *noi_dung,unsigned char x,unsigned char y)
{
unsigned int i=0;
lcd_command(addr);
while(i<8)
{
LCD_PutChar(noi_dung);
i++;
}
LCD_Gotoxy(x,y);
LCD_PutChar((addr-64)/8);
}
//~~~~~~~~~~~~~~ Ham chinh ~~~~~~~~~~~~~~~~~~~~~~//
void main(){
LCD_Init();
delay(10);
while(1)
{
Dam( 64,data1,0,1);
Dam( 72,data2,1,1);
Dam( 80,data3,2,1);
Dam( 88,data4,3,1);
Dam( 96,data5,4,1);
Dam(104,data6,5,1);
Dam(112,data7,6,1);
Dam(120,data8,7,1);
LCD_Gotoxy(0,0);
LCD_Puts("Ky tu dac biet");
}
}
HAY QUÁ.. A có Code viết bằng ngôn ngữ assembly không anh
 

Viet Quyet

Học sinh phổ thông
mọi người cho mình hỏi là mình đang muốn dùng 89C51 để đọc tín hiệu từ cảm biến oxy thì phải làm như thế nào nhỉ.mình không biêt gì hết
 

Quảng cáo Google