Mình đang học KeilC, viết chương trình led 7 thanh đếm từ 0 đến 9;
Phần cứng; 1 led 7 thanh anot chung nối lên +Vcc; các chân a,b,c,d,e,f,g nối với P0.0 đến p0.6
chương trình định viết như sau:
khai báo 1 mảng maled , phần tử là giá trị các bit số 0 đến 9 (có 10 phần tử), và 1 giá trị 0XFF để tắt hết các led,
ở chương trình chính khai báo thêm biến i cho chạy từ 0 đến 11 (mình định dùng vòng for)
dùng thêm vòng lặp while(1) để lặp vô hạn
đọc giá trị từ mảng 11 phần tử và gán cho cổng P0;
vấn đề ở đây là mình không biết cách dùng vòng for để nó đọc giá trị từ mảng 11 để gán vào cho P0;
và mình phải bỏ vòng for , thay bằng lệnh i++;
bây giờ chương trình cũng đếm được từ 0 đến 9 nhưng sau đó xuất hiện một số kí tự lạ và dừng ở số 8 không chạy tiếp được
video: le7 - YouTube
nhờ các bạn sửa hộ code (nếu dùng thêm vòng for thì tốt)
file mô phỏng: 1led7seg.zip
Phần cứng; 1 led 7 thanh anot chung nối lên +Vcc; các chân a,b,c,d,e,f,g nối với P0.0 đến p0.6
chương trình định viết như sau:
khai báo 1 mảng maled , phần tử là giá trị các bit số 0 đến 9 (có 10 phần tử), và 1 giá trị 0XFF để tắt hết các led,
ở chương trình chính khai báo thêm biến i cho chạy từ 0 đến 11 (mình định dùng vòng for)
dùng thêm vòng lặp while(1) để lặp vô hạn
đọc giá trị từ mảng 11 phần tử và gán cho cổng P0;
vấn đề ở đây là mình không biết cách dùng vòng for để nó đọc giá trị từ mảng 11 để gán vào cho P0;
và mình phải bỏ vòng for , thay bằng lệnh i++;
bây giờ chương trình cũng đếm được từ 0 đến 9 nhưng sau đó xuất hiện một số kí tự lạ và dừng ở số 8 không chạy tiếp được
video: le7 - YouTube
nhờ các bạn sửa hộ code (nếu dùng thêm vòng for thì tốt)
Code:
#include <AT89X52.H> unsigned char maled[11]={0XFF,0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90}; /* Ham tao thoi gian tre*/ void delay(long time) { long n; for(n=0;n<time;n++) {;} } /* Chuong trinh chinh*/ void main() { unsigned char i; {while(1) { P0=maled[i]; delay(10000); i++; } } }
file mô phỏng: 1led7seg.zip
Comment